mirror of
https://github.com/unidoc/unipdf.git
synced 2025-04-29 13:48:54 +08:00
141 lines
41 KiB
Go
141 lines
41 KiB
Go
//
|
|
// Copyright 2020 FoxyUtils ehf. All rights reserved.
|
|
//
|
|
// This is a commercial product and requires a license to operate.
|
|
// A trial license can be obtained at https://unidoc.io
|
|
//
|
|
// DO NOT EDIT: generated by unitwist Go source code obfuscator.
|
|
//
|
|
// Use of this source code is governed by the UniDoc End User License Agreement
|
|
// terms that can be accessed at https://unidoc.io/eula/
|
|
|
|
package cmap ;import (_bg "bufio";_d "bytes";_bd "encoding/hex";_df "errors";_a "fmt";_be "github.com/unidoc/unipdf/v3/common";_fc "github.com/unidoc/unipdf/v3/core";_c "github.com/unidoc/unipdf/v3/internal/cmap/bcmaps";_ba "io";_fg "sort";_ab "strconv";
|
|
_g "strings";_b "unicode/utf16";);func (_caeg *cMapParser )parseArray ()(cmapArray ,error ){_bada :=cmapArray {};_bada .Array =[]cmapObject {};_caeg ._cbg .ReadByte ();for {_caeg .skipSpaces ();_ceea ,_dgbf :=_caeg ._cbg .Peek (1);if _dgbf !=nil {return _bada ,_dgbf ;
|
|
};if _ceea [0]==']'{_caeg ._cbg .ReadByte ();break ;};_aceb ,_dgbf :=_caeg .parseObject ();if _dgbf !=nil {return _bada ,_dgbf ;};_bada .Array =append (_bada .Array ,_aceb );};return _bada ,nil ;};func LoadCmapFromData (data []byte ,isSimple bool )(*CMap ,error ){_be .Log .Trace ("\u004c\u006fa\u0064\u0043\u006d\u0061\u0070\u0046\u0072\u006f\u006d\u0044\u0061\u0074\u0061\u003a\u0020\u0069\u0073\u0053\u0069\u006d\u0070\u006ce=\u0025\u0074",isSimple );
|
|
cmap :=_ee (isSimple );cmap .cMapParser =_ffaa (data );_bac :=cmap .parse ();if _bac !=nil {return nil ,_bac ;};if len (cmap ._bgf )==0{if cmap ._ae !=""{return cmap ,nil ;};_be .Log .Debug ("\u0045\u0052R\u004f\u0052\u003a\u0020\u004e\u006f\u0020\u0063\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065\u0073\u002e\u0020\u0063\u006d\u0061p=\u0025\u0073",cmap );
|
|
};cmap .computeInverseMappings ();return cmap ,nil ;};type CharCode uint32 ;func (cmap *CMap )NBits ()int {return cmap ._fgb };type cmapFloat struct{_geg float64 };type CMap struct{*cMapParser ;_ca string ;_fgb int ;_cea int ;_cc string ;_ae string ;_af CIDSystemInfo ;
|
|
_bgf []Codespace ;_ac map[CharCode ]CharCode ;_caa map[CharCode ]CharCode ;_beg map[CharCode ]string ;_ebc map[string ]CharCode ;_ebcc []byte ;_ad *_fc .PdfObjectStream ;_ccf integer ;};func (cmap *CMap )WMode ()(int ,bool ){return cmap ._ccf ._ecgd ,cmap ._ccf ._gbf };
|
|
func (_gdcb *cMapParser )parseObject ()(cmapObject ,error ){_gdcb .skipSpaces ();for {_ddg ,_faef :=_gdcb ._cbg .Peek (2);if _faef !=nil {return nil ,_faef ;};if _ddg [0]=='%'{_gdcb .parseComment ();_gdcb .skipSpaces ();continue ;}else if _ddg [0]=='/'{_gee ,_gfa :=_gdcb .parseName ();
|
|
return _gee ,_gfa ;}else if _ddg [0]=='('{_cabf ,_ccg :=_gdcb .parseString ();return _cabf ,_ccg ;}else if _ddg [0]=='['{_ffae ,_bbcf :=_gdcb .parseArray ();return _ffae ,_bbcf ;}else if (_ddg [0]=='<')&&(_ddg [1]=='<'){_bbeb ,_bbfd :=_gdcb .parseDict ();
|
|
return _bbeb ,_bbfd ;}else if _ddg [0]=='<'{_eca ,_afc :=_gdcb .parseHexString ();return _eca ,_afc ;}else if _fc .IsDecimalDigit (_ddg [0])||(_ddg [0]=='-'&&_fc .IsDecimalDigit (_ddg [1])){_cgc ,_agb :=_gdcb .parseNumber ();if _agb !=nil {return nil ,_agb ;
|
|
};return _cgc ,nil ;}else {_ecaa ,_dee :=_gdcb .parseOperand ();if _dee !=nil {return nil ,_dee ;};return _ecaa ,nil ;};};};func IsPredefinedCMap (name string )bool {return _c .AssetExists (name )};func (cmap *CMap )computeInverseMappings (){for _cgd ,_fb :=range cmap ._ac {if _ge ,_bce :=cmap ._caa [_fb ];
|
|
!_bce ||(_bce &&_ge > _cgd ){cmap ._caa [_fb ]=_cgd ;};};for _daa ,_ff :=range cmap ._beg {if _baga ,_bcf :=cmap ._ebc [_ff ];!_bcf ||(_bcf &&_baga > _daa ){cmap ._ebc [_ff ]=_daa ;};};_fg .Slice (cmap ._bgf ,func (_egc ,_beb int )bool {return cmap ._bgf [_egc ].Low < cmap ._bgf [_beb ].Low });
|
|
};type Codespace struct{NumBytes int ;Low CharCode ;High CharCode ;};func (_fefe *cMapParser )skipSpaces ()(int ,error ){_gaf :=0;for {_aea ,_fgf :=_fefe ._cbg .Peek (1);if _fgf !=nil {return 0,_fgf ;};if _fc .IsWhiteSpace (_aea [0]){_fefe ._cbg .ReadByte ();
|
|
_gaf ++;}else {break ;};};return _gaf ,nil ;};func (cmap *CMap )CIDToCharcode (cid CharCode )(CharCode ,bool ){_fad ,_adbd :=cmap ._caa [cid ];return _fad ,_adbd ;};func _gd (_cd string )(*CMap ,error ){_afb ,_cbc :=_c .Asset (_cd );if _cbc !=nil {return nil ,_cbc ;
|
|
};return LoadCmapFromDataCID (_afb );};func (cmap *CMap )parseSystemInfo ()error {_dea :=false ;_fgd :=false ;_cgf :="";_gaa :=false ;_bcab :=CIDSystemInfo {};for _egf :=0;_egf < 50&&!_gaa ;_egf ++{_addd ,_bad :=cmap .parseObject ();if _bad !=nil {return _bad ;
|
|
};switch _gada :=_addd .(type ){case cmapDict :_afd :=_gada .Dict ;_bdbc ,_fbag :=_afd ["\u0052\u0065\u0067\u0069\u0073\u0074\u0072\u0079"];if !_fbag {_be .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");
|
|
return ErrBadCMap ;};_gdc ,_fbag :=_bdbc .(cmapString );if !_fbag {_be .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_bcab .Registry =_gdc .String ;
|
|
_bdbc ,_fbag =_afd ["\u004f\u0072\u0064\u0065\u0072\u0069\u006e\u0067"];if !_fbag {_be .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_gdc ,_fbag =_bdbc .(cmapString );
|
|
if !_fbag {_be .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_bcab .Ordering =_gdc .String ;_cad ,_fbag :=_afd ["\u0053\u0075\u0070\u0070\u006c\u0065\u006d\u0065\u006e\u0074"];
|
|
if !_fbag {_be .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_egea ,_fbag :=_cad .(cmapInt );if !_fbag {_be .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");
|
|
return ErrBadCMap ;};_bcab .Supplement =int (_egea ._cbff );_gaa =true ;case cmapOperand :switch _gada .Operand {case "\u0062\u0065\u0067i\u006e":_dea =true ;case "\u0065\u006e\u0064":_gaa =true ;case "\u0064\u0065\u0066":_fgd =false ;};case cmapName :if _dea {_cgf =_gada .Name ;
|
|
_fgd =true ;};case cmapString :if _fgd {switch _cgf {case "\u0052\u0065\u0067\u0069\u0073\u0074\u0072\u0079":_bcab .Registry =_gada .String ;case "\u004f\u0072\u0064\u0065\u0072\u0069\u006e\u0067":_bcab .Ordering =_gada .String ;};};case cmapInt :if _fgd {switch _cgf {case "\u0053\u0075\u0070\u0070\u006c\u0065\u006d\u0065\u006e\u0074":_bcab .Supplement =int (_gada ._cbff );
|
|
};};};};if !_gaa {_be .Log .Debug ("\u0045\u0052\u0052O\u0052\u003a\u0020\u0050\u0061\u0072\u0073\u0065\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006e\u0066\u006f\u0020\u0064\u0069\u0063\u0074\u0020\u0069\u006ec\u006f\u0072\u0072\u0065\u0063\u0074\u006c\u0079");
|
|
return ErrBadCMap ;};cmap ._af =_bcab ;return nil ;};func (cmap *CMap )parseCIDRange ()error {for {_aac ,_fdfd :=cmap .parseObject ();if _fdfd !=nil {if _fdfd ==_ba .EOF {break ;};return _fdfd ;};_aaac ,_cgfa :=_aac .(cmapHexString );if !_cgfa {if _dff ,_gagd :=_aac .(cmapOperand );
|
|
_gagd {if _dff .Operand ==_ceaf {return nil ;};return _df .New ("\u0063\u0069\u0064\u0020\u0069\u006e\u0074\u0065\u0072\u0076\u0061\u006c\u0020s\u0074\u0061\u0072\u0074\u0020\u006du\u0073\u0074\u0020\u0062\u0065\u0020\u0061\u0020\u0068\u0065\u0078\u0020\u0073t\u0072\u0069\u006e\u0067");
|
|
};};_ggfb :=_bfbg (_aaac );_aac ,_fdfd =cmap .parseObject ();if _fdfd !=nil {if _fdfd ==_ba .EOF {break ;};return _fdfd ;};_bcbg ,_cgfa :=_aac .(cmapHexString );if !_cgfa {return _df .New ("\u0063\u0069d\u0020\u0069\u006e\u0074e\u0072\u0076a\u006c\u0020\u0065\u006e\u0064\u0020\u006d\u0075s\u0074\u0020\u0062\u0065\u0020\u0061\u0020\u0068\u0065\u0078\u0020\u0073t\u0072\u0069\u006e\u0067");
|
|
};if len (_aaac ._bgadf )!=len (_bcbg ._bgadf ){return _df .New ("\u0075\u006e\u0065\u0071\u0075\u0061\u006c\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020o\u0066 \u0062\u0079\u0074\u0065\u0073\u0020\u0069\u006e\u0020\u0072\u0061\u006e\u0067\u0065");};
|
|
_fdc :=_bfbg (_bcbg );if _ggfb > _fdc {_be .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a \u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0043\u0049\u0044\u0020\u0072\u0061\u006e\u0067\u0065\u002e\u0020\u0073t\u0061\u0072\u0074\u003d\u0030\u0078\u0025\u0030\u0032\u0078\u0020\u0065\u006e\u0064=\u0030x\u0025\u0030\u0032\u0078",_ggfb ,_fdc );
|
|
return ErrBadCMap ;};_aac ,_fdfd =cmap .parseObject ();if _fdfd !=nil {if _fdfd ==_ba .EOF {break ;};return _fdfd ;};_dca ,_cgfa :=_aac .(cmapInt );if !_cgfa {return _df .New ("\u0063\u0069\u0064\u0020\u0073t\u0061\u0072\u0074\u0020\u0076\u0061\u006c\u0075\u0065\u0020\u006d\u0075\u0073t\u0020\u0062\u0065\u0020\u0061\u006e\u0020\u0064\u0065\u0063\u0069\u006d\u0061\u006c\u0020\u006e\u0075\u006d\u0062\u0065\u0072");
|
|
};if _dca ._cbff < 0{return _df .New ("\u0069\u006e\u0076al\u0069\u0064\u0020\u0063\u0069\u0064\u0020\u0073\u0074\u0061\u0072\u0074\u0020\u0076\u0061\u006c\u0075\u0065");};_gggc :=_dca ._cbff ;for _efd :=_ggfb ;_efd <=_fdc ;_efd ++{cmap ._ac [_efd ]=CharCode (_gggc );
|
|
_gggc ++;};_be .Log .Trace ("C\u0049\u0044\u0020\u0072\u0061\u006eg\u0065\u003a\u0020\u003c\u0030\u0078\u0025\u0058\u003e \u003c\u0030\u0078%\u0058>\u0020\u0025\u0064",_ggfb ,_fdc ,_dca ._cbff );};return nil ;};func (cmap *CMap )parseName ()error {_fcc :="";
|
|
_cab :=false ;for _ebgfg :=0;_ebgfg < 20&&!_cab ;_ebgfg ++{_babf ,_fba :=cmap .parseObject ();if _fba !=nil {return _fba ;};switch _ccfc :=_babf .(type ){case cmapOperand :switch _ccfc .Operand {case "\u0064\u0065\u0066":_cab =true ;default:_be .Log .Debug ("\u0070\u0061\u0072\u0073\u0065\u004e\u0061\u006d\u0065\u003a\u0020\u0053\u0074\u0061\u0074\u0065\u0020\u0065\u0072\u0072\u006f\u0072\u002e\u0020o\u003d\u0025\u0023\u0076\u0020n\u0061\u006de\u003d\u0025\u0023\u0071",_babf ,_fcc );
|
|
if _fcc !=""{_fcc =_a .Sprintf ("\u0025\u0073\u0020%\u0073",_fcc ,_ccfc .Operand );};_be .Log .Debug ("\u0070\u0061\u0072\u0073\u0065\u004e\u0061\u006d\u0065\u003a \u0052\u0065\u0063\u006f\u0076\u0065\u0072e\u0064\u002e\u0020\u006e\u0061\u006d\u0065\u003d\u0025\u0023\u0071",_fcc );
|
|
};case cmapName :_fcc =_ccfc .Name ;};};if !_cab {_be .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a \u0070\u0061\u0072\u0073\u0065N\u0061m\u0065:\u0020\u004e\u006f\u0020\u0064\u0065\u0066 ");return ErrBadCMap ;};cmap ._ca =_fcc ;return nil ;};func _ee (_ed bool )*CMap {_cca :=16;
|
|
if _ed {_cca =8;};return &CMap {_fgb :_cca ,_ac :make (map[CharCode ]CharCode ),_caa :make (map[CharCode ]CharCode ),_beg :make (map[CharCode ]string ),_ebc :make (map[string ]CharCode )};};func (cmap *CMap )BytesToCharcodes (data []byte )([]CharCode ,bool ){var _gfd []CharCode ;
|
|
if cmap ._fgb ==8{for _ ,_gdb :=range data {_gfd =append (_gfd ,CharCode (_gdb ));};return _gfd ,true ;};for _eba :=0;_eba < len (data );{_bgc ,_ecf ,_egeg :=cmap .matchCode (data [_eba :]);if !_egeg {_be .Log .Debug ("\u0045\u0052R\u004f\u0052\u003a\u0020\u004e\u006f\u0020\u0063\u006f\u0064\u0065\u0020\u006d\u0061\u0074\u0063\u0068\u0020\u0061\u0074\u0020\u0069\u003d\u0025\u0064\u0020\u0062\u0079\u0074\u0065\u0073\u003d\u005b\u0025\u0020\u0030\u0032\u0078\u005d\u003d\u0025\u0023\u0071",_eba ,data ,string (data ));
|
|
return _gfd ,false ;};_gfd =append (_gfd ,_bgc );_eba +=_ecf ;};return _gfd ,true ;};type cmapOperand struct{Operand string ;};func (_cffd *cMapParser )parseOperand ()(cmapOperand ,error ){_cbca :=cmapOperand {};_agg :=_d .Buffer {};for {_cdf ,_egd :=_cffd ._cbg .Peek (1);
|
|
if _egd !=nil {if _egd ==_ba .EOF {break ;};return _cbca ,_egd ;};if _fc .IsDelimiter (_cdf [0]){break ;};if _fc .IsWhiteSpace (_cdf [0]){break ;};_fcf ,_ :=_cffd ._cbg .ReadByte ();_agg .WriteByte (_fcf );};if _agg .Len ()==0{return _cbca ,_a .Errorf ("\u0069\u006e\u0076al\u0069\u0064\u0020\u006f\u0070\u0065\u0072\u0061\u006e\u0064\u0020\u0028\u0065\u006d\u0070\u0074\u0079\u0029");
|
|
};_cbca .Operand =_agg .String ();return _cbca ,nil ;};func _fge (_ebfd cmapHexString )[]rune {if len (_ebfd ._bgadf )==1{return []rune {rune (_ebfd ._bgadf [0])};};_cdc :=_ebfd ._bgadf ;if len (_cdc )%2!=0{_cdc =append (_cdc ,0);_be .Log .Debug ("\u0045\u0052\u0052O\u0052\u003a\u0020\u0068\u0065\u0078\u0054\u006f\u0052\u0075\u006e\u0065\u0073\u002e\u0020\u0050\u0061\u0064\u0064\u0069\u006e\u0067\u0020\u0073\u0068\u0065\u0078\u003d\u0025#\u0076\u0020\u0074\u006f\u0020\u0025\u002b\u0076",_ebfd ,_cdc );
|
|
};_egdc :=len (_cdc )>>1;_gae :=make ([]uint16 ,_egdc );for _bda :=0;_bda < _egdc ;_bda ++{_gae [_bda ]=uint16 (_cdc [_bda <<1])<<8+uint16 (_cdc [_bda <<1+1]);};_afce :=_b .Decode (_gae );return _afce ;};func (_caef *cMapParser )parseName ()(cmapName ,error ){_dcg :="";
|
|
_dfc :=false ;for {_bbdd ,_egg :=_caef ._cbg .Peek (1);if _egg ==_ba .EOF {break ;};if _egg !=nil {return cmapName {_dcg },_egg ;};if !_dfc {if _bbdd [0]=='/'{_dfc =true ;_caef ._cbg .ReadByte ();}else {_be .Log .Debug ("\u0045\u0052\u0052OR\u003a\u0020\u004e\u0061\u006d\u0065\u0020\u0073\u0074a\u0072t\u0069n\u0067 \u0077\u0069\u0074\u0068\u0020\u0025\u0073\u0020\u0028\u0025\u0020\u0078\u0029",_bbdd ,_bbdd );
|
|
return cmapName {_dcg },_a .Errorf ("\u0069n\u0076a\u006c\u0069\u0064\u0020\u006ea\u006d\u0065:\u0020\u0028\u0025\u0063\u0029",_bbdd [0]);};}else {if _fc .IsWhiteSpace (_bbdd [0]){break ;}else if (_bbdd [0]=='/')||(_bbdd [0]=='[')||(_bbdd [0]=='(')||(_bbdd [0]==']')||(_bbdd [0]=='<')||(_bbdd [0]=='>'){break ;
|
|
}else if _bbdd [0]=='#'{_feac ,_cefag :=_caef ._cbg .Peek (3);if _cefag !=nil {return cmapName {_dcg },_cefag ;};_caef ._cbg .Discard (3);_cfef ,_cefag :=_bd .DecodeString (string (_feac [1:3]));if _cefag !=nil {return cmapName {_dcg },_cefag ;};_dcg +=string (_cfef );
|
|
}else {_aeg ,_ :=_caef ._cbg .ReadByte ();_dcg +=string (_aeg );};};};return cmapName {_dcg },nil ;};func (_acgc *cMapParser )parseHexString ()(cmapHexString ,error ){_acgc ._cbg .ReadByte ();_dede :=[]byte ("\u0030\u0031\u0032\u003345\u0036\u0037\u0038\u0039\u0061\u0062\u0063\u0064\u0065\u0066\u0041\u0042\u0043\u0044E\u0046");
|
|
_babe :=_d .Buffer {};for {_acgc .skipSpaces ();_dda ,_dgc :=_acgc ._cbg .Peek (1);if _dgc !=nil {return cmapHexString {},_dgc ;};if _dda [0]=='>'{_acgc ._cbg .ReadByte ();break ;};_fff ,_ :=_acgc ._cbg .ReadByte ();if _d .IndexByte (_dede ,_fff )>=0{_babe .WriteByte (_fff );
|
|
};};if _babe .Len ()%2==1{_be .Log .Debug ("\u0070\u0061rs\u0065\u0048\u0065x\u0053\u0074\u0072\u0069ng:\u0020ap\u0070\u0065\u006e\u0064\u0069\u006e\u0067 '\u0030\u0027\u0020\u0074\u006f\u0020\u0025#\u0071",_babe .String ());_babe .WriteByte ('0');};_dcba :=_babe .Len ()/2;
|
|
_dbgg ,_ :=_bd .DecodeString (_babe .String ());return cmapHexString {_fbed :_dcba ,_bgadf :_dbgg },nil ;};type cmapObject interface{};func (cmap *CMap )parseCodespaceRange ()error {for {_bbd ,_ffac :=cmap .parseObject ();if _ffac !=nil {if _ffac ==_ba .EOF {break ;
|
|
};return _ffac ;};_cba ,_acgb :=_bbd .(cmapHexString );if !_acgb {if _gbb ,_gcf :=_bbd .(cmapOperand );_gcf {if _gbb .Operand ==_bfa {return nil ;};return _df .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065d\u0020\u006fp\u0065\u0072\u0061\u006e\u0064");
|
|
};};_bbd ,_ffac =cmap .parseObject ();if _ffac !=nil {if _ffac ==_ba .EOF {break ;};return _ffac ;};_gadd ,_acgb :=_bbd .(cmapHexString );if !_acgb {return _df .New ("\u006e\u006f\u006e-\u0068\u0065\u0078\u0020\u0068\u0069\u0067\u0068");};if len (_cba ._bgadf )!=len (_gadd ._bgadf ){return _df .New ("\u0075\u006e\u0065\u0071\u0075\u0061\u006c\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020o\u0066 \u0062\u0079\u0074\u0065\u0073\u0020\u0069\u006e\u0020\u0072\u0061\u006e\u0067\u0065");
|
|
};_bdbe :=_bfbg (_cba );_fcbg :=_bfbg (_gadd );if _fcbg < _bdbe {_be .Log .Debug ("\u0045R\u0052\u004fR\u003a\u0020\u0042\u0061d\u0020\u0063\u006fd\u0065\u0073\u0070\u0061\u0063\u0065\u002e\u0020\u006cow\u003d\u0030\u0078%\u0030\u0032x\u0020\u0068\u0069\u0067\u0068\u003d0\u0078\u00250\u0032\u0078",_bdbe ,_fcbg );
|
|
return ErrBadCMap ;};_ced :=_gadd ._fbed ;_gag :=Codespace {NumBytes :_ced ,Low :_bdbe ,High :_fcbg };cmap ._bgf =append (cmap ._bgf ,_gag );_be .Log .Trace ("\u0043\u006f\u0064e\u0073\u0070\u0061\u0063e\u0020\u006c\u006f\u0077\u003a\u0020\u0030x\u0025\u0058\u002c\u0020\u0068\u0069\u0067\u0068\u003a\u0020\u0030\u0078\u0025\u0058",_bdbe ,_fcbg );
|
|
};if len (cmap ._bgf )==0{_be .Log .Debug ("\u0045\u0052R\u004f\u0052\u003a\u0020\u004e\u006f\u0020\u0063\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065\u0073\u0020\u0069\u006e\u0020\u0063ma\u0070\u002e");return ErrBadCMap ;};return nil ;};const (_e =4;
|
|
MissingCodeRune ='\ufffd';MissingCodeString =string (MissingCodeRune ););func (cmap *CMap )parseBfrange ()error {for {var _fef CharCode ;_aad ,_ddc :=cmap .parseObject ();if _ddc !=nil {if _ddc ==_ba .EOF {break ;};return _ddc ;};switch _cbf :=_aad .(type ){case cmapOperand :if _cbf .Operand ==_ecfe {return nil ;
|
|
};return _df .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065d\u0020\u006fp\u0065\u0072\u0061\u006e\u0064");case cmapHexString :_fef =_bfbg (_cbf );default:return _df .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065\u0064\u0020\u0074\u0079\u0070\u0065");
|
|
};var _abaf CharCode ;_aad ,_ddc =cmap .parseObject ();if _ddc !=nil {if _ddc ==_ba .EOF {break ;};return _ddc ;};switch _eaa :=_aad .(type ){case cmapOperand :_be .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a \u0049\u006e\u0063\u006f\u006d\u0070\u006c\u0065\u0074\u0065\u0020\u0062\u0066r\u0061\u006e\u0067\u0065\u0020\u0074\u0072i\u0070\u006c\u0065\u0074");
|
|
return ErrBadCMap ;case cmapHexString :_abaf =_bfbg (_eaa );if _abaf > 0xffff{_abaf =0xffff;};default:_be .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a \u0055\u006e\u0065\u0078\u0070e\u0063t\u0065d\u0020\u0074\u0079\u0070\u0065\u0020\u0025T",_aad );return ErrBadCMap ;
|
|
};_aad ,_ddc =cmap .parseObject ();if _ddc !=nil {if _ddc ==_ba .EOF {break ;};return _ddc ;};switch _efe :=_aad .(type ){case cmapArray :if len (_efe .Array )!=int (_abaf -_fef )+1{_be .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0049\u006e\u0076\u0061\u006c\u0069d\u0020\u006e\u0075\u006d\u0062\u0065r\u0020\u006f\u0066\u0020\u0069\u0074\u0065\u006d\u0073\u0020\u0069\u006e\u0020a\u0072\u0072\u0061\u0079");
|
|
return ErrBadCMap ;};for _fae :=_fef ;_fae <=_abaf ;_fae ++{_abc :=_efe .Array [_fae -_fef ];_acc ,_bdfb :=_abc .(cmapHexString );if !_bdfb {return _df .New ("\u006e\u006f\u006e-h\u0065\u0078\u0020\u0073\u0074\u0072\u0069\u006e\u0067\u0020\u0069\u006e\u0020\u0061\u0072\u0072\u0061\u0079");
|
|
};_ega :=_fge (_acc );cmap ._beg [_fae ]=string (_ega );};case cmapHexString :_cdae :=_fge (_efe );_gagda :=len (_cdae );for _cdgd :=_fef ;_cdgd <=_abaf ;_cdgd ++{cmap ._beg [_cdgd ]=string (_cdae );if _gagda > 0{_cdae [_gagda -1]++;}else {_be .Log .Debug ("\u004e\u006f\u0020c\u006d\u0061\u0070\u0020\u0074\u0061\u0072\u0067\u0065\u0074\u0020\u0063\u0068\u0061\u0072\u0061\u0063\u0074\u0065\u0072\u0020\u0073\u0070\u0065\u0063\u0069\u0066\u0069\u0065d\u0020\u0066\u006f\u0072\u0020\u0025\u0023\u0076",_cdgd );
|
|
};if _cdgd ==1<<32-1{break ;};};default:_be .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a \u0055\u006e\u0065\u0078\u0070e\u0063t\u0065d\u0020\u0074\u0079\u0070\u0065\u0020\u0025T",_aad );return ErrBadCMap ;};};return nil ;};func _egga (_fec cmapHexString )rune {_cabg :=_fge (_fec );
|
|
if _bcg :=len (_cabg );_bcg ==0{_be .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0068\u0065\u0078\u0054o\u0052\u0075\u006e\u0065\u002e\u0020\u0045\u0078p\u0065c\u0074\u0065\u0064\u0020\u0061\u0074\u0020\u006c\u0065\u0061\u0073\u0074\u0020\u006f\u006e\u0065\u0020\u0072u\u006e\u0065\u0020\u0073\u0068\u0065\u0078\u003d\u0025\u0023\u0076",_fec );
|
|
return MissingCodeRune ;};if len (_cabg )> 1{_be .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0068\u0065\u0078\u0054\u006f\u0052\u0075\u006e\u0065\u002e\u0020\u0045\u0078p\u0065\u0063\u0074\u0065\u0064\u0020\u0065\u0078\u0061\u0063\u0074\u006c\u0079\u0020\u006f\u006e\u0065\u0020\u0072\u0075\u006e\u0065\u0020\u0073\u0068\u0065\u0078\u003d\u0025\u0023v\u0020\u002d\u003e\u0020\u0025#\u0076",_fec ,_cabg );
|
|
};return _cabg [0];};func (cmap *CMap )toBfData ()string {if len (cmap ._beg )==0{return "";};_cgdg :=make ([]CharCode ,0,len (cmap ._beg ));for _ebag :=range cmap ._beg {_cgdg =append (_cgdg ,_ebag );};_fg .Slice (_cgdg ,func (_ea ,_cce int )bool {return _cgdg [_ea ]< _cgdg [_cce ]});
|
|
var _cbd []charRange ;_db :=charRange {_cgdg [0],_cgdg [0]};_ga :=cmap ._beg [_cgdg [0]];for _ ,_ffa :=range _cgdg [1:]{_dc :=cmap ._beg [_ffa ];if _ffa ==_db ._cb +1&&_dbg (_dc )==_dbg (_ga )+1{_db ._cb =_ffa ;}else {_cbd =append (_cbd ,_db );_db ._bdf ,_db ._cb =_ffa ,_ffa ;
|
|
};_ga =_dc ;};_cbd =append (_cbd ,_db );var _abd []CharCode ;var _aec []fbRange ;for _ ,_bcd :=range _cbd {if _bcd ._bdf ==_bcd ._cb {_abd =append (_abd ,_bcd ._bdf );}else {_aec =append (_aec ,fbRange {_abg :_bcd ._bdf ,_bc :_bcd ._cb ,_dg :cmap ._beg [_bcd ._bdf ]});
|
|
};};_be .Log .Trace ("\u0063\u0068ar\u0052\u0061\u006eg\u0065\u0073\u003d\u0025d f\u0062Ch\u0061\u0072\u0073\u003d\u0025\u0064\u0020fb\u0052\u0061\u006e\u0067\u0065\u0073\u003d%\u0064",len (_cbd ),len (_abd ),len (_aec ));var _gcd []string ;if len (_abd )> 0{_gdd :=(len (_abd )+_bca -1)/_bca ;
|
|
for _gdbe :=0;_gdbe < _gdd ;_gdbe ++{_cdg :=_fce (len (_abd )-_gdbe *_bca ,_bca );_gcd =append (_gcd ,_a .Sprintf ("\u0025\u0064\u0020\u0062\u0065\u0067\u0069\u006e\u0062f\u0063\u0068\u0061\u0072",_cdg ));for _dggd :=0;_dggd < _cdg ;_dggd ++{_cfd :=_abd [_gdbe *_bca +_dggd ];
|
|
_cbce :=cmap ._beg [_cfd ];_gcd =append (_gcd ,_a .Sprintf ("\u003c%\u0030\u0034\u0078\u003e\u0020\u0025s",_cfd ,_eda (_cbce )));};_gcd =append (_gcd ,"\u0065n\u0064\u0062\u0066\u0063\u0068\u0061r");};};if len (_aec )> 0{_fbc :=(len (_aec )+_bca -1)/_bca ;
|
|
for _dbc :=0;_dbc < _fbc ;_dbc ++{_cae :=_fce (len (_aec )-_dbc *_bca ,_bca );_gcd =append (_gcd ,_a .Sprintf ("\u0025d\u0020b\u0065\u0067\u0069\u006e\u0062\u0066\u0072\u0061\u006e\u0067\u0065",_cae ));for _aba :=0;_aba < _cae ;_aba ++{_fdf :=_aec [_dbc *_bca +_aba ];
|
|
_gcd =append (_gcd ,_a .Sprintf ("\u003c%\u00304\u0078\u003e\u003c\u0025\u0030\u0034\u0078\u003e\u0020\u0025\u0073",_fdf ._abg ,_fdf ._bc ,_eda (_fdf ._dg )));};_gcd =append (_gcd ,"\u0065\u006e\u0064\u0062\u0066\u0072\u0061\u006e\u0067\u0065");};};return _g .Join (_gcd ,"\u000a");
|
|
};func (cmap *CMap )Bytes ()[]byte {_be .Log .Trace ("\u0063\u006d\u0061\u0070.B\u0079\u0074\u0065\u0073\u003a\u0020\u0063\u006d\u0061\u0070\u003d\u0025\u0073",cmap .String ());if len (cmap ._ebcc )> 0{return cmap ._ebcc ;};cmap ._ebcc =[]byte (_g .Join ([]string {_afg ,cmap .toBfData (),_aa },"\u000a"));
|
|
return cmap ._ebcc ;};const (_bca =100;_afg ="\u000a\u002f\u0043\u0049\u0044\u0049\u006e\u0069\u0074\u0020\u002f\u0050\u0072\u006fc\u0053\u0065\u0074\u0020\u0066\u0069\u006e\u0064\u0072es\u006fu\u0072c\u0065 \u0062\u0065\u0067\u0069\u006e\u000a\u0031\u0032\u0020\u0064\u0069\u0063\u0074\u0020\u0062\u0065\u0067\u0069n\u000a\u0062\u0065\u0067\u0069\u006e\u0063\u006d\u0061\u0070\n\u002f\u0043\u0049\u0044\u0053\u0079\u0073\u0074\u0065m\u0049\u006e\u0066\u006f\u0020\u003c\u003c\u0020\u002f\u0052\u0065\u0067\u0069\u0073t\u0072\u0079\u0020\u0028\u0041\u0064\u006f\u0062\u0065\u0029\u0020\u002f\u004f\u0072\u0064\u0065\u0072\u0069\u006e\u0067\u0020\u0028\u0055\u0043\u0053)\u0020\u002f\u0053\u0075\u0070p\u006c\u0065\u006d\u0065\u006et\u0020\u0030\u0020\u003e\u003e\u0020\u0064\u0065\u0066\u000a\u002f\u0043\u004d\u0061\u0070\u004e\u0061\u006d\u0065\u0020\u002f\u0041\u0064\u006f\u0062\u0065-\u0049\u0064\u0065\u006e\u0074\u0069\u0074\u0079\u002d\u0055\u0043\u0053\u0020\u0064\u0065\u0066\u000a\u002fC\u004d\u0061\u0070\u0054\u0079\u0070\u0065\u0020\u0032\u0020\u0064\u0065\u0066\u000a\u0031\u0020\u0062\u0065\u0067\u0069\u006e\u0063\u006f\u0064\u0065\u0073\u0070\u0061\u0063e\u0072\u0061n\u0067\u0065\n\u003c\u0030\u0030\u0030\u0030\u003e\u0020<\u0046\u0046\u0046\u0046\u003e\u000a\u0065\u006e\u0064\u0063\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065r\u0061\u006e\u0067\u0065\u000a";
|
|
_aa ="\u0065\u006e\u0064\u0063\u006d\u0061\u0070\u000a\u0043\u004d\u0061\u0070\u004e\u0061\u006d\u0065\u0020\u0063ur\u0072e\u006e\u0074\u0064\u0069\u0063\u0074\u0020\u002f\u0043\u004d\u0061\u0070 \u0064\u0065\u0066\u0069\u006e\u0065\u0072\u0065\u0073\u006f\u0075\u0072\u0063\u0065\u0020\u0070\u006fp\u000a\u0065\u006e\u0064\u000a\u0065\u006e\u0064\u000a";
|
|
);type cMapParser struct{_cbg *_bg .Reader };func (cmap *CMap )parse ()error {var _ace cmapObject ;for {_dfd ,_gca :=cmap .parseObject ();if _gca !=nil {if _gca ==_ba .EOF {break ;};_be .Log .Debug ("\u0045\u0052\u0052OR\u003a\u0020\u0070\u0061\u0072\u0073\u0069\u006e\u0067\u0020\u0043\u004d\u0061\u0070\u003a\u0020\u0025\u0076",_gca );
|
|
return _gca ;};switch _gbg :=_dfd .(type ){case cmapOperand :_bbe :=_gbg ;switch _bbe .Operand {case _baf :_ggc :=cmap .parseCodespaceRange ();if _ggc !=nil {return _ggc ;};case _ccb :_bace :=cmap .parseCIDRange ();if _bace !=nil {return _bace ;};case _bgag :_bgad :=cmap .parseBfchar ();
|
|
if _bgad !=nil {return _bgad ;};case _gac :_bbf :=cmap .parseBfrange ();if _bbf !=nil {return _bbf ;};case _bbb :if _ace ==nil {_be .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0075\u0073\u0065\u0063m\u0061\u0070\u0020\u0077\u0069\u0074\u0068\u0020\u006e\u006f \u0061\u0072\u0067");
|
|
return ErrBadCMap ;};_dbe ,_afbc :=_ace .(cmapName );if !_afbc {_be .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a \u0075\u0073\u0065\u0063\u006d\u0061\u0070\u0020\u0061\u0072\u0067\u0020\u006eo\u0074\u0020\u0061\u0020\u006e\u0061\u006de\u0020\u0025\u0023\u0076",_ace );
|
|
return ErrBadCMap ;};cmap ._ae =_dbe .Name ;case _cffg :_bacee :=cmap .parseSystemInfo ();if _bacee !=nil {return _bacee ;};};case cmapName :_bbc :=_gbg ;switch _bbc .Name {case _cffg :_ggg :=cmap .parseSystemInfo ();if _ggg !=nil {return _ggg ;};case _cde :_gad :=cmap .parseName ();
|
|
if _gad !=nil {return _gad ;};case _edc :_ecg :=cmap .parseType ();if _ecg !=nil {return _ecg ;};case _afdb :_bdd :=cmap .parseVersion ();if _bdd !=nil {return _bdd ;};case _baeg :if _gca =cmap .parseWMode ();_gca !=nil {return _gca ;};};};_ace =_dfd ;
|
|
};return nil ;};func (cmap *CMap )parseType ()error {_aced :=0;_eeg :=false ;for _aff :=0;_aff < 3&&!_eeg ;_aff ++{_gec ,_cgdc :=cmap .parseObject ();if _cgdc !=nil {return _cgdc ;};switch _gedb :=_gec .(type ){case cmapOperand :switch _gedb .Operand {case "\u0064\u0065\u0066":_eeg =true ;
|
|
default:_be .Log .Error ("\u0070\u0061r\u0073\u0065\u0054\u0079\u0070\u0065\u003a\u0020\u0073\u0074\u0061\u0074\u0065\u0020\u0065\u0072\u0072\u006f\u0072\u002e\u0020\u006f=%\u0023\u0076",_gec );return ErrBadCMap ;};case cmapInt :_aced =int (_gedb ._cbff );
|
|
};};cmap ._cea =_aced ;return nil ;};func (_dfb *CIDSystemInfo )String ()string {return _a .Sprintf ("\u0025\u0073\u002d\u0025\u0073\u002d\u0025\u0030\u0033\u0064",_dfb .Registry ,_dfb .Ordering ,_dfb .Supplement );};func (cmap *CMap )parseVersion ()error {_dbgb :="";
|
|
_dbd :=false ;for _deb :=0;_deb < 3&&!_dbd ;_deb ++{_cabd ,_geaf :=cmap .parseObject ();if _geaf !=nil {return _geaf ;};switch _eaf :=_cabd .(type ){case cmapOperand :switch _eaf .Operand {case "\u0064\u0065\u0066":_dbd =true ;default:_be .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0070\u0061\u0072\u0073\u0065\u0056e\u0072\u0073\u0069\u006f\u006e\u003a \u0073\u0074\u0061\u0074\u0065\u0020\u0065\u0072\u0072\u006f\u0072\u002e\u0020o\u003d\u0025\u0023\u0076",_cabd );
|
|
return ErrBadCMap ;};case cmapInt :_dbgb =_a .Sprintf ("\u0025\u0064",_eaf ._cbff );case cmapFloat :_dbgb =_a .Sprintf ("\u0025\u0066",_eaf ._geg );case cmapString :_dbgb =_eaf .String ;default:_be .Log .Debug ("\u0045\u0052RO\u0052\u003a\u0020p\u0061\u0072\u0073\u0065Ver\u0073io\u006e\u003a\u0020\u0042\u0061\u0064\u0020ty\u0070\u0065\u002e\u0020\u006f\u003d\u0025#\u0076",_cabd );
|
|
};};cmap ._cc =_dbgb ;return nil ;};func (cmap *CMap )Stream ()(*_fc .PdfObjectStream ,error ){if cmap ._ad !=nil {return cmap ._ad ,nil ;};_ded ,_ggf :=_fc .MakeStream (cmap .Bytes (),_fc .NewFlateEncoder ());if _ggf !=nil {return nil ,_ggf ;};cmap ._ad =_ded ;
|
|
return cmap ._ad ,nil ;};type integer struct{_gbf bool ;_ecgd int ;};func (cmap *CMap )parseWMode ()error {var _bfb int ;_bge :=false ;for _agc :=0;_agc < 3&&!_bge ;_agc ++{_aaa ,_cda :=cmap .parseObject ();if _cda !=nil {return _cda ;};switch _bbea :=_aaa .(type ){case cmapOperand :switch _bbea .Operand {case "\u0064\u0065\u0066":_bge =true ;
|
|
default:_be .Log .Error ("\u0070\u0061\u0072\u0073\u0065\u0057\u004d\u006f\u0064\u0065:\u0020\u0073\u0074\u0061\u0074\u0065\u0020e\u0072\u0072\u006f\u0072\u002e\u0020\u006f\u003d\u0025\u0023\u0076",_aaa );return ErrBadCMap ;};case cmapInt :_bfb =int (_bbea ._cbff );
|
|
};};cmap ._ccf =integer {_gbf :true ,_ecgd :_bfb };return nil ;};type fbRange struct{_abg CharCode ;_bc CharCode ;_dg string ;};func (cmap *CMap )CharcodeToCID (code CharCode )(CharCode ,bool ){_adb ,_ef :=cmap ._ac [code ];return _adb ,_ef ;};type charRange struct{_bdf CharCode ;
|
|
_cb CharCode ;};func (cmap *CMap )Type ()int {return cmap ._cea };func _eda (_baac string )string {_bcce :=[]rune (_baac );_bcbe :=make ([]string ,len (_bcce ));for _cbcc ,_fag :=range _bcce {_bcbe [_cbcc ]=_a .Sprintf ("\u0025\u0030\u0034\u0078",_fag );
|
|
};return _a .Sprintf ("\u003c\u0025\u0073\u003e",_g .Join (_bcbe ,""));};type CIDSystemInfo struct{Registry string ;Ordering string ;Supplement int ;};func (_cgff *cMapParser )parseString ()(cmapString ,error ){_cgff ._cbg .ReadByte ();_gbbb :=_d .Buffer {};
|
|
_gaca :=1;for {_gdf ,_fadd :=_cgff ._cbg .Peek (1);if _fadd !=nil {return cmapString {_gbbb .String ()},_fadd ;};if _gdf [0]=='\\'{_cgff ._cbg .ReadByte ();_dacd ,_fccc :=_cgff ._cbg .ReadByte ();if _fccc !=nil {return cmapString {_gbbb .String ()},_fccc ;
|
|
};if _fc .IsOctalDigit (_dacd ){_bcfg ,_eea :=_cgff ._cbg .Peek (2);if _eea !=nil {return cmapString {_gbbb .String ()},_eea ;};var _aecf []byte ;_aecf =append (_aecf ,_dacd );for _ ,_dag :=range _bcfg {if _fc .IsOctalDigit (_dag ){_aecf =append (_aecf ,_dag );
|
|
}else {break ;};};_cgff ._cbg .Discard (len (_aecf )-1);_be .Log .Trace ("\u004e\u0075\u006d\u0065ri\u0063\u0020\u0073\u0074\u0072\u0069\u006e\u0067\u0020\u0022\u0025\u0073\u0022",_aecf );_abb ,_eea :=_ab .ParseUint (string (_aecf ),8,32);if _eea !=nil {return cmapString {_gbbb .String ()},_eea ;
|
|
};_gbbb .WriteByte (byte (_abb ));continue ;};switch _dacd {case 'n':_gbbb .WriteByte ('\n');case 'r':_gbbb .WriteByte ('\r');case 't':_gbbb .WriteByte ('\t');case 'b':_gbbb .WriteByte ('\b');case 'f':_gbbb .WriteByte ('\f');case '(':_gbbb .WriteByte ('(');
|
|
case ')':_gbbb .WriteByte (')');case '\\':_gbbb .WriteByte ('\\');};continue ;}else if _gdf [0]=='('{_gaca ++;}else if _gdf [0]==')'{_gaca --;if _gaca ==0{_cgff ._cbg .ReadByte ();break ;};};_gede ,_ :=_cgff ._cbg .ReadByte ();_gbbb .WriteByte (_gede );
|
|
};return cmapString {_gbbb .String ()},nil ;};func (_bacg *cMapParser )parseNumber ()(cmapObject ,error ){_afa ,_ebafb :=_fc .ParseNumber (_bacg ._cbg );if _ebafb !=nil {return nil ,_ebafb ;};switch _efb :=_afa .(type ){case *_fc .PdfObjectFloat :return cmapFloat {float64 (*_efb )},nil ;
|
|
case *_fc .PdfObjectInteger :return cmapInt {int64 (*_efb )},nil ;};return nil ,_a .Errorf ("\u0075n\u0068\u0061\u006e\u0064\u006c\u0065\u0064\u0020\u006e\u0075\u006db\u0065\u0072\u0020\u0074\u0079\u0070\u0065\u0020\u0025\u0054",_afa );};func _ffaa (_ece []byte )*cMapParser {_gagb :=cMapParser {};
|
|
_dac :=_d .NewBuffer (_ece );_gagb ._cbg =_bg .NewReader (_dac );return &_gagb ;};var (ErrBadCMap =_df .New ("\u0062\u0061\u0064\u0020\u0063\u006d\u0061\u0070");ErrBadCMapComment =_df .New ("c\u006f\u006d\u006d\u0065\u006e\u0074 \u0073\u0068\u006f\u0075\u006c\u0064\u0020\u0073\u0074a\u0072\u0074\u0020w\u0069t\u0068\u0020\u0025");
|
|
ErrBadCMapDict =_df .New ("\u0069\u006e\u0076a\u006c\u0069\u0064\u0020\u0064\u0069\u0063\u0074"););func _bfbg (_fbcf cmapHexString )CharCode {_afab :=CharCode (0);for _ ,_bgaf :=range _fbcf ._bgadf {_afab <<=8;_afab |=CharCode (_bgaf );};return _afab ;
|
|
};func (cmap *CMap )Name ()string {return cmap ._ca };func NewToUnicodeCMap (codeToRune map[CharCode ]rune )*CMap {_dgf :=make (map[CharCode ]string ,len (codeToRune ));for _gf ,_gb :=range codeToRune {_dgf [_gf ]=string (_gb );};cmap :=&CMap {_ca :"\u0041d\u006fb\u0065\u002d\u0049\u0064\u0065n\u0074\u0069t\u0079\u002d\u0055\u0043\u0053",_cea :2,_fgb :16,_af :CIDSystemInfo {Registry :"\u0041\u0064\u006fb\u0065",Ordering :"\u0055\u0043\u0053",Supplement :0},_bgf :[]Codespace {{Low :0,High :0xffff}},_beg :_dgf ,_ebc :make (map[string ]CharCode ,len (codeToRune )),_ac :make (map[CharCode ]CharCode ,len (codeToRune )),_caa :make (map[CharCode ]CharCode ,len (codeToRune ))};
|
|
cmap .computeInverseMappings ();return cmap ;};func (_ffd *cMapParser )parseDict ()(cmapDict ,error ){_be .Log .Trace ("\u0052\u0065\u0061\u0064\u0069\u006e\u0067\u0020\u0050\u0044\u0046\u0020D\u0069\u0063\u0074\u0021");_cbae :=_begg ();_ebfb ,_ :=_ffd ._cbg .ReadByte ();
|
|
if _ebfb !='<'{return _cbae ,ErrBadCMapDict ;};_ebfb ,_ =_ffd ._cbg .ReadByte ();if _ebfb !='<'{return _cbae ,ErrBadCMapDict ;};for {_ffd .skipSpaces ();_dba ,_dcc :=_ffd ._cbg .Peek (2);if _dcc !=nil {return _cbae ,_dcc ;};if (_dba [0]=='>')&&(_dba [1]=='>'){_ffd ._cbg .ReadByte ();
|
|
_ffd ._cbg .ReadByte ();break ;};_eafb ,_dcc :=_ffd .parseName ();_be .Log .Trace ("\u004be\u0079\u003a\u0020\u0025\u0073",_eafb .Name );if _dcc !=nil {_be .Log .Debug ("\u0045\u0052R\u004f\u0052\u003a\u0020\u0052\u0065\u0074\u0075\u0072\u006e\u0069\u006e\u0067\u0020\u006e\u0061\u006d\u0065\u002e\u0020\u0065\u0072r=\u0025\u0076",_dcc );
|
|
return _cbae ,_dcc ;};_ffd .skipSpaces ();_ebafe ,_dcc :=_ffd .parseObject ();if _dcc !=nil {return _cbae ,_dcc ;};_cbae .Dict [_eafb .Name ]=_ebafe ;_ffd .skipSpaces ();_dba ,_dcc =_ffd ._cbg .Peek (3);if _dcc !=nil {return _cbae ,_dcc ;};if string (_dba )=="\u0064\u0065\u0066"{_ffd ._cbg .Discard (3);
|
|
};};return _cbae ,nil ;};func LoadPredefinedCMap (name string )(*CMap ,error ){cmap ,_ec :=_gd (name );if _ec !=nil {return nil ,_ec ;};if cmap ._ae ==""{cmap .computeInverseMappings ();return cmap ,nil ;};_cf ,_ec :=_gd (cmap ._ae );if _ec !=nil {return nil ,_ec ;
|
|
};for _ebg ,_bf :=range _cf ._ac {if _ ,_de :=cmap ._ac [_ebg ];!_de {cmap ._ac [_ebg ]=_bf ;};};cmap ._bgf =append (cmap ._bgf ,_cf ._bgf ...);cmap .computeInverseMappings ();return cmap ,nil ;};type cmapInt struct{_cbff int64 };func _fce (_ecgb ,_affe int )int {if _ecgb < _affe {return _ecgb ;
|
|
};return _affe ;};type cmapDict struct{Dict map[string ]cmapObject ;};func NewCIDSystemInfo (obj _fc .PdfObject )(_eb CIDSystemInfo ,_dgg error ){_bab ,_ce :=_fc .GetDict (obj );if !_ce {return CIDSystemInfo {},_fc .ErrTypeError ;};_fcb ,_ce :=_fc .GetStringVal (_bab .Get ("\u0052\u0065\u0067\u0069\u0073\u0074\u0072\u0079"));
|
|
if !_ce {return CIDSystemInfo {},_fc .ErrTypeError ;};_baa ,_ce :=_fc .GetStringVal (_bab .Get ("\u004f\u0072\u0064\u0065\u0072\u0069\u006e\u0067"));if !_ce {return CIDSystemInfo {},_fc .ErrTypeError ;};_cg ,_ce :=_fc .GetIntVal (_bab .Get ("\u0053\u0075\u0070\u0070\u006c\u0065\u006d\u0065\u006e\u0074"));
|
|
if !_ce {return CIDSystemInfo {},_fc .ErrTypeError ;};return CIDSystemInfo {Registry :_fcb ,Ordering :_baa ,Supplement :_cg },nil ;};type cmapHexString struct{_fbed int ;_bgadf []byte ;};func LoadCmapFromDataCID (data []byte )(*CMap ,error ){return LoadCmapFromData (data ,false )};
|
|
func _begg ()cmapDict {return cmapDict {Dict :map[string ]cmapObject {}}};func (cmap *CMap )inCodespace (_bb CharCode ,_ag int )bool {for _ ,_gea :=range cmap ._bgf {if _gea .Low <=_bb &&_bb <=_gea .High &&_ag ==_gea .NumBytes {return true ;};};return false ;
|
|
};func (_gabc *cMapParser )parseComment ()(string ,error ){var _ebbe _d .Buffer ;_ ,_gga :=_gabc .skipSpaces ();if _gga !=nil {return _ebbe .String (),_gga ;};_ecd :=true ;for {_ede ,_beab :=_gabc ._cbg .Peek (1);if _beab !=nil {_be .Log .Debug ("p\u0061r\u0073\u0065\u0043\u006f\u006d\u006d\u0065\u006et\u003a\u0020\u0065\u0072r=\u0025\u0076",_beab );
|
|
return _ebbe .String (),_beab ;};if _ecd &&_ede [0]!='%'{return _ebbe .String (),ErrBadCMapComment ;};_ecd =false ;if (_ede [0]!='\r')&&(_ede [0]!='\n'){_fccb ,_ :=_gabc ._cbg .ReadByte ();_ebbe .WriteByte (_fccb );}else {break ;};};return _ebbe .String (),nil ;
|
|
};func (cmap *CMap )String ()string {_dd :=cmap ._af ;_acg :=[]string {_a .Sprintf ("\u006e\u0062\u0069\u0074\u0073\u003a\u0025\u0064",cmap ._fgb ),_a .Sprintf ("\u0074y\u0070\u0065\u003a\u0025\u0064",cmap ._cea )};if cmap ._cc !=""{_acg =append (_acg ,_a .Sprintf ("\u0076\u0065\u0072\u0073\u0069\u006f\u006e\u003a\u0025\u0073",cmap ._cc ));
|
|
};if cmap ._ae !=""{_acg =append (_acg ,_a .Sprintf ("u\u0073\u0065\u0063\u006d\u0061\u0070\u003a\u0025\u0023\u0071",cmap ._ae ));};_acg =append (_acg ,_a .Sprintf ("\u0073\u0079\u0073\u0074\u0065\u006d\u0049\u006e\u0066\u006f\u003a\u0025\u0073",_dd .String ()));
|
|
if len (cmap ._bgf )> 0{_acg =append (_acg ,_a .Sprintf ("\u0063\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065\u0073\u003a\u0025\u0064",len (cmap ._bgf )));};if len (cmap ._beg )> 0{_acg =append (_acg ,_a .Sprintf ("\u0063\u006fd\u0065\u0054\u006fU\u006e\u0069\u0063\u006f\u0064\u0065\u003a\u0025\u0064",len (cmap ._beg )));
|
|
};return _a .Sprintf ("\u0043\u004d\u0041P\u007b\u0025\u0023\u0071\u0020\u0025\u0073\u007d",cmap ._ca ,_g .Join (_acg ,"\u0020"));};func (cmap *CMap )matchCode (_faa []byte )(_dgb CharCode ,_faf int ,_ceg bool ){for _cfg :=0;_cfg < _e ;_cfg ++{if _cfg < len (_faa ){_dgb =_dgb <<8|CharCode (_faa [_cfg ]);
|
|
_faf ++;};_ceg =cmap .inCodespace (_dgb ,_cfg +1);if _ceg {return _dgb ,_faf ,true ;};};_be .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u004e\u006f\u0020\u0063o\u0064\u0065\u0073\u0070\u0061\u0063\u0065\u0020m\u0061t\u0063\u0068\u0065\u0073\u0020\u0062\u0079\u0074\u0065\u0073\u003d\u005b\u0025\u0020\u0030\u0032\u0078\u005d=\u0025\u0023\u0071\u0020\u0063\u006d\u0061\u0070\u003d\u0025\u0073",_faa ,string (_faa ),cmap );
|
|
return 0,0,false ;};func (cmap *CMap )parseBfchar ()error {for {_cbdd ,_afff :=cmap .parseObject ();if _afff !=nil {if _afff ==_ba .EOF {break ;};return _afff ;};var _adg CharCode ;switch _bae :=_cbdd .(type ){case cmapOperand :if _bae .Operand ==_ebf {return nil ;
|
|
};return _df .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065d\u0020\u006fp\u0065\u0072\u0061\u006e\u0064");case cmapHexString :_adg =_bfbg (_bae );default:return _df .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065\u0064\u0020\u0074\u0079\u0070\u0065");
|
|
};_cbdd ,_afff =cmap .parseObject ();if _afff !=nil {if _afff ==_ba .EOF {break ;};return _afff ;};var _cefa []rune ;switch _dcb :=_cbdd .(type ){case cmapOperand :if _dcb .Operand ==_ebf {return nil ;};_be .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0055\u006e\u0065x\u0070\u0065\u0063\u0074\u0065\u0064\u0020o\u0070\u0065\u0072\u0061\u006e\u0064\u002e\u0020\u0025\u0023\u0076",_dcb );
|
|
return ErrBadCMap ;case cmapHexString :_cefa =_fge (_dcb );case cmapName :_be .Log .Debug ("E\u0052\u0052\u004f\u0052\u003a\u0020U\u006e\u0065\u0078\u0070\u0065\u0063\u0074\u0065\u0064 \u006e\u0061\u006de\u002e \u0025\u0023\u0076",_dcb );_cefa =[]rune {MissingCodeRune };
|
|
default:_be .Log .Debug ("E\u0052\u0052\u004f\u0052\u003a\u0020U\u006e\u0065\u0078\u0070\u0065\u0063\u0074\u0065\u0064 \u0074\u0079\u0070e\u002e \u0025\u0023\u0076",_cbdd );return ErrBadCMap ;};cmap ._beg [_adg ]=string (_cefa );};return nil ;};type cmapName struct{Name string ;
|
|
};func (cmap *CMap )StringToCID (s string )(CharCode ,bool ){_daac ,_daae :=cmap ._ebc [s ];return _daac ,_daae ;};type cmapString struct{String string ;};func _dbg (_bga string )rune {_befd :=[]rune (_bga );return _befd [len (_befd )-1]};func (cmap *CMap )CharcodeBytesToUnicode (data []byte )(string ,int ){_ged ,_fab :=cmap .BytesToCharcodes (data );
|
|
if !_fab {_be .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0043\u0068\u0061\u0072\u0063\u006f\u0064\u0065\u0042\u0079\u0074\u0065s\u0054\u006f\u0055\u006e\u0069\u0063\u006f\u0064\u0065\u002e\u0020\u004e\u006f\u0074\u0020\u0069n\u0020\u0063\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065\u0073\u002e\u0020\u0064\u0061\u0074\u0061\u003d\u005b\u0025\u0020\u0030\u0032\u0078]\u0020\u0063\u006d\u0061\u0070=\u0025\u0073",data ,cmap );
|
|
return "",0;};_ebgf :=make ([]string ,len (_ged ));var _cef []CharCode ;for _gg ,_cga :=range _ged {_afe ,_fbg :=cmap ._beg [_cga ];if !_fbg {_cef =append (_cef ,_cga );_afe =MissingCodeString ;};_ebgf [_gg ]=_afe ;};_ebb :=_g .Join (_ebgf ,"");if len (_cef )> 0{_be .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020C\u0068\u0061\u0072c\u006f\u0064\u0065\u0042y\u0074\u0065\u0073\u0054\u006f\u0055\u006e\u0069\u0063\u006f\u0064\u0065\u002e\u0020\u004e\u006f\u0074\u0020\u0069\u006e\u0020\u006d\u0061\u0070\u002e\u000a"+"\u0009d\u0061t\u0061\u003d\u005b\u0025\u00200\u0032\u0078]\u003d\u0025\u0023\u0071\u000a"+"\u0009\u0063h\u0061\u0072\u0063o\u0064\u0065\u0073\u003d\u0025\u0030\u0032\u0078\u000a"+"\u0009\u006d\u0069\u0073\u0073\u0069\u006e\u0067\u003d\u0025\u0064\u0020%\u0030\u0032\u0078\u000a"+"\u0009\u0075\u006e\u0069\u0063\u006f\u0064\u0065\u003d`\u0025\u0073\u0060\u000a"+"\u0009\u0063\u006d\u0061\u0070\u003d\u0025\u0073",data ,string (data ),_ged ,len (_cef ),_cef ,_ebb ,cmap );
|
|
};return _ebb ,len (_cef );};func (cmap *CMap )CIDSystemInfo ()CIDSystemInfo {return cmap ._af };func (cmap *CMap )CharcodeToUnicode (code CharCode )(string ,bool ){if _gc ,_dfa :=cmap ._beg [code ];_dfa {return _gc ,true ;};return MissingCodeString ,false ;
|
|
};const (_cffg ="\u0043\u0049\u0044\u0053\u0079\u0073\u0074\u0065\u006d\u0049\u006e\u0066\u006f";_bee ="\u0062e\u0067\u0069\u006e\u0063\u006d\u0061p";_cfb ="\u0065n\u0064\u0063\u006d\u0061\u0070";_baf ="\u0062\u0065\u0067\u0069nc\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065\u0072\u0061\u006e\u0067\u0065";
|
|
_bfa ="\u0065\u006e\u0064\u0063\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065r\u0061\u006e\u0067\u0065";_bgag ="b\u0065\u0067\u0069\u006e\u0062\u0066\u0063\u0068\u0061\u0072";_ebf ="\u0065n\u0064\u0062\u0066\u0063\u0068\u0061r";_gac ="\u0062\u0065\u0067i\u006e\u0062\u0066\u0072\u0061\u006e\u0067\u0065";
|
|
_ecfe ="\u0065\u006e\u0064\u0062\u0066\u0072\u0061\u006e\u0067\u0065";_ccb ="\u0062\u0065\u0067\u0069\u006e\u0063\u0069\u0064\u0072\u0061\u006e\u0067\u0065";_ceaf ="e\u006e\u0064\u0063\u0069\u0064\u0072\u0061\u006e\u0067\u0065";_bbb ="\u0075s\u0065\u0063\u006d\u0061\u0070";
|
|
_baeg ="\u0057\u004d\u006fd\u0065";_cde ="\u0043\u004d\u0061\u0070\u004e\u0061\u006d\u0065";_edc ="\u0043\u004d\u0061\u0070\u0054\u0079\u0070\u0065";_afdb ="C\u004d\u0061\u0070\u0056\u0065\u0072\u0073\u0069\u006f\u006e";);type cmapArray struct{Array []cmapObject ;
|
|
}; |