mirror of
https://github.com/unidoc/unipdf.git
synced 2025-04-27 13:48:51 +08:00
142 lines
41 KiB
Go
142 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 (_ad "bufio";_ac "bytes";_a "encoding/hex";_g "errors";_e "fmt";_ga "github.com/unidoc/unipdf/v3/common";_dd "github.com/unidoc/unipdf/v3/core";_gf "github.com/unidoc/unipdf/v3/internal/cmap/bcmaps";_ba "io";_gb "sort";_b "strconv";
|
|
_fd "strings";_d "unicode/utf16";);func (cmap *CMap )parseBfrange ()error {for {var _daf CharCode ;_fedd ,_gcf :=cmap .parseObject ();if _gcf !=nil {if _gcf ==_ba .EOF {break ;};return _gcf ;};switch _cbeb :=_fedd .(type ){case cmapOperand :if _cbeb .Operand ==_bgc {return nil ;
|
|
};return _g .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065d\u0020\u006fp\u0065\u0072\u0061\u006e\u0064");case cmapHexString :_daf =_fac (_cbeb );default:return _g .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065\u0064\u0020\u0074\u0079\u0070\u0065");
|
|
};var _acf CharCode ;_fedd ,_gcf =cmap .parseObject ();if _gcf !=nil {if _gcf ==_ba .EOF {break ;};return _gcf ;};switch _eagg :=_fedd .(type ){case cmapOperand :_ga .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 :_acf =_fac (_eagg );if _acf > 0xffff{_acf =0xffff;};default:_ga .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a \u0055\u006e\u0065\u0078\u0070e\u0063t\u0065d\u0020\u0074\u0079\u0070\u0065\u0020\u0025T",_fedd );return ErrBadCMap ;
|
|
};_fedd ,_gcf =cmap .parseObject ();if _gcf !=nil {if _gcf ==_ba .EOF {break ;};return _gcf ;};switch _abff :=_fedd .(type ){case cmapArray :if len (_abff .Array )!=int (_acf -_daf )+1{_ga .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 _fgb :=_daf ;_fgb <=_acf ;_fgb ++{_dbbd :=_abff .Array [_fgb -_daf ];_ded ,_gce :=_dbbd .(cmapHexString );if !_gce {return _g .New ("\u006e\u006f\u006e-h\u0065\u0078\u0020\u0073\u0074\u0072\u0069\u006e\u0067\u0020\u0069\u006e\u0020\u0061\u0072\u0072\u0061\u0079");
|
|
};_afe :=_efc (_ded );cmap ._cb [_fgb ]=string (_afe );};case cmapHexString :_bfe :=_efc (_abff );_dcd :=len (_bfe );for _beag :=_daf ;_beag <=_acf ;_beag ++{cmap ._cb [_beag ]=string (_bfe );if _dcd > 0{_bfe [_dcd -1]++;}else {_ga .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",_beag );
|
|
};if _beag ==1<<32-1{break ;};};default:_ga .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a \u0055\u006e\u0065\u0078\u0070e\u0063t\u0065d\u0020\u0074\u0079\u0070\u0065\u0020\u0025T",_fedd );return ErrBadCMap ;};};return nil ;};func (cmap *CMap )CharcodeBytesToUnicode (data []byte )(string ,int ){_gee ,_ggg :=cmap .BytesToCharcodes (data );
|
|
if !_ggg {_ga .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;};_eca :=make ([]string ,len (_gee ));var _ddb []CharCode ;for _cbd ,_fb :=range _gee {_cd ,_cbb :=cmap ._cb [_fb ];if !_cbb {_ddb =append (_ddb ,_fb );_cd =MissingCodeString ;};_eca [_cbd ]=_cd ;};_abf :=_fd .Join (_eca ,"");if len (_ddb )> 0{_ga .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 ),_gee ,len (_ddb ),_ddb ,_abf ,cmap );
|
|
};return _abf ,len (_ddb );};func (_bae *cMapParser )parseDict ()(cmapDict ,error ){_ga .Log .Trace ("\u0052\u0065\u0061\u0064\u0069\u006e\u0067\u0020\u0050\u0044\u0046\u0020D\u0069\u0063\u0074\u0021");_egd :=_dbgg ();_fdd ,_ :=_bae ._cbgf .ReadByte ();
|
|
if _fdd !='<'{return _egd ,ErrBadCMapDict ;};_fdd ,_ =_bae ._cbgf .ReadByte ();if _fdd !='<'{return _egd ,ErrBadCMapDict ;};for {_bae .skipSpaces ();_afag ,_ceg :=_bae ._cbgf .Peek (2);if _ceg !=nil {return _egd ,_ceg ;};if (_afag [0]=='>')&&(_afag [1]=='>'){_bae ._cbgf .ReadByte ();
|
|
_bae ._cbgf .ReadByte ();break ;};_ffc ,_ceg :=_bae .parseName ();_ga .Log .Trace ("\u004be\u0079\u003a\u0020\u0025\u0073",_ffc .Name );if _ceg !=nil {_ga .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",_ceg );
|
|
return _egd ,_ceg ;};_bae .skipSpaces ();_fdbe ,_ceg :=_bae .parseObject ();if _ceg !=nil {return _egd ,_ceg ;};_egd .Dict [_ffc .Name ]=_fdbe ;_bae .skipSpaces ();_afag ,_ceg =_bae ._cbgf .Peek (3);if _ceg !=nil {return _egd ,_ceg ;};if string (_afag )=="\u0064\u0065\u0066"{_bae ._cbgf .Discard (3);
|
|
};};return _egd ,nil ;};func NewCIDSystemInfo (obj _dd .PdfObject )(_ae CIDSystemInfo ,_c error ){_fc ,_de :=_dd .GetDict (obj );if !_de {return CIDSystemInfo {},_dd .ErrTypeError ;};_dc ,_de :=_dd .GetStringVal (_fc .Get ("\u0052\u0065\u0067\u0069\u0073\u0074\u0072\u0079"));
|
|
if !_de {return CIDSystemInfo {},_dd .ErrTypeError ;};_gg ,_de :=_dd .GetStringVal (_fc .Get ("\u004f\u0072\u0064\u0065\u0072\u0069\u006e\u0067"));if !_de {return CIDSystemInfo {},_dd .ErrTypeError ;};_bf ,_de :=_dd .GetIntVal (_fc .Get ("\u0053\u0075\u0070\u0070\u006c\u0065\u006d\u0065\u006e\u0074"));
|
|
if !_de {return CIDSystemInfo {},_dd .ErrTypeError ;};return CIDSystemInfo {Registry :_dc ,Ordering :_gg ,Supplement :_bf },nil ;};func (cmap *CMap )WMode ()(int ,bool ){return cmap ._ggc ._bff ,cmap ._ggc ._bgg };func (_faa *cMapParser )parseNumber ()(cmapObject ,error ){_cbeg ,_gadc :=_dd .ParseNumber (_faa ._cbgf );
|
|
if _gadc !=nil {return nil ,_gadc ;};switch _eagga :=_cbeg .(type ){case *_dd .PdfObjectFloat :return cmapFloat {float64 (*_eagga )},nil ;case *_dd .PdfObjectInteger :return cmapInt {int64 (*_eagga )},nil ;};return nil ,_e .Errorf ("\u0075n\u0068\u0061\u006e\u0064\u006c\u0065\u0064\u0020\u006e\u0075\u006db\u0065\u0072\u0020\u0074\u0079\u0070\u0065\u0020\u0025\u0054",_cbeg );
|
|
};type cMapParser struct{_cbgf *_ad .Reader };func (cmap *CMap )Type ()int {return cmap ._ade };func (cmap *CMap )computeInverseMappings (){for _bgf ,_dgf :=range cmap ._ge {if _bfd ,_ffa :=cmap ._ff [_dgf ];!_ffa ||(_ffa &&_bfd > _bgf ){cmap ._ff [_dgf ]=_bgf ;
|
|
};};for _cba ,_ecg :=range cmap ._cb {if _cga ,_dda :=cmap ._ea [_ecg ];!_dda ||(_dda &&_cga > _cba ){cmap ._ea [_ecg ]=_cba ;};};_gb .Slice (cmap ._gfa ,func (_bb ,_cge int )bool {return cmap ._gfa [_bb ].Low < cmap ._gfa [_cge ].Low });};func (cmap *CMap )Bytes ()[]byte {_ga .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 ._beb )> 0{return cmap ._beb ;};cmap ._beb =[]byte (_fd .Join ([]string {_dggb ,cmap .toBfData (),_fcd },"\u000a"));return cmap ._beb ;};func _fac (_bafg cmapHexString )CharCode {_gbbc :=CharCode (0);for _ ,_dgbf :=range _bafg ._dgb {_gbbc <<=8;
|
|
_gbbc |=CharCode (_dgbf );};return _gbbc ;};func _dea (_da string )(*CMap ,error ){_dgg ,_fdb :=_gf .Asset (_da );if _fdb !=nil {return nil ,_fdb ;};return LoadCmapFromDataCID (_dgg );};func (cmap *CMap )parseType ()error {_aed :=0;_cggc :=false ;for _ccd :=0;
|
|
_ccd < 3&&!_cggc ;_ccd ++{_eaca ,_adgg :=cmap .parseObject ();if _adgg !=nil {return _adgg ;};switch _adcg :=_eaca .(type ){case cmapOperand :switch _adcg .Operand {case "\u0064\u0065\u0066":_cggc =true ;default:_ga .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",_eaca );
|
|
return ErrBadCMap ;};case cmapInt :_aed =int (_adcg ._eaeec );};};cmap ._ade =_aed ;return nil ;};func (cmap *CMap )matchCode (_bbc []byte )(_dcb CharCode ,_aba int ,_gda bool ){for _bfdg :=0;_bfdg < _eb ;_bfdg ++{if _bfdg < len (_bbc ){_dcb =_dcb <<8|CharCode (_bbc [_bfdg ]);
|
|
_aba ++;};_gda =cmap .inCodespace (_dcb ,_bfdg +1);if _gda {return _dcb ,_aba ,true ;};};_ga .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",_bbc ,string (_bbc ),cmap );
|
|
return 0,0,false ;};type cmapOperand struct{Operand string ;};func (cmap *CMap )parseCIDRange ()error {for {_eeb ,_bcbd :=cmap .parseObject ();if _bcbd !=nil {if _bcbd ==_ba .EOF {break ;};return _bcbd ;};_cde ,_gef :=_eeb .(cmapHexString );if !_gef {if _beg ,_gfg :=_eeb .(cmapOperand );
|
|
_gfg {if _beg .Operand ==_gafg {return nil ;};return _g .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");
|
|
};};_cbed :=_fac (_cde );_eeb ,_bcbd =cmap .parseObject ();if _bcbd !=nil {if _bcbd ==_ba .EOF {break ;};return _bcbd ;};_dbgd ,_gef :=_eeb .(cmapHexString );if !_gef {return _g .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 (_cde ._dgb )!=len (_dbgd ._dgb ){return _g .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");};_eafb :=_fac (_dbgd );
|
|
if _cbed > _eafb {_ga .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",_cbed ,_eafb );
|
|
return ErrBadCMap ;};_eeb ,_bcbd =cmap .parseObject ();if _bcbd !=nil {if _bcbd ==_ba .EOF {break ;};return _bcbd ;};_eaba ,_gef :=_eeb .(cmapInt );if !_gef {return _g .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 _eaba ._eaeec < 0{return _g .New ("\u0069\u006e\u0076al\u0069\u0064\u0020\u0063\u0069\u0064\u0020\u0073\u0074\u0061\u0072\u0074\u0020\u0076\u0061\u006c\u0075\u0065");};_ecaf :=_eaba ._eaeec ;for _dgfe :=_cbed ;_dgfe <=_eafb ;_dgfe ++{cmap ._ge [_dgfe ]=CharCode (_ecaf );
|
|
_ecaf ++;};_ga .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",_cbed ,_eafb ,_eaba ._eaeec );};return nil ;};func LoadCmapFromDataCID (data []byte )(*CMap ,error ){return LoadCmapFromData (data ,false )};
|
|
func _dag (_gcde ,_fdaa int )int {if _gcde < _fdaa {return _gcde ;};return _fdaa ;};func (cmap *CMap )String ()string {_ecc :=cmap ._fg ;_cad :=[]string {_e .Sprintf ("\u006e\u0062\u0069\u0074\u0073\u003a\u0025\u0064",cmap ._cg ),_e .Sprintf ("\u0074y\u0070\u0065\u003a\u0025\u0064",cmap ._ade )};
|
|
if cmap ._dbg !=""{_cad =append (_cad ,_e .Sprintf ("\u0076\u0065\u0072\u0073\u0069\u006f\u006e\u003a\u0025\u0073",cmap ._dbg ));};if cmap ._ab !=""{_cad =append (_cad ,_e .Sprintf ("u\u0073\u0065\u0063\u006d\u0061\u0070\u003a\u0025\u0023\u0071",cmap ._ab ));
|
|
};_cad =append (_cad ,_e .Sprintf ("\u0073\u0079\u0073\u0074\u0065\u006d\u0049\u006e\u0066\u006f\u003a\u0025\u0073",_ecc .String ()));if len (cmap ._gfa )> 0{_cad =append (_cad ,_e .Sprintf ("\u0063\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065\u0073\u003a\u0025\u0064",len (cmap ._gfa )));
|
|
};if len (cmap ._cb )> 0{_cad =append (_cad ,_e .Sprintf ("\u0063\u006fd\u0065\u0054\u006fU\u006e\u0069\u0063\u006f\u0064\u0065\u003a\u0025\u0064",len (cmap ._cb )));};return _e .Sprintf ("\u0043\u004d\u0041P\u007b\u0025\u0023\u0071\u0020\u0025\u0073\u007d",cmap ._ag ,_fd .Join (_cad ,"\u0020"));
|
|
};func (cmap *CMap )Name ()string {return cmap ._ag };func (cmap *CMap )parseCodespaceRange ()error {for {_gaed ,_fdfb :=cmap .parseObject ();if _fdfb !=nil {if _fdfb ==_ba .EOF {break ;};return _fdfb ;};_cefb ,_bcb :=_gaed .(cmapHexString );if !_bcb {if _ecdb ,_fgd :=_gaed .(cmapOperand );
|
|
_fgd {if _ecdb .Operand ==_dadb {return nil ;};return _g .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065d\u0020\u006fp\u0065\u0072\u0061\u006e\u0064");};};_gaed ,_fdfb =cmap .parseObject ();if _fdfb !=nil {if _fdfb ==_ba .EOF {break ;};return _fdfb ;
|
|
};_egge ,_bcb :=_gaed .(cmapHexString );if !_bcb {return _g .New ("\u006e\u006f\u006e-\u0068\u0065\u0078\u0020\u0068\u0069\u0067\u0068");};if len (_cefb ._dgb )!=len (_egge ._dgb ){return _g .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");
|
|
};_gac :=_fac (_cefb );_dbb :=_fac (_egge );if _dbb < _gac {_ga .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",_gac ,_dbb );
|
|
return ErrBadCMap ;};_eaf :=_egge ._bcgg ;_gfd :=Codespace {NumBytes :_eaf ,Low :_gac ,High :_dbb };cmap ._gfa =append (cmap ._gfa ,_gfd );_ga .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",_gac ,_dbb );
|
|
};if len (cmap ._gfa )==0{_ga .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 ;};func (cmap *CMap )CharcodeToUnicode (code CharCode )(string ,bool ){if _df ,_ffg :=cmap ._cb [code ];
|
|
_ffg {return _df ,true ;};return MissingCodeString ,false ;};func (cmap *CMap )parseName ()error {_ecge :="";_acg :=false ;for _gdf :=0;_gdf < 20&&!_acg ;_gdf ++{_ecd ,_fed :=cmap .parseObject ();if _fed !=nil {return _fed ;};switch _bad :=_ecd .(type ){case cmapOperand :switch _bad .Operand {case "\u0064\u0065\u0066":_acg =true ;
|
|
default:_ga .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",_ecd ,_ecge );
|
|
if _ecge !=""{_ecge =_e .Sprintf ("\u0025\u0073\u0020%\u0073",_ecge ,_bad .Operand );};_ga .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",_ecge );
|
|
};case cmapName :_ecge =_bad .Name ;};};if !_acg {_ga .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a \u0070\u0061\u0072\u0073\u0065N\u0061m\u0065:\u0020\u004e\u006f\u0020\u0064\u0065\u0066 ");return ErrBadCMap ;};cmap ._ag =_ecge ;return nil ;};type CMap struct{*cMapParser ;
|
|
_ag string ;_cg int ;_ade int ;_dbg string ;_ab string ;_fg CIDSystemInfo ;_gfa []Codespace ;_ge map[CharCode ]CharCode ;_ff map[CharCode ]CharCode ;_cb map[CharCode ]string ;_ea map[string ]CharCode ;_beb []byte ;_cgf *_dd .PdfObjectStream ;_ggc integer ;
|
|
};type fbRange struct{_egg CharCode ;_db CharCode ;_gbd string ;};func LoadCmapFromData (data []byte ,isSimple bool )(*CMap ,error ){_ga .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 :=_gc (isSimple );cmap .cMapParser =_ccc (data );_eae :=cmap .parse ();if _eae !=nil {return nil ,_eae ;};if len (cmap ._gfa )==0{if cmap ._ab !=""{return cmap ,nil ;};_ga .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 );
|
|
return nil ,ErrBadCMap ;};cmap .computeInverseMappings ();return cmap ,nil ;};func _ccc (_fdfg []byte )*cMapParser {_aedg :=cMapParser {};_cafa :=_ac .NewBuffer (_fdfg );_aedg ._cbgf =_ad .NewReader (_cafa );return &_aedg ;};func (cmap *CMap )inCodespace (_ffd CharCode ,_adce int )bool {for _ ,_bac :=range cmap ._gfa {if _bac .Low <=_ffd &&_ffd <=_bac .High &&_adce ==_bac .NumBytes {return true ;
|
|
};};return false ;};func (cmap *CMap )parse ()error {var _cbe cmapObject ;for {_cae ,_egga :=cmap .parseObject ();if _egga !=nil {if _egga ==_ba .EOF {break ;};_ga .Log .Debug ("\u0045\u0052\u0052OR\u003a\u0020\u0070\u0061\u0072\u0073\u0069\u006e\u0067\u0020\u0043\u004d\u0061\u0070\u003a\u0020\u0025\u0076",_egga );
|
|
return _egga ;};switch _add :=_cae .(type ){case cmapOperand :_fda :=_add ;switch _fda .Operand {case _daea :_ecgb :=cmap .parseCodespaceRange ();if _ecgb !=nil {return _ecgb ;};case _ddef :_cbc :=cmap .parseCIDRange ();if _cbc !=nil {return _cbc ;};case _caf :_dec :=cmap .parseBfchar ();
|
|
if _dec !=nil {return _dec ;};case _gdae :_fef :=cmap .parseBfrange ();if _fef !=nil {return _fef ;};case _cbgg :if _cbe ==nil {_ga .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 ;};_ede ,_gage :=_cbe .(cmapName );if !_gage {_ga .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",_cbe );
|
|
return ErrBadCMap ;};cmap ._ab =_ede .Name ;case _acfg :_afa :=cmap .parseSystemInfo ();if _afa !=nil {return _afa ;};};case cmapName :_cbg :=_add ;switch _cbg .Name {case _acfg :_dcg :=cmap .parseSystemInfo ();if _dcg !=nil {return _dcg ;};case _fbg :_eag :=cmap .parseName ();
|
|
if _eag !=nil {return _eag ;};case _bba :_fgc :=cmap .parseType ();if _fgc !=nil {return _fgc ;};case _cgc :_cgeb :=cmap .parseVersion ();if _cgeb !=nil {return _cgeb ;};case _ebf :if _egga =cmap .parseWMode ();_egga !=nil {return _egga ;};};};_cbe =_cae ;
|
|
};return nil ;};func (cmap *CMap )BytesToCharcodes (data []byte )([]CharCode ,bool ){var _agc []CharCode ;if cmap ._cg ==8{for _ ,_adb :=range data {_agc =append (_agc ,CharCode (_adb ));};return _agc ,true ;};for _ggf :=0;_ggf < len (data );{_cec ,_egc ,_ege :=cmap .matchCode (data [_ggf :]);
|
|
if !_ege {_ga .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",_ggf ,data ,string (data ));
|
|
return _agc ,false ;};_agc =append (_agc ,_cec );_ggf +=_egc ;};return _agc ,true ;};var (ErrBadCMap =_g .New ("\u0062\u0061\u0064\u0020\u0063\u006d\u0061\u0070");ErrBadCMapComment =_g .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 =_g .New ("\u0069\u006e\u0076a\u006c\u0069\u0064\u0020\u0064\u0069\u0063\u0074"););func NewToUnicodeCMap (codeToRune map[CharCode ]rune )*CMap {_gd :=make (map[CharCode ]string ,len (codeToRune ));for _bg ,_aa :=range codeToRune {_gd [_bg ]=string (_aa );
|
|
};cmap :=&CMap {_ag :"\u0041d\u006fb\u0065\u002d\u0049\u0064\u0065n\u0074\u0069t\u0079\u002d\u0055\u0043\u0053",_ade :2,_cg :16,_fg :CIDSystemInfo {Registry :"\u0041\u0064\u006fb\u0065",Ordering :"\u0055\u0043\u0053",Supplement :0},_gfa :[]Codespace {{Low :0,High :0xffff}},_cb :_gd ,_ea :make (map[string ]CharCode ,len (codeToRune )),_ge :make (map[CharCode ]CharCode ,len (codeToRune )),_ff :make (map[CharCode ]CharCode ,len (codeToRune ))};
|
|
cmap .computeInverseMappings ();return cmap ;};func (_bcg *cMapParser )parseHexString ()(cmapHexString ,error ){_bcg ._cbgf .ReadByte ();_dbfb :=[]byte ("\u0030\u0031\u0032\u003345\u0036\u0037\u0038\u0039\u0061\u0062\u0063\u0064\u0065\u0066\u0041\u0042\u0043\u0044E\u0046");
|
|
_dff :=_ac .Buffer {};for {_bcg .skipSpaces ();_ffbe ,_eaa :=_bcg ._cbgf .Peek (1);if _eaa !=nil {return cmapHexString {},_eaa ;};if _ffbe [0]=='>'{_bcg ._cbgf .ReadByte ();break ;};_fefc ,_ :=_bcg ._cbgf .ReadByte ();if _ac .IndexByte (_dbfb ,_fefc )>=0{_dff .WriteByte (_fefc );
|
|
};};if _dff .Len ()%2==1{_ga .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",_dff .String ());_dff .WriteByte ('0');};_gff :=_dff .Len ()/2;
|
|
_cefd ,_ :=_a .DecodeString (_dff .String ());return cmapHexString {_bcgg :_gff ,_dgb :_cefd },nil ;};func (_cdc *cMapParser )parseOperand ()(cmapOperand ,error ){_agef :=cmapOperand {};_gbde :=_ac .Buffer {};for {_gea ,_afda :=_cdc ._cbgf .Peek (1);if _afda !=nil {if _afda ==_ba .EOF {break ;
|
|
};return _agef ,_afda ;};if _dd .IsDelimiter (_gea [0]){break ;};if _dd .IsWhiteSpace (_gea [0]){break ;};_ace ,_ :=_cdc ._cbgf .ReadByte ();_gbde .WriteByte (_ace );};if _gbde .Len ()==0{return _agef ,_e .Errorf ("\u0069\u006e\u0076al\u0069\u0064\u0020\u006f\u0070\u0065\u0072\u0061\u006e\u0064\u0020\u0028\u0065\u006d\u0070\u0074\u0079\u0029");
|
|
};_agef .Operand =_gbde .String ();return _agef ,nil ;};func (_be *CIDSystemInfo )String ()string {return _e .Sprintf ("\u0025\u0073\u002d\u0025\u0073\u002d\u0025\u0030\u0033\u0064",_be .Registry ,_be .Ordering ,_be .Supplement );};func (cmap *CMap )parseVersion ()error {_eff :="";
|
|
_eaee :=false ;for _fcgg :=0;_fcgg < 3&&!_eaee ;_fcgg ++{_gaee ,_fdf :=cmap .parseObject ();if _fdf !=nil {return _fdf ;};switch _abbf :=_gaee .(type ){case cmapOperand :switch _abbf .Operand {case "\u0064\u0065\u0066":_eaee =true ;default:_ga .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",_gaee );
|
|
return ErrBadCMap ;};case cmapInt :_eff =_e .Sprintf ("\u0025\u0064",_abbf ._eaeec );case cmapFloat :_eff =_e .Sprintf ("\u0025\u0066",_abbf ._bgfc );case cmapString :_eff =_abbf .String ;default:_ga .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",_gaee );
|
|
};};cmap ._dbg =_eff ;return nil ;};func (cmap *CMap )CIDSystemInfo ()CIDSystemInfo {return cmap ._fg };type cmapDict struct{Dict map[string ]cmapObject ;};type CIDSystemInfo struct{Registry string ;Ordering string ;Supplement int ;};func (_bde *cMapParser )skipSpaces ()(int ,error ){_bef :=0;
|
|
for {_fcgd ,_cgac :=_bde ._cbgf .Peek (1);if _cgac !=nil {return 0,_cgac ;};if _dd .IsWhiteSpace (_fcgd [0]){_bde ._cbgf .ReadByte ();_bef ++;}else {break ;};};return _bef ,nil ;};func _efc (_gaba cmapHexString )[]rune {if len (_gaba ._dgb )==1{return []rune {rune (_gaba ._dgb [0])};
|
|
};_cdf :=_gaba ._dgb ;if len (_cdf )%2!=0{_cdf =append (_cdf ,0);_ga .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",_gaba ,_cdf );
|
|
};_egdd :=len (_cdf )>>1;_dabg :=make ([]uint16 ,_egdd );for _dfa :=0;_dfa < _egdd ;_dfa ++{_dabg [_dfa ]=uint16 (_cdf [_dfa <<1])<<8+uint16 (_cdf [_dfa <<1+1]);};_cgad :=_d .Decode (_dabg );return _cgad ;};type cmapName struct{Name string ;};func _bab (_cgff string )rune {_abfc :=[]rune (_cgff );
|
|
return _abfc [len (_abfc )-1]};type cmapString struct{String string ;};func (cmap *CMap )CIDToCharcode (cid CharCode )(CharCode ,bool ){_ce ,_cc :=cmap ._ff [cid ];return _ce ,_cc ;};func (_cfc *cMapParser )parseName ()(cmapName ,error ){_cgd :="";_feb :=false ;
|
|
for {_dbgc ,_aab :=_cfc ._cbgf .Peek (1);if _aab ==_ba .EOF {break ;};if _aab !=nil {return cmapName {_cgd },_aab ;};if !_feb {if _dbgc [0]=='/'{_feb =true ;_cfc ._cbgf .ReadByte ();}else {_ga .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",_dbgc ,_dbgc );
|
|
return cmapName {_cgd },_e .Errorf ("\u0069n\u0076a\u006c\u0069\u0064\u0020\u006ea\u006d\u0065:\u0020\u0028\u0025\u0063\u0029",_dbgc [0]);};}else {if _dd .IsWhiteSpace (_dbgc [0]){break ;}else if (_dbgc [0]=='/')||(_dbgc [0]=='[')||(_dbgc [0]=='(')||(_dbgc [0]==']')||(_dbgc [0]=='<')||(_dbgc [0]=='>'){break ;
|
|
}else if _dbgc [0]=='#'{_fefbg ,_effc :=_cfc ._cbgf .Peek (3);if _effc !=nil {return cmapName {_cgd },_effc ;};_cfc ._cbgf .Discard (3);_ecca ,_effc :=_a .DecodeString (string (_fefbg [1:3]));if _effc !=nil {return cmapName {_cgd },_effc ;};_cgd +=string (_ecca );
|
|
}else {_ffb ,_ :=_cfc ._cbgf .ReadByte ();_cgd +=string (_ffb );};};};return cmapName {_cgd },nil ;};func (cmap *CMap )toBfData ()string {if len (cmap ._cb )==0{return "";};_gdc :=make ([]CharCode ,0,len (cmap ._cb ));for _cea :=range cmap ._cb {_gdc =append (_gdc ,_cea );
|
|
};_gb .Slice (_gdc ,func (_fcg ,_gege int )bool {return _gdc [_fcg ]< _gdc [_gege ]});var _bga []charRange ;_cbaf :=charRange {_gdc [0],_gdc [0]};_cdd :=cmap ._cb [_gdc [0]];for _ ,_dbc :=range _gdc [1:]{_dgef :=cmap ._cb [_dbc ];if _dbc ==_cbaf ._af +1&&_bab (_dgef )==_bab (_cdd )+1{_cbaf ._af =_dbc ;
|
|
}else {_bga =append (_bga ,_cbaf );_cbaf ._eg ,_cbaf ._af =_dbc ,_dbc ;};_cdd =_dgef ;};_bga =append (_bga ,_cbaf );var _fbd []CharCode ;var _fab []fbRange ;for _ ,_ef :=range _bga {if _ef ._eg ==_ef ._af {_fbd =append (_fbd ,_ef ._eg );}else {_fab =append (_fab ,fbRange {_egg :_ef ._eg ,_db :_ef ._af ,_gbd :cmap ._cb [_ef ._eg ]});
|
|
};};_ga .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 (_bga ),len (_fbd ),len (_fab ));var _bge []string ;if len (_fbd )> 0{_aef :=(len (_fbd )+_aeg -1)/_aeg ;
|
|
for _dggg :=0;_dggg < _aef ;_dggg ++{_ddec :=_dag (len (_fbd )-_dggg *_aeg ,_aeg );_bge =append (_bge ,_e .Sprintf ("\u0025\u0064\u0020\u0062\u0065\u0067\u0069\u006e\u0062f\u0063\u0068\u0061\u0072",_ddec ));for _cgg :=0;_cgg < _ddec ;_cgg ++{_edd :=_fbd [_dggg *_aeg +_cgg ];
|
|
_gag :=cmap ._cb [_edd ];_bge =append (_bge ,_e .Sprintf ("\u003c%\u0030\u0034\u0078\u003e\u0020\u0025s",_edd ,_eac (_gag )));};_bge =append (_bge ,"\u0065n\u0064\u0062\u0066\u0063\u0068\u0061r");};};if len (_fab )> 0{_agd :=(len (_fab )+_aeg -1)/_aeg ;
|
|
for _eea :=0;_eea < _agd ;_eea ++{_gaf :=_dag (len (_fab )-_eea *_aeg ,_aeg );_bge =append (_bge ,_e .Sprintf ("\u0025d\u0020b\u0065\u0067\u0069\u006e\u0062\u0066\u0072\u0061\u006e\u0067\u0065",_gaf ));for _dbce :=0;_dbce < _gaf ;_dbce ++{_gdca :=_fab [_eea *_aeg +_dbce ];
|
|
_bge =append (_bge ,_e .Sprintf ("\u003c%\u00304\u0078\u003e\u003c\u0025\u0030\u0034\u0078\u003e\u0020\u0025\u0073",_gdca ._egg ,_gdca ._db ,_eac (_gdca ._gbd )));};_bge =append (_bge ,"\u0065\u006e\u0064\u0062\u0066\u0072\u0061\u006e\u0067\u0065");};};
|
|
return _fd .Join (_bge ,"\u000a");};func (cmap *CMap )NBits ()int {return cmap ._cg };func LoadPredefinedCMap (name string )(*CMap ,error ){cmap ,_bd :=_dea (name );if _bd !=nil {return nil ,_bd ;};if cmap ._ab ==""{cmap .computeInverseMappings ();return cmap ,nil ;
|
|
};_fa ,_bd :=_dea (cmap ._ab );if _bd !=nil {return nil ,_bd ;};for _ee ,_adg :=range _fa ._ge {if _ ,_ed :=cmap ._ge [_ee ];!_ed {cmap ._ge [_ee ]=_adg ;};};cmap ._gfa =append (cmap ._gfa ,_fa ._gfa ...);cmap .computeInverseMappings ();return cmap ,nil ;
|
|
};func (cmap *CMap )CharcodeToCID (code CharCode )(CharCode ,bool ){_adc ,_ca :=cmap ._ge [code ];return _adc ,_ca ;};type cmapHexString struct{_bcgg int ;_dgb []byte ;};type cmapFloat struct{_bgfc float64 };func _dbgg ()cmapDict {return cmapDict {Dict :map[string ]cmapObject {}}};
|
|
func (_cfb *cMapParser )parseArray ()(cmapArray ,error ){_ffe :=cmapArray {};_ffe .Array =[]cmapObject {};_cfb ._cbgf .ReadByte ();for {_cfb .skipSpaces ();_eded ,_fabc :=_cfb ._cbgf .Peek (1);if _fabc !=nil {return _ffe ,_fabc ;};if _eded [0]==']'{_cfb ._cbgf .ReadByte ();
|
|
break ;};_agda ,_fabc :=_cfb .parseObject ();if _fabc !=nil {return _ffe ,_fabc ;};_ffe .Array =append (_ffe .Array ,_agda );};return _ffe ,nil ;};type charRange struct{_eg CharCode ;_af CharCode ;};func (_cce *cMapParser )parseString ()(cmapString ,error ){_cce ._cbgf .ReadByte ();
|
|
_egf :=_ac .Buffer {};_cfcg :=1;for {_ebc ,_eeg :=_cce ._cbgf .Peek (1);if _eeg !=nil {return cmapString {_egf .String ()},_eeg ;};if _ebc [0]=='\\'{_cce ._cbgf .ReadByte ();_baf ,_bbbb :=_cce ._cbgf .ReadByte ();if _bbbb !=nil {return cmapString {_egf .String ()},_bbbb ;
|
|
};if _dd .IsOctalDigit (_baf ){_agddf ,_bdea :=_cce ._cbgf .Peek (2);if _bdea !=nil {return cmapString {_egf .String ()},_bdea ;};var _bee []byte ;_bee =append (_bee ,_baf );for _ ,_dgeg :=range _agddf {if _dd .IsOctalDigit (_dgeg ){_bee =append (_bee ,_dgeg );
|
|
}else {break ;};};_cce ._cbgf .Discard (len (_bee )-1);_ga .Log .Trace ("\u004e\u0075\u006d\u0065ri\u0063\u0020\u0073\u0074\u0072\u0069\u006e\u0067\u0020\u0022\u0025\u0073\u0022",_bee );_eaef ,_bdea :=_b .ParseUint (string (_bee ),8,32);if _bdea !=nil {return cmapString {_egf .String ()},_bdea ;
|
|
};_egf .WriteByte (byte (_eaef ));continue ;};switch _baf {case 'n':_egf .WriteByte ('\n');case 'r':_egf .WriteByte ('\r');case 't':_egf .WriteByte ('\t');case 'b':_egf .WriteByte ('\b');case 'f':_egf .WriteByte ('\f');case '(':_egf .WriteByte ('(');case ')':_egf .WriteByte (')');
|
|
case '\\':_egf .WriteByte ('\\');};continue ;}else if _ebc [0]=='('{_cfcg ++;}else if _ebc [0]==')'{_cfcg --;if _cfcg ==0{_cce ._cbgf .ReadByte ();break ;};};_dgec ,_ :=_cce ._cbgf .ReadByte ();_egf .WriteByte (_dgec );};return cmapString {_egf .String ()},nil ;
|
|
};func (_afd *cMapParser )parseComment ()(string ,error ){var _cdg _ac .Buffer ;_ ,_dggf :=_afd .skipSpaces ();if _dggf !=nil {return _cdg .String (),_dggf ;};_bgb :=true ;for {_abd ,_cafb :=_afd ._cbgf .Peek (1);if _cafb !=nil {_ga .Log .Debug ("p\u0061r\u0073\u0065\u0043\u006f\u006d\u006d\u0065\u006et\u003a\u0020\u0065\u0072r=\u0025\u0076",_cafb );
|
|
return _cdg .String (),_cafb ;};if _bgb &&_abd [0]!='%'{return _cdg .String (),ErrBadCMapComment ;};_bgb =false ;if (_abd [0]!='\r')&&(_abd [0]!='\n'){_gec ,_ :=_afd ._cbgf .ReadByte ();_cdg .WriteByte (_gec );}else {break ;};};return _cdg .String (),nil ;
|
|
};func (cmap *CMap )parseWMode ()error {var _abb int ;_ggfe :=false ;for _adf :=0;_adf < 3&&!_ggfe ;_adf ++{_cag ,_fdae :=cmap .parseObject ();if _fdae !=nil {return _fdae ;};switch _fgac :=_cag .(type ){case cmapOperand :switch _fgac .Operand {case "\u0064\u0065\u0066":_ggfe =true ;
|
|
default:_ga .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",_cag );return ErrBadCMap ;};case cmapInt :_abb =int (_fgac ._eaeec );
|
|
};};cmap ._ggc =integer {_bgg :true ,_bff :_abb };return nil ;};func (cmap *CMap )parseSystemInfo ()error {_ecf :=false ;_gab :=false ;_bfbe :="";_eddc :=false ;_bea :=CIDSystemInfo {};for _adcf :=0;_adcf < 50&&!_eddc ;_adcf ++{_accb ,_ffaa :=cmap .parseObject ();
|
|
if _ffaa !=nil {return _ffaa ;};switch _cf :=_accb .(type ){case cmapDict :_afc :=_cf .Dict ;_ddf ,_dgd :=_afc ["\u0052\u0065\u0067\u0069\u0073\u0074\u0072\u0079"];if !_dgd {_ga .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");
|
|
return ErrBadCMap ;};_edda ,_dgd :=_ddf .(cmapString );if !_dgd {_ga .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_bea .Registry =_edda .String ;
|
|
_ddf ,_dgd =_afc ["\u004f\u0072\u0064\u0065\u0072\u0069\u006e\u0067"];if !_dgd {_ga .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_edda ,_dgd =_ddf .(cmapString );
|
|
if !_dgd {_ga .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_bea .Ordering =_edda .String ;_gabb ,_dgd :=_afc ["\u0053\u0075\u0070\u0070\u006c\u0065\u006d\u0065\u006e\u0074"];
|
|
if !_dgd {_ga .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_aad ,_dgd :=_gabb .(cmapInt );if !_dgd {_ga .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");
|
|
return ErrBadCMap ;};_bea .Supplement =int (_aad ._eaeec );_eddc =true ;case cmapOperand :switch _cf .Operand {case "\u0062\u0065\u0067i\u006e":_ecf =true ;case "\u0065\u006e\u0064":_eddc =true ;case "\u0064\u0065\u0066":_gab =false ;};case cmapName :if _ecf {_bfbe =_cf .Name ;
|
|
_gab =true ;};case cmapString :if _gab {switch _bfbe {case "\u0052\u0065\u0067\u0069\u0073\u0074\u0072\u0079":_bea .Registry =_cf .String ;case "\u004f\u0072\u0064\u0065\u0072\u0069\u006e\u0067":_bea .Ordering =_cf .String ;};};case cmapInt :if _gab {switch _bfbe {case "\u0053\u0075\u0070\u0070\u006c\u0065\u006d\u0065\u006e\u0074":_bea .Supplement =int (_cf ._eaeec );
|
|
};};};};if !_eddc {_ga .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 ._fg =_bea ;return nil ;};func (cmap *CMap )Stream ()(*_dd .PdfObjectStream ,error ){if cmap ._cgf !=nil {return cmap ._cgf ,nil ;};_daa ,_aee :=_dd .MakeStream (cmap .Bytes (),_dd .NewFlateEncoder ());if _aee !=nil {return nil ,_aee ;
|
|
};cmap ._cgf =_daa ;return cmap ._cgf ,nil ;};type integer struct{_bgg bool ;_bff int ;};type cmapArray struct{Array []cmapObject ;};const (_eb =4;MissingCodeRune ='\ufffd';MissingCodeString =string (MissingCodeRune ););func IsPredefinedCMap (name string )bool {return _gf .AssetExists (name )};
|
|
type Codespace struct{NumBytes int ;Low CharCode ;High CharCode ;};const (_acfg ="\u0043\u0049\u0044\u0053\u0079\u0073\u0074\u0065\u006d\u0049\u006e\u0066\u006f";_gbcb ="\u0062e\u0067\u0069\u006e\u0063\u006d\u0061p";_cdaf ="\u0065n\u0064\u0063\u006d\u0061\u0070";
|
|
_daea ="\u0062\u0065\u0067\u0069nc\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065\u0072\u0061\u006e\u0067\u0065";_dadb ="\u0065\u006e\u0064\u0063\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065r\u0061\u006e\u0067\u0065";_caf ="b\u0065\u0067\u0069\u006e\u0062\u0066\u0063\u0068\u0061\u0072";
|
|
_adcc ="\u0065n\u0064\u0062\u0066\u0063\u0068\u0061r";_gdae ="\u0062\u0065\u0067i\u006e\u0062\u0066\u0072\u0061\u006e\u0067\u0065";_bgc ="\u0065\u006e\u0064\u0062\u0066\u0072\u0061\u006e\u0067\u0065";_ddef ="\u0062\u0065\u0067\u0069\u006e\u0063\u0069\u0064\u0072\u0061\u006e\u0067\u0065";
|
|
_gafg ="e\u006e\u0064\u0063\u0069\u0064\u0072\u0061\u006e\u0067\u0065";_cbgg ="\u0075s\u0065\u0063\u006d\u0061\u0070";_ebf ="\u0057\u004d\u006fd\u0065";_fbg ="\u0043\u004d\u0061\u0070\u004e\u0061\u006d\u0065";_bba ="\u0043\u004d\u0061\u0070\u0054\u0079\u0070\u0065";
|
|
_cgc ="C\u004d\u0061\u0070\u0056\u0065\u0072\u0073\u0069\u006f\u006e";);func (cmap *CMap )parseBfchar ()error {for {_ddd ,_gad :=cmap .parseObject ();if _gad !=nil {if _gad ==_ba .EOF {break ;};return _gad ;};var _ebd CharCode ;switch _deg :=_ddd .(type ){case cmapOperand :if _deg .Operand ==_adcc {return nil ;
|
|
};return _g .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065d\u0020\u006fp\u0065\u0072\u0061\u006e\u0064");case cmapHexString :_ebd =_fac (_deg );default:return _g .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065\u0064\u0020\u0074\u0079\u0070\u0065");
|
|
};_ddd ,_gad =cmap .parseObject ();if _gad !=nil {if _gad ==_ba .EOF {break ;};return _gad ;};var _dce []rune ;switch _afcd :=_ddd .(type ){case cmapOperand :if _afcd .Operand ==_adcc {return nil ;};_ga .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",_afcd );
|
|
return ErrBadCMap ;case cmapHexString :_dce =_efc (_afcd );case cmapName :_ga .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",_afcd );_dce =[]rune {MissingCodeRune };
|
|
default:_ga .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",_ddd );return ErrBadCMap ;};cmap ._cb [_ebd ]=string (_dce );};return nil ;};func _gc (_age bool )*CMap {_eab :=16;
|
|
if _age {_eab =8;};return &CMap {_cg :_eab ,_ge :make (map[CharCode ]CharCode ),_ff :make (map[CharCode ]CharCode ),_cb :make (map[CharCode ]string ),_ea :make (map[string ]CharCode )};};type CharCode uint32 ;type cmapInt struct{_eaeec int64 };func (_gcd *cMapParser )parseObject ()(cmapObject ,error ){_gcd .skipSpaces ();
|
|
for {_fge ,_geef :=_gcd ._cbgf .Peek (2);if _geef !=nil {return nil ,_geef ;};if _fge [0]=='%'{_gcd .parseComment ();_gcd .skipSpaces ();continue ;}else if _fge [0]=='/'{_fefb ,_gcba :=_gcd .parseName ();return _fefb ,_gcba ;}else if _fge [0]=='('{_egeb ,_egb :=_gcd .parseString ();
|
|
return _egeb ,_egb ;}else if _fge [0]=='['{_ebb ,_dbf :=_gcd .parseArray ();return _ebb ,_dbf ;}else if (_fge [0]=='<')&&(_fge [1]=='<'){_cgb ,_agf :=_gcd .parseDict ();return _cgb ,_agf ;}else if _fge [0]=='<'{_ccg ,_ceeb :=_gcd .parseHexString ();return _ccg ,_ceeb ;
|
|
}else if _dd .IsDecimalDigit (_fge [0])||(_fge [0]=='-'&&_dd .IsDecimalDigit (_fge [1])){_dca ,_ceae :=_gcd .parseNumber ();if _ceae !=nil {return nil ,_ceae ;};return _dca ,nil ;}else {_agdd ,_gfgd :=_gcd .parseOperand ();if _gfgd !=nil {return nil ,_gfgd ;
|
|
};return _agdd ,nil ;};};};func _bbd (_bebd cmapHexString )rune {_cca :=_efc (_bebd );if _aff :=len (_cca );_aff ==0{_ga .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",_bebd );
|
|
return MissingCodeRune ;};if len (_cca )> 1{_ga .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",_bebd ,_cca );
|
|
};return _cca [0];};type cmapObject interface{};func (cmap *CMap )StringToCID (s string )(CharCode ,bool ){_dde ,_acc :=cmap ._ea [s ];return _dde ,_acc ;};const (_aeg =100;_dggb ="\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";
|
|
_fcd ="\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";
|
|
);func _eac (_bgae string )string {_dab :=[]rune (_bgae );_fga :=make ([]string ,len (_dab ));for _cda ,_babb :=range _dab {_fga [_cda ]=_e .Sprintf ("\u0025\u0030\u0034\u0078",_babb );};return _e .Sprintf ("\u003c\u0025\u0073\u003e",_fd .Join (_fga ,""));
|
|
}; |