// // 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 core defines and implements the primitive PDF object types in golang, and provides functionality // for parsing those from a PDF file stream. This includes I/O handling, cross references, repairs, encryption, // encoding and other core capabilities. package core ;import (_eb "bufio";_fe "bytes";_aae "compress/lzw";_aaf "compress/zlib";_be "crypto/md5";_ca "crypto/rand";_bae "encoding/hex";_e "errors";_g "fmt";_fc "github.com/unidoc/unipdf/v3/common";_cg "github.com/unidoc/unipdf/v3/core/security"; _gc "github.com/unidoc/unipdf/v3/core/security/crypt";_aec "github.com/unidoc/unipdf/v3/internal/ccittfax";_aeg "github.com/unidoc/unipdf/v3/internal/imageutil";_gdd "github.com/unidoc/unipdf/v3/internal/jbig2";_gb "github.com/unidoc/unipdf/v3/internal/jbig2/bitmap"; _cc "github.com/unidoc/unipdf/v3/internal/jbig2/decoder";_af "github.com/unidoc/unipdf/v3/internal/jbig2/document";_gd "github.com/unidoc/unipdf/v3/internal/jbig2/errors";_bge "github.com/unidoc/unipdf/v3/internal/strutils";_fec "golang.org/x/image/tiff/lzw"; _ga "golang.org/x/xerrors";_fa "image";_ba "image/color";_fb "image/jpeg";_ae "io";_dd "io/ioutil";_aa "reflect";_d "regexp";_f "sort";_ef "strconv";_de "strings";_b "sync";_c "time";_bg "unicode";); // SetImage sets the image base for given flate encoder. func (_eecd *FlateEncoder )SetImage (img *_aeg .ImageBase ){_eecd ._bdb =img };func (_bb *PdfCrypt )makeKey (_dedg string ,_gdc ,_aca uint32 ,_ceg []byte )([]byte ,error ){_cbc ,_beba :=_bb ._cad [_dedg ];if !_beba {return nil ,_g .Errorf ("\u0075n\u006b\u006e\u006f\u0077n\u0020\u0063\u0072\u0079\u0070t\u0020f\u0069l\u0074\u0065\u0072\u0020\u0028\u0025\u0073)",_dedg ); };return _cbc .MakeKey (_gdc ,_aca ,_ceg );}; // NewCompliancePdfParser creates a new PdfParser that will parse input reader with the focus on extracting more metadata, which // might affect performance of the regular PdfParser this function. func NewCompliancePdfParser (rs _ae .ReadSeeker )(_ffg *PdfParser ,_bfcf error ){_ffg =&PdfParser {_bcced :rs ,ObjCache :make (objectCache ),_abeb :map[int64 ]bool {},_egaa :true ,_agdf :make (map[*PdfParser ]*PdfParser )};if _bfcf =_ffg .parseDetailedHeader (); _bfcf !=nil {return nil ,_bfcf ;};if _ffg ._affd ,_bfcf =_ffg .loadXrefs ();_bfcf !=nil {_fc .Log .Debug ("\u0045\u0052RO\u0052\u003a\u0020F\u0061\u0069\u006c\u0065d t\u006f l\u006f\u0061\u0064\u0020\u0078\u0072\u0065f \u0074\u0061\u0062\u006c\u0065\u0021\u0020%\u0073",_bfcf ); return nil ,_bfcf ;};_fc .Log .Trace ("T\u0072\u0061\u0069\u006c\u0065\u0072\u003a\u0020\u0025\u0073",_ffg ._affd );if len (_ffg ._fgaf .ObjectMap )==0{return nil ,_g .Errorf ("\u0065\u006d\u0070\u0074\u0079\u0020\u0058\u0052\u0045\u0046\u0020t\u0061\u0062\u006c\u0065\u0020\u002d\u0020\u0049\u006e\u0076a\u006c\u0069\u0064"); };return _ffg ,nil ;}; // Read implementation of Read interface. func (_acg *limitedReadSeeker )Read (p []byte )(_aecf int ,_faec error ){_dfab ,_faec :=_acg ._bgfd .Seek (0,_ae .SeekCurrent );if _faec !=nil {return 0,_faec ;};_ffaa :=_acg ._gfbf -_dfab ;if _ffaa ==0{return 0,_ae .EOF ;};if _eadc :=int64 (len (p )); _eadc < _ffaa {_ffaa =_eadc ;};_debb :=make ([]byte ,_ffaa );_aecf ,_faec =_acg ._bgfd .Read (_debb );copy (p ,_debb );return _aecf ,_faec ;}; // String returns a string describing `stream`. func (_cbceb *PdfObjectStream )String ()string {return _g .Sprintf ("O\u0062j\u0065\u0063\u0074\u0020\u0073\u0074\u0072\u0065a\u006d\u0020\u0025\u0064: \u0025\u0073",_cbceb .ObjectNumber ,_cbceb .PdfObjectDictionary );}; // String returns a descriptive information string about the encryption method used. func (_fbcc *PdfCrypt )String ()string {if _fbcc ==nil {return "";};_dgg :=_fbcc ._fgce .Filter +"\u0020\u002d\u0020";if _fbcc ._fgce .V ==0{_dgg +="\u0055\u006e\u0064\u006fcu\u006d\u0065\u006e\u0074\u0065\u0064\u0020\u0061\u006c\u0067\u006f\u0072\u0069\u0074h\u006d"; }else if _fbcc ._fgce .V ==1{_dgg +="\u0052\u0043\u0034:\u0020\u0034\u0030\u0020\u0062\u0069\u0074\u0073";}else if _fbcc ._fgce .V ==2{_dgg +=_g .Sprintf ("\u0052\u0043\u0034:\u0020\u0025\u0064\u0020\u0062\u0069\u0074\u0073",_fbcc ._fgce .Length );}else if _fbcc ._fgce .V ==3{_dgg +="U\u006e\u0070\u0075\u0062li\u0073h\u0065\u0064\u0020\u0061\u006cg\u006f\u0072\u0069\u0074\u0068\u006d"; }else if _fbcc ._fgce .V >=4{_dgg +=_g .Sprintf ("\u0053\u0074r\u0065\u0061\u006d\u0020f\u0069\u006ct\u0065\u0072\u003a\u0020\u0025\u0073\u0020\u002d \u0053\u0074\u0072\u0069\u006e\u0067\u0020\u0066\u0069\u006c\u0074\u0065r\u003a\u0020\u0025\u0073",_fbcc ._ggag ,_fbcc ._afaf ); _dgg +="\u003b\u0020C\u0072\u0079\u0070t\u0020\u0066\u0069\u006c\u0074\u0065\u0072\u0073\u003a";for _fbda ,_cgd :=range _fbcc ._cad {_dgg +=_g .Sprintf ("\u0020\u002d\u0020\u0025\u0073\u003a\u0020\u0025\u0073 \u0028\u0025\u0064\u0029",_fbda ,_cgd .Name (),_cgd .KeyLength ()); };};_cade :=_fbcc .GetAccessPermissions ();_dgg +=_g .Sprintf ("\u0020\u002d\u0020\u0025\u0023\u0076",_cade );return _dgg ;};func (_eab *PdfCrypt )isDecrypted (_agcd PdfObject )bool {_ ,_cegb :=_eab ._abff [_agcd ];if _cegb {_fc .Log .Trace ("\u0041\u006c\u0072\u0065\u0061\u0064\u0079\u0020\u0064\u0065\u0063\u0072y\u0070\u0074\u0065\u0064"); return true ;};switch _fgd :=_agcd .(type ){case *PdfObjectStream :if _eab ._fbe .R !=5{if _eaag ,_dfb :=_fgd .Get ("\u0054\u0079\u0070\u0065").(*PdfObjectName );_dfb &&*_eaag =="\u0058\u0052\u0065\u0066"{return true ;};};case *PdfIndirectObject :if _ ,_cegb =_eab ._ggg [int (_fgd .ObjectNumber )]; _cegb {return true ;};switch _bacg :=_fgd .PdfObject .(type ){case *PdfObjectDictionary :_cfa :=true ;for _ ,_fce :=range _ddb {if _bacg .Get (_fce )==nil {_cfa =false ;break ;};};if _cfa {return true ;};};};_fc .Log .Trace ("\u004e\u006f\u0074\u0020\u0064\u0065\u0063\u0072\u0079\u0070\u0074\u0065d\u0020\u0079\u0065\u0074"); return false ;};func (_fgbe *PdfParser )parseNull ()(PdfObjectNull ,error ){_ ,_gbgaa :=_fgbe ._dcfe .Discard (4);return PdfObjectNull {},_gbgaa ;}; // RunLengthEncoder represents Run length encoding. type RunLengthEncoder struct{};func _cgaf (_aefc *PdfObjectStream )(*MultiEncoder ,error ){_accc :=NewMultiEncoder ();_aaef :=_aefc .PdfObjectDictionary ;if _aaef ==nil {return _accc ,nil ;};var _bgbdg *PdfObjectDictionary ;var _gbeg []PdfObject ;_aeeg :=_aaef .Get ("D\u0065\u0063\u006f\u0064\u0065\u0050\u0061\u0072\u006d\u0073"); if _aeeg !=nil {_ababa ,_fdad :=_aeeg .(*PdfObjectDictionary );if _fdad {_bgbdg =_ababa ;};_eaeg ,_dcf :=_aeeg .(*PdfObjectArray );if _dcf {for _ ,_fgcg :=range _eaeg .Elements (){_fgcg =TraceToDirectObject (_fgcg );if _dgfb ,_daabb :=_fgcg .(*PdfObjectDictionary ); _daabb {_gbeg =append (_gbeg ,_dgfb );}else {_gbeg =append (_gbeg ,MakeDict ());};};};};_aeeg =_aaef .Get ("\u0046\u0069\u006c\u0074\u0065\u0072");if _aeeg ==nil {return nil ,_g .Errorf ("\u0066\u0069\u006c\u0074\u0065\u0072\u0020\u006d\u0069s\u0073\u0069\u006e\u0067"); };_caga ,_bgdgb :=_aeeg .(*PdfObjectArray );if !_bgdgb {return nil ,_g .Errorf ("m\u0075\u006c\u0074\u0069\u0020\u0066\u0069\u006c\u0074\u0065\u0072\u0020\u0063\u0061\u006e\u0020\u006f\u006el\u0079\u0020\u0062\u0065\u0020\u006d\u0061\u0064\u0065\u0020fr\u006f\u006d\u0020a\u0072r\u0061\u0079"); };for _gcda ,_dgb :=range _caga .Elements (){_fddeab ,_cbdd :=_dgb .(*PdfObjectName );if !_cbdd {return nil ,_g .Errorf ("\u006d\u0075l\u0074\u0069\u0020\u0066i\u006c\u0074e\u0072\u0020\u0061\u0072\u0072\u0061\u0079\u0020e\u006c\u0065\u006d\u0065\u006e\u0074\u0020\u006e\u006f\u0074\u0020\u0061 \u006e\u0061\u006d\u0065"); };var _eefg PdfObject ;if _bgbdg !=nil {_eefg =_bgbdg ;}else {if len (_gbeg )> 0{if _gcda >=len (_gbeg ){return nil ,_g .Errorf ("\u006d\u0069\u0073\u0073\u0069\u006e\u0067\u0020\u0065\u006c\u0065\u006d\u0065n\u0074\u0073\u0020\u0069\u006e\u0020d\u0065\u0063\u006f\u0064\u0065\u0020\u0070\u0061\u0072\u0061\u006d\u0073\u0020a\u0072\u0072\u0061\u0079"); };_eefg =_gbeg [_gcda ];};};var _cdeg *PdfObjectDictionary ;if _baf ,_bgaa :=_eefg .(*PdfObjectDictionary );_bgaa {_cdeg =_baf ;};_fc .Log .Trace ("\u004e\u0065\u0078t \u006e\u0061\u006d\u0065\u003a\u0020\u0025\u0073\u002c \u0064p\u003a \u0025v\u002c\u0020\u0064\u0050\u0061\u0072\u0061\u006d\u0073\u003a\u0020\u0025\u0076",*_fddeab ,_eefg ,_cdeg ); if *_fddeab ==StreamEncodingFilterNameFlate {_dcb ,_adfc :=_geb (_aefc ,_cdeg );if _adfc !=nil {return nil ,_adfc ;};_accc .AddEncoder (_dcb );}else if *_fddeab ==StreamEncodingFilterNameLZW {_cffdb ,_bgbg :=_egfc (_aefc ,_cdeg );if _bgbg !=nil {return nil ,_bgbg ; };_accc .AddEncoder (_cffdb );}else if *_fddeab ==StreamEncodingFilterNameASCIIHex {_gedd :=NewASCIIHexEncoder ();_accc .AddEncoder (_gedd );}else if *_fddeab ==StreamEncodingFilterNameASCII85 {_gdfb :=NewASCII85Encoder ();_accc .AddEncoder (_gdfb );}else if *_fddeab ==StreamEncodingFilterNameDCT {_eca ,_fagag :=_fdee (_aefc ,_accc ); if _fagag !=nil {return nil ,_fagag ;};_accc .AddEncoder (_eca );_fc .Log .Trace ("A\u0064d\u0065\u0064\u0020\u0044\u0043\u0054\u0020\u0065n\u0063\u006f\u0064\u0065r.\u002e\u002e");_fc .Log .Trace ("\u004du\u006ct\u0069\u0020\u0065\u006e\u0063o\u0064\u0065r\u003a\u0020\u0025\u0023\u0076",_accc ); }else if *_fddeab ==StreamEncodingFilterNameCCITTFax {_adc ,_agad :=_fdeb (_aefc ,_cdeg );if _agad !=nil {return nil ,_agad ;};_accc .AddEncoder (_adc );}else {_fc .Log .Error ("U\u006e\u0073\u0075\u0070po\u0072t\u0065\u0064\u0020\u0066\u0069l\u0074\u0065\u0072\u0020\u0025\u0073",*_fddeab ); return nil ,_g .Errorf ("\u0069\u006eva\u006c\u0069\u0064 \u0066\u0069\u006c\u0074er \u0069n \u006d\u0075\u006c\u0074\u0069\u0020\u0066il\u0074\u0065\u0072\u0020\u0061\u0072\u0072a\u0079");};};return _accc ,nil ;}; // String returns a string describing `null`. func (_dggb *PdfObjectNull )String ()string {return "\u006e\u0075\u006c\u006c"}; // PdfObjectBool represents the primitive PDF boolean object. type PdfObjectBool bool ; // MakeDecodeParams makes a new instance of an encoding dictionary based on // the current encoder settings. func (_bda *RunLengthEncoder )MakeDecodeParams ()PdfObject {return nil }; // GetNumbersAsFloat converts a list of pdf objects representing floats or integers to a slice of // float64 values. func GetNumbersAsFloat (objects []PdfObject )(_feaf []float64 ,_aeaaf error ){for _ ,_gafdb :=range objects {_cgbgd ,_gbead :=GetNumberAsFloat (_gafdb );if _gbead !=nil {return nil ,_gbead ;};_feaf =append (_feaf ,_cgbgd );};return _feaf ,nil ;}; // PdfParser parses a PDF file and provides access to the object structure of the PDF. type PdfParser struct{_beae Version ;_bcced _ae .ReadSeeker ;_dcfe *_eb .Reader ;_acfbc int64 ;_fgaf XrefTable ;_cbce int64 ;_dffd *xrefType ;_abbf objectStreams ;_affd *PdfObjectDictionary ;_agga *PdfCrypt ;_fadb *PdfIndirectObject ;_fbba bool ;ObjCache objectCache ; _aaaa map[int ]bool ;_abeb map[int64 ]bool ;_adfgf ParserMetadata ;_egaa bool ;_abd []int64 ;_gdgc int ;_efaaca bool ;_geee int64 ;_agdf map[*PdfParser ]*PdfParser ;_cgeg []*PdfParser ;};func (_dbdf *PdfParser )parseArray ()(*PdfObjectArray ,error ){_ecef :=MakeArray (); _dbdf ._dcfe .ReadByte ();for {_dbdf .skipSpaces ();_gcaed ,_ffag :=_dbdf ._dcfe .Peek (1);if _ffag !=nil {return _ecef ,_ffag ;};if _gcaed [0]==']'{_dbdf ._dcfe .ReadByte ();break ;};_fdef ,_ffag :=_dbdf .parseObject ();if _ffag !=nil {return _ecef ,_ffag ; };_ecef .Append (_fdef );};return _ecef ,nil ;}; // CheckAccessRights checks access rights and permissions for a specified password. If either user/owner password is // specified, full rights are granted, otherwise the access rights are specified by the Permissions flag. // // The bool flag indicates that the user can access and view the file. // The AccessPermissions shows what access the user has for editing etc. // An error is returned if there was a problem performing the authentication. func (_gcaff *PdfParser )CheckAccessRights (password []byte )(bool ,_cg .Permissions ,error ){if _gcaff ._agga ==nil {return true ,_cg .PermOwner ,nil ;};return _gcaff ._agga .checkAccessRights (password );}; // PdfObjectName represents the primitive PDF name object. type PdfObjectName string ; // UpdateParams updates the parameter values of the encoder. func (_fgf *RunLengthEncoder )UpdateParams (params *PdfObjectDictionary ){}; // NewJPXEncoder returns a new instance of JPXEncoder. func NewJPXEncoder ()*JPXEncoder {return &JPXEncoder {}};func (_fbag *limitedReadSeeker )getError (_adff int64 )error {switch {case _adff < 0:return _g .Errorf ("\u0075\u006e\u0065\u0078\u0070\u0065\u0063\u0074\u0065\u0064 \u006e\u0065\u0067\u0061\u0074\u0069\u0076e\u0020\u006f\u0066\u0066\u0073\u0065\u0074\u003a\u0020\u0025\u0064",_adff ); case _adff > _fbag ._gfbf :return _g .Errorf ("u\u006e\u0065\u0078\u0070ec\u0074e\u0064\u0020\u006f\u0066\u0066s\u0065\u0074\u003a\u0020\u0025\u0064",_adff );};return nil ;}; // DecodeStream returns the passed in stream as a slice of bytes. // The purpose of the method is to satisfy the StreamEncoder interface. func (_geedg *RawEncoder )DecodeStream (streamObj *PdfObjectStream )([]byte ,error ){return streamObj .Stream ,nil ;}; // EncodeImage encodes 'img' golang image.Image into jbig2 encoded bytes document using default encoder settings. func (_agg *JBIG2Encoder )EncodeImage (img _fa .Image )([]byte ,error ){return _agg .encodeImage (img )};func (_dgcac *PdfObjectFloat )String ()string {return _g .Sprintf ("\u0025\u0066",*_dgcac )}; // IsNullObject returns true if `obj` is a PdfObjectNull. func IsNullObject (obj PdfObject )bool {_ ,_bfac :=TraceToDirectObject (obj ).(*PdfObjectNull );return _bfac ;}; // MakeStreamDict makes a new instance of an encoding dictionary for a stream object. // Has the Filter set and the DecodeParms. func (_aafea *FlateEncoder )MakeStreamDict ()*PdfObjectDictionary {_dgea :=MakeDict ();_dgea .Set ("\u0046\u0069\u006c\u0074\u0065\u0072",MakeName (_aafea .GetFilterName ()));_fde :=_aafea .MakeDecodeParams ();if _fde !=nil {_dgea .Set ("D\u0065\u0063\u006f\u0064\u0065\u0050\u0061\u0072\u006d\u0073",_fde ); };return _dgea ;};func (_adcd *JBIG2Image )toBitmap ()(_fdaa *_gb .Bitmap ,_gcfg error ){const _dccd ="\u004a\u0042\u0049\u00472I\u006d\u0061\u0067\u0065\u002e\u0074\u006f\u0042\u0069\u0074\u006d\u0061\u0070";if _adcd .Data ==nil {return nil ,_gd .Error (_dccd ,"\u0069\u006d\u0061\u0067e \u0064\u0061\u0074\u0061\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006ee\u0064"); };if _adcd .Width ==0||_adcd .Height ==0{return nil ,_gd .Error (_dccd ,"\u0069\u006d\u0061\u0067\u0065\u0020h\u0065\u0069\u0067\u0068\u0074\u0020\u006f\u0072\u0020\u0077\u0069\u0064\u0074h\u0020\u006e\u006f\u0074\u0020\u0064\u0065f\u0069\u006e\u0065\u0064"); };if _adcd .HasPadding {_fdaa ,_gcfg =_gb .NewWithData (_adcd .Width ,_adcd .Height ,_adcd .Data );}else {_fdaa ,_gcfg =_gb .NewWithUnpaddedData (_adcd .Width ,_adcd .Height ,_adcd .Data );};if _gcfg !=nil {return nil ,_gd .Wrap (_gcfg ,_dccd ,"");};return _fdaa ,nil ; }; // MultiEncoder supports serial encoding. type MultiEncoder struct{_fdec []StreamEncoder }; // MakeDecodeParams makes a new instance of an encoding dictionary based on // the current encoder settings. func (_acdc *DCTEncoder )MakeDecodeParams ()PdfObject {return nil }; // String returns the PDF version as a string. Implements interface fmt.Stringer. func (_cdgf Version )String ()string {return _g .Sprintf ("\u00250\u0064\u002e\u0025\u0030\u0064",_cdgf .Major ,_cdgf .Minor );}; // DecodeBytes decodes a slice of Flate encoded bytes and returns the result. func (_dbg *FlateEncoder )DecodeBytes (encoded []byte )([]byte ,error ){_fc .Log .Trace ("\u0046\u006c\u0061\u0074\u0065\u0044\u0065\u0063\u006f\u0064\u0065\u0020b\u0079\u0074\u0065\u0073");if len (encoded )==0{_fc .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0065\u006d\u0070\u0074\u0079\u0020\u0046\u006c\u0061\u0074\u0065 e\u006ec\u006f\u0064\u0065\u0064\u0020\u0062\u0075\u0066\u0066\u0065\u0072\u002e \u0052\u0065\u0074\u0075\u0072\u006e\u0069\u006e\u0067\u0020\u0065\u006d\u0070\u0074\u0079\u0020\u0062y\u0074\u0065\u0020\u0073\u006c\u0069\u0063\u0065\u002e"); return []byte {},nil ;};_cbde :=_fe .NewReader (encoded );_gefa ,_dfc :=_aaf .NewReader (_cbde );if _dfc !=nil {_fc .Log .Debug ("\u0044e\u0063o\u0064\u0069\u006e\u0067\u0020e\u0072\u0072o\u0072\u0020\u0025\u0076\u000a",_dfc );_fc .Log .Debug ("\u0053t\u0072e\u0061\u006d\u0020\u0028\u0025\u0064\u0029\u0020\u0025\u0020\u0078",len (encoded ),encoded ); return nil ,_dfc ;};defer _gefa .Close ();var _ddfc _fe .Buffer ;_ddfc .ReadFrom (_gefa );return _ddfc .Bytes (),nil ;}; // String returns a string representation of `name`. func (_cedd *PdfObjectName )String ()string {return string (*_cedd )}; // ReadBytesAt reads byte content at specific offset and length within the PDF. func (_gbde *PdfParser )ReadBytesAt (offset ,len int64 )([]byte ,error ){_ggede :=_gbde .GetFileOffset ();_ ,_agge :=_gbde ._bcced .Seek (offset ,_ae .SeekStart );if _agge !=nil {return nil ,_agge ;};_gegc :=make ([]byte ,len );_ ,_agge =_ae .ReadAtLeast (_gbde ._bcced ,_gegc ,int (len )); if _agge !=nil {return nil ,_agge ;};_gbde .SetFileOffset (_ggede );return _gegc ,nil ;}; // NewFlateEncoder makes a new flate encoder with default parameters, predictor 1 and bits per component 8. func NewFlateEncoder ()*FlateEncoder {_fgda :=&FlateEncoder {};_fgda .Predictor =1;_fgda .BitsPerComponent =8;_fgda .Colors =1;_fgda .Columns =1;return _fgda ;}; // MakeArrayFromIntegers64 creates an PdfObjectArray from a slice of int64s, where each array element // is an PdfObjectInteger. func MakeArrayFromIntegers64 (vals []int64 )*PdfObjectArray {_bbga :=MakeArray ();for _ ,_babc :=range vals {_bbga .Append (MakeInteger (_babc ));};return _bbga ;}; // PdfObject is an interface which all primitive PDF objects must implement. type PdfObject interface{ // String outputs a string representation of the primitive (for debugging). String ()string ; // WriteString outputs the PDF primitive as written to file as expected by the standard. // TODO(dennwc): it should return a byte slice, or accept a writer WriteString ()string ;}; // UpdateParams updates the parameter values of the encoder. func (_ffdd *CCITTFaxEncoder )UpdateParams (params *PdfObjectDictionary ){if _cffd ,_acffg :=GetNumberAsInt64 (params .Get ("\u004b"));_acffg ==nil {_ffdd .K =int (_cffd );};if _gbge ,_aaec :=GetNumberAsInt64 (params .Get ("\u0043o\u006c\u0075\u006d\u006e\u0073")); _aaec ==nil {_ffdd .Columns =int (_gbge );}else if _gbge ,_aaec =GetNumberAsInt64 (params .Get ("\u0057\u0069\u0064t\u0068"));_aaec ==nil {_ffdd .Columns =int (_gbge );};if _ggdf ,_fffa :=GetNumberAsInt64 (params .Get ("\u0042\u006c\u0061\u0063\u006b\u0049\u0073\u0031")); _fffa ==nil {_ffdd .BlackIs1 =_ggdf > 0;}else {if _eddcg ,_gcdfd :=GetBoolVal (params .Get ("\u0042\u006c\u0061\u0063\u006b\u0049\u0073\u0031"));_gcdfd {_ffdd .BlackIs1 =_eddcg ;}else {if _cbba ,_adad :=GetArray (params .Get ("\u0044\u0065\u0063\u006f\u0064\u0065")); _adad {_gagaf ,_bggb :=_cbba .ToIntegerArray ();if _bggb ==nil {_ffdd .BlackIs1 =_gagaf [0]==1&&_gagaf [1]==0;};};};};if _bgec ,_abb :=GetNumberAsInt64 (params .Get ("\u0045\u006ec\u006f\u0064\u0065d\u0042\u0079\u0074\u0065\u0041\u006c\u0069\u0067\u006e")); _abb ==nil {_ffdd .EncodedByteAlign =_bgec > 0;}else {if _bdaa ,_bcce :=GetBoolVal (params .Get ("\u0045\u006ec\u006f\u0064\u0065d\u0042\u0079\u0074\u0065\u0041\u006c\u0069\u0067\u006e"));_bcce {_ffdd .EncodedByteAlign =_bdaa ;};};if _efcf ,_cded :=GetNumberAsInt64 (params .Get ("\u0045n\u0064\u004f\u0066\u004c\u0069\u006ee")); _cded ==nil {_ffdd .EndOfLine =_efcf > 0;}else {if _abfgf ,_dgda :=GetBoolVal (params .Get ("\u0045n\u0064\u004f\u0066\u004c\u0069\u006ee"));_dgda {_ffdd .EndOfLine =_abfgf ;};};if _cbgcc ,_bfeg :=GetNumberAsInt64 (params .Get ("\u0052\u006f\u0077\u0073")); _bfeg ==nil {_ffdd .Rows =int (_cbgcc );}else if _cbgcc ,_bfeg =GetNumberAsInt64 (params .Get ("\u0048\u0065\u0069\u0067\u0068\u0074"));_bfeg ==nil {_ffdd .Rows =int (_cbgcc );};if _cdc ,_aaba :=GetNumberAsInt64 (params .Get ("\u0045\u006e\u0064\u004f\u0066\u0042\u006c\u006f\u0063\u006b")); _aaba ==nil {_ffdd .EndOfBlock =_cdc > 0;}else {if _fced ,_bddbgb :=GetBoolVal (params .Get ("\u0045\u006e\u0064\u004f\u0066\u0042\u006c\u006f\u0063\u006b"));_bddbgb {_ffdd .EndOfBlock =_fced ;};};if _dbadag ,_ffdc :=GetNumberAsInt64 (params .Get ("\u0044\u0061\u006d\u0061ge\u0064\u0052\u006f\u0077\u0073\u0042\u0065\u0066\u006f\u0072\u0065\u0045\u0072\u0072o\u0072")); _ffdc !=nil {_ffdd .DamagedRowsBeforeError =int (_dbadag );};}; // Remove removes an element specified by key. func (_fbdaf *PdfObjectDictionary )Remove (key PdfObjectName ){_cfcg :=-1;for _fcfac ,_abfce :=range _fbdaf ._agde {if _abfce ==key {_cfcg =_fcfac ;break ;};};if _cfcg >=0{_fbdaf ._agde =append (_fbdaf ._agde [:_cfcg ],_fbdaf ._agde [_cfcg +1:]...);delete (_fbdaf ._fecf ,key ); };}; // DecodeStream decodes a DCT encoded stream and returns the result as a // slice of bytes. func (_ccbe *DCTEncoder )DecodeStream (streamObj *PdfObjectStream )([]byte ,error ){return _ccbe .DecodeBytes (streamObj .Stream );}; // SetFileOffset sets the file to an offset position and resets buffer. func (_adb *PdfParser )SetFileOffset (offset int64 ){if offset < 0{offset =0;};_adb ._bcced .Seek (offset ,_ae .SeekStart );_adb ._dcfe =_eb .NewReader (_adb ._bcced );};const (_dbb =0;_ceea =1;_acfb =2;_effg =3;_fgcfd =4;); // HasNonConformantStream implements core.ParserMetadata. func (_cebd ParserMetadata )HasNonConformantStream ()bool {return _cebd ._ebd }; // GetFilterName returns the name of the encoding filter. func (_gaee *RawEncoder )GetFilterName ()string {return StreamEncodingFilterNameRaw }; // MakeObjectStreams creates an PdfObjectStreams from a list of PdfObjects. func MakeObjectStreams (objects ...PdfObject )*PdfObjectStreams {return &PdfObjectStreams {_aggfea :objects };}; // EncodeBytes encodes the image data using either Group3 or Group4 CCITT facsimile (fax) encoding. // `data` is expected to be 1 color component, 1 bit per component. It is also valid to provide 8 BPC, 1 CC image like // a standard go image Gray data. func (_bdad *CCITTFaxEncoder )EncodeBytes (data []byte )([]byte ,error ){var _gadb _aeg .Gray ;switch len (data ){case _bdad .Rows *_bdad .Columns :_baae ,_afbe :=_aeg .NewImage (_bdad .Columns ,_bdad .Rows ,8,1,data ,nil ,nil );if _afbe !=nil {return nil ,_afbe ; };_gadb =_baae .(_aeg .Gray );case (_bdad .Columns *_bdad .Rows )+7>>3:_fef ,_eaaa :=_aeg .NewImage (_bdad .Columns ,_bdad .Rows ,1,1,data ,nil ,nil );if _eaaa !=nil {return nil ,_eaaa ;};_adfg :=_fef .(*_aeg .Monochrome );if _eaaa =_adfg .AddPadding (); _eaaa !=nil {return nil ,_eaaa ;};_gadb =_adfg ;default:if len (data )< _aeg .BytesPerLine (_bdad .Columns ,1,1)*_bdad .Rows {return nil ,_e .New ("p\u0072\u006f\u0076\u0069\u0064\u0065d\u0020\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020i\u006e\u0070\u0075t\u0020d\u0061\u0074\u0061"); };_cbee ,_cbgf :=_aeg .NewImage (_bdad .Columns ,_bdad .Rows ,1,1,data ,nil ,nil );if _cbgf !=nil {return nil ,_cbgf ;};_gaca :=_cbee .(*_aeg .Monochrome );_gadb =_gaca ;};_edec :=make ([][]byte ,_bdad .Rows );for _ebcb :=0;_ebcb < _bdad .Rows ;_ebcb ++{_gcfd :=make ([]byte ,_bdad .Columns ); for _eagg :=0;_eagg < _bdad .Columns ;_eagg ++{_edee :=_gadb .GrayAt (_eagg ,_ebcb );_gcfd [_eagg ]=_edee .Y >>7;};_edec [_ebcb ]=_gcfd ;};_afcg :=&_aec .Encoder {K :_bdad .K ,Columns :_bdad .Columns ,EndOfLine :_bdad .EndOfLine ,EndOfBlock :_bdad .EndOfBlock ,BlackIs1 :_bdad .BlackIs1 ,DamagedRowsBeforeError :_bdad .DamagedRowsBeforeError ,Rows :_bdad .Rows ,EncodedByteAlign :_bdad .EncodedByteAlign }; return _afcg .Encode (_edec ),nil ;}; // NewRawEncoder returns a new instace of RawEncoder. func NewRawEncoder ()*RawEncoder {return &RawEncoder {}}; // GetObjectNums returns a sorted list of object numbers of the PDF objects in the file. func (_gcge *PdfParser )GetObjectNums ()[]int {var _bgcff []int ;for _ ,_agcag :=range _gcge ._fgaf .ObjectMap {_bgcff =append (_bgcff ,_agcag .ObjectNumber );};_f .Ints (_bgcff );return _bgcff ;}; // UpdateParams updates the parameter values of the encoder. func (_eabe *LZWEncoder )UpdateParams (params *PdfObjectDictionary ){_ecbf ,_aga :=GetNumberAsInt64 (params .Get ("\u0050r\u0065\u0064\u0069\u0063\u0074\u006fr"));if _aga ==nil {_eabe .Predictor =int (_ecbf );};_fgaa ,_aga :=GetNumberAsInt64 (params .Get ("\u0042\u0069t\u0073\u0050\u0065r\u0043\u006f\u006d\u0070\u006f\u006e\u0065\u006e\u0074")); if _aga ==nil {_eabe .BitsPerComponent =int (_fgaa );};_ecbe ,_aga :=GetNumberAsInt64 (params .Get ("\u0057\u0069\u0064t\u0068"));if _aga ==nil {_eabe .Columns =int (_ecbe );};_efa ,_aga :=GetNumberAsInt64 (params .Get ("\u0043o\u006co\u0072\u0043\u006f\u006d\u0070\u006f\u006e\u0065\u006e\u0074\u0073")); if _aga ==nil {_eabe .Colors =int (_efa );};_bcea ,_aga :=GetNumberAsInt64 (params .Get ("E\u0061\u0072\u006c\u0079\u0043\u0068\u0061\u006e\u0067\u0065"));if _aga ==nil {_eabe .EarlyChange =int (_bcea );};}; // EncodeBytes returns the passed in slice of bytes. // The purpose of the method is to satisfy the StreamEncoder interface. func (_edbfe *RawEncoder )EncodeBytes (data []byte )([]byte ,error ){return data ,nil }; // Decrypt attempts to decrypt the PDF file with a specified password. Also tries to // decrypt with an empty password. Returns true if successful, false otherwise. // An error is returned when there is a problem with decrypting. func (_ecaf *PdfParser )Decrypt (password []byte )(bool ,error ){if _ecaf ._agga ==nil {return false ,_e .New ("\u0063\u0068\u0065\u0063k \u0065\u006e\u0063\u0072\u0079\u0070\u0074\u0069\u006f\u006e\u0020\u0066\u0069\u0072s\u0074");};_gcbd ,_effgb :=_ecaf ._agga .authenticate (password ); if _effgb !=nil {return false ,_effgb ;};if !_gcbd {_gcbd ,_effgb =_ecaf ._agga .authenticate ([]byte (""));};return _gcbd ,_effgb ;};func _cggcb (_aeee PdfObject )(*float64 ,error ){switch _bcgd :=_aeee .(type ){case *PdfObjectFloat :_dacca :=float64 (*_bcgd ); return &_dacca ,nil ;case *PdfObjectInteger :_fdfc :=float64 (*_bcgd );return &_fdfc ,nil ;case *PdfObjectNull :return nil ,nil ;};return nil ,ErrNotANumber ;}; // GetFilterName returns the name of the encoding filter. func (_efda *LZWEncoder )GetFilterName ()string {return StreamEncodingFilterNameLZW };func (_ecbg *PdfParser )parseLinearizedDictionary ()(*PdfObjectDictionary ,error ){_eccd ,_gaad :=_ecbg ._bcced .Seek (0,_ae .SeekEnd );if _gaad !=nil {return nil ,_gaad ; };var _dbdab int64 ;var _edeae int64 =2048;for _dbdab < _eccd -4{if _eccd <=(_edeae +_dbdab ){_edeae =_eccd -_dbdab ;};_ ,_fdbf :=_ecbg ._bcced .Seek (_dbdab ,_ae .SeekStart );if _fdbf !=nil {return nil ,_fdbf ;};_efcg :=make ([]byte ,_edeae );_ ,_fdbf =_ecbg ._bcced .Read (_efcg ); if _fdbf !=nil {return nil ,_fdbf ;};_fc .Log .Trace ("\u004c\u006f\u006f\u006b\u0069\u006e\u0067\u0020\u0066\u006f\u0072\u0020\u0066i\u0072\u0073\u0074\u0020\u0069\u006ed\u0069\u0072\u0065\u0063\u0074\u0020\u006f\u0062\u006a\u0065\u0063\u0074\u003a \u0022\u0025\u0073\u0022",string (_efcg )); _bafcd :=_ddfe .FindAllStringIndex (string (_efcg ),-1);if _bafcd !=nil {_dgdc :=_bafcd [0];_fc .Log .Trace ("\u0049\u006e\u0064\u003a\u0020\u0025\u0020\u0064",_bafcd );_ ,_ffebe :=_ecbg ._bcced .Seek (int64 (_dgdc [0]),_ae .SeekStart );if _ffebe !=nil {return nil ,_ffebe ; };_ecbg ._dcfe =_eb .NewReader (_ecbg ._bcced );_ccgfa ,_ffebe :=_ecbg .ParseIndirectObject ();if _ffebe !=nil {return nil ,nil ;};if _abec ,_gafd :=GetIndirect (_ccgfa );_gafd {if _bcfd ,_agaf :=GetDict (_abec .PdfObject );_agaf {if _ceace :=_bcfd .Get ("\u004c\u0069\u006e\u0065\u0061\u0072\u0069\u007a\u0065\u0064"); _ceace !=nil {return _bcfd ,nil ;};return nil ,nil ;};};return nil ,nil ;};_dbdab +=_edeae -4;};return nil ,_e .New ("\u0074\u0068\u0065\u0020\u0066\u0069\u0072\u0073\u0074\u0020\u006fb\u006a\u0065\u0063\u0074\u0020\u006e\u006f\u0074\u0020\u0066o\u0075\u006e\u0064"); }; // DecodeGlobals decodes 'encoded' byte stream and returns their Globally defined segments ('Globals'). func (_bafc *JBIG2Encoder )DecodeGlobals (encoded []byte )(_gdd .Globals ,error ){return _gdd .DecodeGlobals (encoded );}; // MakeArray creates an PdfObjectArray from a list of PdfObjects. func MakeArray (objects ...PdfObject )*PdfObjectArray {return &PdfObjectArray {_cebff :objects }}; // NewDCTEncoder makes a new DCT encoder with default parameters. func NewDCTEncoder ()*DCTEncoder {_cecf :=&DCTEncoder {};_cecf .ColorComponents =3;_cecf .BitsPerComponent =8;_cecf .Quality =DefaultJPEGQuality ;return _cecf ;}; // EqualObjects returns true if `obj1` and `obj2` have the same contents. // // NOTE: It is a good idea to flatten obj1 and obj2 with FlattenObject before calling this function // so that contents, rather than references, can be compared. func EqualObjects (obj1 ,obj2 PdfObject )bool {return _abdf (obj1 ,obj2 ,0)}; // FlattenObject returns the contents of `obj`. In other words, `obj` with indirect objects replaced // by their values. // The replacements are made recursively to a depth of traceMaxDepth. // NOTE: Dicts are sorted to make objects with same contents have the same PDF object strings. func FlattenObject (obj PdfObject )PdfObject {return _defgb (obj ,0)}; // EncodeJBIG2Image encodes 'img' into jbig2 encoded bytes stream, using default encoder settings. func (_cebc *JBIG2Encoder )EncodeJBIG2Image (img *JBIG2Image )([]byte ,error ){const _dced ="c\u006f\u0072\u0065\u002eEn\u0063o\u0064\u0065\u004a\u0042\u0049G\u0032\u0049\u006d\u0061\u0067\u0065";if _geeg :=_cebc .AddPageImage (img ,&_cebc .DefaultPageSettings ); _geeg !=nil {return nil ,_gd .Wrap (_geeg ,_dced ,"");};return _cebc .Encode ();}; // HasDataAfterEOF checks if there is some data after EOF marker. func (_eefe ParserMetadata )HasDataAfterEOF ()bool {return _eefe ._ede }; // PdfObjectDictionary represents the primitive PDF dictionary/map object. type PdfObjectDictionary struct{_fecf map[PdfObjectName ]PdfObject ;_agde []PdfObjectName ;_cfcd *_b .Mutex ;_aggfe *PdfParser ;}; // DecodeImages decodes the page images from the jbig2 'encoded' data input. // The jbig2 document may contain multiple pages, thus the function can return multiple // images. The images order corresponds to the page number. func (_aaeca *JBIG2Encoder )DecodeImages (encoded []byte )([]_fa .Image ,error ){const _afcb ="\u004aB\u0049\u0047\u0032\u0045n\u0063\u006f\u0064\u0065\u0072.\u0044e\u0063o\u0064\u0065\u0049\u006d\u0061\u0067\u0065s";_bdbb ,_cgadf :=_cc .Decode (encoded ,_cc .Parameters {},_aaeca .Globals .ToDocumentGlobals ()); if _cgadf !=nil {return nil ,_gd .Wrap (_cgadf ,_afcb ,"");};_bff ,_cgadf :=_bdbb .PageNumber ();if _cgadf !=nil {return nil ,_gd .Wrap (_cgadf ,_afcb ,"");};_cbbg :=[]_fa .Image {};var _ecdb _fa .Image ;for _dcc :=1;_dcc <=_bff ;_dcc ++{_ecdb ,_cgadf =_bdbb .DecodePageImage (_dcc ); if _cgadf !=nil {return nil ,_gd .Wrapf (_cgadf ,_afcb ,"\u0070\u0061\u0067\u0065\u003a\u0020\u0027\u0025\u0064\u0027",_dcc );};_cbbg =append (_cbbg ,_ecdb );};return _cbbg ,nil ;}; // EncodeStream encodes the stream data using the encoded specified by the stream's dictionary. func EncodeStream (streamObj *PdfObjectStream )error {_fc .Log .Trace ("\u0045\u006e\u0063\u006f\u0064\u0065\u0020\u0073\u0074\u0072\u0065\u0061\u006d");_fbdgc ,_cfed :=NewEncoderFromStream (streamObj );if _cfed !=nil {_fc .Log .Debug ("\u0053\u0074\u0072\u0065\u0061\u006d\u0020\u0064\u0065\u0063\u006fd\u0069\u006e\u0067\u0020\u0066\u0061\u0069\u006c\u0065\u0064:\u0020\u0025\u0076",_cfed ); return _cfed ;};if _gefb ,_gbgg :=_fbdgc .(*LZWEncoder );_gbgg {_gefb .EarlyChange =0;streamObj .PdfObjectDictionary .Set ("E\u0061\u0072\u006c\u0079\u0043\u0068\u0061\u006e\u0067\u0065",MakeInteger (0));};_fc .Log .Trace ("\u0045\u006e\u0063\u006f\u0064\u0065\u0072\u003a\u0020\u0025\u002b\u0076\u000a",_fbdgc ); _ggbdc ,_cfed :=_fbdgc .EncodeBytes (streamObj .Stream );if _cfed !=nil {_fc .Log .Debug ("\u0053\u0074\u0072\u0065\u0061\u006d\u0020\u0065\u006e\u0063\u006fd\u0069\u006e\u0067\u0020\u0066\u0061\u0069\u006c\u0065\u0064:\u0020\u0025\u0076",_cfed );return _cfed ; };streamObj .Stream =_ggbdc ;streamObj .PdfObjectDictionary .Set ("\u004c\u0065\u006e\u0067\u0074\u0068",MakeInteger (int64 (len (_ggbdc ))));return nil ;};func (_aadc *PdfParser )getNumbersOfUpdatedObjects (_bgab *PdfParser )([]int ,error ){if _bgab ==nil {return nil ,_e .New ("\u0070\u0072e\u0076\u0069\u006f\u0075\u0073\u0020\u0070\u0061\u0072\u0073\u0065\u0072\u0020\u0063\u0061\u006e\u0027\u0074\u0020\u0062\u0065\u0020nu\u006c\u006c"); };_ccdg :=_bgab ._acfbc ;_feef :=make ([]int ,0);_ebed :=make (map[int ]interface{});_gbgd :=make (map[int ]int64 );for _dcad ,_ceae :=range _aadc ._fgaf .ObjectMap {if _ceae .Offset ==0{if _ceae .OsObjNumber !=0{if _eeca ,_cddg :=_aadc ._fgaf .ObjectMap [_ceae .OsObjNumber ]; _cddg {_ebed [_ceae .OsObjNumber ]=struct{}{};_gbgd [_dcad ]=_eeca .Offset ;}else {return nil ,_e .New ("u\u006ed\u0065\u0066\u0069\u006e\u0065\u0064\u0020\u0078r\u0065\u0066\u0020\u0074ab\u006c\u0065");};};}else {_gbgd [_dcad ]=_ceae .Offset ;};};for _fdbdf ,_bceg :=range _gbgd {if _ ,_egab :=_ebed [_fdbdf ]; _egab {continue ;};if _bceg > _ccdg {_feef =append (_feef ,_fdbdf );};};return _feef ,nil ;}; // MakeDecodeParams makes a new instance of an encoding dictionary based on // the current encoder settings. func (_aegd *LZWEncoder )MakeDecodeParams ()PdfObject {if _aegd .Predictor > 1{_ddcd :=MakeDict ();_ddcd .Set ("\u0050r\u0065\u0064\u0069\u0063\u0074\u006fr",MakeInteger (int64 (_aegd .Predictor )));if _aegd .BitsPerComponent !=8{_ddcd .Set ("\u0042\u0069t\u0073\u0050\u0065r\u0043\u006f\u006d\u0070\u006f\u006e\u0065\u006e\u0074",MakeInteger (int64 (_aegd .BitsPerComponent ))); };if _aegd .Columns !=1{_ddcd .Set ("\u0043o\u006c\u0075\u006d\u006e\u0073",MakeInteger (int64 (_aegd .Columns )));};if _aegd .Colors !=1{_ddcd .Set ("\u0043\u006f\u006c\u006f\u0072\u0073",MakeInteger (int64 (_aegd .Colors )));};return _ddcd ;};return nil ; }; // MakeStreamDict make a new instance of an encoding dictionary for a stream object. func (_gbfe *ASCII85Encoder )MakeStreamDict ()*PdfObjectDictionary {_ceeea :=MakeDict ();_ceeea .Set ("\u0046\u0069\u006c\u0074\u0065\u0072",MakeName (_gbfe .GetFilterName ()));return _ceeea ;}; // MakeName creates a PdfObjectName from a string. func MakeName (s string )*PdfObjectName {_adcf :=PdfObjectName (s );return &_adcf };func (_gdf *PdfCrypt )generateParams (_cgc ,_aagd []byte )error {_fdc :=_gdf .securityHandler ();_fcaf ,_cgdf :=_fdc .GenerateParams (&_gdf ._fbe ,_aagd ,_cgc );if _cgdf !=nil {return _cgdf ; };_gdf ._ccda =_fcaf ;return nil ;}; // JPXEncoder implements JPX encoder/decoder (dummy, for now) // FIXME: implement type JPXEncoder struct{}; // ParseDict reads and parses a PDF dictionary object enclosed with '<<' and '>>' func (_cgde *PdfParser )ParseDict ()(*PdfObjectDictionary ,error ){_fc .Log .Trace ("\u0052\u0065\u0061\u0064\u0069\u006e\u0067\u0020\u0050\u0044\u0046\u0020D\u0069\u0063\u0074\u0021");_cbed :=MakeDict ();_cbed ._aggfe =_cgde ;_afcd ,_ :=_cgde ._dcfe .ReadByte (); if _afcd !='<'{return nil ,_e .New ("\u0069\u006e\u0076a\u006c\u0069\u0064\u0020\u0064\u0069\u0063\u0074");};_afcd ,_ =_cgde ._dcfe .ReadByte ();if _afcd !='<'{return nil ,_e .New ("\u0069\u006e\u0076a\u006c\u0069\u0064\u0020\u0064\u0069\u0063\u0074"); };for {_cgde .skipSpaces ();_cgde .skipComments ();_fdfa ,_daec :=_cgde ._dcfe .Peek (2);if _daec !=nil {return nil ,_daec ;};_fc .Log .Trace ("D\u0069c\u0074\u0020\u0070\u0065\u0065\u006b\u003a\u0020%\u0073\u0020\u0028\u0025 x\u0029\u0021",string (_fdfa ),string (_fdfa )); if (_fdfa [0]=='>')&&(_fdfa [1]=='>'){_fc .Log .Trace ("\u0045\u004f\u0046\u0020\u0064\u0069\u0063\u0074\u0069o\u006e\u0061\u0072\u0079");_cgde ._dcfe .ReadByte ();_cgde ._dcfe .ReadByte ();break ;};_fc .Log .Trace ("\u0050a\u0072s\u0065\u0020\u0074\u0068\u0065\u0020\u006e\u0061\u006d\u0065\u0021"); _aaeg ,_daec :=_cgde .parseName ();_fc .Log .Trace ("\u004be\u0079\u003a\u0020\u0025\u0073",_aaeg );if _daec !=nil {_fc .Log .Debug ("E\u0052\u0052\u004f\u0052\u0020\u0052e\u0074\u0075\u0072\u006e\u0069\u006e\u0067\u0020\u006ea\u006d\u0065\u0020e\u0072r\u0020\u0025\u0073",_daec ); return nil ,_daec ;};if len (_aaeg )> 4&&_aaeg [len (_aaeg )-4:]=="\u006e\u0075\u006c\u006c"{_aggb :=_aaeg [0:len (_aaeg )-4];_fc .Log .Debug ("\u0054\u0061\u006b\u0069n\u0067\u0020\u0063\u0061\u0072\u0065\u0020\u006f\u0066\u0020n\u0075l\u006c\u0020\u0062\u0075\u0067\u0020\u0028%\u0073\u0029",_aaeg ); _fc .Log .Debug ("\u004e\u0065\u0077\u0020ke\u0079\u0020\u0022\u0025\u0073\u0022\u0020\u003d\u0020\u006e\u0075\u006c\u006c",_aggb );_cgde .skipSpaces ();_dbgg ,_ :=_cgde ._dcfe .Peek (1);if _dbgg [0]=='/'{_cbed .Set (_aggb ,MakeNull ());continue ;};};_cgde .skipSpaces (); _gcgc ,_daec :=_cgde .parseObject ();if _daec !=nil {return nil ,_daec ;};_cbed .Set (_aaeg ,_gcgc );if _fc .Log .IsLogLevel (_fc .LogLevelTrace ){_fc .Log .Trace ("\u0064\u0069\u0063\u0074\u005b\u0025\u0073\u005d\u0020\u003d\u0020\u0025\u0073",_aaeg ,_gcgc .String ()); };};_fc .Log .Trace ("\u0072\u0065\u0074\u0075rn\u0069\u006e\u0067\u0020\u0050\u0044\u0046\u0020\u0044\u0069\u0063\u0074\u0021");return _cbed ,nil ;};func (_gbe *ASCII85Encoder )base256Tobase85 (_bfab uint32 )[5]byte {_dgee :=[5]byte {0,0,0,0,0};_dde :=_bfab ; for _ggfe :=0;_ggfe < 5;_ggfe ++{_dbc :=uint32 (1);for _fggc :=0;_fggc < 4-_ggfe ;_fggc ++{_dbc *=85;};_dafee :=_dde /_dbc ;_dde =_dde %_dbc ;_dgee [_ggfe ]=byte (_dafee );};return _dgee ;}; // NewASCII85Encoder makes a new ASCII85 encoder. func NewASCII85Encoder ()*ASCII85Encoder {_fdae :=&ASCII85Encoder {};return _fdae }; // DecodeBytes decodes a multi-encoded slice of bytes by passing it through the // DecodeBytes method of the underlying encoders. func (_dgef *MultiEncoder )DecodeBytes (encoded []byte )([]byte ,error ){_gefd :=encoded ;var _ccde error ;for _ ,_ecba :=range _dgef ._fdec {_fc .Log .Trace ("\u004du\u006c\u0074i\u0020\u0045\u006e\u0063o\u0064\u0065\u0072 \u0044\u0065\u0063\u006f\u0064\u0065\u003a\u0020\u0041pp\u006c\u0079\u0069n\u0067\u0020F\u0069\u006c\u0074\u0065\u0072\u003a \u0025\u0076 \u0025\u0054",_ecba ,_ecba ); _gefd ,_ccde =_ecba .DecodeBytes (_gefd );if _ccde !=nil {return nil ,_ccde ;};};return _gefd ,nil ;}; // DecodeBytes decodes the CCITTFax encoded image data. func (_baec *CCITTFaxEncoder )DecodeBytes (encoded []byte )([]byte ,error ){_fcadf ,_dgga :=_aec .NewDecoder (encoded ,_aec .DecodeOptions {Columns :_baec .Columns ,Rows :_baec .Rows ,K :_baec .K ,EncodedByteAligned :_baec .EncodedByteAlign ,BlackIsOne :_baec .BlackIs1 ,EndOfBlock :_baec .EndOfBlock ,EndOfLine :_baec .EndOfLine ,DamagedRowsBeforeError :_baec .DamagedRowsBeforeError }); if _dgga !=nil {return nil ,_dgga ;};_faga ,_dgga :=_dd .ReadAll (_fcadf );if _dgga !=nil {return nil ,_dgga ;};return _faga ,nil ;}; // Elements returns a slice of the PdfObject elements in the array. // Preferred over accessing the array directly as type may be changed in future major versions (v3). func (_bgfa *PdfObjectStreams )Elements ()[]PdfObject {if _bgfa ==nil {return nil ;};return _bgfa ._aggfea ;};func (_bcdf *PdfCrypt )loadCryptFilters (_afg *PdfObjectDictionary )error {_bcdf ._cad =cryptFilters {};_bed :=_afg .Get ("\u0043\u0046");_bed =TraceToDirectObject (_bed ); if _ege ,_eacg :=_bed .(*PdfObjectReference );_eacg {_fcc ,_cce :=_bcdf ._gac .LookupByReference (*_ege );if _cce !=nil {_fc .Log .Debug ("\u0045\u0072r\u006f\u0072\u0020\u006c\u006f\u006f\u006b\u0069\u006e\u0067\u0020\u0075\u0070\u0020\u0043\u0046\u0020\u0072\u0065\u0066\u0065\u0072en\u0063\u0065"); return _cce ;};_bed =TraceToDirectObject (_fcc );};_agf ,_aaa :=_bed .(*PdfObjectDictionary );if !_aaa {_fc .Log .Debug ("I\u006ev\u0061\u006c\u0069\u0064\u0020\u0043\u0046\u002c \u0074\u0079\u0070\u0065: \u0025\u0054",_bed );return _e .New ("\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0043\u0046"); };for _ ,_dgc :=range _agf .Keys (){_ecea :=_agf .Get (_dgc );if _gdb ,_dbde :=_ecea .(*PdfObjectReference );_dbde {_acc ,_abe :=_bcdf ._gac .LookupByReference (*_gdb );if _abe !=nil {_fc .Log .Debug ("\u0045\u0072ro\u0072\u0020\u006co\u006f\u006b\u0075\u0070 up\u0020di\u0063\u0074\u0069\u006f\u006e\u0061\u0072y \u0072\u0065\u0066\u0065\u0072\u0065\u006ec\u0065"); return _abe ;};_ecea =TraceToDirectObject (_acc );};_ffa ,_eaa :=_ecea .(*PdfObjectDictionary );if !_eaa {return _g .Errorf ("\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0064\u0069\u0063\u0074\u0020\u0069\u006e \u0043\u0046\u0020\u0028\u006e\u0061\u006d\u0065\u0020\u0025\u0073\u0029\u0020-\u0020\u006e\u006f\u0074\u0020\u0061\u0020\u0064\u0069\u0063\u0074\u0069on\u0061\u0072\u0079\u0020\u0062\u0075\u0074\u0020\u0025\u0054",_dgc ,_ecea ); };if _dgc =="\u0049\u0064\u0065\u006e\u0074\u0069\u0074\u0079"{_fc .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u0020\u002d\u0020\u0043\u0061\u006e\u006e\u006f\u0074\u0020\u006f\u0076\u0065\u0072\u0077r\u0069\u0074\u0065\u0020\u0074\u0068\u0065\u0020\u0069d\u0065\u006e\u0074\u0069\u0074\u0079\u0020\u0066\u0069\u006c\u0074\u0065\u0072 \u002d\u0020\u0054\u0072\u0079\u0069n\u0067\u0020\u006ee\u0078\u0074"); continue ;};var _afb _gc .FilterDict ;if _eddae :=_bgeg (&_afb ,_ffa );_eddae !=nil {return _eddae ;};_gcf ,_cgb :=_gc .NewFilter (_afb );if _cgb !=nil {return _cgb ;};_bcdf ._cad [string (_dgc )]=_gcf ;};_bcdf ._cad ["\u0049\u0064\u0065\u006e\u0074\u0069\u0074\u0079"]=_gc .NewIdentity (); _bcdf ._afaf ="\u0049\u0064\u0065\u006e\u0074\u0069\u0074\u0079";if _gaga ,_cfg :=_afg .Get ("\u0053\u0074\u0072\u0046").(*PdfObjectName );_cfg {if _ ,_add :=_bcdf ._cad [string (*_gaga )];!_add {return _g .Errorf ("\u0063\u0072\u0079\u0070t\u0020\u0066\u0069\u006c\u0074\u0065\u0072\u0020\u0066o\u0072\u0020\u0053\u0074\u0072\u0046\u0020\u006e\u006f\u0074\u0020\u0073\u0070\u0065\u0063\u0069\u0066\u0069e\u0064\u0020\u0069\u006e\u0020C\u0046\u0020\u0064\u0069\u0063\u0074\u0069\u006f\u006e\u0061\u0072\u0079\u0020\u0028\u0025\u0073\u0029",*_gaga ); };_bcdf ._afaf =string (*_gaga );};_bcdf ._ggag ="\u0049\u0064\u0065\u006e\u0074\u0069\u0074\u0079";if _ged ,_bcc :=_afg .Get ("\u0053\u0074\u006d\u0046").(*PdfObjectName );_bcc {if _ ,_fcd :=_bcdf ._cad [string (*_ged )];!_fcd {return _g .Errorf ("\u0063\u0072\u0079\u0070t\u0020\u0066\u0069\u006c\u0074\u0065\u0072\u0020\u0066o\u0072\u0020\u0053\u0074\u006d\u0046\u0020\u006e\u006f\u0074\u0020\u0073\u0070\u0065\u0063\u0069\u0066\u0069e\u0064\u0020\u0069\u006e\u0020C\u0046\u0020\u0064\u0069\u0063\u0074\u0069\u006f\u006e\u0061\u0072\u0079\u0020\u0028\u0025\u0073\u0029",*_ged ); };_bcdf ._ggag =string (*_ged );};return nil ;};func _fdee (_abab *PdfObjectStream ,_bfgg *MultiEncoder )(*DCTEncoder ,error ){_dbbg :=NewDCTEncoder ();_gfd :=_abab .PdfObjectDictionary ;if _gfd ==nil {return _dbbg ,nil ;};_edcf :=_abab .Stream ;if _bfgg !=nil {_efaf ,_gcdf :=_bfgg .DecodeBytes (_edcf ); if _gcdf !=nil {return nil ,_gcdf ;};_edcf =_efaf ;};_gggd :=_fe .NewReader (_edcf );_cff ,_gage :=_fb .DecodeConfig (_gggd );if _gage !=nil {_fc .Log .Debug ("\u0045\u0072\u0072or\u0020\u0064\u0065\u0063\u006f\u0064\u0069\u006e\u0067\u0020\u0066\u0069\u006c\u0065\u003a\u0020\u0025\u0073",_gage ); return nil ,_gage ;};switch _cff .ColorModel {case _ba .RGBAModel :_dbbg .BitsPerComponent =8;_dbbg .ColorComponents =3;case _ba .RGBA64Model :_dbbg .BitsPerComponent =16;_dbbg .ColorComponents =3;case _ba .GrayModel :_dbbg .BitsPerComponent =8;_dbbg .ColorComponents =1; case _ba .Gray16Model :_dbbg .BitsPerComponent =16;_dbbg .ColorComponents =1;case _ba .CMYKModel :_dbbg .BitsPerComponent =8;_dbbg .ColorComponents =4;case _ba .YCbCrModel :_dbbg .BitsPerComponent =8;_dbbg .ColorComponents =3;default:return nil ,_e .New ("\u0075\u006e\u0073up\u0070\u006f\u0072\u0074\u0065\u0064\u0020\u0063\u006f\u006c\u006f\u0072\u0020\u006d\u006f\u0064\u0065\u006c"); };_dbbg .Width =_cff .Width ;_dbbg .Height =_cff .Height ;_fc .Log .Trace ("\u0044\u0043T\u0020\u0045\u006ec\u006f\u0064\u0065\u0072\u003a\u0020\u0025\u002b\u0076",_dbbg );_dbbg .Quality =DefaultJPEGQuality ;return _dbbg ,nil ;}; // GetStringVal returns the string value represented by the PdfObject directly or indirectly if // contained within an indirect object. On type mismatch the found bool flag returned is false and // an empty string is returned. func GetStringVal (obj PdfObject )(_bafb string ,_fdbgf bool ){_cddge ,_fdbgf :=TraceToDirectObject (obj ).(*PdfObjectString );if _fdbgf {return _cddge .Str (),true ;};return ;}; // UpdateParams updates the parameter values of the encoder. func (_eddea *MultiEncoder )UpdateParams (params *PdfObjectDictionary ){for _ ,_gdca :=range _eddea ._fdec {_gdca .UpdateParams (params );};};func (_adg *PdfParser )lookupObjectViaOS (_ebb int ,_ce int )(PdfObject ,error ){var _eff *_fe .Reader ;var _ddd objectStream ; var _efe bool ;_ddd ,_efe =_adg ._abbf [_ebb ];if !_efe {_ff ,_ffd :=_adg .LookupByNumber (_ebb );if _ffd !=nil {_fc .Log .Debug ("\u004d\u0069ss\u0069\u006e\u0067 \u006f\u0062\u006a\u0065ct \u0073tr\u0065\u0061\u006d\u0020\u0077\u0069\u0074h \u006e\u0075\u006d\u0062\u0065\u0072\u0020%\u0064",_ebb ); return nil ,_ffd ;};_aag ,_gg :=_ff .(*PdfObjectStream );if !_gg {return nil ,_e .New ("i\u006e\u0076\u0061\u006cid\u0020o\u0062\u006a\u0065\u0063\u0074 \u0073\u0074\u0072\u0065\u0061\u006d");};if _adg ._agga !=nil &&!_adg ._agga .isDecrypted (_aag ){return nil ,_e .New ("\u006e\u0065\u0065\u0064\u0020\u0074\u006f\u0020\u0064\u0065\u0063r\u0079\u0070\u0074\u0020\u0074\u0068\u0065\u0020\u0073\u0074r\u0065\u0061\u006d"); };_fcf :=_aag .PdfObjectDictionary ;_fc .Log .Trace ("\u0073o\u0020\u0064\u003a\u0020\u0025\u0073\n",_fcf .String ());_ed ,_gg :=_fcf .Get ("\u0054\u0079\u0070\u0065").(*PdfObjectName );if !_gg {_fc .Log .Debug ("\u0045\u0052R\u004f\u0052\u003a\u0020\u004f\u0062\u006a\u0065\u0063\u0074\u0020\u0073\u0074\u0072\u0065\u0061\u006d\u0020\u0073\u0068\u006f\u0075\u006c\u0064\u0020\u0061\u006c\u0077\u0061\u0079\u0073\u0020\u0068\u0061\u0076\u0065\u0020\u0061\u0020\u0054\u0079\u0070\u0065"); return nil ,_e .New ("\u006f\u0062\u006a\u0065\u0063\u0074\u0020\u0073\u0074\u0072\u0065a\u006d\u0020\u006d\u0069\u0073\u0073\u0069\u006e\u0067\u0020T\u0079\u0070\u0065");};if _de .ToLower (string (*_ed ))!="\u006f\u0062\u006a\u0073\u0074\u006d"{_fc .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u004f\u0062\u006a\u0065\u0063\u0074\u0020\u0073\u0074\u0072\u0065a\u006d\u0020\u0074\u0079\u0070\u0065\u0020s\u0068\u0061\u006c\u006c\u0020\u0061\u006c\u0077\u0061\u0079\u0073 \u0062\u0065\u0020\u004f\u0062\u006a\u0053\u0074\u006d\u0020\u0021"); return nil ,_e .New ("\u006f\u0062\u006a\u0065c\u0074\u0020\u0073\u0074\u0072\u0065\u0061\u006d\u0020\u0074y\u0070e\u0020\u0021\u003d\u0020\u004f\u0062\u006aS\u0074\u006d");};N ,_gg :=_fcf .Get ("\u004e").(*PdfObjectInteger );if !_gg {return nil ,_e .New ("\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u004e\u0020i\u006e\u0020\u0073\u0074\u0072\u0065\u0061m\u0020\u0064\u0069\u0063\u0074\u0069\u006f\u006e\u0061\u0072\u0079"); };_ea ,_gg :=_fcf .Get ("\u0046\u0069\u0072s\u0074").(*PdfObjectInteger );if !_gg {return nil ,_e .New ("\u0069\u006e\u0076al\u0069\u0064\u0020\u0046\u0069\u0072\u0073\u0074\u0020i\u006e \u0073t\u0072e\u0061\u006d\u0020\u0064\u0069\u0063\u0074\u0069\u006f\u006e\u0061\u0072\u0079"); };_fc .Log .Trace ("\u0074\u0079\u0070\u0065\u003a\u0020\u0025\u0073\u0020\u006eu\u006d\u0062\u0065\u0072\u0020\u006f\u0066 \u006f\u0062\u006a\u0065\u0063\u0074\u0073\u003a\u0020\u0025\u0064",_ed ,*N );_cab ,_ffd :=DecodeStream (_aag );if _ffd !=nil {return nil ,_ffd ; };_fc .Log .Trace ("D\u0065\u0063\u006f\u0064\u0065\u0064\u003a\u0020\u0025\u0073",_cab );_cgf :=_adg .GetFileOffset ();defer func (){_adg .SetFileOffset (_cgf )}();_eff =_fe .NewReader (_cab );_adg ._dcfe =_eb .NewReader (_eff );_fc .Log .Trace ("\u0050a\u0072s\u0069\u006e\u0067\u0020\u006ff\u0066\u0073e\u0074\u0020\u006d\u0061\u0070"); _afa :=map[int ]int64 {};for _fg :=0;_fg < int (*N );_fg ++{_adg .skipSpaces ();_ab ,_bf :=_adg .parseNumber ();if _bf !=nil {return nil ,_bf ;};_aef ,_gag :=_ab .(*PdfObjectInteger );if !_gag {return nil ,_e .New ("\u0069\u006e\u0076al\u0069\u0064\u0020\u006f\u0062\u006a\u0065\u0063\u0074 \u0073t\u0072e\u0061m\u0020\u006f\u0066\u0066\u0073\u0065\u0074\u0020\u0074\u0061\u0062\u006c\u0065"); };_adg .skipSpaces ();_ab ,_bf =_adg .parseNumber ();if _bf !=nil {return nil ,_bf ;};_aead ,_gag :=_ab .(*PdfObjectInteger );if !_gag {return nil ,_e .New ("\u0069\u006e\u0076al\u0069\u0064\u0020\u006f\u0062\u006a\u0065\u0063\u0074 \u0073t\u0072e\u0061m\u0020\u006f\u0066\u0066\u0073\u0065\u0074\u0020\u0074\u0061\u0062\u006c\u0065"); };_fc .Log .Trace ("\u006f\u0062j\u0020\u0025\u0064 \u006f\u0066\u0066\u0073\u0065\u0074\u0020\u0025\u0064",*_aef ,*_aead );_afa [int (*_aef )]=int64 (*_ea +*_aead );};_ddd =objectStream {N :int (*N ),_ccg :_cab ,_ad :_afa };_adg ._abbf [_ebb ]=_ddd ;}else {_fbf :=_adg .GetFileOffset (); defer func (){_adg .SetFileOffset (_fbf )}();_eff =_fe .NewReader (_ddd ._ccg );_adg ._dcfe =_eb .NewReader (_eff );};_bfd :=_ddd ._ad [_ce ];_fc .Log .Trace ("\u0041\u0043\u0054\u0055AL\u0020\u006f\u0066\u0066\u0073\u0065\u0074\u005b\u0025\u0064\u005d\u0020\u003d\u0020%\u0064",_ce ,_bfd ); _eff .Seek (_bfd ,_ae .SeekStart );_adg ._dcfe =_eb .NewReader (_eff );_aaee ,_ :=_adg ._dcfe .Peek (100);_fc .Log .Trace ("\u004f\u0042\u004a\u0020\u0070\u0065\u0065\u006b\u0020\u0022\u0025\u0073\u0022",string (_aaee ));_dbd ,_ec :=_adg .parseObject (); if _ec !=nil {_fc .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u0020\u0046\u0061\u0069\u006c \u0074\u006f\u0020\u0072\u0065\u0061\u0064 \u006f\u0062\u006a\u0065\u0063\u0074\u0020\u0028\u0025\u0073\u0029",_ec );return nil ,_ec ;};if _dbd ==nil {return nil ,_e .New ("o\u0062\u006a\u0065\u0063t \u0063a\u006e\u006e\u006f\u0074\u0020b\u0065\u0020\u006e\u0075\u006c\u006c"); };_edd :=PdfIndirectObject {};_edd .ObjectNumber =int64 (_ce );_edd .PdfObject =_dbd ;_edd ._cgfad =_adg ;return &_edd ,nil ;}; // WriteString outputs the object as it is to be written to file. func (_agae *PdfObjectBool )WriteString ()string {if *_agae {return "\u0074\u0072\u0075\u0065";};return "\u0066\u0061\u006cs\u0065";};func _fcgc (_ecda ,_bgefa ,_abae uint8 )uint8 {_fbaa :=int (_abae );_dcde :=int (_bgefa )-_fbaa ;_ggdg :=int (_ecda )-_fbaa ; _fbaa =_fbg (_dcde +_ggdg );_dcde =_fbg (_dcde );_ggdg =_fbg (_ggdg );if _dcde <=_ggdg &&_dcde <=_fbaa {return _ecda ;}else if _ggdg <=_fbaa {return _bgefa ;};return _abae ;};func (_bfdaa *PdfParser )resolveReference (_eccc *PdfObjectReference )(PdfObject ,bool ,error ){_dafb ,_bfbga :=_bfdaa .ObjCache [int (_eccc .ObjectNumber )]; if _bfbga {return _dafb ,true ,nil ;};_gcac ,_cace :=_bfdaa .LookupByReference (*_eccc );if _cace !=nil {return nil ,false ,_cace ;};_bfdaa .ObjCache [int (_eccc .ObjectNumber )]=_gcac ;return _gcac ,false ,nil ;}; // GetFloat returns the *PdfObjectFloat represented by the PdfObject directly or indirectly within an indirect // object. On type mismatch the found bool flag is false and a nil pointer is returned. func GetFloat (obj PdfObject )(_gaeea *PdfObjectFloat ,_fdgf bool ){_gaeea ,_fdgf =TraceToDirectObject (obj ).(*PdfObjectFloat );return _gaeea ,_fdgf ;}; // DrawableImage is same as golang image/draw's Image interface that allow drawing images. type DrawableImage interface{ColorModel ()_ba .Model ;Bounds ()_fa .Rectangle ;At (_gdbb ,_cfce int )_ba .Color ;Set (_abcb ,_bddbg int ,_bbf _ba .Color );};func (_dcab *PdfParser )parseNumber ()(PdfObject ,error ){return ParseNumber (_dcab ._dcfe )}; // MakeDecodeParams makes a new instance of an encoding dictionary based on // the current encoder settings. func (_gdbf *FlateEncoder )MakeDecodeParams ()PdfObject {if _gdbf .Predictor > 1{_gbf :=MakeDict ();_gbf .Set ("\u0050r\u0065\u0064\u0069\u0063\u0074\u006fr",MakeInteger (int64 (_gdbf .Predictor )));if _gdbf .BitsPerComponent !=8{_gbf .Set ("\u0042\u0069t\u0073\u0050\u0065r\u0043\u006f\u006d\u0070\u006f\u006e\u0065\u006e\u0074",MakeInteger (int64 (_gdbf .BitsPerComponent ))); };if _gdbf .Columns !=1{_gbf .Set ("\u0043o\u006c\u0075\u006d\u006e\u0073",MakeInteger (int64 (_gdbf .Columns )));};if _gdbf .Colors !=1{_gbf .Set ("\u0043\u006f\u006c\u006f\u0072\u0073",MakeInteger (int64 (_gdbf .Colors )));};return _gbf ;};return nil ; }; // Seek implementation of Seek interface. func (_debe *limitedReadSeeker )Seek (offset int64 ,whence int )(int64 ,error ){var _gdee int64 ;switch whence {case _ae .SeekStart :_gdee =offset ;case _ae .SeekCurrent :_ggbfc ,_bfgf :=_debe ._bgfd .Seek (0,_ae .SeekCurrent );if _bfgf !=nil {return 0,_bfgf ; };_gdee =_ggbfc +offset ;case _ae .SeekEnd :_gdee =_debe ._gfbf +offset ;};if _aeaed :=_debe .getError (_gdee );_aeaed !=nil {return 0,_aeaed ;};if _ ,_gfcce :=_debe ._bgfd .Seek (_gdee ,_ae .SeekStart );_gfcce !=nil {return 0,_gfcce ;};return _gdee ,nil ; }; // MakeStreamDict makes a new instance of an encoding dictionary for a stream object. // Has the Filter set. Some other parameters are generated elsewhere. func (_cfd *DCTEncoder )MakeStreamDict ()*PdfObjectDictionary {_aad :=MakeDict ();_aad .Set ("\u0046\u0069\u006c\u0074\u0065\u0072",MakeName (_cfd .GetFilterName ()));return _aad ;}; // ASCII85Encoder implements ASCII85 encoder/decoder. type ASCII85Encoder struct{}; // WriteString outputs the object as it is to be written to file. func (_fdcc *PdfObjectFloat )WriteString ()string {return _ef .FormatFloat (float64 (*_fdcc ),'f',-1,64);}; // MakeInteger creates a PdfObjectInteger from an int64. func MakeInteger (val int64 )*PdfObjectInteger {_befbeb :=PdfObjectInteger (val );return &_befbeb };func (_gacd *PdfParser )skipSpaces ()(int ,error ){_gfbd :=0;for {_fdcf ,_ddcg :=_gacd ._dcfe .ReadByte ();if _ddcg !=nil {return 0,_ddcg ;};if IsWhiteSpace (_fdcf ){_gfbd ++; }else {_gacd ._dcfe .UnreadByte ();break ;};};return _gfbd ,nil ;};func (_dbe *PdfCrypt )saveCryptFilters (_aegc *PdfObjectDictionary )error {if _dbe ._fgce .V < 4{return _e .New ("\u0063\u0061\u006e\u0020\u006f\u006e\u006c\u0079\u0020\u0062\u0065 \u0075\u0073\u0065\u0064\u0020\u0077\u0069\u0074\u0068\u0020V\u003e\u003d\u0034"); };_bgca :=MakeDict ();_aegc .Set ("\u0043\u0046",_bgca );for _faaf ,_cag :=range _dbe ._cad {if _faaf =="\u0049\u0064\u0065\u006e\u0074\u0069\u0074\u0079"{continue ;};_dcef :=_baeb (_cag ,"");_bgca .Set (PdfObjectName (_faaf ),_dcef );};_aegc .Set ("\u0053\u0074\u0072\u0046",MakeName (_dbe ._afaf )); _aegc .Set ("\u0053\u0074\u006d\u0046",MakeName (_dbe ._ggag ));return nil ;}; // GetNameVal returns the string value represented by the PdfObject directly or indirectly if // contained within an indirect object. On type mismatch the found bool flag returned is false and // an empty string is returned. func GetNameVal (obj PdfObject )(_dfgd string ,_bbfb bool ){_baca ,_bbfb :=TraceToDirectObject (obj ).(*PdfObjectName );if _bbfb {return string (*_baca ),true ;};return ;}; // EncodeBytes ASCII encodes the passed in slice of bytes. func (_faaac *ASCIIHexEncoder )EncodeBytes (data []byte )([]byte ,error ){var _dbfbb _fe .Buffer ;for _ ,_gbd :=range data {_dbfbb .WriteString (_g .Sprintf ("\u0025\u002e\u0032X\u0020",_gbd ));};_dbfbb .WriteByte ('>');return _dbfbb .Bytes (),nil ;};func _fcbf (_cgee *PdfObjectStream ,_cbef *PdfObjectDictionary )(*JBIG2Encoder ,error ){const _dbegc ="\u006ee\u0077\u004a\u0042\u0049G\u0032\u0044\u0065\u0063\u006fd\u0065r\u0046r\u006f\u006d\u0053\u0074\u0072\u0065\u0061m"; _aeaec :=NewJBIG2Encoder ();_fdgd :=_cgee .PdfObjectDictionary ;if _fdgd ==nil {return _aeaec ,nil ;};if _cbef ==nil {_efaa :=_fdgd .Get ("D\u0065\u0063\u006f\u0064\u0065\u0050\u0061\u0072\u006d\u0073");if _efaa !=nil {switch _geec :=_efaa .(type ){case *PdfObjectDictionary :_cbef =_geec ; case *PdfObjectArray :if _geec .Len ()==1{if _gedag ,_dabc :=GetDict (_geec .Get (0));_dabc {_cbef =_gedag ;};};default:_fc .Log .Error ("\u0044\u0065\u0063\u006f\u0064\u0065P\u0061\u0072\u0061\u006d\u0073\u0020\u006e\u006f\u0074\u0020\u0061\u0020\u0064i\u0063\u0074\u0069\u006f\u006e\u0061\u0072y\u0020\u0025\u0023\u0076",_efaa ); return nil ,_gd .Errorf (_dbegc ,"\u0069\u006e\u0076\u0061l\u0069\u0064\u0020\u0044\u0065\u0063\u006f\u0064\u0065\u0050a\u0072m\u0073\u0020\u0074\u0079\u0070\u0065\u003a \u0025\u0054",_geec );};};};if _cbef ==nil {return _aeaec ,nil ;};_aeaec .UpdateParams (_cbef ); _gbegg ,_agecc :=GetStream (_cbef .Get ("\u004a\u0042\u0049G\u0032\u0047\u006c\u006f\u0062\u0061\u006c\u0073"));if !_agecc {return _aeaec ,nil ;};var _bcddb error ;_aeaec .Globals ,_bcddb =_gdd .DecodeGlobals (_gbegg .Stream );if _bcddb !=nil {_bcddb =_gd .Wrap (_bcddb ,_dbegc ,"\u0063\u006f\u0072\u0072u\u0070\u0074\u0065\u0064\u0020\u006a\u0062\u0069\u0067\u0032 \u0065n\u0063\u006f\u0064\u0065\u0064\u0020\u0064a\u0074\u0061"); _fc .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a\u0020\u0025v",_bcddb );return nil ,_bcddb ;};return _aeaec ,nil ;}; // String returns a string describing `array`. func (_ebca *PdfObjectArray )String ()string {_bfbba :="\u005b";for _abbfd ,_bafg :=range _ebca .Elements (){_bfbba +=_bafg .String ();if _abbfd < (_ebca .Len ()-1){_bfbba +="\u002c\u0020";};};_bfbba +="\u005d";return _bfbba ;}; // MakeIndirectObject creates an PdfIndirectObject with a specified direct object PdfObject. func MakeIndirectObject (obj PdfObject )*PdfIndirectObject {_gdae :=&PdfIndirectObject {};_gdae .PdfObject =obj ;return _gdae ;};var _effga =_d .MustCompile ("\u0073t\u0061r\u0074\u0078\u003f\u0072\u0065f\u005c\u0073*\u0028\u005c\u0064\u002b\u0029"); // AddPageImage adds the page with the image 'img' to the encoder context in order to encode it jbig2 document. // The 'settings' defines what encoding type should be used by the encoder. func (_gfgc *JBIG2Encoder )AddPageImage (img *JBIG2Image ,settings *JBIG2EncoderSettings )(_ebda error ){const _dgab ="\u004a\u0042\u0049\u0047\u0032\u0044\u006f\u0063\u0075\u006d\u0065n\u0074\u002e\u0041\u0064\u0064\u0050\u0061\u0067\u0065\u0049m\u0061\u0067\u0065"; if _gfgc ==nil {return _gd .Error (_dgab ,"J\u0042I\u0047\u0032\u0044\u006f\u0063\u0075\u006d\u0065n\u0074\u0020\u0069\u0073 n\u0069\u006c");};if settings ==nil {settings =&_gfgc .DefaultPageSettings ;};if _gfgc ._aafa ==nil {_gfgc ._aafa =_af .InitEncodeDocument (settings .FileMode ); };if _ebda =settings .Validate ();_ebda !=nil {return _gd .Wrap (_ebda ,_dgab ,"");};_cbca ,_ebda :=img .toBitmap ();if _ebda !=nil {return _gd .Wrap (_ebda ,_dgab ,"");};switch settings .Compression {case JB2Generic :if _ebda =_gfgc ._aafa .AddGenericPage (_cbca ,settings .DuplicatedLinesRemoval ); _ebda !=nil {return _gd .Wrap (_ebda ,_dgab ,"");};case JB2SymbolCorrelation :return _gd .Error (_dgab ,"s\u0079\u006d\u0062\u006f\u006c\u0020\u0063\u006f\u0072r\u0065\u006c\u0061\u0074\u0069\u006f\u006e e\u006e\u0063\u006f\u0064i\u006e\u0067\u0020\u006e\u006f\u0074\u0020\u0069\u006dpl\u0065\u006de\u006e\u0074\u0065\u0064\u0020\u0079\u0065\u0074"); case JB2SymbolRankHaus :return _gd .Error (_dgab ,"\u0073y\u006d\u0062o\u006c\u0020\u0072a\u006e\u006b\u0020\u0068\u0061\u0075\u0073 \u0065\u006e\u0063\u006f\u0064\u0069n\u0067\u0020\u006e\u006f\u0074\u0020\u0069\u006d\u0070\u006c\u0065m\u0065\u006e\u0074\u0065\u0064\u0020\u0079\u0065\u0074"); default:return _gd .Error (_dgab ,"\u0070\u0072\u006f\u0076i\u0064\u0065\u0064\u0020\u0069\u006e\u0076\u0061\u006c\u0069d\u0020c\u006f\u006d\u0070\u0072\u0065\u0073\u0073i\u006f\u006e");};return nil ;}; // MakeStreamDict makes a new instance of an encoding dictionary for a stream object. func (_gefac *ASCIIHexEncoder )MakeStreamDict ()*PdfObjectDictionary {_dacd :=MakeDict ();_dacd .Set ("\u0046\u0069\u006c\u0074\u0065\u0072",MakeName (_gefac .GetFilterName ()));return _dacd ;}; // WriteString outputs the object as it is to be written to file. func (_daeb *PdfObjectReference )WriteString ()string {var _bbaf _de .Builder ;_bbaf .WriteString (_ef .FormatInt (_daeb .ObjectNumber ,10));_bbaf .WriteString ("\u0020");_bbaf .WriteString (_ef .FormatInt (_daeb .GenerationNumber ,10));_bbaf .WriteString ("\u0020\u0052"); return _bbaf .String ();}; // EncryptInfo contains an information generated by the document encrypter. type EncryptInfo struct{Version ; // Encrypt is an encryption dictionary that contains all necessary parameters. // It should be stored in all copies of the document trailer. Encrypt *PdfObjectDictionary ; // ID0 and ID1 are IDs used in the trailer. Older algorithms such as RC4 uses them for encryption. ID0 ,ID1 string ;}; // LZWEncoder provides LZW encoding/decoding functionality. type LZWEncoder struct{Predictor int ;BitsPerComponent int ; // For predictors Columns int ;Colors int ; // LZW algorithm setting. EarlyChange int ;}; // JBIG2EncoderSettings contains the parameters and settings used by the JBIG2Encoder. // Current version works only on JB2Generic compression. type JBIG2EncoderSettings struct{ // FileMode defines if the jbig2 encoder should return full jbig2 file instead of // shortened pdf mode. This adds the file header to the jbig2 definition. FileMode bool ; // Compression is the setting that defines the compression type used for encoding the page. Compression JBIG2CompressionType ; // DuplicatedLinesRemoval code generic region in a way such that if the lines are duplicated the encoder // doesn't store it twice. DuplicatedLinesRemoval bool ; // DefaultPixelValue is the bit value initial for every pixel in the page. DefaultPixelValue uint8 ; // ResolutionX optional setting that defines the 'x' axis input image resolution - used for single page encoding. ResolutionX int ; // ResolutionY optional setting that defines the 'y' axis input image resolution - used for single page encoding. ResolutionY int ; // Threshold defines the threshold of the image correlation for // non Generic compression. // User only for JB2SymbolCorrelation and JB2SymbolRankHaus methods. // Best results in range [0.7 - 0.98] - the less the better the compression would be // but the more lossy. // Default value: 0.95 Threshold float64 ;}; // MakeString creates an PdfObjectString from a string. // NOTE: PDF does not use utf-8 string encoding like Go so `s` will often not be a utf-8 encoded // string. func MakeString (s string )*PdfObjectString {_fgde :=PdfObjectString {_bgfdf :s };return &_fgde }; // MakeStreamDict makes a new instance of an encoding dictionary for a stream object. func (_cgfa *MultiEncoder )MakeStreamDict ()*PdfObjectDictionary {_bbbd :=MakeDict ();_bbbd .Set ("\u0046\u0069\u006c\u0074\u0065\u0072",_cgfa .GetFilterArray ());for _ ,_bdg :=range _cgfa ._fdec {_dcae :=_bdg .MakeStreamDict ();for _ ,_bgcd :=range _dcae .Keys (){_ggcb :=_dcae .Get (_bgcd ); if _bgcd !="\u0046\u0069\u006c\u0074\u0065\u0072"&&_bgcd !="D\u0065\u0063\u006f\u0064\u0065\u0050\u0061\u0072\u006d\u0073"{_bbbd .Set (_bgcd ,_ggcb );};};};_dbgf :=_cgfa .MakeDecodeParams ();if _dbgf !=nil {_bbbd .Set ("D\u0065\u0063\u006f\u0064\u0065\u0050\u0061\u0072\u006d\u0073",_dbgf ); };return _bbbd ;}; // AddEncoder adds the passed in encoder to the underlying encoder slice. func (_cdga *MultiEncoder )AddEncoder (encoder StreamEncoder ){_cdga ._fdec =append (_cdga ._fdec ,encoder );};var _bgag =_d .MustCompile ("\u005c\u0073\u002a\u0078\u0072\u0065\u0066\u005c\u0073\u002a"); // ToGoImage converts the JBIG2Image to the golang image.Image. func (_geddb *JBIG2Image )ToGoImage ()(_fa .Image ,error ){const _agdb ="J\u0042I\u0047\u0032\u0049\u006d\u0061\u0067\u0065\u002eT\u006f\u0047\u006f\u0049ma\u0067\u0065";if _geddb .Data ==nil {return nil ,_gd .Error (_agdb ,"\u0069\u006d\u0061\u0067e \u0064\u0061\u0074\u0061\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006ee\u0064"); };if _geddb .Width ==0||_geddb .Height ==0{return nil ,_gd .Error (_agdb ,"\u0069\u006d\u0061\u0067\u0065\u0020h\u0065\u0069\u0067\u0068\u0074\u0020\u006f\u0072\u0020\u0077\u0069\u0064\u0074h\u0020\u006e\u006f\u0074\u0020\u0064\u0065f\u0069\u006e\u0065\u0064"); };_ggfc ,_cafad :=_aeg .NewImage (_geddb .Width ,_geddb .Height ,1,1,_geddb .Data ,nil ,nil );if _cafad !=nil {return nil ,_cafad ;};return _ggfc ,nil ;}; // GetStream returns the *PdfObjectStream represented by the PdfObject. On type mismatch the found bool flag is // false and a nil pointer is returned. func GetStream (obj PdfObject )(_abgf *PdfObjectStream ,_adfgd bool ){obj =ResolveReference (obj );_abgf ,_adfgd =obj .(*PdfObjectStream );return _abgf ,_adfgd ;};var _aaga =_d .MustCompile ("\u0025\u0025\u0045\u004f\u0046\u003f");const _gaa ="\u0053\u0074\u0064C\u0046"; func _age (_gcg *_cg .StdEncryptDict ,_bgcb *PdfObjectDictionary ){_bgcb .Set ("\u0052",MakeInteger (int64 (_gcg .R )));_bgcb .Set ("\u0050",MakeInteger (int64 (_gcg .P )));_bgcb .Set ("\u004f",MakeStringFromBytes (_gcg .O ));_bgcb .Set ("\u0055",MakeStringFromBytes (_gcg .U )); if _gcg .R >=5{_bgcb .Set ("\u004f\u0045",MakeStringFromBytes (_gcg .OE ));_bgcb .Set ("\u0055\u0045",MakeStringFromBytes (_gcg .UE ));_bgcb .Set ("\u0045n\u0063r\u0079\u0070\u0074\u004d\u0065\u0074\u0061\u0064\u0061\u0074\u0061",MakeBool (_gcg .EncryptMetadata )); if _gcg .R > 5{_bgcb .Set ("\u0050\u0065\u0072m\u0073",MakeStringFromBytes (_gcg .Perms ));};};}; // DecodeBytes returns the passed in slice of bytes. // The purpose of the method is to satisfy the StreamEncoder interface. func (_agcc *RawEncoder )DecodeBytes (encoded []byte )([]byte ,error ){return encoded ,nil };func (_cabe *offsetReader )Seek (offset int64 ,whence int )(int64 ,error ){if whence ==_ae .SeekStart {offset +=_cabe ._bgfc ;};_fdaf ,_cfca :=_cabe ._bfeb .Seek (offset ,whence ); if _cfca !=nil {return _fdaf ,_cfca ;};if whence ==_ae .SeekCurrent {_fdaf -=_cabe ._bgfc ;};if _fdaf < 0{return 0,_e .New ("\u0063\u006f\u0072\u0065\u002eo\u0066\u0066\u0073\u0065\u0074\u0052\u0065\u0061\u0064\u0065\u0072\u002e\u0053e\u0065\u006b\u003a\u0020\u006e\u0065\u0067\u0061\u0074\u0069\u0076\u0065\u0020\u0070\u006f\u0073\u0069\u0074\u0069\u006f\u006e"); };return _fdaf ,nil ;}; // UpdateParams updates the parameter values of the encoder. func (_dafe *FlateEncoder )UpdateParams (params *PdfObjectDictionary ){_ecb ,_bgbd :=GetNumberAsInt64 (params .Get ("\u0050r\u0065\u0064\u0069\u0063\u0074\u006fr"));if _bgbd ==nil {_dafe .Predictor =int (_ecb );};_gde ,_bgbd :=GetNumberAsInt64 (params .Get ("\u0042\u0069t\u0073\u0050\u0065r\u0043\u006f\u006d\u0070\u006f\u006e\u0065\u006e\u0074")); if _bgbd ==nil {_dafe .BitsPerComponent =int (_gde );};_fafd ,_bgbd :=GetNumberAsInt64 (params .Get ("\u0057\u0069\u0064t\u0068"));if _bgbd ==nil {_dafe .Columns =int (_fafd );};_gcd ,_bgbd :=GetNumberAsInt64 (params .Get ("\u0043o\u006co\u0072\u0043\u006f\u006d\u0070\u006f\u006e\u0065\u006e\u0074\u0073")); if _bgbd ==nil {_dafe .Colors =int (_gcd );};}; // Keys returns the list of keys in the dictionary. // If `d` is nil returns a nil slice. func (_bdec *PdfObjectDictionary )Keys ()[]PdfObjectName {if _bdec ==nil {return nil ;};return _bdec ._agde ;}; // Encode encodes previously prepare jbig2 document and stores it as the byte slice. func (_aecdd *JBIG2Encoder )Encode ()(_cafeg []byte ,_bfbe error ){const _edff ="J\u0042I\u0047\u0032\u0044\u006f\u0063\u0075\u006d\u0065n\u0074\u002e\u0045\u006eco\u0064\u0065";if _aecdd ._aafa ==nil {return nil ,_gd .Errorf (_edff ,"\u0064\u006f\u0063u\u006d\u0065\u006e\u0074 \u0069\u006e\u0070\u0075\u0074\u0020\u0064a\u0074\u0061\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064"); };_aecdd ._aafa .FullHeaders =_aecdd .DefaultPageSettings .FileMode ;_cafeg ,_bfbe =_aecdd ._aafa .Encode ();if _bfbe !=nil {return nil ,_gd .Wrap (_bfbe ,_edff ,"");};return _cafeg ,nil ;}; // JBIG2CompressionType defines the enum compression type used by the JBIG2Encoder. type JBIG2CompressionType int ; // MakeStreamDict makes a new instance of an encoding dictionary for a stream object. func (_eddad *RawEncoder )MakeStreamDict ()*PdfObjectDictionary {return MakeDict ()};func (_fafa *PdfCrypt )decryptBytes (_fecd []byte ,_eec string ,_bea []byte )([]byte ,error ){_fc .Log .Trace ("\u0044\u0065\u0063\u0072\u0079\u0070\u0074\u0020\u0062\u0079\u0074\u0065\u0073"); _ebba ,_cfc :=_fafa ._cad [_eec ];if !_cfc {return nil ,_g .Errorf ("\u0075n\u006b\u006e\u006f\u0077n\u0020\u0063\u0072\u0079\u0070t\u0020f\u0069l\u0074\u0065\u0072\u0020\u0028\u0025\u0073)",_eec );};return _ebba .DecryptBytes (_fecd ,_bea );}; // Encrypt an object with specified key. For numbered objects, // the key argument is not used and a new one is generated based // on the object and generation number. // Traverses through all the subobjects (recursive). // // Does not look up references.. That should be done prior to calling. func (_cbbe *PdfCrypt )Encrypt (obj PdfObject ,parentObjNum ,parentGenNum int64 )error {if _cbbe .isEncrypted (obj ){return nil ;};switch _fadf :=obj .(type ){case *PdfIndirectObject :_cbbe ._bgd [_fadf ]=true ;_fc .Log .Trace ("\u0045\u006e\u0063\u0072\u0079\u0070\u0074\u0069\u006e\u0067 \u0069\u006e\u0064\u0069\u0072\u0065\u0063t\u0020\u0025\u0064\u0020\u0025\u0064\u0020\u006f\u0062\u006a\u0021",_fadf .ObjectNumber ,_fadf .GenerationNumber ); _fbae :=_fadf .ObjectNumber ;_cfad :=_fadf .GenerationNumber ;_bgef :=_cbbe .Encrypt (_fadf .PdfObject ,_fbae ,_cfad );if _bgef !=nil {return _bgef ;};return nil ;case *PdfObjectStream :_cbbe ._bgd [_fadf ]=true ;_egc :=_fadf .PdfObjectDictionary ;if _ggbf ,_ceff :=_egc .Get ("\u0054\u0079\u0070\u0065").(*PdfObjectName ); _ceff &&*_ggbf =="\u0058\u0052\u0065\u0066"{return nil ;};_fea :=_fadf .ObjectNumber ;_cggc :=_fadf .GenerationNumber ;_fc .Log .Trace ("\u0045n\u0063\u0072\u0079\u0070t\u0069\u006e\u0067\u0020\u0073t\u0072e\u0061m\u0020\u0025\u0064\u0020\u0025\u0064\u0020!",_fea ,_cggc ); _dbeb :=_gaa ;if _cbbe ._fgce .V >=4{_dbeb =_cbbe ._ggag ;_fc .Log .Trace ("\u0074\u0068\u0069\u0073.s\u0074\u0072\u0065\u0061\u006d\u0046\u0069\u006c\u0074\u0065\u0072\u0020\u003d\u0020%\u0073",_cbbe ._ggag );if _aeff ,_aegf :=_egc .Get ("\u0046\u0069\u006c\u0074\u0065\u0072").(*PdfObjectArray ); _aegf {if _fdb ,_gedb :=GetName (_aeff .Get (0));_gedb {if *_fdb =="\u0043\u0072\u0079p\u0074"{_dbeb ="\u0049\u0064\u0065\u006e\u0074\u0069\u0074\u0079";if _cea ,_afc :=_egc .Get ("D\u0065\u0063\u006f\u0064\u0065\u0050\u0061\u0072\u006d\u0073").(*PdfObjectDictionary ); _afc {if _ecd ,_fadc :=_cea .Get ("\u004e\u0061\u006d\u0065").(*PdfObjectName );_fadc {if _ ,_fab :=_cbbe ._cad [string (*_ecd )];_fab {_fc .Log .Trace ("\u0055\u0073\u0069\u006eg \u0073\u0074\u0072\u0065\u0061\u006d\u0020\u0066\u0069\u006c\u0074\u0065\u0072\u0020%\u0073",*_ecd ); _dbeb =string (*_ecd );};};};};};};_fc .Log .Trace ("\u0077\u0069\u0074\u0068\u0020\u0025\u0073\u0020\u0066i\u006c\u0074\u0065\u0072",_dbeb );if _dbeb =="\u0049\u0064\u0065\u006e\u0074\u0069\u0074\u0079"{return nil ;};};_gge :=_cbbe .Encrypt (_fadf .PdfObjectDictionary ,_fea ,_cggc ); if _gge !=nil {return _gge ;};_gab ,_gge :=_cbbe .makeKey (_dbeb ,uint32 (_fea ),uint32 (_cggc ),_cbbe ._ccda );if _gge !=nil {return _gge ;};_fadf .Stream ,_gge =_cbbe .encryptBytes (_fadf .Stream ,_dbeb ,_gab );if _gge !=nil {return _gge ;};_egc .Set ("\u004c\u0065\u006e\u0067\u0074\u0068",MakeInteger (int64 (len (_fadf .Stream )))); return nil ;case *PdfObjectString :_fc .Log .Trace ("\u0045n\u0063r\u0079\u0070\u0074\u0069\u006eg\u0020\u0073t\u0072\u0069\u006e\u0067\u0021");_ggf :=_gaa ;if _cbbe ._fgce .V >=4{_fc .Log .Trace ("\u0077\u0069\u0074\u0068\u0020\u0025\u0073\u0020\u0066i\u006c\u0074\u0065\u0072",_cbbe ._afaf ); if _cbbe ._afaf =="\u0049\u0064\u0065\u006e\u0074\u0069\u0074\u0079"{return nil ;};_ggf =_cbbe ._afaf ;};_cdg ,_cbdf :=_cbbe .makeKey (_ggf ,uint32 (parentObjNum ),uint32 (parentGenNum ),_cbbe ._ccda );if _cbdf !=nil {return _cbdf ;};_ceffe :=_fadf .Str (); _bfbg :=make ([]byte ,len (_ceffe ));for _aafe :=0;_aafe < len (_ceffe );_aafe ++{_bfbg [_aafe ]=_ceffe [_aafe ];};_fc .Log .Trace ("\u0045n\u0063\u0072\u0079\u0070\u0074\u0020\u0073\u0074\u0072\u0069\u006eg\u003a\u0020\u0025\u0073\u0020\u003a\u0020\u0025\u0020\u0078",_bfbg ,_bfbg ); _bfbg ,_cbdf =_cbbe .encryptBytes (_bfbg ,_ggf ,_cdg );if _cbdf !=nil {return _cbdf ;};_fadf ._bgfdf =string (_bfbg );return nil ;case *PdfObjectArray :for _ ,_deb :=range _fadf .Elements (){_dcefb :=_cbbe .Encrypt (_deb ,parentObjNum ,parentGenNum );if _dcefb !=nil {return _dcefb ; };};return nil ;case *PdfObjectDictionary :_effa :=false ;if _dfe :=_fadf .Get ("\u0054\u0079\u0070\u0065");_dfe !=nil {_dfag ,_ace :=_dfe .(*PdfObjectName );if _ace &&*_dfag =="\u0053\u0069\u0067"{_effa =true ;};};for _ ,_fceg :=range _fadf .Keys (){_fcad :=_fadf .Get (_fceg ); if _effa &&string (_fceg )=="\u0043\u006f\u006e\u0074\u0065\u006e\u0074\u0073"{continue ;};if string (_fceg )!="\u0050\u0061\u0072\u0065\u006e\u0074"&&string (_fceg )!="\u0050\u0072\u0065\u0076"&&string (_fceg )!="\u004c\u0061\u0073\u0074"{_edb :=_cbbe .Encrypt (_fcad ,parentObjNum ,parentGenNum ); if _edb !=nil {return _edb ;};};};return nil ;};return nil ;};func (_cecg *FlateEncoder )postDecodePredict (_ageca []byte )([]byte ,error ){if _cecg .Predictor > 1{if _cecg .Predictor ==2{_fc .Log .Trace ("\u0054\u0069\u0066\u0066\u0020\u0065\u006e\u0063\u006f\u0064\u0069\u006e\u0067"); _fc .Log .Trace ("\u0043\u006f\u006c\u006f\u0072\u0073\u003a\u0020\u0025\u0064",_cecg .Colors );_dca :=_cecg .Columns *_cecg .Colors ;if _dca < 1{return []byte {},nil ;};_cadd :=len (_ageca )/_dca ;if len (_ageca )%_dca !=0{_fc .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020T\u0049\u0046\u0046 \u0065\u006e\u0063\u006fd\u0069\u006e\u0067\u003a\u0020\u0049\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0072\u006f\u0077\u0020\u006c\u0065\u006e\u0067\u0074\u0068\u002e\u002e\u002e"); return nil ,_g .Errorf ("\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0072\u006f\u0077 \u006c\u0065\u006e\u0067\u0074\u0068\u0020\u0028\u0025\u0064/\u0025\u0064\u0029",len (_ageca ),_dca );};if _dca %_cecg .Colors !=0{return nil ,_g .Errorf ("\u0069\u006ev\u0061\u006c\u0069\u0064 \u0072\u006fw\u0020\u006c\u0065\u006e\u0067\u0074\u0068\u0020(\u0025\u0064\u0029\u0020\u0066\u006f\u0072\u0020\u0063\u006f\u006c\u006fr\u0073\u0020\u0025\u0064",_dca ,_cecg .Colors ); };if _dca > len (_ageca ){_fc .Log .Debug ("\u0052\u006fw\u0020\u006c\u0065\u006e\u0067t\u0068\u0020\u0063\u0061\u006en\u006f\u0074\u0020\u0062\u0065\u0020\u006c\u006f\u006e\u0067\u0065\u0072\u0020\u0074\u0068\u0061\u006e\u0020\u0064\u0061\u0074\u0061\u0020\u006c\u0065\u006e\u0067\u0074\u0068\u0020\u0028\u0025\u0064\u002f\u0025\u0064\u0029",_dca ,len (_ageca )); return nil ,_e .New ("\u0072\u0061\u006e\u0067\u0065\u0020\u0063\u0068\u0065\u0063\u006b\u0020e\u0072\u0072\u006f\u0072");};_fc .Log .Trace ("i\u006e\u0070\u0020\u006fut\u0044a\u0074\u0061\u0020\u0028\u0025d\u0029\u003a\u0020\u0025\u0020\u0078",len (_ageca ),_ageca ); _bag :=_fe .NewBuffer (nil );for _gda :=0;_gda < _cadd ;_gda ++{_ffed :=_ageca [_dca *_gda :_dca *(_gda +1)];for _dcga :=_cecg .Colors ;_dcga < _dca ;_dcga ++{_ffed [_dcga ]+=_ffed [_dcga -_cecg .Colors ];};_bag .Write (_ffed );};_ada :=_bag .Bytes (); _fc .Log .Trace ("\u0050O\u0075t\u0044\u0061\u0074\u0061\u0020(\u0025\u0064)\u003a\u0020\u0025\u0020\u0078",len (_ada ),_ada );return _ada ,nil ;}else if _cecg .Predictor >=10&&_cecg .Predictor <=15{_fc .Log .Trace ("\u0050\u004e\u0047 \u0045\u006e\u0063\u006f\u0064\u0069\u006e\u0067"); _becd :=_cecg .Columns *_cecg .Colors +1;_afbg :=len (_ageca )/_becd ;if len (_ageca )%_becd !=0{return nil ,_g .Errorf ("\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0072\u006f\u0077 \u006c\u0065\u006e\u0067\u0074\u0068\u0020\u0028\u0025\u0064/\u0025\u0064\u0029",len (_ageca ),_becd ); };if _becd > len (_ageca ){_fc .Log .Debug ("\u0052\u006fw\u0020\u006c\u0065\u006e\u0067t\u0068\u0020\u0063\u0061\u006en\u006f\u0074\u0020\u0062\u0065\u0020\u006c\u006f\u006e\u0067\u0065\u0072\u0020\u0074\u0068\u0061\u006e\u0020\u0064\u0061\u0074\u0061\u0020\u006c\u0065\u006e\u0067\u0074\u0068\u0020\u0028\u0025\u0064\u002f\u0025\u0064\u0029",_becd ,len (_ageca )); return nil ,_e .New ("\u0072\u0061\u006e\u0067\u0065\u0020\u0063\u0068\u0065\u0063\u006b\u0020e\u0072\u0072\u006f\u0072");};_ebab :=_fe .NewBuffer (nil );_fc .Log .Trace ("P\u0072\u0065\u0064\u0069ct\u006fr\u0020\u0063\u006f\u006c\u0075m\u006e\u0073\u003a\u0020\u0025\u0064",_cecg .Columns ); _fc .Log .Trace ("\u004ce\u006e\u0067\u0074\u0068:\u0020\u0025\u0064\u0020\u002f \u0025d\u0020=\u0020\u0025\u0064\u0020\u0072\u006f\u0077s",len (_ageca ),_becd ,_afbg );_feb :=make ([]byte ,_becd );for _efed :=0;_efed < _becd ;_efed ++{_feb [_efed ]=0; };_eag :=_cecg .Colors ;for _gae :=0;_gae < _afbg ;_gae ++{_adaf :=_ageca [_becd *_gae :_becd *(_gae +1)];_fedc :=_adaf [0];switch _fedc {case _dbb :case _ceea :for _adfe :=1+_eag ;_adfe < _becd ;_adfe ++{_adaf [_adfe ]+=_adaf [_adfe -_eag ];};case _acfb :for _begc :=1; _begc < _becd ;_begc ++{_adaf [_begc ]+=_feb [_begc ];};case _effg :for _eceae :=1;_eceae < _eag +1;_eceae ++{_adaf [_eceae ]+=_feb [_eceae ]/2;};for _agff :=_eag +1;_agff < _becd ;_agff ++{_adaf [_agff ]+=byte ((int (_adaf [_agff -_eag ])+int (_feb [_agff ]))/2); };case _fgcfd :for _fccd :=1;_fccd < _becd ;_fccd ++{var _bgbfe ,_acd ,_fedb byte ;_acd =_feb [_fccd ];if _fccd >=_eag +1{_bgbfe =_adaf [_fccd -_eag ];_fedb =_feb [_fccd -_eag ];};_adaf [_fccd ]+=_fcgc (_bgbfe ,_acd ,_fedb );};default:_fc .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0049\u006e\u0076\u0061\u006c\u0069d\u0020\u0066\u0069\u006c\u0074\u0065r\u0020\u0062\u0079\u0074\u0065\u0020\u0028\u0025\u0064\u0029\u0020\u0040\u0072o\u0077\u0020\u0025\u0064",_fedc ,_gae ); return nil ,_g .Errorf ("\u0069n\u0076\u0061\u006c\u0069\u0064\u0020\u0066\u0069\u006c\u0074\u0065r\u0020\u0062\u0079\u0074\u0065\u0020\u0028\u0025\u0064\u0029",_fedc );};copy (_feb ,_adaf );_ebab .Write (_adaf [1:]);};_efd :=_ebab .Bytes ();return _efd ,nil ; }else {_fc .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a \u0055\u006e\u0073\u0075\u0070\u0070\u006f\u0072\u0074\u0065\u0064\u0020\u0070r\u0065\u0064\u0069\u0063\u0074\u006f\u0072 \u0028\u0025\u0064\u0029",_cecg .Predictor );return nil ,_g .Errorf ("\u0075\u006e\u0073\u0075\u0070\u0070\u006f\u0072\u0074\u0065\u0064 \u0070\u0072\u0065\u0064\u0069\u0063\u0074\u006f\u0072\u0020(\u0025\u0064\u0029",_cecg .Predictor ); };};return _ageca ,nil ;}; // GetRevisionNumber returns the current version of the Pdf document. func (_cebf *PdfParser )GetRevisionNumber ()int {return _cebf ._gdgc }; // Inspect analyzes the document object structure. Returns a map of object types (by name) with the instance count // as value. func (_fegdf *PdfParser )Inspect ()(map[string ]int ,error ){return _fegdf .inspect ()}; // PdfObjectStream represents the primitive PDF Object stream. type PdfObjectStream struct{PdfObjectReference ;*PdfObjectDictionary ;Stream []byte ;};type xrefType int ;var _gbfbb =_d .MustCompile ("\u0025P\u0044F\u002d\u0028\u005c\u0064\u0029\u005c\u002e\u0028\u005c\u0064\u0029");func _beef (_gaeee string )(PdfObjectReference ,error ){_ffddb :=PdfObjectReference {}; _fdddb :=_efaac .FindStringSubmatch (_gaeee );if len (_fdddb )< 3{_fc .Log .Debug ("\u0045\u0072\u0072or\u0020\u0070\u0061\u0072\u0073\u0069\u006e\u0067\u0020\u0072\u0065\u0066\u0065\u0072\u0065\u006e\u0063\u0065");return _ffddb ,_e .New ("\u0075n\u0061\u0062\u006c\u0065 \u0074\u006f\u0020\u0070\u0061r\u0073e\u0020r\u0065\u0066\u0065\u0072\u0065\u006e\u0063e"); };_aedg ,_ :=_ef .Atoi (_fdddb [1]);_efddf ,_ :=_ef .Atoi (_fdddb [2]);_ffddb .ObjectNumber =int64 (_aedg );_ffddb .GenerationNumber =int64 (_efddf );return _ffddb ,nil ;}; // HasOddLengthHexStrings checks if the document has odd length hexadecimal strings. func (_efc ParserMetadata )HasOddLengthHexStrings ()bool {return _efc ._bee }; // GetString is a helper for Get that returns a string value. // Returns false if the key is missing or a value is not a string. func (_dgddf *PdfObjectDictionary )GetString (key PdfObjectName )(string ,bool ){_debad :=_dgddf .Get (key );if _debad ==nil {return "",false ;};_gcfgf ,_agcfe :=_debad .(*PdfObjectString );if !_agcfe {return "",false ;};return _gcfgf .Str (),true ;}; // NewRunLengthEncoder makes a new run length encoder func NewRunLengthEncoder ()*RunLengthEncoder {return &RunLengthEncoder {}}; // GetCrypter returns the PdfCrypt instance which has information about the PDFs encryption. func (_dcfea *PdfParser )GetCrypter ()*PdfCrypt {return _dcfea ._agga };var _eddb =_d .MustCompile ("\u0028\u005c\u0064\u002b\u0029\u005c\u0073\u002b\u0028\u005c\u0064\u002b)\u005c\u0073\u002a\u0024"); // String returns a string describing `streams`. func (_bgggg *PdfObjectStreams )String ()string {return _g .Sprintf ("\u004f\u0062j\u0065\u0063\u0074 \u0073\u0074\u0072\u0065\u0061\u006d\u0020\u0025\u0064",_bgggg .ObjectNumber );}; // DecodeStream implements ASCII85 stream decoding. func (_cfgce *ASCII85Encoder )DecodeStream (streamObj *PdfObjectStream )([]byte ,error ){return _cfgce .DecodeBytes (streamObj .Stream );}; // GetEncryptObj returns the PdfIndirectObject which has information about the PDFs encryption details. func (_dedab *PdfParser )GetEncryptObj ()*PdfIndirectObject {return _dedab ._fadb }; // GetDict returns the *PdfObjectDictionary represented by the PdfObject directly or indirectly within an indirect // object. On type mismatch the found bool flag is false and a nil pointer is returned. func GetDict (obj PdfObject )(_baaa *PdfObjectDictionary ,_gebd bool ){_baaa ,_gebd =TraceToDirectObject (obj ).(*PdfObjectDictionary );return _baaa ,_gebd ;}; // PdfIndirectObject represents the primitive PDF indirect object. type PdfIndirectObject struct{PdfObjectReference ;PdfObject ;}; // MakeDictMap creates a PdfObjectDictionary initialized from a map of keys to values. func MakeDictMap (objmap map[string ]PdfObject )*PdfObjectDictionary {_dbga :=MakeDict ();return _dbga .Update (objmap );};const _gce =32<<(^uint (0)>>63); // GetString returns the *PdfObjectString represented by the PdfObject directly or indirectly within an indirect // object. On type mismatch the found bool flag is false and a nil pointer is returned. func GetString (obj PdfObject )(_cdbca *PdfObjectString ,_cgadg bool ){_cdbca ,_cgadg =TraceToDirectObject (obj ).(*PdfObjectString );return _cdbca ,_cgadg ;}; // ParserMetadata gets the pdf parser metadata. func (_cfgc *PdfParser )ParserMetadata ()(ParserMetadata ,error ){if !_cfgc ._egaa {return ParserMetadata {},_g .Errorf ("\u0070\u0061\u0072\u0073\u0065r\u0020\u0077\u0061\u0073\u0020\u006e\u006f\u0074\u0020\u006d\u0061\u0072\u006be\u0064\u0020\u0066\u006f\u0072\u0020\u0067\u0065\u0074\u0074\u0069\u006e\u0067\u0020\u0064\u0065\u0074\u0061\u0069\u006c\u0065\u0064\u0020\u006d\u0065\u0074\u0061\u0064\u0061\u0074a"); };return _cfgc ._adfgf ,nil ;}; // GetFilterName returns the name of the encoding filter. func (_gggb *JPXEncoder )GetFilterName ()string {return StreamEncodingFilterNameJPX }; // GetFilterName returns the name of the encoding filter. func (_feda *RunLengthEncoder )GetFilterName ()string {return StreamEncodingFilterNameRunLength }; // Len returns the number of elements in the array. func (_ggbfd *PdfObjectArray )Len ()int {if _ggbfd ==nil {return 0;};return len (_ggbfd ._cebff );}; // HeaderPosition gets the file header position. func (_bgcf ParserMetadata )HeaderPosition ()int {return _bgcf ._bgda }; // SetIfNotNil sets the dictionary's key -> val mapping entry -IF- val is not nil. // Note that we take care to perform a type switch. Otherwise if we would supply a nil value // of another type, e.g. (PdfObjectArray*)(nil), then it would not be a PdfObject(nil) and thus // would get set. func (_fbedg *PdfObjectDictionary )SetIfNotNil (key PdfObjectName ,val PdfObject ){if val !=nil {switch _dggde :=val .(type ){case *PdfObjectName :if _dggde !=nil {_fbedg .Set (key ,val );};case *PdfObjectDictionary :if _dggde !=nil {_fbedg .Set (key ,val ); };case *PdfObjectStream :if _dggde !=nil {_fbedg .Set (key ,val );};case *PdfObjectString :if _dggde !=nil {_fbedg .Set (key ,val );};case *PdfObjectNull :if _dggde !=nil {_fbedg .Set (key ,val );};case *PdfObjectInteger :if _dggde !=nil {_fbedg .Set (key ,val ); };case *PdfObjectArray :if _dggde !=nil {_fbedg .Set (key ,val );};case *PdfObjectBool :if _dggde !=nil {_fbedg .Set (key ,val );};case *PdfObjectFloat :if _dggde !=nil {_fbedg .Set (key ,val );};case *PdfObjectReference :if _dggde !=nil {_fbedg .Set (key ,val ); };case *PdfIndirectObject :if _dggde !=nil {_fbedg .Set (key ,val );};default:_fc .Log .Error ("\u0045\u0052R\u004f\u0052\u003a\u0020\u0055\u006e\u006b\u006e\u006f\u0077\u006e\u0020\u0074\u0079\u0070\u0065\u003a\u0020\u0025\u0054\u0020\u002d\u0020\u0073\u0068\u006f\u0075\u006c\u0064\u0020\u006e\u0065\u0076\u0065\u0072\u0020\u0068\u0061\u0070\u0070\u0065\u006e\u0021",val ); };};}; // NewASCIIHexEncoder makes a new ASCII hex encoder. func NewASCIIHexEncoder ()*ASCIIHexEncoder {_caa :=&ASCIIHexEncoder {};return _caa };var _dbfc =_d .MustCompile ("\u005e\u005b\\\u002b\u002d\u002e\u005d*\u0028\u005b0\u002d\u0039\u002e\u005d\u002b\u0029\u005b\u0065E\u005d\u005b\u005c\u002b\u002d\u002e\u005d\u002a\u0028\u005b\u0030\u002d9\u002e\u005d\u002b\u0029"); // NewParser creates a new parser for a PDF file via ReadSeeker. Loads the cross reference stream and trailer. // An error is returned on failure. func NewParser (rs _ae .ReadSeeker )(*PdfParser ,error ){_abcf :=&PdfParser {_bcced :rs ,ObjCache :make (objectCache ),_abeb :map[int64 ]bool {},_abd :make ([]int64 ,0),_agdf :make (map[*PdfParser ]*PdfParser )};_cfdf ,_ggbd ,_fbce :=_abcf .parsePdfVersion (); if _fbce !=nil {_fc .Log .Error ("U\u006e\u0061\u0062\u006c\u0065\u0020t\u006f\u0020\u0070\u0061\u0072\u0073\u0065\u0020\u0076e\u0072\u0073\u0069o\u006e:\u0020\u0025\u0076",_fbce );return nil ,_fbce ;};_abcf ._beae .Major =_cfdf ;_abcf ._beae .Minor =_ggbd ; if _abcf ._affd ,_fbce =_abcf .loadXrefs ();_fbce !=nil {_fc .Log .Debug ("\u0045\u0052RO\u0052\u003a\u0020F\u0061\u0069\u006c\u0065d t\u006f l\u006f\u0061\u0064\u0020\u0078\u0072\u0065f \u0074\u0061\u0062\u006c\u0065\u0021\u0020%\u0073",_fbce );return nil ,_fbce ; };_fc .Log .Trace ("T\u0072\u0061\u0069\u006c\u0065\u0072\u003a\u0020\u0025\u0073",_abcf ._affd );_cdaba ,_fbce :=_abcf .parseLinearizedDictionary ();if _fbce !=nil {return nil ,_fbce ;};if _cdaba !=nil {_abcf ._efaaca ,_fbce =_abcf .checkLinearizedInformation (_cdaba ); if _fbce !=nil {return nil ,_fbce ;};};if len (_abcf ._fgaf .ObjectMap )==0{return nil ,_g .Errorf ("\u0065\u006d\u0070\u0074\u0079\u0020\u0058\u0052\u0045\u0046\u0020t\u0061\u0062\u006c\u0065\u0020\u002d\u0020\u0049\u006e\u0076a\u006c\u0069\u0064");}; _abcf ._gdgc =len (_abcf ._abd );if _abcf ._efaaca &&_abcf ._gdgc !=0{_abcf ._gdgc --;};_abcf ._cgeg =make ([]*PdfParser ,_abcf ._gdgc );return _abcf ,nil ;};func (_dcfb *PdfParser )skipComments ()error {if _ ,_fgcc :=_dcfb .skipSpaces ();_fgcc !=nil {return _fgcc ; };_adadb :=true ;for {_gdde ,_cagg :=_dcfb ._dcfe .Peek (1);if _cagg !=nil {_fc .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0025\u0073",_cagg .Error ());return _cagg ;};if _adadb &&_gdde [0]!='%'{return nil ;};_adadb =false ;if (_gdde [0]!='\r')&&(_gdde [0]!='\n'){_dcfb ._dcfe .ReadByte (); }else {break ;};};return _dcfb .skipComments ();}; // NewMultiEncoder returns a new instance of MultiEncoder. func NewMultiEncoder ()*MultiEncoder {_ggbfa :=MultiEncoder {};_ggbfa ._fdec =[]StreamEncoder {};return &_ggbfa ;};func _fbc (_babe *_cg .StdEncryptDict ,_bdd *PdfObjectDictionary )error {R ,_fgg :=_bdd .Get ("\u0052").(*PdfObjectInteger );if !_fgg {return _e .New ("\u0065\u006e\u0063\u0072y\u0070\u0074\u0020\u0064\u0069\u0063\u0074\u0069\u006f\u006ea\u0072y\u0020\u006d\u0069\u0073\u0073\u0069\u006eg\u0020\u0052"); };if *R < 2||*R > 6{return _g .Errorf ("\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0052 \u0028\u0025\u0064\u0029",*R );};_babe .R =int (*R );O ,_fgg :=_bdd .GetString ("\u004f");if !_fgg {return _e .New ("\u0065\u006e\u0063\u0072y\u0070\u0074\u0020\u0064\u0069\u0063\u0074\u0069\u006f\u006ea\u0072y\u0020\u006d\u0069\u0073\u0073\u0069\u006eg\u0020\u004f"); };if _babe .R ==5||_babe .R ==6{if len (O )< 48{return _g .Errorf ("\u004c\u0065\u006e\u0067th\u0028\u004f\u0029\u0020\u003c\u0020\u0034\u0038\u0020\u0028\u0025\u0064\u0029",len (O ));};}else if len (O )!=32{return _g .Errorf ("L\u0065n\u0067\u0074\u0068\u0028\u004f\u0029\u0020\u0021=\u0020\u0033\u0032\u0020(%\u0064\u0029",len (O )); };_babe .O =[]byte (O );U ,_fgg :=_bdd .GetString ("\u0055");if !_fgg {return _e .New ("\u0065\u006e\u0063\u0072y\u0070\u0074\u0020\u0064\u0069\u0063\u0074\u0069\u006f\u006ea\u0072y\u0020\u006d\u0069\u0073\u0073\u0069\u006eg\u0020\u0055");};if _babe .R ==5||_babe .R ==6{if len (U )< 48{return _g .Errorf ("\u004c\u0065\u006e\u0067th\u0028\u0055\u0029\u0020\u003c\u0020\u0034\u0038\u0020\u0028\u0025\u0064\u0029",len (U )); };}else if len (U )!=32{_fc .Log .Debug ("\u0057\u0061r\u006e\u0069\u006e\u0067\u003a\u0020\u004c\u0065\u006e\u0067\u0074\u0068\u0028\u0055\u0029\u0020\u0021\u003d\u0020\u0033\u0032\u0020(%\u0064\u0029",len (U ));};_babe .U =[]byte (U );if _babe .R >=5{OE ,_ee :=_bdd .GetString ("\u004f\u0045"); if !_ee {return _e .New ("\u0065\u006ec\u0072\u0079\u0070\u0074\u0020\u0064\u0069\u0063\u0074\u0069\u006f\u006e\u0061\u0072\u0079\u0020\u006d\u0069\u0073\u0073\u0069\u006eg \u004f\u0045");}else if len (OE )!=32{return _g .Errorf ("L\u0065\u006e\u0067\u0074h(\u004fE\u0029\u0020\u0021\u003d\u00203\u0032\u0020\u0028\u0025\u0064\u0029",len (OE )); };_babe .OE =[]byte (OE );UE ,_ee :=_bdd .GetString ("\u0055\u0045");if !_ee {return _e .New ("\u0065\u006ec\u0072\u0079\u0070\u0074\u0020\u0064\u0069\u0063\u0074\u0069\u006f\u006e\u0061\u0072\u0079\u0020\u006d\u0069\u0073\u0073\u0069\u006eg \u0055\u0045"); }else if len (UE )!=32{return _g .Errorf ("L\u0065\u006e\u0067\u0074h(\u0055E\u0029\u0020\u0021\u003d\u00203\u0032\u0020\u0028\u0025\u0064\u0029",len (UE ));};_babe .UE =[]byte (UE );};P ,_fgg :=_bdd .Get ("\u0050").(*PdfObjectInteger );if !_fgg {return _e .New ("\u0065\u006e\u0063\u0072\u0079\u0070\u0074 \u0064\u0069\u0063t\u0069\u006f\u006e\u0061r\u0079\u0020\u006d\u0069\u0073\u0073\u0069\u006e\u0067\u0020\u0070\u0065\u0072\u006d\u0069\u0073\u0073\u0069\u006f\u006e\u0073\u0020\u0061\u0074\u0074\u0072"); };_babe .P =_cg .Permissions (*P );if _babe .R ==6{Perms ,_ffc :=_bdd .GetString ("\u0050\u0065\u0072m\u0073");if !_ffc {return _e .New ("\u0065\u006e\u0063\u0072\u0079\u0070\u0074\u0020\u0064\u0069\u0063\u0074\u0069\u006f\u006ea\u0072y\u0020\u006d\u0069\u0073\u0073\u0069\u006e\u0067\u0020\u0050\u0065\u0072\u006d\u0073"); }else if len (Perms )!=16{return _g .Errorf ("\u004ce\u006e\u0067\u0074\u0068\u0028\u0050\u0065\u0072\u006d\u0073\u0029 \u0021\u003d\u0020\u0031\u0036\u0020\u0028\u0025\u0064\u0029",len (Perms ));};_babe .Perms =[]byte (Perms );};if _cdd ,_eaff :=_bdd .Get ("\u0045n\u0063r\u0079\u0070\u0074\u004d\u0065\u0074\u0061\u0064\u0061\u0074\u0061").(*PdfObjectBool ); _eaff {_babe .EncryptMetadata =bool (*_cdd );}else {_babe .EncryptMetadata =true ;};return nil ;};const (StreamEncodingFilterNameFlate ="F\u006c\u0061\u0074\u0065\u0044\u0065\u0063\u006f\u0064\u0065";StreamEncodingFilterNameLZW ="\u004cZ\u0057\u0044\u0065\u0063\u006f\u0064e"; StreamEncodingFilterNameDCT ="\u0044C\u0054\u0044\u0065\u0063\u006f\u0064e";StreamEncodingFilterNameRunLength ="\u0052u\u006eL\u0065\u006e\u0067\u0074\u0068\u0044\u0065\u0063\u006f\u0064\u0065";StreamEncodingFilterNameASCIIHex ="\u0041\u0053\u0043\u0049\u0049\u0048\u0065\u0078\u0044e\u0063\u006f\u0064\u0065"; StreamEncodingFilterNameASCII85 ="\u0041\u0053\u0043\u0049\u0049\u0038\u0035\u0044\u0065\u0063\u006f\u0064\u0065";StreamEncodingFilterNameCCITTFax ="\u0043\u0043\u0049\u0054\u0054\u0046\u0061\u0078\u0044e\u0063\u006f\u0064\u0065";StreamEncodingFilterNameJBIG2 ="J\u0042\u0049\u0047\u0032\u0044\u0065\u0063\u006f\u0064\u0065"; StreamEncodingFilterNameJPX ="\u004aP\u0058\u0044\u0065\u0063\u006f\u0064e";StreamEncodingFilterNameRaw ="\u0052\u0061\u0077";); // Validate validates the page settings for the JBIG2 encoder. func (_efcb JBIG2EncoderSettings )Validate ()error {const _ffafg ="\u0076a\u006ci\u0064\u0061\u0074\u0065\u0045\u006e\u0063\u006f\u0064\u0065\u0072";if _efcb .Threshold < 0||_efcb .Threshold > 1.0{return _gd .Errorf (_ffafg ,"\u0070\u0072\u006f\u0076\u0069\u0064\u0065\u0064\u0020\u0074\u0068\u0072\u0065\u0073\u0068\u006f\u006c\u0064\u0020\u0076a\u006c\u0075\u0065\u003a\u0020\u0027\u0025\u0076\u0027 \u006d\u0075\u0073\u0074\u0020\u0062\u0065\u0020\u0069\u006e\u0020\u0072\u0061n\u0067\u0065\u0020\u005b\u0030\u002e0\u002c\u0020\u0031.\u0030\u005d",_efcb .Threshold ); };if _efcb .ResolutionX < 0{return _gd .Errorf (_ffafg ,"\u0070\u0072\u006f\u0076\u0069\u0064\u0065\u0064\u0020\u0078\u0020\u0072\u0065\u0073\u006f\u006c\u0075\u0074\u0069\u006fn\u003a\u0020\u0027\u0025\u0064\u0027\u0020\u006d\u0075s\u0074\u0020\u0062\u0065\u0020\u0070\u006f\u0073\u0069\u0074\u0069\u0076\u0065 \u006f\u0072\u0020\u007a\u0065\u0072o\u0020\u0076\u0061l\u0075\u0065",_efcb .ResolutionX ); };if _efcb .ResolutionY < 0{return _gd .Errorf (_ffafg ,"\u0070\u0072\u006f\u0076\u0069\u0064\u0065\u0064\u0020\u0079\u0020\u0072\u0065\u0073\u006f\u006c\u0075\u0074\u0069\u006fn\u003a\u0020\u0027\u0025\u0064\u0027\u0020\u006d\u0075s\u0074\u0020\u0062\u0065\u0020\u0070\u006f\u0073\u0069\u0074\u0069\u0076\u0065 \u006f\u0072\u0020\u007a\u0065\u0072o\u0020\u0076\u0061l\u0075\u0065",_efcb .ResolutionY ); };if _efcb .DefaultPixelValue !=0&&_efcb .DefaultPixelValue !=1{return _gd .Errorf (_ffafg ,"de\u0066\u0061u\u006c\u0074\u0020\u0070\u0069\u0078\u0065\u006c\u0020v\u0061\u006c\u0075\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020\u006d\u0075\u0073\u0074\u0020\u0062\u0065\u0020\u0061\u0020\u0076\u0061\u006c\u0075\u0065\u0020\u0066o\u0072 \u0074\u0068\u0065\u0020\u0062\u0069\u0074\u003a \u007b0\u002c\u0031}",_efcb .DefaultPixelValue ); };if _efcb .Compression !=JB2Generic {return _gd .Errorf (_ffafg ,"\u0070\u0072\u006f\u0076\u0069\u0064\u0065d\u0020\u0063\u006fm\u0070\u0072\u0065\u0073s\u0069\u006f\u006e\u0020\u0069\u0073\u0020\u006e\u006f\u0074\u0020\u0069\u006d\u0070\u006c\u0065\u006d\u0065\u006e\u0074\u0065\u0064\u0020\u0079\u0065\u0074"); };return nil ;}; // EncodeBytes JPX encodes the passed in slice of bytes. func (_gcc *JPXEncoder )EncodeBytes (data []byte )([]byte ,error ){_fc .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u003a\u0020\u0041t\u0074\u0065\u006dpt\u0069\u006e\u0067\u0020\u0074\u006f \u0075\u0073\u0065\u0020\u0075\u006e\u0073\u0075\u0070\u0070\u006f\u0072\u0074\u0065\u0064 \u0065\u006e\u0063\u006f\u0064\u0069\u006e\u0067 \u0025\u0073",_gcc .GetFilterName ()); return data ,ErrNoJPXDecode ;}; // DecodeBytes decodes byte array with ASCII85. 5 ASCII characters -> 4 raw binary bytes func (_ebg *ASCII85Encoder )DecodeBytes (encoded []byte )([]byte ,error ){var _fgbg []byte ;_fc .Log .Trace ("\u0041\u0053\u0043\u0049\u0049\u0038\u0035\u0020\u0044e\u0063\u006f\u0064\u0065");_geed :=0;_ddgb :=false ;for _geed < len (encoded )&&!_ddgb {_dgcf :=[5]byte {0,0,0,0,0}; _adag :=0;_acb :=0;_geda :=4;for _acb < 5+_adag {if _geed +_acb ==len (encoded ){break ;};_eaac :=encoded [_geed +_acb ];if IsWhiteSpace (_eaac ){_adag ++;_acb ++;continue ;}else if _eaac =='~'&&_geed +_acb +1< len (encoded )&&encoded [_geed +_acb +1]=='>'{_geda =(_acb -_adag )-1; if _geda < 0{_geda =0;};_ddgb =true ;break ;}else if _eaac >='!'&&_eaac <='u'{_eaac -='!';}else if _eaac =='z'&&_acb -_adag ==0{_geda =4;_acb ++;break ;}else {_fc .Log .Error ("\u0046\u0061i\u006c\u0065\u0064\u0020\u0064\u0065\u0063\u006f\u0064\u0069\u006e\u0067\u002c\u0020\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020co\u0064\u0065"); return nil ,_e .New ("\u0069n\u0076\u0061\u006c\u0069\u0064\u0020\u0063\u006f\u0064\u0065\u0020e\u006e\u0063\u006f\u0075\u006e\u0074\u0065\u0072\u0065\u0064");};_dgcf [_acb -_adag ]=_eaac ;_acb ++;};_geed +=_acb ;for _ffdfe :=_geda +1;_ffdfe < 5;_ffdfe ++{_dgcf [_ffdfe ]=84; };_eedf :=uint32 (_dgcf [0])*85*85*85*85+uint32 (_dgcf [1])*85*85*85+uint32 (_dgcf [2])*85*85+uint32 (_dgcf [3])*85+uint32 (_dgcf [4]);_bedb :=[]byte {byte ((_eedf >>24)&0xff),byte ((_eedf >>16)&0xff),byte ((_eedf >>8)&0xff),byte (_eedf &0xff)};_fgbg =append (_fgbg ,_bedb [:_geda ]...); };_fc .Log .Trace ("A\u0053\u0043\u0049\u004985\u002c \u0065\u006e\u0063\u006f\u0064e\u0064\u003a\u0020\u0025\u0020\u0058",encoded );_fc .Log .Trace ("A\u0053\u0043\u0049\u004985\u002c \u0064\u0065\u0063\u006f\u0064e\u0064\u003a\u0020\u0025\u0020\u0058",_fgbg ); return _fgbg ,nil ;};func (_gbea *PdfParser )loadXrefs ()(*PdfObjectDictionary ,error ){_gbea ._fgaf .ObjectMap =make (map[int ]XrefObject );_gbea ._abbf =make (objectStreams );_ddae ,_ddfa :=_gbea ._bcced .Seek (0,_ae .SeekEnd );if _ddfa !=nil {return nil ,_ddfa ; };_fc .Log .Trace ("\u0066s\u0069\u007a\u0065\u003a\u0020\u0025d",_ddae );_gbea ._acfbc =_ddae ;_ddfa =_gbea .seekToEOFMarker (_ddae );if _ddfa !=nil {_fc .Log .Debug ("\u0046\u0061i\u006c\u0065\u0064\u0020\u0073\u0065\u0065\u006b\u0020\u0074\u006f\u0020\u0065\u006f\u0066\u0020\u006d\u0061\u0072\u006b\u0065\u0072: \u0025\u0076",_ddfa ); return nil ,_ddfa ;};_bage ,_ddfa :=_gbea ._bcced .Seek (0,_ae .SeekCurrent );if _ddfa !=nil {return nil ,_ddfa ;};var _feada int64 =64;_egbca :=_bage -_feada ;if _egbca < 0{_egbca =0;};_ ,_ddfa =_gbea ._bcced .Seek (_egbca ,_ae .SeekStart );if _ddfa !=nil {return nil ,_ddfa ; };_gedab :=make ([]byte ,_feada );_ ,_ddfa =_gbea ._bcced .Read (_gedab );if _ddfa !=nil {_fc .Log .Debug ("\u0046\u0061i\u006c\u0065\u0064\u0020\u0072\u0065\u0061\u0064\u0069\u006e\u0067\u0020\u0077\u0068\u0069\u006c\u0065\u0020\u006c\u006f\u006f\u006b\u0069\u006e\u0067\u0020\u0066\u006f\u0072\u0020\u0073\u0074\u0061\u0072\u0074\u0078\u0072\u0065\u0066\u003a\u0020\u0025\u0076",_ddfa ); return nil ,_ddfa ;};_gadd :=_effga .FindStringSubmatch (string (_gedab ));if len (_gadd )< 2{_fc .Log .Debug ("E\u0072\u0072\u006f\u0072\u003a\u0020s\u0074\u0061\u0072\u0074\u0078\u0072\u0065\u0066\u0020n\u006f\u0074\u0020f\u006fu\u006e\u0064\u0021"); return nil ,_e .New ("\u0073\u0074\u0061\u0072tx\u0072\u0065\u0066\u0020\u006e\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064");};if len (_gadd )> 2{_fc .Log .Debug ("\u0045\u0052\u0052O\u0052\u003a\u0020\u004du\u006c\u0074\u0069\u0070\u006c\u0065\u0020s\u0074\u0061\u0072\u0074\u0078\u0072\u0065\u0066\u0020\u0028\u0025\u0073\u0029\u0021",_gedab ); return nil ,_e .New ("m\u0075\u006c\u0074\u0069\u0070\u006ce\u0020\u0073\u0074\u0061\u0072\u0074\u0078\u0072\u0065f\u0020\u0065\u006et\u0072i\u0065\u0073\u003f");};_geba ,_ :=_ef .ParseInt (_gadd [1],10,64);_fc .Log .Trace ("\u0073t\u0061r\u0074\u0078\u0072\u0065\u0066\u0020\u0061\u0074\u0020\u0025\u0064",_geba ); if _geba > _ddae {_fc .Log .Debug ("\u0045\u0052\u0052OR\u003a\u0020\u0058\u0072\u0065\u0066\u0020\u006f\u0066f\u0073e\u0074 \u006fu\u0074\u0073\u0069\u0064\u0065\u0020\u006f\u0066\u0020\u0066\u0069\u006c\u0065");_fc .Log .Debug ("\u0041\u0074\u0074\u0065\u006d\u0070\u0074\u0069\u006e\u0067\u0020\u0072e\u0070\u0061\u0069\u0072"); _geba ,_ddfa =_gbea .repairLocateXref ();if _ddfa !=nil {_fc .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a \u0052\u0065\u0070\u0061\u0069\u0072\u0020\u0061\u0074\u0074\u0065\u006d\u0070t\u0020\u0066\u0061\u0069\u006c\u0065\u0064 \u0028\u0025\u0073\u0029"); return nil ,_ddfa ;};};_gbea ._bcced .Seek (_geba ,_ae .SeekStart );_gbea ._dcfe =_eb .NewReader (_gbea ._bcced );_ffeg ,_ddfa :=_gbea .parseXref ();if _ddfa !=nil {return nil ,_ddfa ;};_fecaec :=_ffeg .Get ("\u0058R\u0065\u0066\u0053\u0074\u006d");if _fecaec !=nil {_eaeac ,_afbf :=_fecaec .(*PdfObjectInteger ); if !_afbf {return nil ,_e .New ("\u0058\u0052\u0065\u0066\u0053\u0074\u006d\u0020\u0021=\u0020\u0069\u006e\u0074");};_ ,_ddfa =_gbea .parseXrefStream (_eaeac );if _ddfa !=nil {return nil ,_ddfa ;};};var _fgea []int64 ;_faef :=func (_gddge int64 ,_fbdd []int64 )bool {for _ ,_dfdfd :=range _fbdd {if _dfdfd ==_gddge {return true ; };};return false ;};_fecaec =_ffeg .Get ("\u0050\u0072\u0065\u0076");for _fecaec !=nil {_fdadg ,_feaaf :=_fecaec .(*PdfObjectInteger );if !_feaaf {_fc .Log .Debug ("\u0049\u006ev\u0061\u006c\u0069\u0064\u0020P\u0072\u0065\u0076\u0020\u0072e\u0066\u0065\u0072\u0065\u006e\u0063\u0065\u003a\u0020\u004e\u006f\u0074\u0020\u0061\u0020\u002a\u0050\u0064\u0066\u004f\u0062\u006a\u0065\u0063\u0074\u0049\u006e\u0074\u0065\u0067\u0065\u0072\u0020\u0028\u0025\u0054\u0029",_fecaec ); return _ffeg ,nil ;};_fded :=*_fdadg ;_fc .Log .Trace ("\u0041\u006eot\u0068\u0065\u0072 \u0050\u0072\u0065\u0076 xr\u0065f \u0074\u0061\u0062\u006c\u0065\u0020\u006fbj\u0065\u0063\u0074\u0020\u0061\u0074\u0020%\u0064",_fded );_gbea ._bcced .Seek (int64 (_fded ),_ae .SeekStart ); _gbea ._dcfe =_eb .NewReader (_gbea ._bcced );_ceeee ,_fefgb :=_gbea .parseXref ();if _fefgb !=nil {_fc .Log .Debug ("\u0057\u0061\u0072\u006e\u0069\u006e\u0067\u003a\u0020\u0045\u0072\u0072\u006f\u0072\u0020-\u0020\u0046\u0061\u0069\u006c\u0065\u0064\u0020\u006c\u006f\u0061\u0064\u0069n\u0067\u0020\u0061\u006e\u006f\u0074\u0068\u0065\u0072\u0020\u0028\u0050re\u0076\u0029\u0020\u0074\u0072\u0061\u0069\u006c\u0065\u0072"); _fc .Log .Debug ("\u0041\u0074t\u0065\u006d\u0070\u0074i\u006e\u0067 \u0074\u006f\u0020\u0063\u006f\u006e\u0074\u0069n\u0075\u0065\u0020\u0062\u0079\u0020\u0069\u0067\u006e\u006f\u0072\u0069n\u0067\u0020\u0069\u0074");break ;};_gbea ._abd =append (_gbea ._abd ,int64 (_fded )); _fecaec =_ceeee .Get ("\u0050\u0072\u0065\u0076");if _fecaec !=nil {_fffc :=*(_fecaec .(*PdfObjectInteger ));if _faef (int64 (_fffc ),_fgea ){_fc .Log .Debug ("\u0050\u0072ev\u0065\u006e\u0074i\u006e\u0067\u0020\u0063irc\u0075la\u0072\u0020\u0078\u0072\u0065\u0066\u0020re\u0066\u0065\u0072\u0065\u006e\u0063\u0069n\u0067"); break ;};_fgea =append (_fgea ,int64 (_fffc ));};};return _ffeg ,nil ;}; // ParserMetadata is the parser based metadata information about document. // The data here could be used on document verification. type ParserMetadata struct{_bgda int ;_fed bool ;_agca [4]byte ;_ede bool ;_bee bool ;_ffcg bool ;_ebd bool ;_afac bool ;_aba bool ;};func (_fbebe *PdfParser )seekToEOFMarker (_fedag int64 )error {var _fgcd int64 ;var _ddbde int64 =2048;for _fgcd < _fedag -4{if _fedag <=(_ddbde +_fgcd ){_ddbde =_fedag -_fgcd ; };_ ,_afeg :=_fbebe ._bcced .Seek (_fedag -_fgcd -_ddbde ,_ae .SeekStart );if _afeg !=nil {return _afeg ;};_ffga :=make ([]byte ,_ddbde );_fbebe ._bcced .Read (_ffga );_fc .Log .Trace ("\u004c\u006f\u006f\u006bi\u006e\u0067\u0020\u0066\u006f\u0072\u0020\u0045\u004f\u0046 \u006da\u0072\u006b\u0065\u0072\u003a\u0020\u0022%\u0073\u0022",string (_ffga )); _ecc :=_aaga .FindAllStringIndex (string (_ffga ),-1);if _ecc !=nil {_edfd :=_ecc [len (_ecc )-1];_fc .Log .Trace ("\u0049\u006e\u0064\u003a\u0020\u0025\u0020\u0064",_ecc );_gcec :=_fedag -_fgcd -_ddbde +int64 (_edfd [0]);_fbebe ._bcced .Seek (_gcec ,_ae .SeekStart ); return nil ;};_fc .Log .Debug ("\u0057\u0061\u0072\u006e\u0069\u006eg\u003a\u0020\u0045\u004f\u0046\u0020\u006d\u0061\u0072\u006b\u0065\u0072\u0020\u006e\u006f\u0074\u0020\u0066\u006f\u0075n\u0064\u0021\u0020\u002d\u0020\u0063\u006f\u006e\u0074\u0069\u006e\u0075\u0065\u0020s\u0065e\u006b\u0069\u006e\u0067"); _fgcd +=_ddbde -4;};_fc .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u003a\u0020\u0045\u004f\u0046\u0020\u006d\u0061\u0072\u006be\u0072 \u0077\u0061\u0073\u0020\u006e\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064\u002e");return _gcea ;}; // GetFilterName returns the name of the encoding filter. func (_bdf *CCITTFaxEncoder )GetFilterName ()string {return StreamEncodingFilterNameCCITTFax }; // String returns a string describing `d`. func (_gcagcb *PdfObjectDictionary )String ()string {var _bedbf _de .Builder ;_bedbf .WriteString ("\u0044\u0069\u0063t\u0028");for _ ,_acdd :=range _gcagcb ._agde {_aefca :=_gcagcb ._fecf [_acdd ];_bedbf .WriteString ("\u0022"+_acdd .String ()+"\u0022\u003a\u0020"); _bedbf .WriteString (_aefca .String ());_bedbf .WriteString ("\u002c\u0020");};_bedbf .WriteString ("\u0029");return _bedbf .String ();}; // DecodeStream decodes the stream data and returns the decoded data. // An error is returned upon failure. func DecodeStream (streamObj *PdfObjectStream )([]byte ,error ){_fc .Log .Trace ("\u0044\u0065\u0063\u006f\u0064\u0065\u0020\u0073\u0074\u0072\u0065\u0061\u006d");_efcag ,_aaecaa :=NewEncoderFromStream (streamObj );if _aaecaa !=nil {_fc .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a \u0053\u0074\u0072\u0065\u0061\u006d\u0020\u0064\u0065\u0063\u006f\u0064\u0069n\u0067\u0020\u0066\u0061\u0069\u006c\u0065d\u003a\u0020\u0025\u0076",_aaecaa ); return nil ,_aaecaa ;};_fc .Log .Trace ("\u0045\u006e\u0063\u006f\u0064\u0065\u0072\u003a\u0020\u0025\u0023\u0076\u000a",_efcag );_ffef ,_aaecaa :=_efcag .DecodeStream (streamObj );if _aaecaa !=nil {_fc .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a \u0053\u0074\u0072\u0065\u0061\u006d\u0020\u0064\u0065\u0063\u006f\u0064\u0069n\u0067\u0020\u0066\u0061\u0069\u006c\u0065d\u003a\u0020\u0025\u0076",_aaecaa ); return nil ,_aaecaa ;};return _ffef ,nil ;}; // EncodeBytes implements support for LZW encoding. Currently not supporting predictors (raw compressed data only). // Only supports the Early change = 1 algorithm (compress/lzw) as the other implementation // does not have a write method. // TODO: Consider refactoring compress/lzw to allow both. func (_bcgc *LZWEncoder )EncodeBytes (data []byte )([]byte ,error ){if _bcgc .Predictor !=1{return nil ,_g .Errorf ("\u004c\u005aW \u0050\u0072\u0065d\u0069\u0063\u0074\u006fr =\u00201 \u006f\u006e\u006c\u0079\u0020\u0073\u0075pp\u006f\u0072\u0074\u0065\u0064\u0020\u0079e\u0074"); };if _bcgc .EarlyChange ==1{return nil ,_g .Errorf ("\u004c\u005a\u0057\u0020\u0045\u0061\u0072\u006c\u0079\u0020\u0043\u0068\u0061n\u0067\u0065\u0020\u003d\u0020\u0030 \u006f\u006e\u006c\u0079\u0020\u0073\u0075\u0070\u0070\u006f\u0072\u0074\u0065d\u0020\u0079\u0065\u0074"); };var _dbec _fe .Buffer ;_eedb :=_aae .NewWriter (&_dbec ,_aae .MSB ,8);_eedb .Write (data );_eedb .Close ();return _dbec .Bytes (),nil ;}; // NewJBIG2Encoder creates a new JBIG2Encoder. func NewJBIG2Encoder ()*JBIG2Encoder {return &JBIG2Encoder {_aafa :_af .InitEncodeDocument (false )}}; // IsHexadecimal checks if the PdfObjectString contains Hexadecimal data. func (_eafe *PdfObjectString )IsHexadecimal ()bool {return _eafe ._gbddbe }; // EncodeBytes DCT encodes the passed in slice of bytes. func (_egbd *DCTEncoder )EncodeBytes (data []byte )([]byte ,error ){var _ggfb _fa .Image ;if _egbd .ColorComponents ==1&&_egbd .BitsPerComponent ==8{_ggfb =&_fa .Gray {Rect :_fa .Rect (0,0,_egbd .Width ,_egbd .Height ),Pix :data ,Stride :_aeg .BytesPerLine (_egbd .Width ,_egbd .BitsPerComponent ,_egbd .ColorComponents )}; }else {var _cafe error ;_ggfb ,_cafe =_aeg .NewImage (_egbd .Width ,_egbd .Height ,_egbd .BitsPerComponent ,_egbd .ColorComponents ,data ,nil ,nil );if _cafe !=nil {return nil ,_cafe ;};};_fcee :=_fb .Options {};_fcee .Quality =_egbd .Quality ;var _ceaf _fe .Buffer ; if _eaddd :=_fb .Encode (&_ceaf ,_ggfb ,&_fcee );_eaddd !=nil {return nil ,_eaddd ;};return _ceaf .Bytes (),nil ;}; // IsDecimalDigit checks if the character is a part of a decimal number string. func IsDecimalDigit (c byte )bool {return '0'<=c &&c <='9'}; // String returns a string describing `ind`. func (_bbdad *PdfIndirectObject )String ()string {return _g .Sprintf ("\u0049\u004f\u0062\u006a\u0065\u0063\u0074\u003a\u0025\u0064",(*_bbdad ).ObjectNumber );}; // DecodeStream implements ASCII hex decoding. func (_gbfb *ASCIIHexEncoder )DecodeStream (streamObj *PdfObjectStream )([]byte ,error ){return _gbfb .DecodeBytes (streamObj .Stream );}; // Version represents a version of a PDF standard. type Version struct{Major int ;Minor int ;}; // String returns a string describing `ref`. func (_cgdbe *PdfObjectReference )String ()string {return _g .Sprintf ("\u0052\u0065\u0066\u0028\u0025\u0064\u0020\u0025\u0064\u0029",_cgdbe .ObjectNumber ,_cgdbe .GenerationNumber );};type offsetReader struct{_bfeb _ae .ReadSeeker ;_bgfc int64 ;};func (_effd *PdfParser )readTextLine ()(string ,error ){var _fggd _fe .Buffer ; for {_gffb ,_bfaf :=_effd ._dcfe .Peek (1);if _bfaf !=nil {_fc .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0025\u0073",_bfaf .Error ());return _fggd .String (),_bfaf ;};if (_gffb [0]!='\r')&&(_gffb [0]!='\n'){_ccdb ,_ :=_effd ._dcfe .ReadByte (); _fggd .WriteByte (_ccdb );}else {break ;};};return _fggd .String (),nil ;};func _gcfgb (_adae string )(int ,int ,error ){_dfcc :=_ddfe .FindStringSubmatch (_adae );if len (_dfcc )< 3{return 0,0,_e .New ("\u0075\u006e\u0061b\u006c\u0065\u0020\u0074\u006f\u0020\u0064\u0065\u0074\u0065\u0063\u0074\u0020\u0069\u006e\u0064\u0069\u0072\u0065\u0063\u0074\u0020\u006f\u0062\u006a\u0065\u0063\u0074\u0020s\u0069\u0067\u006e\u0061\u0074\u0075\u0072\u0065"); };_afcc ,_ :=_ef .Atoi (_dfcc [1]);_bgada ,_ :=_ef .Atoi (_dfcc [2]);return _afcc ,_bgada ,nil ;}; // ToInt64Slice returns a slice of all array elements as an int64 slice. An error is returned if the // array non-integer objects. Each element can only be PdfObjectInteger. func (_abge *PdfObjectArray )ToInt64Slice ()([]int64 ,error ){var _bgfca []int64 ;for _ ,_bgba :=range _abge .Elements (){if _edccd ,_ecfg :=_bgba .(*PdfObjectInteger );_ecfg {_bgfca =append (_bgfca ,int64 (*_edccd ));}else {return nil ,ErrTypeError ;}; };return _bgfca ,nil ;}; // UpdateParams updates the parameter values of the encoder. func (_cacb *ASCII85Encoder )UpdateParams (params *PdfObjectDictionary ){}; // GetBool returns the *PdfObjectBool object that is represented by a PdfObject directly or indirectly // within an indirect object. The bool flag indicates whether a match was found. func GetBool (obj PdfObject )(_agccf *PdfObjectBool ,_ddbac bool ){_agccf ,_ddbac =TraceToDirectObject (obj ).(*PdfObjectBool );return _agccf ,_ddbac ;}; // GetFileOffset returns the current file offset, accounting for buffered position. func (_dcdb *PdfParser )GetFileOffset ()int64 {_bbe ,_ :=_dcdb ._bcced .Seek (0,_ae .SeekCurrent );_bbe -=int64 (_dcdb ._dcfe .Buffered ());return _bbe ;}; // XrefObject defines a cross reference entry which is a map between object number (with generation number) and the // location of the actual object, either as a file offset (xref table entry), or as a location within an xref // stream object (xref object stream). type XrefObject struct{XType xrefType ;ObjectNumber int ;Generation int ; // For normal xrefs (defined by OFFSET) Offset int64 ; // For xrefs to object streams. OsObjNumber int ;OsObjIndex int ;}; // WriteString outputs the object as it is to be written to file. func (_fegdg *PdfObjectInteger )WriteString ()string {return _ef .FormatInt (int64 (*_fegdg ),10)};func _gbdeb (_bbeb int )int {if _bbeb < 0{return -_bbeb ;};return _bbeb ;}; // IsWhiteSpace checks if byte represents a white space character. func IsWhiteSpace (ch byte )bool {if (ch ==0x00)||(ch ==0x09)||(ch ==0x0A)||(ch ==0x0C)||(ch ==0x0D)||(ch ==0x20){return true ;};return false ;};func (_fegf *PdfParser )parseDetailedHeader ()(_ddg error ){_fegf ._bcced .Seek (0,_ae .SeekStart );_fegf ._dcfe =_eb .NewReader (_fegf ._bcced ); _dac :=20;_edbf :=make ([]byte ,_dac );var (_fagg bool ;_fbaef int ;);for {_dbeg ,_cee :=_fegf ._dcfe .ReadByte ();if _cee !=nil {if _cee ==_ae .EOF {break ;}else {return _cee ;};};if IsDecimalDigit (_dbeg )&&_edbf [_dac -1]=='.'&&IsDecimalDigit (_edbf [_dac -2])&&_edbf [_dac -3]=='-'&&_edbf [_dac -4]=='F'&&_edbf [_dac -5]=='D'&&_edbf [_dac -6]=='P'&&_edbf [_dac -7]=='%'{_fegf ._beae =Version {Major :int (_edbf [_dac -2]-'0'),Minor :int (_dbeg -'0')}; _fegf ._adfgf ._bgda =_fbaef -7;_fagg =true ;break ;};_fbaef ++;_edbf =append (_edbf [1:_dac ],_dbeg );};if !_fagg {return _g .Errorf ("n\u006f \u0066\u0069\u006c\u0065\u0020\u0068\u0065\u0061d\u0065\u0072\u0020\u0066ou\u006e\u0064");};_bce ,_ddg :=_fegf ._dcfe .ReadByte (); if _ddg ==_ae .EOF {return _g .Errorf ("\u006eo\u0074\u0020\u0061\u0020\u0076\u0061\u006c\u0069\u0064\u0020\u0050d\u0066\u0020\u0064\u006f\u0063\u0075\u006d\u0065\u006e\u0074");};if _ddg !=nil {return _ddg ;};_fegf ._adfgf ._fed =_bce =='\n';_bce ,_ddg =_fegf ._dcfe .ReadByte (); if _ddg !=nil {return _g .Errorf ("\u006e\u006f\u0074\u0020a\u0020\u0076\u0061\u006c\u0069\u0064\u0020\u0070\u0064\u0066 \u0064o\u0063\u0075\u006d\u0065\u006e\u0074\u003a \u0025\u0077",_ddg );};if _bce !='%'{return nil ;};_bga :=make ([]byte ,4);_ ,_ddg =_fegf ._dcfe .Read (_bga ); if _ddg !=nil {return _g .Errorf ("\u006e\u006f\u0074\u0020a\u0020\u0076\u0061\u006c\u0069\u0064\u0020\u0070\u0064\u0066 \u0064o\u0063\u0075\u006d\u0065\u006e\u0074\u003a \u0025\u0077",_ddg );};_fegf ._adfgf ._agca =[4]byte {_bga [0],_bga [1],_bga [2],_bga [3]}; return nil ;}; // GetFilterName returns the name of the encoding filter. func (_fdde *ASCII85Encoder )GetFilterName ()string {return StreamEncodingFilterNameASCII85 }; // PdfVersion returns version of the PDF file. func (_gec *PdfParser )PdfVersion ()Version {return _gec ._beae };func (_bacc *PdfCrypt )isEncrypted (_dcd PdfObject )bool {_ ,_bfg :=_bacc ._bgd [_dcd ];if _bfg {_fc .Log .Trace ("\u0041\u006c\u0072\u0065\u0061\u0064\u0079\u0020\u0065\u006e\u0063\u0072y\u0070\u0074\u0065\u0064"); return true ;};_fc .Log .Trace ("\u004e\u006f\u0074\u0020\u0065\u006e\u0063\u0072\u0079\u0070\u0074\u0065d\u0020\u0079\u0065\u0074");return false ;};type objectStream struct{N int ;_ccg []byte ;_ad map[int ]int64 ;}; // UpdateParams updates the parameter values of the encoder. // Implements StreamEncoder interface. func (_aacg *JBIG2Encoder )UpdateParams (params *PdfObjectDictionary ){_fgddc ,_aefcb :=GetNumberAsInt64 (params .Get ("\u0042\u0069t\u0073\u0050\u0065r\u0043\u006f\u006d\u0070\u006f\u006e\u0065\u006e\u0074"));if _aefcb ==nil {_aacg .BitsPerComponent =int (_fgddc ); };_egfb ,_aefcb :=GetNumberAsInt64 (params .Get ("\u0057\u0069\u0064t\u0068"));if _aefcb ==nil {_aacg .Width =int (_egfb );};_dec ,_aefcb :=GetNumberAsInt64 (params .Get ("\u0048\u0065\u0069\u0067\u0068\u0074"));if _aefcb ==nil {_aacg .Height =int (_dec ); };_ffbf ,_aefcb :=GetNumberAsInt64 (params .Get ("\u0043o\u006co\u0072\u0043\u006f\u006d\u0070\u006f\u006e\u0065\u006e\u0074\u0073"));if _aefcb ==nil {_aacg .ColorComponents =int (_ffbf );};}; // ToFloat64Array returns a slice of all elements in the array as a float64 slice. An error is // returned if the array contains non-numeric objects (each element can be either PdfObjectInteger // or PdfObjectFloat). func (_cedda *PdfObjectArray )ToFloat64Array ()([]float64 ,error ){var _beefe []float64 ;for _ ,_gecd :=range _cedda .Elements (){switch _agda :=_gecd .(type ){case *PdfObjectInteger :_beefe =append (_beefe ,float64 (*_agda ));case *PdfObjectFloat :_beefe =append (_beefe ,float64 (*_agda )); default:return nil ,ErrTypeError ;};};return _beefe ,nil ;}; // MakeBool creates a PdfObjectBool from a bool value. func MakeBool (val bool )*PdfObjectBool {_facg :=PdfObjectBool (val );return &_facg }; // GetParser returns the parser for lazy-loading or compare references. func (_dbff *PdfObjectReference )GetParser ()*PdfParser {return _dbff ._cgfad };var _cbad _b .Map ;func (_debd *PdfParser )parseString ()(*PdfObjectString ,error ){_debd ._dcfe .ReadByte ();var _fbcfg _fe .Buffer ;_eefb :=1;for {_debf ,_bbcd :=_debd ._dcfe .Peek (1); if _bbcd !=nil {return MakeString (_fbcfg .String ()),_bbcd ;};if _debf [0]=='\\'{_debd ._dcfe .ReadByte ();_abce ,_eabg :=_debd ._dcfe .ReadByte ();if _eabg !=nil {return MakeString (_fbcfg .String ()),_eabg ;};if IsOctalDigit (_abce ){_dagf ,_bcec :=_debd ._dcfe .Peek (2); if _bcec !=nil {return MakeString (_fbcfg .String ()),_bcec ;};var _dcabb []byte ;_dcabb =append (_dcabb ,_abce );for _ ,_fcda :=range _dagf {if IsOctalDigit (_fcda ){_dcabb =append (_dcabb ,_fcda );}else {break ;};};_debd ._dcfe .Discard (len (_dcabb )-1); _fc .Log .Trace ("\u004e\u0075\u006d\u0065ri\u0063\u0020\u0073\u0074\u0072\u0069\u006e\u0067\u0020\u0022\u0025\u0073\u0022",_dcabb );_ebef ,_bcec :=_ef .ParseUint (string (_dcabb ),8,32);if _bcec !=nil {return MakeString (_fbcfg .String ()),_bcec ;};_fbcfg .WriteByte (byte (_ebef )); continue ;};switch _abce {case 'n':_fbcfg .WriteRune ('\n');case 'r':_fbcfg .WriteRune ('\r');case 't':_fbcfg .WriteRune ('\t');case 'b':_fbcfg .WriteRune ('\b');case 'f':_fbcfg .WriteRune ('\f');case '(':_fbcfg .WriteRune ('(');case ')':_fbcfg .WriteRune (')'); case '\\':_fbcfg .WriteRune ('\\');};continue ;}else if _debf [0]=='('{_eefb ++;}else if _debf [0]==')'{_eefb --;if _eefb ==0{_debd ._dcfe .ReadByte ();break ;};};_acgb ,_ :=_debd ._dcfe .ReadByte ();_fbcfg .WriteByte (_acgb );};return MakeString (_fbcfg .String ()),nil ; };const (JB2Generic JBIG2CompressionType =iota ;JB2SymbolCorrelation ;JB2SymbolRankHaus ;);var _gcea =_e .New ("\u0045\u004f\u0046\u0020\u006e\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064");type cryptFilters map[string ]_gc .Filter ; // GetTrailer returns the PDFs trailer dictionary. The trailer dictionary is typically the starting point for a PDF, // referencing other key objects that are important in the document structure. func (_cgcg *PdfParser )GetTrailer ()*PdfObjectDictionary {return _cgcg ._affd };func (_baac *PdfParser )parseObject ()(PdfObject ,error ){_fc .Log .Trace ("\u0052e\u0061d\u0020\u0064\u0069\u0072\u0065c\u0074\u0020o\u0062\u006a\u0065\u0063\u0074");_baac .skipSpaces (); for {_fbacb ,_edbc :=_baac ._dcfe .Peek (2);if _edbc !=nil {if _edbc !=_ae .EOF ||len (_fbacb )==0{return nil ,_edbc ;};if len (_fbacb )==1{_fbacb =append (_fbacb ,' ');};};_fc .Log .Trace ("\u0050e\u0065k\u0020\u0073\u0074\u0072\u0069\u006e\u0067\u003a\u0020\u0025\u0073",string (_fbacb )); if _fbacb [0]=='/'{_bdeb ,_cggd :=_baac .parseName ();_fc .Log .Trace ("\u002d\u003e\u004ea\u006d\u0065\u003a\u0020\u0027\u0025\u0073\u0027",_bdeb );return &_bdeb ,_cggd ;}else if _fbacb [0]=='('{_fc .Log .Trace ("\u002d>\u0053\u0074\u0072\u0069\u006e\u0067!"); _aabab ,_afbdf :=_baac .parseString ();return _aabab ,_afbdf ;}else if _fbacb [0]=='['{_fc .Log .Trace ("\u002d\u003e\u0041\u0072\u0072\u0061\u0079\u0021");_aafec ,_ebac :=_baac .parseArray ();return _aafec ,_ebac ;}else if (_fbacb [0]=='<')&&(_fbacb [1]=='<'){_fc .Log .Trace ("\u002d>\u0044\u0069\u0063\u0074\u0021"); _acfc ,_bgccd :=_baac .ParseDict ();return _acfc ,_bgccd ;}else if _fbacb [0]=='<'{_fc .Log .Trace ("\u002d\u003e\u0048\u0065\u0078\u0020\u0073\u0074\u0072\u0069\u006e\u0067\u0021");_ecdg ,_eeab :=_baac .parseHexString ();return _ecdg ,_eeab ;}else if _fbacb [0]=='%'{_baac .readComment (); _baac .skipSpaces ();}else {_fc .Log .Trace ("\u002d\u003eN\u0075\u006d\u0062e\u0072\u0020\u006f\u0072\u0020\u0072\u0065\u0066\u003f");_fbacb ,_ =_baac ._dcfe .Peek (15);_bcbf :=string (_fbacb );_fc .Log .Trace ("\u0050\u0065\u0065k\u0020\u0073\u0074\u0072\u003a\u0020\u0025\u0073",_bcbf ); if (len (_bcbf )> 3)&&(_bcbf [:4]=="\u006e\u0075\u006c\u006c"){_dgcb ,_aebd :=_baac .parseNull ();return &_dgcb ,_aebd ;}else if (len (_bcbf )> 4)&&(_bcbf [:5]=="\u0066\u0061\u006cs\u0065"){_dgge ,_dgff :=_baac .parseBool ();return &_dgge ,_dgff ;}else if (len (_bcbf )> 3)&&(_bcbf [:4]=="\u0074\u0072\u0075\u0065"){_bfcc ,_cbaa :=_baac .parseBool (); return &_bfcc ,_cbaa ;};_faeg :=_efaac .FindStringSubmatch (_bcbf );if len (_faeg )> 1{_fbacb ,_ =_baac ._dcfe .ReadBytes ('R');_fc .Log .Trace ("\u002d\u003e\u0020\u0021\u0052\u0065\u0066\u003a\u0020\u0027\u0025\u0073\u0027",string (_fbacb [:]));_baaf ,_gfbc :=_beef (string (_fbacb )); _baaf ._cgfad =_baac ;return &_baaf ,_gfbc ;};_dagd :=_ccf .FindStringSubmatch (_bcbf );if len (_dagd )> 1{_fc .Log .Trace ("\u002d\u003e\u0020\u004e\u0075\u006d\u0062\u0065\u0072\u0021");_dbage ,_febg :=_baac .parseNumber ();return _dbage ,_febg ;};_dagd =_dbfc .FindStringSubmatch (_bcbf ); if len (_dagd )> 1{_fc .Log .Trace ("\u002d\u003e\u0020\u0045xp\u006f\u006e\u0065\u006e\u0074\u0069\u0061\u006c\u0020\u004e\u0075\u006d\u0062\u0065r\u0021");_fc .Log .Trace ("\u0025\u0020\u0073",_dagd );_gede ,_gfffg :=_baac .parseNumber ();return _gede ,_gfffg ; };_fc .Log .Debug ("\u0045R\u0052\u004f\u0052\u0020U\u006e\u006b\u006e\u006f\u0077n\u0020(\u0070e\u0065\u006b\u0020\u0022\u0025\u0073\u0022)",_bcbf );return nil ,_e .New ("\u006f\u0062\u006a\u0065\u0063t\u0020\u0070\u0061\u0072\u0073\u0069\u006e\u0067\u0020\u0065\u0072\u0072\u006fr\u0020\u002d\u0020\u0075\u006e\u0065\u0078\u0070\u0065\u0063\u0074\u0065\u0064\u0020\u0070\u0061\u0074\u0074\u0065\u0072\u006e"); };};};func (_aggee *PdfObjectInteger )String ()string {return _g .Sprintf ("\u0025\u0064",*_aggee )}; // GetArray returns the *PdfObjectArray represented by the PdfObject directly or indirectly within an indirect // object. On type mismatch the found bool flag is false and a nil pointer is returned. func GetArray (obj PdfObject )(_geab *PdfObjectArray ,_baeg bool ){_geab ,_baeg =TraceToDirectObject (obj ).(*PdfObjectArray );return _geab ,_baeg ;}; // RawEncoder implements Raw encoder/decoder (no encoding, pass through) type RawEncoder struct{}; // DecodeBytes decodes a slice of DCT encoded bytes and returns the result. func (_gadgb *DCTEncoder )DecodeBytes (encoded []byte )([]byte ,error ){_gacf :=_fe .NewReader (encoded );_aac ,_ffcc :=_fb .Decode (_gacf );if _ffcc !=nil {_fc .Log .Debug ("\u0045r\u0072\u006f\u0072\u0020\u0064\u0065\u0063\u006f\u0064\u0069\u006eg\u0020\u0069\u006d\u0061\u0067\u0065\u003a\u0020\u0025\u0073",_ffcc ); return nil ,_ffcc ;};_agfeb :=_aac .Bounds ();var _gee =make ([]byte ,_agfeb .Dx ()*_agfeb .Dy ()*_gadgb .ColorComponents *_gadgb .BitsPerComponent /8);_bfdc :=0;for _gged :=_agfeb .Min .Y ;_gged < _agfeb .Max .Y ;_gged ++{for _egb :=_agfeb .Min .X ;_egb < _agfeb .Max .X ; _egb ++{_dfafa :=_aac .At (_egb ,_gged );if _gadgb .ColorComponents ==1{if _gadgb .BitsPerComponent ==16{_eae ,_gfcg :=_dfafa .(_ba .Gray16 );if !_gfcg {return nil ,_e .New ("\u0063\u006fl\u006f\u0072\u0020t\u0079\u0070\u0065\u0020\u0065\u0072\u0072\u006f\u0072"); };_gee [_bfdc ]=byte ((_eae .Y >>8)&0xff);_bfdc ++;_gee [_bfdc ]=byte (_eae .Y &0xff);_bfdc ++;}else {_aecd ,_cbbea :=_dfafa .(_ba .Gray );if !_cbbea {return nil ,_e .New ("\u0063\u006fl\u006f\u0072\u0020t\u0079\u0070\u0065\u0020\u0065\u0072\u0072\u006f\u0072"); };_gee [_bfdc ]=_aecd .Y &0xff;_bfdc ++;};}else if _gadgb .ColorComponents ==3{if _gadgb .BitsPerComponent ==16{_dcgd ,_bccb :=_dfafa .(_ba .RGBA64 );if !_bccb {return nil ,_e .New ("\u0063\u006fl\u006f\u0072\u0020t\u0079\u0070\u0065\u0020\u0065\u0072\u0072\u006f\u0072"); };_gee [_bfdc ]=byte ((_dcgd .R >>8)&0xff);_bfdc ++;_gee [_bfdc ]=byte (_dcgd .R &0xff);_bfdc ++;_gee [_bfdc ]=byte ((_dcgd .G >>8)&0xff);_bfdc ++;_gee [_bfdc ]=byte (_dcgd .G &0xff);_bfdc ++;_gee [_bfdc ]=byte ((_dcgd .B >>8)&0xff);_bfdc ++;_gee [_bfdc ]=byte (_dcgd .B &0xff); _bfdc ++;}else {_dbdg ,_gagb :=_dfafa .(_ba .RGBA );if _gagb {_gee [_bfdc ]=_dbdg .R &0xff;_bfdc ++;_gee [_bfdc ]=_dbdg .G &0xff;_bfdc ++;_gee [_bfdc ]=_dbdg .B &0xff;_bfdc ++;}else {_ceead ,_dabg :=_dfafa .(_ba .YCbCr );if !_dabg {return nil ,_e .New ("\u0063\u006fl\u006f\u0072\u0020t\u0079\u0070\u0065\u0020\u0065\u0072\u0072\u006f\u0072"); };_fdda ,_dbfb ,_fae ,_ :=_ceead .RGBA ();_gee [_bfdc ]=byte (_fdda >>8);_bfdc ++;_gee [_bfdc ]=byte (_dbfb >>8);_bfdc ++;_gee [_bfdc ]=byte (_fae >>8);_bfdc ++;};};}else if _gadgb .ColorComponents ==4{_daba ,_accd :=_dfafa .(_ba .CMYK );if !_accd {return nil ,_e .New ("\u0063\u006fl\u006f\u0072\u0020t\u0079\u0070\u0065\u0020\u0065\u0072\u0072\u006f\u0072"); };_gee [_bfdc ]=255-_daba .C &0xff;_bfdc ++;_gee [_bfdc ]=255-_daba .M &0xff;_bfdc ++;_gee [_bfdc ]=255-_daba .Y &0xff;_bfdc ++;_gee [_bfdc ]=255-_daba .K &0xff;_bfdc ++;};};};return _gee ,nil ;};const _defg =6; // WriteString outputs the object as it is to be written to file. func (_ecafd *PdfIndirectObject )WriteString ()string {var _cbbf _de .Builder ;_cbbf .WriteString (_ef .FormatInt (_ecafd .ObjectNumber ,10));_cbbf .WriteString ("\u0020\u0030\u0020\u0052");return _cbbf .String ();}; // HeaderCommentBytes gets the header comment bytes. func (_edfg ParserMetadata )HeaderCommentBytes ()[4]byte {return _edfg ._agca }; // DecodeBytes decodes a slice of JPX encoded bytes and returns the result. func (_dddg *JPXEncoder )DecodeBytes (encoded []byte )([]byte ,error ){_fc .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u003a\u0020\u0041t\u0074\u0065\u006dpt\u0069\u006e\u0067\u0020\u0074\u006f \u0075\u0073\u0065\u0020\u0075\u006e\u0073\u0075\u0070\u0070\u006f\u0072\u0074\u0065\u0064 \u0065\u006e\u0063\u006f\u0064\u0069\u006e\u0067 \u0025\u0073",_dddg .GetFilterName ()); return encoded ,ErrNoJPXDecode ;}; // LookupByNumber looks up a PdfObject by object number. Returns an error on failure. func (_fcfc *PdfParser )LookupByNumber (objNumber int )(PdfObject ,error ){_dc ,_ ,_fd :=_fcfc .lookupByNumberWrapper (objNumber ,true );return _dc ,_fd ;}; // EncodeBytes encodes a bytes array and return the encoded value based on the encoder parameters. func (_dceg *RunLengthEncoder )EncodeBytes (data []byte )([]byte ,error ){_aeb :=_fe .NewReader (data );var _eace []byte ;var _fadfc []byte ;_gcagc ,_ggad :=_aeb .ReadByte ();if _ggad ==_ae .EOF {return []byte {},nil ;}else if _ggad !=nil {return nil ,_ggad ; };_gcaf :=1;for {_fbcf ,_dfbd :=_aeb .ReadByte ();if _dfbd ==_ae .EOF {break ;}else if _dfbd !=nil {return nil ,_dfbd ;};if _fbcf ==_gcagc {if len (_fadfc )> 0{_fadfc =_fadfc [:len (_fadfc )-1];if len (_fadfc )> 0{_eace =append (_eace ,byte (len (_fadfc )-1)); _eace =append (_eace ,_fadfc ...);};_gcaf =1;_fadfc =[]byte {};};_gcaf ++;if _gcaf >=127{_eace =append (_eace ,byte (257-_gcaf ),_gcagc );_gcaf =0;};}else {if _gcaf > 0{if _gcaf ==1{_fadfc =[]byte {_gcagc };}else {_eace =append (_eace ,byte (257-_gcaf ),_gcagc ); };_gcaf =0;};_fadfc =append (_fadfc ,_fbcf );if len (_fadfc )>=127{_eace =append (_eace ,byte (len (_fadfc )-1));_eace =append (_eace ,_fadfc ...);_fadfc =[]byte {};};};_gcagc =_fbcf ;};if len (_fadfc )> 0{_eace =append (_eace ,byte (len (_fadfc )-1)); _eace =append (_eace ,_fadfc ...);}else if _gcaf > 0{_eace =append (_eace ,byte (257-_gcaf ),_gcagc );};_eace =append (_eace ,128);return _eace ,nil ;};func (_aece *offsetReader )Read (p []byte )(_aeaa int ,_dadf error ){return _aece ._bfeb .Read (p )}; // MakeDecodeParams makes a new instance of an encoding dictionary based on // the current encoder settings. func (_cfda *JPXEncoder )MakeDecodeParams ()PdfObject {return nil };func _bgeg (_edda *_gc .FilterDict ,_bfb *PdfObjectDictionary )error {if _fba ,_agec :=_bfb .Get ("\u0054\u0079\u0070\u0065").(*PdfObjectName );_agec {if _fcfb :=string (*_fba );_fcfb !="C\u0072\u0079\u0070\u0074\u0046\u0069\u006c\u0074\u0065\u0072"{_fc .Log .Debug ("\u0049\u006e\u0076\u0061\u006c\u0069\u0064\u0020C\u0046\u0020\u0064ic\u0074\u0020\u0074\u0079\u0070\u0065:\u0020\u0025\u0073\u0020\u0028\u0073\u0068\u006f\u0075\u006c\u0064\u0020\u0062\u0065\u0020C\u0072\u0079\u0070\u0074\u0046\u0069\u006c\u0074e\u0072\u0029",_fcfb ); };};_ead ,_ggd :=_bfb .Get ("\u0043\u0046\u004d").(*PdfObjectName );if !_ggd {return _g .Errorf ("\u0075\u006e\u0073u\u0070\u0070\u006f\u0072t\u0065\u0064\u0020\u0063\u0072\u0079\u0070t\u0020\u0066\u0069\u006c\u0074\u0065\u0072\u0020\u0028\u004e\u006f\u006e\u0065\u0029"); };_edda .CFM =string (*_ead );if _edc ,_df :=_bfb .Get ("\u0041u\u0074\u0068\u0045\u0076\u0065\u006et").(*PdfObjectName );_df {_edda .AuthEvent =_cg .AuthEvent (*_edc );}else {_edda .AuthEvent =_cg .EventDocOpen ;};if _eac ,_cbd :=_bfb .Get ("\u004c\u0065\u006e\u0067\u0074\u0068").(*PdfObjectInteger ); _cbd {_edda .Length =int (*_eac );};return nil ;}; // NewCCITTFaxEncoder makes a new CCITTFax encoder. func NewCCITTFaxEncoder ()*CCITTFaxEncoder {return &CCITTFaxEncoder {Columns :1728,EndOfBlock :true }};var _ddb =[]PdfObjectName {"\u0056","\u0052","\u004f","\u0055","\u0050"};func _abdf (_cdfd ,_bdef PdfObject ,_dggc int )bool {if _dggc > _eaee {_fc .Log .Error ("\u0054\u0072ac\u0065\u0020\u0064e\u0070\u0074\u0068\u0020lev\u0065l \u0062\u0065\u0079\u006f\u006e\u0064\u0020%d\u0020\u002d\u0020\u0065\u0072\u0072\u006fr\u0021",_eaee ); return false ;};if _cdfd ==nil &&_bdef ==nil {return true ;}else if _cdfd ==nil ||_bdef ==nil {return false ;};if _aa .TypeOf (_cdfd )!=_aa .TypeOf (_bdef ){return false ;};switch _gcegc :=_cdfd .(type ){case *PdfObjectNull ,*PdfObjectReference :return true ; case *PdfObjectName :return *_gcegc ==*(_bdef .(*PdfObjectName ));case *PdfObjectString :return *_gcegc ==*(_bdef .(*PdfObjectString ));case *PdfObjectInteger :return *_gcegc ==*(_bdef .(*PdfObjectInteger ));case *PdfObjectBool :return *_gcegc ==*(_bdef .(*PdfObjectBool )); case *PdfObjectFloat :return *_gcegc ==*(_bdef .(*PdfObjectFloat ));case *PdfIndirectObject :return _abdf (TraceToDirectObject (_cdfd ),TraceToDirectObject (_bdef ),_dggc +1);case *PdfObjectArray :_eeaa :=_bdef .(*PdfObjectArray );if len ((*_gcegc )._cebff )!=len ((*_eeaa )._cebff ){return false ; };for _dfcfg ,_cbdc :=range (*_gcegc )._cebff {if !_abdf (_cbdc ,(*_eeaa )._cebff [_dfcfg ],_dggc +1){return false ;};};return true ;case *PdfObjectDictionary :_ccfea :=_bdef .(*PdfObjectDictionary );_gfeg ,_eeag :=(*_gcegc )._fecf ,(*_ccfea )._fecf ;if len (_gfeg )!=len (_eeag ){return false ; };for _ffcgd ,_fafcg :=range _gfeg {_defb ,_cacg :=_eeag [_ffcgd ];if !_cacg ||!_abdf (_fafcg ,_defb ,_dggc +1){return false ;};};return true ;case *PdfObjectStream :_egcag :=_bdef .(*PdfObjectStream );return _abdf ((*_gcegc ).PdfObjectDictionary ,(*_egcag ).PdfObjectDictionary ,_dggc +1); default:_fc .Log .Error ("\u0045\u0052R\u004f\u0052\u003a\u0020\u0055\u006e\u006b\u006e\u006f\u0077\u006e\u0020\u0074\u0079\u0070\u0065\u003a\u0020\u0025\u0054\u0020\u002d\u0020\u0073\u0068\u006f\u0075\u006c\u0064\u0020\u006e\u0065\u0076\u0065\u0072\u0020\u0068\u0061\u0070\u0070\u0065\u006e\u0021",_cdfd ); };return false ;}; // UpdateParams updates the parameter values of the encoder. func (_dgdda *ASCIIHexEncoder )UpdateParams (params *PdfObjectDictionary ){}; // DecodeStream decodes a JBIG2 encoded stream and returns the result as a slice of bytes. func (_aeae *JBIG2Encoder )DecodeStream (streamObj *PdfObjectStream )([]byte ,error ){return _aeae .DecodeBytes (streamObj .Stream );}; // JBIG2Image is the image structure used by the jbig2 encoder. Its Data must be in a // 1 bit per component and 1 component per pixel (1bpp). In order to create binary image // use GoImageToJBIG2 function. If the image data contains the row bytes padding set the HasPadding to true. type JBIG2Image struct{ // Width and Height defines the image boundaries. Width ,Height int ; // Data is the byte slice data for the input image Data []byte ; // HasPadding is the attribute that defines if the last byte of the data in the row contains // 0 bits padding. HasPadding bool ;}; // Set sets the PdfObject at index i of the array. An error is returned if the index is outside bounds. func (_eeae *PdfObjectArray )Set (i int ,obj PdfObject )error {if i < 0||i >=len (_eeae ._cebff ){return _e .New ("\u006f\u0075\u0074\u0073\u0069\u0064\u0065\u0020\u0062o\u0075\u006e\u0064\u0073");};_eeae ._cebff [i ]=obj ;return nil ;}; // Clear resets the array to an empty state. func (_cbeegg *PdfObjectArray )Clear (){_cbeegg ._cebff =[]PdfObject {}}; // PdfObjectReference represents the primitive PDF reference object. type PdfObjectReference struct{_cgfad *PdfParser ;ObjectNumber int64 ;GenerationNumber int64 ;}; // String returns a string representation of the *PdfObjectString. func (_fcag *PdfObjectString )String ()string {return _fcag ._bgfdf };func (_fafad *PdfCrypt )encryptBytes (_cgba []byte ,_egg string ,_edf []byte )([]byte ,error ){_fc .Log .Trace ("\u0045\u006e\u0063\u0072\u0079\u0070\u0074\u0020\u0062\u0079\u0074\u0065\u0073"); _effb ,_fbac :=_fafad ._cad [_egg ];if !_fbac {return nil ,_g .Errorf ("\u0075n\u006b\u006e\u006f\u0077n\u0020\u0063\u0072\u0079\u0070t\u0020f\u0069l\u0074\u0065\u0072\u0020\u0028\u0025\u0073)",_egg );};return _effb .EncryptBytes (_cgba ,_edf );};var _ddfe =_d .MustCompile ("\u0028\u005c\u0064\u002b)\\\u0073\u002b\u0028\u005c\u0064\u002b\u0029\u005c\u0073\u002b\u006f\u0062\u006a"); // GetFilterArray returns the names of the underlying encoding filters in an array that // can be used as /Filter entry. func (_bgf *MultiEncoder )GetFilterArray ()*PdfObjectArray {_eggcb :=make ([]PdfObject ,len (_bgf ._fdec ));for _cbf ,_efgc :=range _bgf ._fdec {_eggcb [_cbf ]=MakeName (_efgc .GetFilterName ());};return MakeArray (_eggcb ...);}; // DCTEncoder provides a DCT (JPG) encoding/decoding functionality for images. type DCTEncoder struct{ColorComponents int ;BitsPerComponent int ;Width int ;Height int ;Quality int ;}; // Append appends PdfObject(s) to the array. func (_ecff *PdfObjectArray )Append (objects ...PdfObject ){if _ecff ==nil {_fc .Log .Debug ("\u0057\u0061\u0072\u006e\u0020\u002d\u0020\u0041\u0074\u0074\u0065\u006d\u0070t\u0020\u0074\u006f\u0020\u0061\u0070p\u0065\u006e\u0064\u0020\u0074\u006f\u0020\u0061\u0020\u006e\u0069\u006c\u0020a\u0072\u0072\u0061\u0079"); return ;};_ecff ._cebff =append (_ecff ._cebff ,objects ...);}; // NewEncoderFromStream creates a StreamEncoder based on the stream's dictionary. func NewEncoderFromStream (streamObj *PdfObjectStream )(StreamEncoder ,error ){_dcag :=TraceToDirectObject (streamObj .PdfObjectDictionary .Get ("\u0046\u0069\u006c\u0074\u0065\u0072"));if _dcag ==nil {return NewRawEncoder (),nil ;};if _ ,_adcg :=_dcag .(*PdfObjectNull ); _adcg {return NewRawEncoder (),nil ;};_bbdc ,_ddcdc :=_dcag .(*PdfObjectName );if !_ddcdc {_ddfb ,_abac :=_dcag .(*PdfObjectArray );if !_abac {return nil ,_g .Errorf ("\u0066\u0069\u006c\u0074\u0065\u0072 \u006e\u006f\u0074\u0020\u0061\u0020\u004e\u0061\u006d\u0065\u0020\u006f\u0072 \u0041\u0072\u0072\u0061\u0079\u0020\u006fb\u006a\u0065\u0063\u0074"); };if _ddfb .Len ()==0{return NewRawEncoder (),nil ;};if _ddfb .Len ()!=1{_fgec ,_agdbd :=_cgaf (streamObj );if _agdbd !=nil {_fc .Log .Error ("\u0046\u0061\u0069\u006c\u0065\u0064 \u0063\u0072\u0065\u0061\u0074\u0069\u006e\u0067\u0020\u006d\u0075\u006c\u0074i\u0020\u0065\u006e\u0063\u006f\u0064\u0065r\u003a\u0020\u0025\u0076",_agdbd ); return nil ,_agdbd ;};_fc .Log .Trace ("\u004d\u0075\u006c\u0074\u0069\u0020\u0065\u006e\u0063:\u0020\u0025\u0073\u000a",_fgec );return _fgec ,nil ;};_dcag =_ddfb .Get (0);_bbdc ,_abac =_dcag .(*PdfObjectName );if !_abac {return nil ,_g .Errorf ("\u0066\u0069l\u0074\u0065\u0072\u0020a\u0072\u0072a\u0079\u0020\u006d\u0065\u006d\u0062\u0065\u0072 \u006e\u006f\u0074\u0020\u0061\u0020\u004e\u0061\u006d\u0065\u0020\u006fb\u006a\u0065\u0063\u0074"); };};if _deaf ,_agcca :=_cbad .Load (_bbdc .String ());_agcca {return _deaf .(StreamEncoder ),nil ;};switch *_bbdc {case StreamEncodingFilterNameFlate :return _geb (streamObj ,nil );case StreamEncodingFilterNameLZW :return _egfc (streamObj ,nil );case StreamEncodingFilterNameDCT :return _fdee (streamObj ,nil ); case StreamEncodingFilterNameRunLength :return _dad (streamObj ,nil );case StreamEncodingFilterNameASCIIHex :return NewASCIIHexEncoder (),nil ;case StreamEncodingFilterNameASCII85 ,"\u0041\u0038\u0035":return NewASCII85Encoder (),nil ;case StreamEncodingFilterNameCCITTFax :return _fdeb (streamObj ,nil ); case StreamEncodingFilterNameJBIG2 :return _fcbf (streamObj ,nil );case StreamEncodingFilterNameJPX :return NewJPXEncoder (),nil ;};_fc .Log .Debug ("E\u0052\u0052\u004f\u0052\u003a\u0020U\u006e\u0073\u0075\u0070\u0070\u006fr\u0074\u0065\u0064\u0020\u0065\u006e\u0063o\u0064\u0069\u006e\u0067\u0020\u006d\u0065\u0074\u0068\u006fd\u0021"); return nil ,_g .Errorf ("\u0075\u006e\u0073\u0075\u0070\u0070\u006f\u0072\u0074\u0065\u0064\u0020\u0065\u006e\u0063o\u0064i\u006e\u0067\u0020\u006d\u0065\u0074\u0068\u006f\u0064\u0020\u0028\u0025\u0073\u0029",*_bbdc );}; // DecodeStream decodes RunLengthEncoded stream object and give back decoded bytes. func (_febe *RunLengthEncoder )DecodeStream (streamObj *PdfObjectStream )([]byte ,error ){return _febe .DecodeBytes (streamObj .Stream );};func (_dggf *PdfParser )traceStreamLength (_baddg PdfObject )(PdfObject ,error ){_bcaag ,_geea :=_baddg .(*PdfObjectReference ); if _geea {_cdab ,_abgd :=_dggf ._abeb [_bcaag .ObjectNumber ];if _abgd &&_cdab {_fc .Log .Debug ("\u0053t\u0072\u0065a\u006d\u0020\u004c\u0065n\u0067\u0074\u0068 \u0072\u0065\u0066\u0065\u0072\u0065\u006e\u0063\u0065 u\u006e\u0072\u0065s\u006f\u006cv\u0065\u0064\u0020\u0028\u0069\u006cl\u0065\u0067a\u006c\u0029"); return nil ,_e .New ("\u0069\u006c\u006c\u0065ga\u006c\u0020\u0072\u0065\u0063\u0075\u0072\u0073\u0069\u0076\u0065\u0020\u006c\u006fo\u0070");};_dggf ._abeb [_bcaag .ObjectNumber ]=true ;};_bggfg ,_gagc :=_dggf .Resolve (_baddg );if _gagc !=nil {return nil ,_gagc ; };_fc .Log .Trace ("\u0053\u0074\u0072\u0065\u0061\u006d\u0020\u006c\u0065\u006e\u0067\u0074h\u003f\u0020\u0025\u0073",_bggfg );if _geea {_dggf ._abeb [_bcaag .ObjectNumber ]=false ;};return _bggfg ,nil ;};var _efaac =_d .MustCompile ("\u005e\\\u0073\u002a\u005b\u002d]\u002a\u0028\u005c\u0064\u002b)\u005cs\u002b(\u005c\u0064\u002b\u0029\u005c\u0073\u002bR"); // HasEOLAfterHeader gets information if there is a EOL after the version header. func (_cba ParserMetadata )HasEOLAfterHeader ()bool {return _cba ._fed }; // GetFilterName returns the name of the encoding filter. func (_gfea *JBIG2Encoder )GetFilterName ()string {return StreamEncodingFilterNameJBIG2 }; // XrefTable represents the cross references in a PDF, i.e. the table of objects and information // where to access within the PDF file. type XrefTable struct{ObjectMap map[int ]XrefObject ;_aea []XrefObject ;};const (DefaultJPEGQuality =75;); // Set sets the PdfObject at index i of the streams. An error is returned if the index is outside bounds. func (_cgdd *PdfObjectStreams )Set (i int ,obj PdfObject )error {if i < 0||i >=len (_cgdd ._aggfea ){return _e .New ("\u004f\u0075\u0074\u0073\u0069\u0064\u0065\u0020\u0062o\u0075\u006e\u0064\u0073");};_cgdd ._aggfea [i ]=obj ;return nil ;};func _fccb (_ccag _ae .ReadSeeker ,_febed int64 )(*offsetReader ,error ){_eeec :=&offsetReader {_bfeb :_ccag ,_bgfc :_febed }; _ ,_cfada :=_eeec .Seek (0,_ae .SeekStart );return _eeec ,_cfada ;}; // PdfCrypt provides PDF encryption/decryption support. // The PDF standard supports encryption of strings and streams (Section 7.6). type PdfCrypt struct{_fgce encryptDict ;_fbe _cg .StdEncryptDict ;_beg string ;_ccda []byte ;_abff map[PdfObject ]bool ;_bgd map[PdfObject ]bool ;_bfc bool ;_cad cryptFilters ;_ggag string ;_afaf string ;_gac *PdfParser ;_ggg map[int ]struct{};};func (_bgc *PdfParser )lookupByNumberWrapper (_aee int ,_abf bool )(PdfObject ,bool ,error ){_afd ,_caf ,_dg :=_bgc .lookupByNumber (_aee ,_abf ); if _dg !=nil {return nil ,_caf ,_dg ;};if !_caf &&_bgc ._agga !=nil &&_bgc ._agga ._bfc &&!_bgc ._agga .isDecrypted (_afd ){_ggc :=_bgc ._agga .Decrypt (_afd ,0,0);if _ggc !=nil {return nil ,_caf ,_ggc ;};};return _afd ,_caf ,nil ;}; // MakeDecodeParams makes a new instance of an encoding dictionary based on // the current encoder settings. func (_bbdg *ASCIIHexEncoder )MakeDecodeParams ()PdfObject {return nil }; // UpdateParams updates the parameter values of the encoder. func (_def *JPXEncoder )UpdateParams (params *PdfObjectDictionary ){}; // WriteString outputs the object as it is to be written to file. func (_edgd *PdfObjectName )WriteString ()string {var _dbdd _fe .Buffer ;if len (*_edgd )> 127{_fc .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a \u004e\u0061\u006d\u0065\u0020t\u006fo\u0020l\u006f\u006e\u0067\u0020\u0028\u0025\u0073)",*_edgd );};_dbdd .WriteString ("\u002f"); for _acef :=0;_acef < len (*_edgd );_acef ++{_ggba :=(*_edgd )[_acef ];if !IsPrintable (_ggba )||_ggba =='#'||IsDelimiter (_ggba ){_dbdd .WriteString (_g .Sprintf ("\u0023\u0025\u002e2\u0078",_ggba ));}else {_dbdd .WriteByte (_ggba );};};return _dbdd .String (); }; // PdfObjectFloat represents the primitive PDF floating point numerical object. type PdfObjectFloat float64 ; // GetUpdatedObjects returns pdf objects which were updated from the specific version (from prevParser). func (_bcee *PdfParser )GetUpdatedObjects (prevParser *PdfParser )(map[int64 ]PdfObject ,error ){if prevParser ==nil {return nil ,_e .New ("\u0070\u0072e\u0076\u0069\u006f\u0075\u0073\u0020\u0070\u0061\u0072\u0073\u0065\u0072\u0020\u0063\u0061\u006e\u0027\u0074\u0020\u0062\u0065\u0020nu\u006c\u006c"); };_fceeb ,_ebcd :=_bcee .getNumbersOfUpdatedObjects (prevParser );if _ebcd !=nil {return nil ,_ebcd ;};_fecb :=make (map[int64 ]PdfObject );for _ ,_geca :=range _fceeb {if _fgggf ,_baafd :=_bcee .LookupByNumber (_geca );_baafd ==nil {_fecb [int64 (_geca )]=_fgggf ; }else {return nil ,_baafd ;};};return _fecb ,nil ;}; // ResolveReferencesDeep recursively traverses through object `o`, looking up and replacing // references with indirect objects. // Optionally a map of already deep-resolved objects can be provided via `traversed`. The `traversed` map // is updated while traversing the objects to avoid traversing same objects multiple times. func ResolveReferencesDeep (o PdfObject ,traversed map[PdfObject ]struct{})error {if traversed ==nil {traversed =map[PdfObject ]struct{}{};};return _ccfa (o ,0,traversed );}; // GetRevision returns PdfParser for the specific version of the Pdf document. func (_aedb *PdfParser )GetRevision (revisionNumber int )(*PdfParser ,error ){_adbb :=_aedb ._gdgc ;if _adbb ==revisionNumber {return _aedb ,nil ;};if _adbb < revisionNumber {return nil ,_e .New ("\u0075\u006e\u0064\u0065\u0066\u0069\u006e\u0065\u0064\u0020\u0072\u0065\u0076\u0069\u0073i\u006fn\u004e\u0075\u006d\u0062\u0065\u0072\u0020\u0076\u0065\u0072\u0073\u0069\u006f\u006e"); };if _aedb ._cgeg [revisionNumber ]!=nil {return _aedb ._cgeg [revisionNumber ],nil ;};_edgcc :=_aedb ;for ;_adbb > revisionNumber ;_adbb --{_gcbb ,_bcef :=_edgcc .GetPreviousRevisionParser ();if _bcef !=nil {return nil ,_bcef ;};_aedb ._cgeg [_adbb -1]=_gcbb ; _aedb ._agdf [_edgcc ]=_gcbb ;_edgcc =_gcbb ;};return _edgcc ,nil ;}; // MakeStreamDict makes a new instance of an encoding dictionary for a stream object. func (_gfcad *JBIG2Encoder )MakeStreamDict ()*PdfObjectDictionary {_bfad :=MakeDict ();_bfad .Set ("\u0046\u0069\u006c\u0074\u0065\u0072",MakeName (_gfcad .GetFilterName ()));return _bfad ;};const JB2ImageAutoThreshold =-1.0; // IsDelimiter checks if a character represents a delimiter. func IsDelimiter (c byte )bool {return c =='('||c ==')'||c =='<'||c =='>'||c =='['||c ==']'||c =='{'||c =='}'||c =='/'||c =='%';}; // SetPredictor sets the predictor function. Specify the number of columns per row. // The columns indicates the number of samples per row. // Used for grouping data together for compression. func (_cceb *FlateEncoder )SetPredictor (columns int ){_cceb .Predictor =11;_cceb .Columns =columns }; // MakeFloat creates an PdfObjectFloat from a float64. func MakeFloat (val float64 )*PdfObjectFloat {_babg :=PdfObjectFloat (val );return &_babg };const (XrefTypeTableEntry xrefType =iota ;XrefTypeObjectStream xrefType =iota ;); // GetXrefOffset returns the offset of the xref table. func (_bdcd *PdfParser )GetXrefOffset ()int64 {return _bdcd ._cbce }; // MakeDict creates and returns an empty PdfObjectDictionary. func MakeDict ()*PdfObjectDictionary {_abda :=&PdfObjectDictionary {};_abda ._fecf =map[PdfObjectName ]PdfObject {};_abda ._agde =[]PdfObjectName {};_abda ._cfcd =&_b .Mutex {};return _abda ;};func (_gea *PdfCrypt )securityHandler ()_cg .StdHandler {if _gea ._fbe .R >=5{return _cg .NewHandlerR6 (); };return _cg .NewHandlerR4 (_gea ._beg ,_gea ._fgce .Length );}; // MakeDecodeParams makes a new instance of an encoding dictionary based on // the current encoder settings. func (_dfdf *MultiEncoder )MakeDecodeParams ()PdfObject {if len (_dfdf ._fdec )==0{return nil ;};if len (_dfdf ._fdec )==1{return _dfdf ._fdec [0].MakeDecodeParams ();};_daae :=MakeArray ();_fbbe :=true ;for _ ,_dbda :=range _dfdf ._fdec {_bccc :=_dbda .MakeDecodeParams (); if _bccc ==nil {_daae .Append (MakeNull ());}else {_fbbe =false ;_daae .Append (_bccc );};};if _fbbe {return nil ;};return _daae ;}; // WriteString outputs the object as it is to be written to file. func (_dadb *PdfObjectStreams )WriteString ()string {var _dedad _de .Builder ;_dedad .WriteString (_ef .FormatInt (_dadb .ObjectNumber ,10));_dedad .WriteString ("\u0020\u0030\u0020\u0052");return _dedad .String ();};func _defgb (_bceca PdfObject ,_dece int )PdfObject {if _dece > _eaee {_fc .Log .Error ("\u0054\u0072ac\u0065\u0020\u0064e\u0070\u0074\u0068\u0020lev\u0065l \u0062\u0065\u0079\u006f\u006e\u0064\u0020%d\u0020\u002d\u0020\u0065\u0072\u0072\u006fr\u0021",_eaee ); return MakeNull ();};switch _ddaf :=_bceca .(type ){case *PdfIndirectObject :_bceca =_defgb ((*_ddaf ).PdfObject ,_dece +1);case *PdfObjectArray :for _deafd ,_ggbdce :=range (*_ddaf )._cebff {(*_ddaf )._cebff [_deafd ]=_defgb (_ggbdce ,_dece +1);};case *PdfObjectDictionary :for _bbce ,_cgead :=range (*_ddaf )._fecf {(*_ddaf )._fecf [_bbce ]=_defgb (_cgead ,_dece +1); };_f .Slice ((*_ddaf )._agde ,func (_bfbgc ,_bebc int )bool {return (*_ddaf )._agde [_bfbgc ]< (*_ddaf )._agde [_bebc ]});};return _bceca ;}; // GetAccessPermissions returns the PDF access permissions as an AccessPermissions object. func (_gad *PdfCrypt )GetAccessPermissions ()_cg .Permissions {return _gad ._fbe .P };func _baeb (_ffdf _gc .Filter ,_ggb _cg .AuthEvent )*PdfObjectDictionary {if _ggb ==""{_ggb =_cg .EventDocOpen ;};_cbb :=MakeDict ();_cbb .Set ("\u0054\u0079\u0070\u0065",MakeName ("C\u0072\u0079\u0070\u0074\u0046\u0069\u006c\u0074\u0065\u0072")); _cbb .Set ("\u0041u\u0074\u0068\u0045\u0076\u0065\u006et",MakeName (string (_ggb )));_cbb .Set ("\u0043\u0046\u004d",MakeName (_ffdf .Name ()));_cbb .Set ("\u004c\u0065\u006e\u0067\u0074\u0068",MakeInteger (int64 (_ffdf .KeyLength ())));return _cbb ;}; type encryptDict struct{Filter string ;V int ;SubFilter string ;Length int ;StmF string ;StrF string ;EFF string ;CF map[string ]_gc .FilterDict ;}; // PdfObjectString represents the primitive PDF string object. type PdfObjectString struct{_bgfdf string ;_gbddbe bool ;}; // GetNumberAsInt64 returns the contents of `obj` as an int64 if it is an integer or float, or an // error if it isn't. This is for cases where expecting an integer, but some implementations // actually store the number in a floating point format. func GetNumberAsInt64 (obj PdfObject )(int64 ,error ){_gdbbd ,_bfbae :=obj .(*PdfObjectReference );if _bfbae {obj =TraceToDirectObject (_gdbbd );}else if _ebgd ,_eccdb :=obj .(*PdfIndirectObject );_eccdb {obj =_ebgd .PdfObject ;};switch _cbefg :=obj .(type ){case *PdfObjectFloat :_fc .Log .Debug ("\u004e\u0075m\u0062\u0065\u0072\u0020\u0065\u0078\u0070\u0065\u0063\u0074\u0065\u0064\u0020\u0061\u0073\u0020\u0069\u006e\u0074e\u0067\u0065\u0072\u0020\u0077\u0061s\u0020\u0073\u0074\u006f\u0072\u0065\u0064\u0020\u0061\u0073\u0020\u0066\u006c\u006fa\u0074\u0020(\u0074\u0079\u0070\u0065 \u0063\u0061\u0073\u0074\u0069n\u0067\u0020\u0075\u0073\u0065\u0064\u0029"); return int64 (*_cbefg ),nil ;case *PdfObjectInteger :return int64 (*_cbefg ),nil ;};return 0,ErrNotANumber ;}; // EncodeBytes encodes a bytes array and return the encoded value based on the encoder parameters. func (_dgca *FlateEncoder )EncodeBytes (data []byte )([]byte ,error ){if _dgca .Predictor !=1&&_dgca .Predictor !=11{_fc .Log .Debug ("E\u006e\u0063\u006f\u0064\u0069\u006e\u0067\u0020\u0065\u0072\u0072\u006f\u0072\u003a\u0020\u0046\u006c\u0061\u0074\u0065\u0045\u006e\u0063\u006f\u0064\u0065r\u0020P\u0072\u0065\u0064\u0069c\u0074\u006fr\u0020\u003d\u0020\u0031\u002c\u0020\u0031\u0031\u0020\u006f\u006e\u006c\u0079\u0020\u0073\u0075\u0070\u0070\u006f\u0072\u0074\u0065\u0064"); return nil ,ErrUnsupportedEncodingParameters ;};if _dgca .Predictor ==11{_ggcd :=_dgca .Columns ;_gfc :=len (data )/_ggcd ;if len (data )%_ggcd !=0{_fc .Log .Error ("\u0049n\u0076a\u006c\u0069\u0064\u0020\u0072o\u0077\u0020l\u0065\u006e\u0067\u0074\u0068"); return nil ,_e .New ("\u0069n\u0076a\u006c\u0069\u0064\u0020\u0072o\u0077\u0020l\u0065\u006e\u0067\u0074\u0068");};_bgg :=_fe .NewBuffer (nil );_gcaa :=make ([]byte ,_ggcd );for _geag :=0;_geag < _gfc ;_geag ++{_bfba :=data [_ggcd *_geag :_ggcd *(_geag +1)]; _gcaa [0]=_bfba [0];for _bgad :=1;_bgad < _ggcd ;_bgad ++{_gcaa [_bgad ]=byte (int (_bfba [_bgad ]-_bfba [_bgad -1])%256);};_bgg .WriteByte (1);_bgg .Write (_gcaa );};data =_bgg .Bytes ();};var _ddbd _fe .Buffer ;_gff :=_aaf .NewWriter (&_ddbd );_gff .Write (data ); _gff .Close ();return _ddbd .Bytes (),nil ;}; // GetPreviousRevisionParser returns PdfParser for the previous version of the Pdf document. func (_aggad *PdfParser )GetPreviousRevisionParser ()(*PdfParser ,error ){if _aggad ._gdgc ==0{return nil ,_e .New ("\u0074\u0068\u0069\u0073 i\u0073\u0020\u0066\u0069\u0072\u0073\u0074\u0020\u0072\u0065\u0076\u0069\u0073\u0069o\u006e");};if _ccagf ,_bgee :=_aggad ._agdf [_aggad ]; _bgee {return _ccagf ,nil ;};_dfdd ,_cgea :=_aggad .GetPreviousRevisionReadSeeker ();if _cgea !=nil {return nil ,_cgea ;};_abga ,_cgea :=NewParser (_dfdd );_abga ._agdf =_aggad ._agdf ;if _cgea !=nil {return nil ,_cgea ;};_aggad ._agdf [_aggad ]=_abga ; return _abga ,nil ;};func (_ceafa *PdfParser )seekPdfVersionTopDown ()(int ,int ,error ){_ceafa ._bcced .Seek (0,_ae .SeekStart );_ceafa ._dcfe =_eb .NewReader (_ceafa ._bcced );_eega :=20;_ebdbb :=make ([]byte ,_eega );for {_edaf ,_afgad :=_ceafa ._dcfe .ReadByte (); if _afgad !=nil {if _afgad ==_ae .EOF {break ;}else {return 0,0,_afgad ;};};if IsDecimalDigit (_edaf )&&_ebdbb [_eega -1]=='.'&&IsDecimalDigit (_ebdbb [_eega -2])&&_ebdbb [_eega -3]=='-'&&_ebdbb [_eega -4]=='F'&&_ebdbb [_eega -5]=='D'&&_ebdbb [_eega -6]=='P'{_dgcag :=int (_ebdbb [_eega -2]-'0'); _cfbe :=int (_edaf -'0');return _dgcag ,_cfbe ,nil ;};_ebdbb =append (_ebdbb [1:_eega ],_edaf );};return 0,0,_e .New ("\u0076\u0065\u0072\u0073\u0069\u006f\u006e\u0020\u006e\u006f\u0074\u0020f\u006f\u0075\u006e\u0064");}; // Clear resets the dictionary to an empty state. func (_cbgd *PdfObjectDictionary )Clear (){_cbgd ._agde =[]PdfObjectName {};_cbgd ._fecf =map[PdfObjectName ]PdfObject {};_cbgd ._cfcd =&_b .Mutex {};}; // DecodeBytes decodes a byte slice from Run length encoding. // // 7.4.5 RunLengthDecode Filter // The RunLengthDecode filter decodes data that has been encoded in a simple byte-oriented format based on run length. // The encoded data shall be a sequence of runs, where each run shall consist of a length byte followed by 1 to 128 // bytes of data. If the length byte is in the range 0 to 127, the following length + 1 (1 to 128) bytes shall be // copied literally during decompression. If length is in the range 129 to 255, the following single byte shall be // copied 257 - length (2 to 128) times during decompression. A length value of 128 shall denote EOD. func (_deg *RunLengthEncoder )DecodeBytes (encoded []byte )([]byte ,error ){_agd :=_fe .NewReader (encoded );var _ecbed []byte ;for {_ffcce ,_gfcga :=_agd .ReadByte ();if _gfcga !=nil {return nil ,_gfcga ;};if _ffcce > 128{_fcdg ,_cbac :=_agd .ReadByte (); if _cbac !=nil {return nil ,_cbac ;};for _fgb :=0;_fgb < 257-int (_ffcce );_fgb ++{_ecbed =append (_ecbed ,_fcdg );};}else if _ffcce < 128{for _cecfg :=0;_cecfg < int (_ffcce )+1;_cecfg ++{_cedb ,_dbad :=_agd .ReadByte ();if _dbad !=nil {return nil ,_dbad ; };_ecbed =append (_ecbed ,_cedb );};}else {break ;};};return _ecbed ,nil ;}; // LookupByReference looks up a PdfObject by a reference. func (_agc *PdfParser )LookupByReference (ref PdfObjectReference )(PdfObject ,error ){_fc .Log .Trace ("\u004c\u006f\u006fki\u006e\u0067\u0020\u0075\u0070\u0020\u0072\u0065\u0066\u0065\u0072\u0065\u006e\u0063\u0065\u0020\u0025\u0073",ref .String ());return _agc .LookupByNumber (int (ref .ObjectNumber )); }; // GetName returns the *PdfObjectName represented by the PdfObject directly or indirectly within an indirect // object. On type mismatch the found bool flag is false and a nil pointer is returned. func GetName (obj PdfObject )(_aaeb *PdfObjectName ,_ecegf bool ){_aaeb ,_ecegf =TraceToDirectObject (obj ).(*PdfObjectName );return _aaeb ,_ecegf ;}; // GetNumberAsFloat returns the contents of `obj` as a float if it is an integer or float, or an // error if it isn't. func GetNumberAsFloat (obj PdfObject )(float64 ,error ){switch _cdgfg :=obj .(type ){case *PdfObjectFloat :return float64 (*_cdgfg ),nil ;case *PdfObjectInteger :return float64 (*_cdgfg ),nil ;};return 0,ErrNotANumber ;}; // JBIG2Encoder implements both jbig2 encoder and the decoder. The encoder allows to encode // provided images (best used document scans) in multiple way. By default it uses single page generic // encoder. It allows to store lossless data as a single segment. // In order to store multiple image pages use the 'FileMode' which allows to store more pages within single jbig2 document. // WIP: In order to obtain better compression results the encoder would allow to encode the input in a // lossy or lossless way with a component (symbol) mode. It divides the image into components. // Then checks if any component is 'similar' to the others and maps them together. The symbol classes are stored // in the dictionary. Then the encoder creates text regions which uses the related symbol classes to fill it's space. // The similarity is defined by the 'Threshold' variable (default: 0.95). The less the value is, the more components // matches to single class, thus the compression is better, but the result might become lossy. type JBIG2Encoder struct{ // These values are required to be set for the 'EncodeBytes' method. // ColorComponents defines the number of color components for provided image. ColorComponents int ; // BitsPerComponent is the number of bits that stores per color component BitsPerComponent int ; // Width is the width of the image to encode Width int ; // Height is the height of the image to encode. Height int ;_aafa *_af .Document ; // Globals are the JBIG2 global segments. Globals _gdd .Globals ; // IsChocolateData defines if the data is encoded such that // binary data '1' means black and '0' white. // otherwise the data is called vanilla. // Naming convention taken from: 'https://en.wikipedia.org/wiki/Binary_image#Interpretation' IsChocolateData bool ; // DefaultPageSettings are the settings parameters used by the jbig2 encoder. DefaultPageSettings JBIG2EncoderSettings ;};func (_ceacb *PdfParser )parseXrefTable ()(*PdfObjectDictionary ,error ){var _cedf *PdfObjectDictionary ;_ecfd ,_agcb :=_ceacb .readTextLine ();if _agcb !=nil {return nil ,_agcb ;};if _ceacb ._egaa &&_de .Count (_de .TrimPrefix (_ecfd ,"\u0078\u0072\u0065\u0066"),"\u0020")> 0{_ceacb ._adfgf ._aba =true ; };_fc .Log .Trace ("\u0078\u0072\u0065\u0066 f\u0069\u0072\u0073\u0074\u0020\u006c\u0069\u006e\u0065\u003a\u0020\u0025\u0073",_ecfd );_afgf :=-1;_eedda :=0;_addb :=false ;_gggbb :="";for {_ceacb .skipSpaces ();_ ,_egac :=_ceacb ._dcfe .Peek (1);if _egac !=nil {return nil ,_egac ; };_ecfd ,_egac =_ceacb .readTextLine ();if _egac !=nil {return nil ,_egac ;};_abad :=_eddb .FindStringSubmatch (_ecfd );if len (_abad )==0{_bffe :=len (_gggbb )> 0;_gggbb +=_ecfd +"\u000a";if _bffe {_abad =_eddb .FindStringSubmatch (_gggbb );};};if len (_abad )==3{if _ceacb ._egaa &&!_ceacb ._adfgf ._afac {var (_fefg bool ; _gabg int ;);for _ ,_afcbc :=range _ecfd {if _bg .IsDigit (_afcbc ){if _fefg {break ;};continue ;};if !_fefg {_fefg =true ;};_gabg ++;};if _gabg > 1{_ceacb ._adfgf ._afac =true ;};};_gdcad ,_ :=_ef .Atoi (_abad [1]);_gggdb ,_ :=_ef .Atoi (_abad [2]);_afgf =_gdcad ; _eedda =_gggdb ;_addb =true ;_gggbb ="";_fc .Log .Trace ("\u0078r\u0065\u0066 \u0073\u0075\u0062s\u0065\u0063\u0074\u0069\u006f\u006e\u003a \u0066\u0069\u0072\u0073\u0074\u0020o\u0062\u006a\u0065\u0063\u0074\u003a\u0020\u0025\u0064\u0020\u006fb\u006a\u0065\u0063\u0074\u0073\u003a\u0020\u0025\u0064",_afgf ,_eedda ); continue ;};_beeb :=_edea .FindStringSubmatch (_ecfd );if len (_beeb )==4{if !_addb {_fc .Log .Debug ("E\u0052\u0052\u004f\u0052\u0020\u0058r\u0065\u0066\u0020\u0069\u006e\u0076\u0061\u006c\u0069d\u0020\u0066\u006fr\u006da\u0074\u0021\u000a");return nil ,_e .New ("\u0078\u0072\u0065\u0066 i\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0066\u006f\u0072\u006d\u0061\u0074"); };_gbec ,_ :=_ef .ParseInt (_beeb [1],10,64);_befg ,_ :=_ef .Atoi (_beeb [2]);_abfc :=_beeb [3];_gggbb ="";if _de .ToLower (_abfc )=="\u006e"&&_gbec > 1{_fcea ,_bcac :=_ceacb ._fgaf .ObjectMap [_afgf ];if !_bcac ||_befg > _fcea .Generation {_fada :=XrefObject {ObjectNumber :_afgf ,XType :XrefTypeTableEntry ,Offset :_gbec ,Generation :_befg }; _ceacb ._fgaf .ObjectMap [_afgf ]=_fada ;};};_afgf ++;continue ;};if (len (_ecfd )> 6)&&(_ecfd [:7]=="\u0074r\u0061\u0069\u006c\u0065\u0072"){_fc .Log .Trace ("\u0046o\u0075n\u0064\u0020\u0074\u0072\u0061i\u006c\u0065r\u0020\u002d\u0020\u0025\u0073",_ecfd ); if len (_ecfd )> 9{_cgcgf :=_ceacb .GetFileOffset ();_ceacb .SetFileOffset (_cgcgf -int64 (len (_ecfd ))+7);};_ceacb .skipSpaces ();_ceacb .skipComments ();_fc .Log .Trace ("R\u0065\u0061\u0064\u0069ng\u0020t\u0072\u0061\u0069\u006c\u0065r\u0020\u0064\u0069\u0063\u0074\u0021"); _fc .Log .Trace ("\u0070\u0065\u0065\u006b\u003a\u0020\u0022\u0025\u0073\u0022",_ecfd );_cedf ,_egac =_ceacb .ParseDict ();_fc .Log .Trace ("\u0045O\u0046\u0020\u0072\u0065a\u0064\u0069\u006e\u0067\u0020t\u0072a\u0069l\u0065\u0072\u0020\u0064\u0069\u0063\u0074!"); if _egac !=nil {_fc .Log .Debug ("\u0045\u0072\u0072o\u0072\u0020\u0070\u0061r\u0073\u0069\u006e\u0067\u0020\u0074\u0072a\u0069\u006c\u0065\u0072\u0020\u0064\u0069\u0063\u0074\u0020\u0028\u0025\u0073\u0029",_egac );return nil ,_egac ;};break ;};if _ecfd =="\u0025\u0025\u0045O\u0046"{_fc .Log .Debug ("E\u0052\u0052\u004f\u0052\u003a\u0020\u0065\u006e\u0064 \u006f\u0066\u0020\u0066\u0069\u006c\u0065 -\u0020\u0074\u0072\u0061i\u006c\u0065\u0072\u0020\u006e\u006f\u0074\u0020\u0066ou\u006e\u0064 \u002d\u0020\u0065\u0072\u0072\u006f\u0072\u0021"); return nil ,_e .New ("\u0065\u006e\u0064 \u006f\u0066\u0020\u0066i\u006c\u0065\u0020\u002d\u0020\u0074\u0072a\u0069\u006c\u0065\u0072\u0020\u006e\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064");};_fc .Log .Trace ("\u0078\u0072\u0065\u0066\u0020\u006d\u006f\u0072\u0065 \u003a\u0020\u0025\u0073",_ecfd ); };_fc .Log .Trace ("\u0045\u004f\u0046 p\u0061\u0072\u0073\u0069\u006e\u0067\u0020\u0078\u0072\u0065\u0066\u0020\u0074\u0061\u0062\u006c\u0065\u0021");if _ceacb ._dffd ==nil {_gffg :=XrefTypeTableEntry ;_ceacb ._dffd =&_gffg ;};return _cedf ,nil ;}; // DecodeStream decodes a LZW encoded stream and returns the result as a // slice of bytes. func (_effc *LZWEncoder )DecodeStream (streamObj *PdfObjectStream )([]byte ,error ){_fc .Log .Trace ("\u004c\u005a\u0057 \u0044\u0065\u0063\u006f\u0064\u0069\u006e\u0067");_fc .Log .Trace ("\u0050\u0072\u0065\u0064\u0069\u0063\u0074\u006f\u0072\u003a\u0020\u0025\u0064",_effc .Predictor ); _ceee ,_cdb :=_effc .DecodeBytes (streamObj .Stream );if _cdb !=nil {return nil ,_cdb ;};_fc .Log .Trace ("\u0020\u0049\u004e\u003a\u0020\u0028\u0025\u0064\u0029\u0020\u0025\u0020\u0078",len (streamObj .Stream ),streamObj .Stream );_fc .Log .Trace ("\u004f\u0055\u0054\u003a\u0020\u0028\u0025\u0064\u0029\u0020\u0025\u0020\u0078",len (_ceee ),_ceee ); if _effc .Predictor > 1{if _effc .Predictor ==2{_fc .Log .Trace ("\u0054\u0069\u0066\u0066\u0020\u0065\u006e\u0063\u006f\u0064\u0069\u006e\u0067");_gcag :=_effc .Columns *_effc .Colors ;if _gcag < 1{return []byte {},nil ;};_aafd :=len (_ceee )/_gcag ;if len (_ceee )%_gcag !=0{_fc .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020T\u0049\u0046\u0046 \u0065\u006e\u0063\u006fd\u0069\u006e\u0067\u003a\u0020\u0049\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0072\u006f\u0077\u0020\u006c\u0065\u006e\u0067\u0074\u0068\u002e\u002e\u002e"); return nil ,_g .Errorf ("\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0072\u006f\u0077 \u006c\u0065\u006e\u0067\u0074\u0068\u0020\u0028\u0025\u0064/\u0025\u0064\u0029",len (_ceee ),_gcag );};if _gcag %_effc .Colors !=0{return nil ,_g .Errorf ("\u0069\u006ev\u0061\u006c\u0069\u0064 \u0072\u006fw\u0020\u006c\u0065\u006e\u0067\u0074\u0068\u0020(\u0025\u0064\u0029\u0020\u0066\u006f\u0072\u0020\u0063\u006f\u006c\u006fr\u0073\u0020\u0025\u0064",_gcag ,_effc .Colors ); };if _gcag > len (_ceee ){_fc .Log .Debug ("\u0052\u006fw\u0020\u006c\u0065\u006e\u0067t\u0068\u0020\u0063\u0061\u006en\u006f\u0074\u0020\u0062\u0065\u0020\u006c\u006f\u006e\u0067\u0065\u0072\u0020\u0074\u0068\u0061\u006e\u0020\u0064\u0061\u0074\u0061\u0020\u006c\u0065\u006e\u0067\u0074\u0068\u0020\u0028\u0025\u0064\u002f\u0025\u0064\u0029",_gcag ,len (_ceee )); return nil ,_e .New ("\u0072\u0061\u006e\u0067\u0065\u0020\u0063\u0068\u0065\u0063\u006b\u0020e\u0072\u0072\u006f\u0072");};_fc .Log .Trace ("i\u006e\u0070\u0020\u006fut\u0044a\u0074\u0061\u0020\u0028\u0025d\u0029\u003a\u0020\u0025\u0020\u0078",len (_ceee ),_ceee ); _efde :=_fe .NewBuffer (nil );for _adfb :=0;_adfb < _aafd ;_adfb ++{_ggae :=_ceee [_gcag *_adfb :_gcag *(_adfb +1)];for _fbcce :=_effc .Colors ;_fbcce < _gcag ;_fbcce ++{_ggae [_fbcce ]=byte (int (_ggae [_fbcce ]+_ggae [_fbcce -_effc .Colors ])%256);}; _efde .Write (_ggae );};_abc :=_efde .Bytes ();_fc .Log .Trace ("\u0050O\u0075t\u0044\u0061\u0074\u0061\u0020(\u0025\u0064)\u003a\u0020\u0025\u0020\u0078",len (_abc ),_abc );return _abc ,nil ;}else if _effc .Predictor >=10&&_effc .Predictor <=15{_fc .Log .Trace ("\u0050\u004e\u0047 \u0045\u006e\u0063\u006f\u0064\u0069\u006e\u0067"); _faab :=_effc .Columns *_effc .Colors +1;if _faab < 1{return []byte {},nil ;};_afe :=len (_ceee )/_faab ;if len (_ceee )%_faab !=0{return nil ,_g .Errorf ("\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0072\u006f\u0077 \u006c\u0065\u006e\u0067\u0074\u0068\u0020\u0028\u0025\u0064/\u0025\u0064\u0029",len (_ceee ),_faab ); };if _faab > len (_ceee ){_fc .Log .Debug ("\u0052\u006fw\u0020\u006c\u0065\u006e\u0067t\u0068\u0020\u0063\u0061\u006en\u006f\u0074\u0020\u0062\u0065\u0020\u006c\u006f\u006e\u0067\u0065\u0072\u0020\u0074\u0068\u0061\u006e\u0020\u0064\u0061\u0074\u0061\u0020\u006c\u0065\u006e\u0067\u0074\u0068\u0020\u0028\u0025\u0064\u002f\u0025\u0064\u0029",_faab ,len (_ceee )); return nil ,_e .New ("\u0072\u0061\u006e\u0067\u0065\u0020\u0063\u0068\u0065\u0063\u006b\u0020e\u0072\u0072\u006f\u0072");};_gcb :=_fe .NewBuffer (nil );_fc .Log .Trace ("P\u0072\u0065\u0064\u0069ct\u006fr\u0020\u0063\u006f\u006c\u0075m\u006e\u0073\u003a\u0020\u0025\u0064",_effc .Columns ); _fc .Log .Trace ("\u004ce\u006e\u0067\u0074\u0068:\u0020\u0025\u0064\u0020\u002f \u0025d\u0020=\u0020\u0025\u0064\u0020\u0072\u006f\u0077s",len (_ceee ),_faab ,_afe );_bca :=make ([]byte ,_faab );for _eegf :=0;_eegf < _faab ;_eegf ++{_bca [_eegf ]=0;}; for _adef :=0;_adef < _afe ;_adef ++{_cbab :=_ceee [_faab *_adef :_faab *(_adef +1)];_bfe :=_cbab [0];switch _bfe {case 0:case 1:for _bfda :=2;_bfda < _faab ;_bfda ++{_cbab [_bfda ]=byte (int (_cbab [_bfda ]+_cbab [_bfda -1])%256);};case 2:for _dceb :=1; _dceb < _faab ;_dceb ++{_cbab [_dceb ]=byte (int (_cbab [_dceb ]+_bca [_dceb ])%256);};default:_fc .Log .Debug ("\u0045\u0052\u0052O\u0052\u003a\u0020\u0049n\u0076\u0061\u006c\u0069\u0064\u0020\u0066i\u006c\u0074\u0065\u0072\u0020\u0062\u0079\u0074\u0065\u0020\u0028\u0025\u0064\u0029",_bfe ); return nil ,_g .Errorf ("\u0069n\u0076\u0061\u006c\u0069\u0064\u0020\u0066\u0069\u006c\u0074\u0065r\u0020\u0062\u0079\u0074\u0065\u0020\u0028\u0025\u0064\u0029",_bfe );};for _bcb :=0;_bcb < _faab ;_bcb ++{_bca [_bcb ]=_cbab [_bcb ];};_gcb .Write (_cbab [1:]); };_dbdc :=_gcb .Bytes ();return _dbdc ,nil ;}else {_fc .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a \u0055\u006e\u0073\u0075\u0070\u0070\u006f\u0072\u0074\u0065\u0064\u0020\u0070r\u0065\u0064\u0069\u0063\u0074\u006f\u0072 \u0028\u0025\u0064\u0029",_effc .Predictor ); return nil ,_g .Errorf ("\u0075\u006e\u0073\u0075\u0070\u0070\u006f\u0072\u0074\u0065\u0064 \u0070\u0072\u0065\u0064\u0069\u0063\u0074\u006f\u0072\u0020(\u0025\u0064\u0029",_effc .Predictor );};};return _ceee ,nil ;}; // FlateEncoder represents Flate encoding. type FlateEncoder struct{Predictor int ;BitsPerComponent int ; // For predictors Columns int ;Rows int ;Colors int ;_bdb *_aeg .ImageBase ;}; // ReadAtLeast reads at least n bytes into slice p. // Returns the number of bytes read (should always be == n), and an error on failure. func (_gbda *PdfParser )ReadAtLeast (p []byte ,n int )(int ,error ){_ggcdb :=n ;_cbdff :=0;_bfbb :=0;for _ggcdb > 0{_feca ,_dggd :=_gbda ._dcfe .Read (p [_cbdff :]);if _dggd !=nil {_fc .Log .Debug ("\u0045\u0052\u0052O\u0052\u0020\u0046\u0061i\u006c\u0065\u0064\u0020\u0072\u0065\u0061d\u0069\u006e\u0067\u0020\u0028\u0025\u0064\u003b\u0025\u0064\u0029\u0020\u0025\u0073",_feca ,_bfbb ,_dggd .Error ()); return _cbdff ,_e .New ("\u0066\u0061\u0069\u006c\u0065\u0064\u0020\u0072\u0065a\u0064\u0069\u006e\u0067");};_bfbb ++;_cbdff +=_feca ;_ggcdb -=_feca ;};return _cbdff ,nil ;}; // ParseIndirectObject parses an indirect object from the input stream. Can also be an object stream. // Returns the indirect object (*PdfIndirectObject) or the stream object (*PdfObjectStream). func (_cfff *PdfParser )ParseIndirectObject ()(PdfObject ,error ){_cegg :=PdfIndirectObject {};_cegg ._cgfad =_cfff ;_fc .Log .Trace ("\u002dR\u0065a\u0064\u0020\u0069\u006e\u0064i\u0072\u0065c\u0074\u0020\u006f\u0062\u006a");_aeac ,_ffcb :=_cfff ._dcfe .Peek (20); if _ffcb !=nil {if _ffcb !=_ae .EOF {_fc .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0046\u0061\u0069\u006c\u0020\u0074\u006f\u0020r\u0065a\u0064\u0020\u0069\u006e\u0064\u0069\u0072\u0065\u0063\u0074\u0020\u006f\u0062\u006a");return &_cegg ,_ffcb ; };};_fc .Log .Trace ("\u0028\u0069\u006edi\u0072\u0065\u0063\u0074\u0020\u006f\u0062\u006a\u0020\u0070\u0065\u0065\u006b\u0020\u0022\u0025\u0073\u0022",string (_aeac ));_cgbac :=_ddfe .FindStringSubmatchIndex (string (_aeac ));if len (_cgbac )< 6{if _ffcb ==_ae .EOF {return nil ,_ffcb ; };_fc .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020U\u006e\u0061\u0062l\u0065\u0020\u0074\u006f \u0066\u0069\u006e\u0064\u0020\u006f\u0062\u006a\u0065\u0063\u0074\u0020\u0073\u0069\u0067\u006e\u0061\u0074\u0075\u0072\u0065\u0020\u0028\u0025\u0073\u0029",string (_aeac )); return &_cegg ,_e .New ("\u0075\u006e\u0061b\u006c\u0065\u0020\u0074\u006f\u0020\u0064\u0065\u0074\u0065\u0063\u0074\u0020\u0069\u006e\u0064\u0069\u0072\u0065\u0063\u0074\u0020\u006f\u0062\u006a\u0065\u0063\u0074\u0020s\u0069\u0067\u006e\u0061\u0074\u0075\u0072\u0065"); };_cfff ._dcfe .Discard (_cgbac [0]);_fc .Log .Trace ("O\u0066\u0066\u0073\u0065\u0074\u0073\u0020\u0025\u0020\u0064",_cgbac );_ecgb :=_cgbac [1]-_cgbac [0];_afba :=make ([]byte ,_ecgb );_ ,_ffcb =_cfff .ReadAtLeast (_afba ,_ecgb );if _ffcb !=nil {_fc .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0075\u006e\u0061\u0062l\u0065\u0020\u0074\u006f\u0020\u0072\u0065\u0061\u0064\u0020-\u0020\u0025\u0073",_ffcb ); return nil ,_ffcb ;};_fc .Log .Trace ("\u0074\u0065\u0078t\u006c\u0069\u006e\u0065\u003a\u0020\u0025\u0073",_afba );_dacf :=_ddfe .FindStringSubmatch (string (_afba ));if len (_dacf )< 3{_fc .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020U\u006e\u0061\u0062l\u0065\u0020\u0074\u006f \u0066\u0069\u006e\u0064\u0020\u006f\u0062\u006a\u0065\u0063\u0074\u0020\u0073\u0069\u0067\u006e\u0061\u0074\u0075\u0072\u0065\u0020\u0028\u0025\u0073\u0029",string (_afba )); return &_cegg ,_e .New ("\u0075\u006e\u0061b\u006c\u0065\u0020\u0074\u006f\u0020\u0064\u0065\u0074\u0065\u0063\u0074\u0020\u0069\u006e\u0064\u0069\u0072\u0065\u0063\u0074\u0020\u006f\u0062\u006a\u0065\u0063\u0074\u0020s\u0069\u0067\u006e\u0061\u0074\u0075\u0072\u0065"); };_edcb ,_ :=_ef .Atoi (_dacf [1]);_eedc ,_ :=_ef .Atoi (_dacf [2]);_cegg .ObjectNumber =int64 (_edcb );_cegg .GenerationNumber =int64 (_eedc );for {_dbfbd ,_cfbf :=_cfff ._dcfe .Peek (2);if _cfbf !=nil {return &_cegg ,_cfbf ;};_fc .Log .Trace ("I\u006ed\u002e\u0020\u0070\u0065\u0065\u006b\u003a\u0020%\u0073\u0020\u0028\u0025 x\u0029\u0021",string (_dbfbd ),string (_dbfbd )); if IsWhiteSpace (_dbfbd [0]){_cfff .skipSpaces ();}else if _dbfbd [0]=='%'{_cfff .skipComments ();}else if (_dbfbd [0]=='<')&&(_dbfbd [1]=='<'){_fc .Log .Trace ("\u0043\u0061\u006c\u006c\u0020\u0050\u0061\u0072\u0073e\u0044\u0069\u0063\u0074");_cegg .PdfObject ,_cfbf =_cfff .ParseDict (); _fc .Log .Trace ("\u0045\u004f\u0046\u0020Ca\u006c\u006c\u0020\u0050\u0061\u0072\u0073\u0065\u0044\u0069\u0063\u0074\u003a\u0020%\u0076",_cfbf );if _cfbf !=nil {return &_cegg ,_cfbf ;};_fc .Log .Trace ("\u0050\u0061\u0072\u0073\u0065\u0064\u0020\u0064\u0069\u0063t\u0069\u006f\u006e\u0061\u0072\u0079\u002e.\u002e\u0020\u0066\u0069\u006e\u0069\u0073\u0068\u0065\u0064\u002e"); }else if (_dbfbd [0]=='/')||(_dbfbd [0]=='(')||(_dbfbd [0]=='[')||(_dbfbd [0]=='<'){_cegg .PdfObject ,_cfbf =_cfff .parseObject ();if _cfbf !=nil {return &_cegg ,_cfbf ;};_fc .Log .Trace ("P\u0061\u0072\u0073\u0065\u0064\u0020o\u0062\u006a\u0065\u0063\u0074\u0020\u002e\u002e\u002e \u0066\u0069\u006ei\u0073h\u0065\u0064\u002e"); }else if _dbfbd [0]==']'{_fc .Log .Debug ("\u0057\u0041\u0052\u004e\u0049N\u0047\u003a\u0020\u0027\u005d\u0027 \u0063\u0068\u0061\u0072\u0061\u0063\u0074e\u0072\u0020\u006eo\u0074\u0020\u0062\u0065i\u006e\u0067\u0020\u0075\u0073\u0065d\u0020\u0061\u0073\u0020\u0061\u006e\u0020\u0061\u0072\u0072\u0061\u0079\u0020\u0065\u006e\u0064\u0069n\u0067\u0020\u006d\u0061\u0072\u006b\u0065\u0072\u002e\u0020\u0053\u006b\u0069\u0070\u0070\u0069\u006e\u0067\u002e"); _cfff ._dcfe .Discard (1);}else {if _dbfbd [0]=='e'{_bbda ,_bgea :=_cfff .readTextLine ();if _bgea !=nil {return nil ,_bgea ;};if len (_bbda )>=6&&_bbda [0:6]=="\u0065\u006e\u0064\u006f\u0062\u006a"{break ;};}else if _dbfbd [0]=='s'{_dbfbd ,_ =_cfff ._dcfe .Peek (10); if string (_dbfbd [:6])=="\u0073\u0074\u0072\u0065\u0061\u006d"{_bfgc :=6;if len (_dbfbd )> 6{if IsWhiteSpace (_dbfbd [_bfgc ])&&_dbfbd [_bfgc ]!='\r'&&_dbfbd [_bfgc ]!='\n'{_fc .Log .Debug ("\u004e\u006fn\u002d\u0063\u006f\u006e\u0066\u006f\u0072\u006d\u0061\u006e\u0074\u0020\u0050\u0044\u0046\u0020\u006e\u006f\u0074 \u0065\u006e\u0064\u0069\u006e\u0067 \u0073\u0074\u0072\u0065\u0061\u006d\u0020\u006c\u0069\u006e\u0065\u0020\u0070\u0072o\u0070\u0065r\u006c\u0079\u0020\u0077i\u0074\u0068\u0020\u0045\u004fL\u0020\u006d\u0061\u0072\u006b\u0065\u0072"); _cfff ._adfgf ._ebd =true ;_bfgc ++;};if _dbfbd [_bfgc ]=='\r'{_bfgc ++;if _dbfbd [_bfgc ]=='\n'{_bfgc ++;};}else if _dbfbd [_bfgc ]=='\n'{_bfgc ++;}else {_cfff ._adfgf ._ebd =true ;};};_cfff ._dcfe .Discard (_bfgc );_ebbc ,_gdgd :=_cegg .PdfObject .(*PdfObjectDictionary ); if !_gdgd {return nil ,_e .New ("\u0073\u0074\u0072\u0065\u0061\u006d\u0020\u006f\u0062\u006a\u0065\u0063\u0074\u0020\u006di\u0073s\u0069\u006e\u0067\u0020\u0064\u0069\u0063\u0074\u0069\u006f\u006e\u0061\u0072\u0079");};_fc .Log .Trace ("\u0053\u0074\u0072\u0065\u0061\u006d\u0020\u0064\u0069c\u0074\u0020\u0025\u0073",_ebbc ); _ecde ,_eegd :=_cfff .traceStreamLength (_ebbc .Get ("\u004c\u0065\u006e\u0067\u0074\u0068"));if _eegd !=nil {_fc .Log .Debug ("\u0046\u0061\u0069l\u0020\u0074\u006f\u0020t\u0072\u0061\u0063\u0065\u0020\u0073\u0074r\u0065\u0061\u006d\u0020\u006c\u0065\u006e\u0067\u0074\u0068\u003a\u0020\u0025\u0076",_eegd ); return nil ,_eegd ;};_fc .Log .Trace ("\u0053\u0074\u0072\u0065\u0061\u006d\u0020\u006c\u0065\u006e\u0067\u0074h\u003f\u0020\u0025\u0073",_ecde );_gdgdb ,_bffb :=_ecde .(*PdfObjectInteger );if !_bffb {return nil ,_e .New ("\u0073\u0074re\u0061\u006d\u0020l\u0065\u006e\u0067\u0074h n\u0065ed\u0073\u0020\u0074\u006f\u0020\u0062\u0065 a\u006e\u0020\u0069\u006e\u0074\u0065\u0067e\u0072"); };_edgc :=*_gdgdb ;if _edgc < 0{return nil ,_e .New ("\u0073\u0074\u0072\u0065\u0061\u006d\u0020\u006e\u0065\u0065\u0064\u0073\u0020\u0074\u006f \u0062e\u0020\u006c\u006f\u006e\u0067\u0065\u0072\u0020\u0074\u0068\u0061\u006e\u0020\u0030");};_fbfa :=_cfff .GetFileOffset (); _ggcba :=_cfff .xrefNextObjectOffset (_fbfa );if _fbfa +int64 (_edgc )> _ggcba &&_ggcba > _fbfa {_fc .Log .Debug ("E\u0078\u0070\u0065\u0063te\u0064 \u0065\u006e\u0064\u0069\u006eg\u0020\u0061\u0074\u0020\u0025\u0064",_fbfa +int64 (_edgc ));_fc .Log .Debug ("\u004e\u0065\u0078\u0074\u0020\u006f\u0062\u006a\u0065\u0063\u0074 \u0073\u0074\u0061\u0072\u0074\u0069\u006e\u0067\u0020\u0061t\u0020\u0025\u0064",_ggcba ); _ddba :=_ggcba -_fbfa -17;if _ddba < 0{return nil ,_e .New ("\u0069n\u0076\u0061l\u0069\u0064\u0020\u0073t\u0072\u0065\u0061m\u0020\u006c\u0065\u006e\u0067\u0074\u0068\u002c\u0020go\u0069\u006e\u0067 \u0070\u0061s\u0074\u0020\u0062\u006f\u0075\u006ed\u0061\u0072i\u0065\u0073"); };_fc .Log .Debug ("\u0041\u0074\u0074\u0065\u006d\u0070\u0074\u0069\u006e\u0067\u0020\u0061\u0020l\u0065\u006e\u0067\u0074\u0068\u0020c\u006f\u0072\u0072\u0065\u0063\u0074\u0069\u006f\u006e\u0020\u0074\u006f\u0020%\u0064\u002e\u002e\u002e",_ddba );_edgc =PdfObjectInteger (_ddba ); _ebbc .Set ("\u004c\u0065\u006e\u0067\u0074\u0068",MakeInteger (_ddba ));};if int64 (_edgc )> _cfff ._acfbc {_fc .Log .Debug ("\u0045\u0052R\u004f\u0052\u003a\u0020\u0053t\u0072\u0065\u0061\u006d\u0020l\u0065\u006e\u0067\u0074\u0068\u0020\u0063\u0061\u006e\u006e\u006f\u0074\u0020\u0062\u0065\u0020\u006c\u0061\u0072\u0067\u0065\u0072\u0020\u0074\u0068\u0061\u006e\u0020\u0066\u0069\u006c\u0065\u0020\u0073\u0069\u007a\u0065"); return nil ,_e .New ("\u0069n\u0076\u0061l\u0069\u0064\u0020\u0073t\u0072\u0065\u0061m\u0020\u006c\u0065\u006e\u0067\u0074\u0068\u002c\u0020la\u0072\u0067\u0065r\u0020\u0074h\u0061\u006e\u0020\u0066\u0069\u006ce\u0020\u0073i\u007a\u0065");};_bcbc :=make ([]byte ,_edgc ); _ ,_eegd =_cfff .ReadAtLeast (_bcbc ,int (_edgc ));if _eegd !=nil {_fc .Log .Debug ("E\u0052\u0052\u004f\u0052 s\u0074r\u0065\u0061\u006d\u0020\u0028%\u0064\u0029\u003a\u0020\u0025\u0058",len (_bcbc ),_bcbc );_fc .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a\u0020\u0025v",_eegd ); return nil ,_eegd ;};_cdff :=PdfObjectStream {};_cdff .Stream =_bcbc ;_cdff .PdfObjectDictionary =_cegg .PdfObject .(*PdfObjectDictionary );_cdff .ObjectNumber =_cegg .ObjectNumber ;_cdff .GenerationNumber =_cegg .GenerationNumber ;_cdff .PdfObjectReference ._cgfad =_cfff ; _cfff .skipSpaces ();_cfff ._dcfe .Discard (9);_cfff .skipSpaces ();return &_cdff ,nil ;};};_cegg .PdfObject ,_cfbf =_cfff .parseObject ();if _cegg .PdfObject ==nil {_fc .Log .Debug ("\u0049N\u0043\u004f\u004dP\u0041\u0054\u0049B\u0049LI\u0054\u0059\u003a\u0020\u0049\u006e\u0064i\u0072\u0065\u0063\u0074\u0020\u006f\u0062\u006a\u0065\u0063\u0074\u0020\u006e\u006f\u0074\u0020\u0063\u006f\u006e\u0074\u0061\u0069\u006e\u0069\u006e\u0067\u0020\u0061n \u006fb\u006a\u0065\u0063\u0074\u0020\u002d \u0061\u0073\u0073\u0075\u006di\u006e\u0067\u0020\u006e\u0075\u006c\u006c\u0020\u006f\u0062\u006ae\u0063\u0074"); _cegg .PdfObject =MakeNull ();};return &_cegg ,_cfbf ;};};if _cegg .PdfObject ==nil {_fc .Log .Debug ("\u0049N\u0043\u004f\u004dP\u0041\u0054\u0049B\u0049LI\u0054\u0059\u003a\u0020\u0049\u006e\u0064i\u0072\u0065\u0063\u0074\u0020\u006f\u0062\u006a\u0065\u0063\u0074\u0020\u006e\u006f\u0074\u0020\u0063\u006f\u006e\u0074\u0061\u0069\u006e\u0069\u006e\u0067\u0020\u0061n \u006fb\u006a\u0065\u0063\u0074\u0020\u002d \u0061\u0073\u0073\u0075\u006di\u006e\u0067\u0020\u006e\u0075\u006c\u006c\u0020\u006f\u0062\u006ae\u0063\u0074"); _cegg .PdfObject =MakeNull ();};_fc .Log .Trace ("\u0052\u0065\u0074\u0075rn\u0069\u006e\u0067\u0020\u0069\u006e\u0064\u0069\u0072\u0065\u0063\u0074\u0021");return &_cegg ,nil ;}; // GetAsFloat64Slice returns the array as []float64 slice. // Returns an error if not entirely numeric (only PdfObjectIntegers, PdfObjectFloats). func (_egcf *PdfObjectArray )GetAsFloat64Slice ()([]float64 ,error ){var _caab []float64 ;for _ ,_bfea :=range _egcf .Elements (){_adadf ,_cdbf :=GetNumberAsFloat (TraceToDirectObject (_bfea ));if _cdbf !=nil {return nil ,_g .Errorf ("\u0061\u0072\u0072\u0061\u0079\u0020\u0065\u006c\u0065\u006d\u0065n\u0074\u0020\u006e\u006f\u0074\u0020\u0061\u0020\u006e\u0075m\u0062\u0065\u0072"); };_caab =append (_caab ,_adadf );};return _caab ,nil ;}; // HasInvalidSeparationAfterXRef implements core.ParserMetadata interface. func (_eea ParserMetadata )HasInvalidSeparationAfterXRef ()bool {return _eea ._aba }; // Get returns the i-th element of the array or nil if out of bounds (by index). func (_egag *PdfObjectArray )Get (i int )PdfObject {if _egag ==nil ||i >=len (_egag ._cebff )||i < 0{return nil ;};return _egag ._cebff [i ];}; // IsPrintable checks if a character is printable. // Regular characters that are outside the range EXCLAMATION MARK(21h) // (!) to TILDE (7Eh) (~) should be written using the hexadecimal notation. func IsPrintable (c byte )bool {return 0x21<=c &&c <=0x7E}; // MakeStream creates an PdfObjectStream with specified contents and encoding. If encoding is nil, then raw encoding // will be used (i.e. no encoding applied). func MakeStream (contents []byte ,encoder StreamEncoder )(*PdfObjectStream ,error ){_ebfe :=&PdfObjectStream {};if encoder ==nil {encoder =NewRawEncoder ();};_ebfe .PdfObjectDictionary =encoder .MakeStreamDict ();_bagea ,_becbg :=encoder .EncodeBytes (contents ); if _becbg !=nil {return nil ,_becbg ;};_ebfe .PdfObjectDictionary .Set ("\u004c\u0065\u006e\u0067\u0074\u0068",MakeInteger (int64 (len (_bagea ))));_ebfe .Stream =_bagea ;return _ebfe ,nil ;}; // ParseNumber parses a numeric objects from a buffered stream. // Section 7.3.3. // Integer or Float. // // An integer shall be written as one or more decimal digits optionally // preceded by a sign. The value shall be interpreted as a signed // decimal integer and shall be converted to an integer object. // // A real value shall be written as one or more decimal digits with an // optional sign and a leading, trailing, or embedded PERIOD (2Eh) // (decimal point). The value shall be interpreted as a real number // and shall be converted to a real object. // // Regarding exponential numbers: 7.3.3 Numeric Objects: // A conforming writer shall not use the PostScript syntax for numbers // with non-decimal radices (such as 16#FFFE) or in exponential format // (such as 6.02E23). // Nonetheless, we sometimes get numbers with exponential format, so // we will support it in the reader (no confusion with other types, so // no compromise). func ParseNumber (buf *_eb .Reader )(PdfObject ,error ){_cgeeb :=false ;_gcafg :=true ;var _ffegb _fe .Buffer ;for {if _fc .Log .IsLogLevel (_fc .LogLevelTrace ){_fc .Log .Trace ("\u0050\u0061\u0072\u0073in\u0067\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020\u0022\u0025\u0073\u0022",_ffegb .String ()); };_eded ,_ebdf :=buf .Peek (1);if _ebdf ==_ae .EOF {break ;};if _ebdf !=nil {_fc .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u0020\u0025\u0073",_ebdf );return nil ,_ebdf ;};if _gcafg &&(_eded [0]=='-'||_eded [0]=='+'){_ebbad ,_ :=buf .ReadByte ();_ffegb .WriteByte (_ebbad ); _gcafg =false ;}else if IsDecimalDigit (_eded [0]){_bcabd ,_ :=buf .ReadByte ();_ffegb .WriteByte (_bcabd );}else if _eded [0]=='.'{_dggdg ,_ :=buf .ReadByte ();_ffegb .WriteByte (_dggdg );_cgeeb =true ;}else if _eded [0]=='e'||_eded [0]=='E'{_fcec ,_ :=buf .ReadByte (); _ffegb .WriteByte (_fcec );_cgeeb =true ;_gcafg =true ;}else {break ;};};var _aagab PdfObject ;if _cgeeb {_aafed ,_degf :=_ef .ParseFloat (_ffegb .String (),64);if _degf !=nil {_fc .Log .Debug ("\u0045\u0072r\u006f\u0072\u0020\u0070\u0061\u0072\u0073\u0069\u006e\u0067\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020\u0025v\u0020\u0065\u0072\u0072\u003d\u0025v\u002e\u0020\u0055\u0073\u0069\u006e\u0067\u0020\u0030\u002e\u0030\u002e\u0020\u004fu\u0074\u0070u\u0074\u0020\u006d\u0061y\u0020\u0062\u0065\u0020\u0069n\u0063\u006f\u0072\u0072\u0065\u0063\u0074",_ffegb .String (),_degf ); _aafed =0.0;};_gdfg :=PdfObjectFloat (_aafed );_aagab =&_gdfg ;}else {_ddaa ,_ceba :=_ef .ParseInt (_ffegb .String (),10,64);if _ceba !=nil {_fc .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0070\u0061\u0072\u0073\u0069\u006e\u0067\u0020\u006e\u0075\u006db\u0065\u0072\u0020\u0025\u0076\u0020\u0065\u0072\u0072\u003d%\u0076\u002e\u0020\u0055\u0073\u0069\u006e\u0067\u0020\u0030\u002e\u0020\u004f\u0075\u0074\u0070\u0075\u0074 \u006d\u0061\u0079\u0020\u0062\u0065 \u0069\u006ec\u006f\u0072r\u0065c\u0074",_ffegb .String (),_ceba ); _ddaa =0;};_fgaef :=PdfObjectInteger (_ddaa );_aagab =&_fgaef ;};return _aagab ,nil ;};func (_adab *PdfParser )checkLinearizedInformation (_abgab *PdfObjectDictionary )(bool ,error ){var _cdda error ;_adab ._geee ,_cdda =GetNumberAsInt64 (_abgab .Get ("\u004c")); if _cdda !=nil {return false ,_cdda ;};_cdda =_adab .seekToEOFMarker (_adab ._geee );switch _cdda {case nil :return true ,nil ;case _gcea :return false ,nil ;default:return false ,_cdda ;};}; // Resolve resolves the reference and returns the indirect or stream object. // If the reference cannot be resolved, a *PdfObjectNull object is returned. func (_gbbf *PdfObjectReference )Resolve ()PdfObject {if _gbbf ._cgfad ==nil {return MakeNull ();};_fcef ,_ ,_bcfe :=_gbbf ._cgfad .resolveReference (_gbbf );if _bcfe !=nil {_fc .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u0020\u0072\u0065\u0073\u006f\u006cv\u0069\u006e\u0067\u0020\u0072\u0065\u0066\u0065r\u0065n\u0063\u0065\u003a\u0020\u0025\u0076\u0020\u002d\u0020\u0072\u0065\u0074\u0075\u0072\u006e\u0069\u006e\u0067 \u006e\u0075\u006c\u006c\u0020\u006f\u0062\u006a\u0065\u0063\u0074",_bcfe ); return MakeNull ();};if _fcef ==nil {_fc .Log .Debug ("\u0045R\u0052\u004f\u0052\u0020\u0072\u0065\u0073ol\u0076\u0069\u006e\u0067\u0020\u0072\u0065\u0066\u0065\u0072\u0065\u006e\u0063\u0065:\u0020\u006ei\u006c\u0020\u006fb\u006a\u0065\u0063\u0074\u0020\u002d\u0020\u0072\u0065\u0074\u0075\u0072\u006e\u0069\u006e\u0067 \u0061\u0020nu\u006c\u006c\u0020o\u0062\u006a\u0065\u0063\u0074"); return MakeNull ();};return _fcef ;};func _gdcae ()string {return _fc .Version }; // Str returns the string value of the PdfObjectString. Defined in addition to String() function to clarify that // this function returns the underlying string directly, whereas the String function technically could include // debug info. func (_gfec *PdfObjectString )Str ()string {return _gfec ._bgfdf }; // MakeStringFromBytes creates an PdfObjectString from a byte array. // This is more natural than MakeString as `data` is usually not utf-8 encoded. func MakeStringFromBytes (data []byte )*PdfObjectString {return MakeString (string (data ))};func (_gbcb *PdfObjectDictionary )setWithLock (_bcceg PdfObjectName ,_ffda PdfObject ,_ebff bool ){if _ebff {_gbcb ._cfcd .Lock ();defer _gbcb ._cfcd .Unlock (); };_ ,_afecb :=_gbcb ._fecf [_bcceg ];if !_afecb {_gbcb ._agde =append (_gbcb ._agde ,_bcceg );};_gbcb ._fecf [_bcceg ]=_ffda ;}; // MakeArrayFromIntegers creates an PdfObjectArray from a slice of ints, where each array element is // an PdfObjectInteger. func MakeArrayFromIntegers (vals []int )*PdfObjectArray {_babff :=MakeArray ();for _ ,_gbcf :=range vals {_babff .Append (MakeInteger (int64 (_gbcf )));};return _babff ;};func (_fgcf *PdfCrypt )authenticate (_eceaa []byte )(bool ,error ){_fgcf ._bfc =false ; _gaf :=_fgcf .securityHandler ();_fca ,_fff ,_eced :=_gaf .Authenticate (&_fgcf ._fbe ,_eceaa );if _eced !=nil {return false ,_eced ;}else if _fff ==0||len (_fca )==0{return false ,nil ;};_fgcf ._bfc =true ;_fgcf ._ccda =_fca ;return true ,nil ;}; // MakeStreamDict makes a new instance of an encoding dictionary for a stream object. func (_ggaf *CCITTFaxEncoder )MakeStreamDict ()*PdfObjectDictionary {_fbb :=MakeDict ();_fbb .Set ("\u0046\u0069\u006c\u0074\u0065\u0072",MakeName (_ggaf .GetFilterName ()));_fbb .SetIfNotNil ("D\u0065\u0063\u006f\u0064\u0065\u0050\u0061\u0072\u006d\u0073",_ggaf .MakeDecodeParams ()); return _fbb ;}; // WriteString outputs the object as it is to be written to file. func (_ffge *PdfObjectString )WriteString ()string {var _eedcf _fe .Buffer ;if _ffge ._gbddbe {_fbed :=_bae .EncodeToString (_ffge .Bytes ());_eedcf .WriteString ("\u003c");_eedcf .WriteString (_fbed );_eedcf .WriteString ("\u003e");return _eedcf .String (); };_dcgg :=map[byte ]string {'\n':"\u005c\u006e",'\r':"\u005c\u0072",'\t':"\u005c\u0074",'\b':"\u005c\u0062",'\f':"\u005c\u0066",'(':"\u005c\u0028",')':"\u005c\u0029",'\\':"\u005c\u005c"};_eedcf .WriteString ("\u0028");for _dacde :=0;_dacde < len (_ffge ._bgfdf ); _dacde ++{_aecfe :=_ffge ._bgfdf [_dacde ];if _ccbg ,_aecdg :=_dcgg [_aecfe ];_aecdg {_eedcf .WriteString (_ccbg );}else {_eedcf .WriteByte (_aecfe );};};_eedcf .WriteString ("\u0029");return _eedcf .String ();}; // EncodeBytes encodes data into ASCII85 encoded format. func (_daaa *ASCII85Encoder )EncodeBytes (data []byte )([]byte ,error ){var _adeb _fe .Buffer ;for _ffb :=0;_ffb < len (data );_ffb +=4{_faafa :=data [_ffb ];_afee :=1;_eee :=byte (0);if _ffb +1< len (data ){_eee =data [_ffb +1];_afee ++;};_cfe :=byte (0); if _ffb +2< len (data ){_cfe =data [_ffb +2];_afee ++;};_cagdg :=byte (0);if _ffb +3< len (data ){_cagdg =data [_ffb +3];_afee ++;};_feeb :=(uint32 (_faafa )<<24)|(uint32 (_eee )<<16)|(uint32 (_cfe )<<8)|uint32 (_cagdg );if _feeb ==0{_adeb .WriteByte ('z'); }else {_eaed :=_daaa .base256Tobase85 (_feeb );for _ ,_ecdf :=range _eaed [:_afee +1]{_adeb .WriteByte (_ecdf +'!');};};};_adeb .WriteString ("\u007e\u003e");return _adeb .Bytes (),nil ;}; // Merge merges in key/values from another dictionary. Overwriting if has same keys. // The mutated dictionary (d) is returned in order to allow method chaining. func (_badc *PdfObjectDictionary )Merge (another *PdfObjectDictionary )*PdfObjectDictionary {if another !=nil {for _ ,_abcbc :=range another .Keys (){_ccgfgb :=another .Get (_abcbc );_badc .Set (_abcbc ,_ccgfgb );};};return _badc ;}; // GetIntVal returns the int value represented by the PdfObject directly or indirectly if contained within an // indirect object. On type mismatch the found bool flag returned is false and a nil pointer is returned. func GetIntVal (obj PdfObject )(_dbca int ,_cggcd bool ){_eggb ,_cggcd :=TraceToDirectObject (obj ).(*PdfObjectInteger );if _cggcd &&_eggb !=nil {return int (*_eggb ),true ;};return 0,false ;}; // EncodeBytes encodes the passed in slice of bytes by passing it through the // EncodeBytes method of the underlying encoders. func (_cgada *MultiEncoder )EncodeBytes (data []byte )([]byte ,error ){_gbdd :=data ;var _gfe error ;for _bcaa :=len (_cgada ._fdec )-1;_bcaa >=0;_bcaa --{_cda :=_cgada ._fdec [_bcaa ];_gbdd ,_gfe =_cda .EncodeBytes (_gbdd );if _gfe !=nil {return nil ,_gfe ; };};return _gbdd ,nil ;};func _egdf (_fcdb _ae .ReadSeeker ,_eabfd int64 )(*limitedReadSeeker ,error ){_ ,_ccgf :=_fcdb .Seek (0,_ae .SeekStart );if _ccgf !=nil {return nil ,_ccgf ;};return &limitedReadSeeker {_bgfd :_fcdb ,_gfbf :_eabfd },nil ;}; // ToIntegerArray returns a slice of all array elements as an int slice. An error is returned if the // array non-integer objects. Each element can only be PdfObjectInteger. func (_bcff *PdfObjectArray )ToIntegerArray ()([]int ,error ){var _gdbe []int ;for _ ,_caea :=range _bcff .Elements (){if _daacd ,_fefa :=_caea .(*PdfObjectInteger );_fefa {_gdbe =append (_gdbe ,int (*_daacd ));}else {return nil ,ErrTypeError ;};};return _gdbe ,nil ; };func _dadg (_cegbb ,_dbaaf ,_gecf int )error {if _dbaaf < 0||_dbaaf > _cegbb {return _e .New ("s\u006c\u0069\u0063\u0065\u0020\u0069n\u0064\u0065\u0078\u0020\u0061\u0020\u006f\u0075\u0074 \u006f\u0066\u0020b\u006fu\u006e\u0064\u0073");};if _gecf < _dbaaf {return _e .New ("\u0069n\u0076\u0061\u006c\u0069d\u0020\u0073\u006c\u0069\u0063e\u0020i\u006ed\u0065\u0078\u0020\u0062\u0020\u003c\u0020a"); };if _gecf > _cegbb {return _e .New ("s\u006c\u0069\u0063\u0065\u0020\u0069n\u0064\u0065\u0078\u0020\u0062\u0020\u006f\u0075\u0074 \u006f\u0066\u0020b\u006fu\u006e\u0064\u0073");};return nil ;}; // UpdateParams updates the parameter values of the encoder. func (_dbada *RawEncoder )UpdateParams (params *PdfObjectDictionary ){}; // Bytes returns the PdfObjectString content as a []byte array. func (_dcebe *PdfObjectString )Bytes ()[]byte {return []byte (_dcebe ._bgfdf )}; // NewLZWEncoder makes a new LZW encoder with default parameters. func NewLZWEncoder ()*LZWEncoder {_ebe :=&LZWEncoder {};_ebe .Predictor =1;_ebe .BitsPerComponent =8;_ebe .Colors =1;_ebe .Columns =1;_ebe .EarlyChange =1;return _ebe ;}; // GetXrefTable returns the PDFs xref table. func (_gfa *PdfParser )GetXrefTable ()XrefTable {return _gfa ._fgaf }; // DecodeBytes decodes a slice of LZW encoded bytes and returns the result. func (_afaa *LZWEncoder )DecodeBytes (encoded []byte )([]byte ,error ){var _gefab _fe .Buffer ;_cfgca :=_fe .NewReader (encoded );var _feaa _ae .ReadCloser ;if _afaa .EarlyChange ==1{_feaa =_fec .NewReader (_cfgca ,_fec .MSB ,8);}else {_feaa =_aae .NewReader (_cfgca ,_aae .MSB ,8); };defer _feaa .Close ();if _ ,_eddc :=_gefab .ReadFrom (_feaa );_eddc !=nil {if _eddc !=_ae .ErrUnexpectedEOF ||_gefab .Len ()==0{return nil ,_eddc ;};_fc .Log .Debug ("\u0057\u0041\u0052\u004e\u003a\u0020\u004c\u005a\u0057\u0020\u0064\u0065\u0063\u006f\u0064i\u006e\u0067\u0020\u0065\u0072\u0072\u006f\u0072\u003a\u0020\u0025\u0076\u002e \u004f\u0075\u0074\u0070\u0075\u0074\u0020\u006d\u0061\u0079\u0020\u0062e \u0069\u006e\u0063\u006f\u0072\u0072\u0065\u0063\u0074\u002e",_eddc ); };return _gefab .Bytes (),nil ;};func _fdeb (_cde *PdfObjectStream ,_eafc *PdfObjectDictionary )(*CCITTFaxEncoder ,error ){_cfeb :=NewCCITTFaxEncoder ();_ebc :=_cde .PdfObjectDictionary ;if _ebc ==nil {return _cfeb ,nil ;};if _eafc ==nil {_dege :=TraceToDirectObject (_ebc .Get ("D\u0065\u0063\u006f\u0064\u0065\u0050\u0061\u0072\u006d\u0073")); if _dege !=nil {switch _cccc :=_dege .(type ){case *PdfObjectDictionary :_eafc =_cccc ;case *PdfObjectArray :if _cccc .Len ()==1{if _gbbg ,_fdebc :=GetDict (_cccc .Get (0));_fdebc {_eafc =_gbbg ;};};default:_fc .Log .Error ("\u0044\u0065\u0063\u006f\u0064\u0065\u0050\u0061\u0072\u006d\u0073\u0020\u006e\u006f\u0074 \u0061 \u0064\u0069\u0063\u0074\u0069\u006f\u006e\u0061\u0072\u0079\u0020\u0025\u0023\u0076",_dege ); return nil ,_e .New ("\u0069\u006e\u0076\u0061li\u0064\u0020\u0044\u0065\u0063\u006f\u0064\u0065\u0050\u0061\u0072\u006d\u0073");};};if _eafc ==nil {_fc .Log .Error ("\u0044\u0065c\u006f\u0064\u0065\u0050\u0061\u0072\u006d\u0073\u0020\u006e\u006f\u0074\u0020\u0073\u0070\u0065\u0063\u0069\u0066\u0069\u0065\u0064 %\u0023\u0076",_dege ); return nil ,_e .New ("\u0069\u006e\u0076\u0061li\u0064\u0020\u0044\u0065\u0063\u006f\u0064\u0065\u0050\u0061\u0072\u006d\u0073");};};if _fddea ,_bcead :=GetNumberAsInt64 (_eafc .Get ("\u004b"));_bcead ==nil {_cfeb .K =int (_fddea );};if _efab ,_dda :=GetNumberAsInt64 (_eafc .Get ("\u0043o\u006c\u0075\u006d\u006e\u0073")); _dda ==nil {_cfeb .Columns =int (_efab );}else {_cfeb .Columns =1728;};if _efadg ,_edca :=GetNumberAsInt64 (_eafc .Get ("\u0042\u006c\u0061\u0063\u006b\u0049\u0073\u0031"));_edca ==nil {_cfeb .BlackIs1 =_efadg > 0;}else {if _bddg ,_deda :=GetBoolVal (_eafc .Get ("\u0042\u006c\u0061\u0063\u006b\u0049\u0073\u0031")); _deda {_cfeb .BlackIs1 =_bddg ;}else {if _dgcc ,_eabf :=GetArray (_eafc .Get ("\u0044\u0065\u0063\u006f\u0064\u0065"));_eabf {_dag ,_befbe :=_dgcc .ToIntegerArray ();if _befbe ==nil {_cfeb .BlackIs1 =_dag [0]==1&&_dag [1]==0;};};};};if _gba ,_bad :=GetNumberAsInt64 (_eafc .Get ("\u0045\u006ec\u006f\u0064\u0065d\u0042\u0079\u0074\u0065\u0041\u006c\u0069\u0067\u006e")); _bad ==nil {_cfeb .EncodedByteAlign =_gba > 0;}else {if _efg ,_accdc :=GetBoolVal (_eafc .Get ("\u0045\u006ec\u006f\u0064\u0065d\u0042\u0079\u0074\u0065\u0041\u006c\u0069\u0067\u006e"));_accdc {_cfeb .EncodedByteAlign =_efg ;};};if _gfg ,_eefeg :=GetNumberAsInt64 (_eafc .Get ("\u0045n\u0064\u004f\u0066\u004c\u0069\u006ee")); _eefeg ==nil {_cfeb .EndOfLine =_gfg > 0;}else {if _ccee ,_bgcc :=GetBoolVal (_eafc .Get ("\u0045n\u0064\u004f\u0066\u004c\u0069\u006ee"));_bgcc {_cfeb .EndOfLine =_ccee ;};};if _dfad ,_bbg :=GetNumberAsInt64 (_eafc .Get ("\u0052\u006f\u0077\u0073"));_bbg ==nil {_cfeb .Rows =int (_dfad ); };_cfeb .EndOfBlock =true ;if _aab ,_bgdg :=GetNumberAsInt64 (_eafc .Get ("\u0045\u006e\u0064\u004f\u0066\u0042\u006c\u006f\u0063\u006b"));_bgdg ==nil {_cfeb .EndOfBlock =_aab > 0;}else {if _daga ,_gfcc :=GetBoolVal (_eafc .Get ("\u0045\u006e\u0064\u004f\u0066\u0042\u006c\u006f\u0063\u006b")); _gfcc {_cfeb .EndOfBlock =_daga ;};};if _eaea ,_effbd :=GetNumberAsInt64 (_eafc .Get ("\u0044\u0061\u006d\u0061ge\u0064\u0052\u006f\u0077\u0073\u0042\u0065\u0066\u006f\u0072\u0065\u0045\u0072\u0072o\u0072"));_effbd !=nil {_cfeb .DamagedRowsBeforeError =int (_eaea ); };_fc .Log .Trace ("\u0064\u0065\u0063\u006f\u0064\u0065\u0020\u0070\u0061\u0072\u0061\u006ds\u003a\u0020\u0025\u0073",_eafc .String ());return _cfeb ,nil ;};var (ErrUnsupportedEncodingParameters =_e .New ("\u0075\u006e\u0073u\u0070\u0070\u006f\u0072t\u0065\u0064\u0020\u0065\u006e\u0063\u006fd\u0069\u006e\u0067\u0020\u0070\u0061\u0072\u0061\u006d\u0065\u0074\u0065\u0072\u0073"); ErrNoCCITTFaxDecode =_e .New ("\u0043\u0043I\u0054\u0054\u0046\u0061\u0078\u0044\u0065\u0063\u006f\u0064\u0065\u0020\u0065\u006e\u0063\u006f\u0064\u0069\u006e\u0067\u0020\u0069\u0073\u0020\u006e\u006f\u0074\u0020\u0079\u0065\u0074\u0020\u0069\u006d\u0070\u006c\u0065\u006d\u0065\u006e\u0074\u0065\u0064"); ErrNoJBIG2Decode =_e .New ("\u004a\u0042\u0049\u0047\u0032\u0044\u0065c\u006f\u0064\u0065 \u0065\u006e\u0063\u006fd\u0069\u006e\u0067\u0020\u0069\u0073\u0020\u006e\u006f\u0074\u0020\u0079\u0065\u0074\u0020\u0069\u006d\u0070\u006c\u0065\u006d\u0065\u006e\u0074\u0065\u0064"); ErrNoJPXDecode =_e .New ("\u004a\u0050\u0058\u0044\u0065c\u006f\u0064\u0065\u0020\u0065\u006e\u0063\u006f\u0064\u0069\u006e\u0067\u0020i\u0073\u0020\u006e\u006f\u0074\u0020\u0079\u0065\u0074\u0020\u0069\u006d\u0070\u006c\u0065\u006d\u0065\u006e\u0074\u0065\u0064"); ErrNoPdfVersion =_e .New ("\u0076\u0065\u0072\u0073\u0069\u006f\u006e\u0020\u006e\u006f\u0074\u0020f\u006f\u0075\u006e\u0064");ErrTypeError =_e .New ("\u0074\u0079p\u0065\u0020\u0063h\u0065\u0063\u006b\u0020\u0065\u0072\u0072\u006f\u0072");ErrRangeError =_e .New ("\u0072\u0061\u006e\u0067\u0065\u0020\u0063\u0068\u0065\u0063\u006b\u0020e\u0072\u0072\u006f\u0072"); ErrNotSupported =_ga .New ("\u0066\u0065\u0061t\u0075\u0072\u0065\u0020n\u006f\u0074\u0020\u0063\u0075\u0072\u0072e\u006e\u0074\u006c\u0079\u0020\u0073\u0075\u0070\u0070\u006f\u0072\u0074\u0065\u0064");ErrNotANumber =_e .New ("\u006e\u006f\u0074 \u0061\u0020\u006e\u0075\u006d\u0062\u0065\u0072"); ); // DecodeStream decodes the stream containing CCITTFax encoded image data. func (_eefd *CCITTFaxEncoder )DecodeStream (streamObj *PdfObjectStream )([]byte ,error ){return _eefd .DecodeBytes (streamObj .Stream );};func _gcaad (_afdba *PdfObjectDictionary )(_dcgfg *_aeg .ImageBase ){var (_bfbbe *PdfObjectInteger ;_ecgf bool ;); if _bfbbe ,_ecgf =_afdba .Get ("\u0057\u0069\u0064t\u0068").(*PdfObjectInteger );_ecgf {_dcgfg =&_aeg .ImageBase {Width :int (*_bfbbe )};}else {return nil ;};if _bfbbe ,_ecgf =_afdba .Get ("\u0048\u0065\u0069\u0067\u0068\u0074").(*PdfObjectInteger );_ecgf {_dcgfg .Height =int (*_bfbbe ); };if _bfbbe ,_ecgf =_afdba .Get ("\u0042\u0069t\u0073\u0050\u0065r\u0043\u006f\u006d\u0070\u006f\u006e\u0065\u006e\u0074").(*PdfObjectInteger );_ecgf {_dcgfg .BitsPerComponent =int (*_bfbbe );};if _bfbbe ,_ecgf =_afdba .Get ("\u0043o\u006co\u0072\u0043\u006f\u006d\u0070\u006f\u006e\u0065\u006e\u0074\u0073").(*PdfObjectInteger ); _ecgf {_dcgfg .ColorComponents =int (*_bfbbe );};return _dcgfg ;}; // CCITTFaxEncoder implements Group3 and Group4 facsimile (fax) encoder/decoder. type CCITTFaxEncoder struct{K int ;EndOfLine bool ;EncodedByteAlign bool ;Columns int ;Rows int ;EndOfBlock bool ;BlackIs1 bool ;DamagedRowsBeforeError int ;};func _dad (_bdce *PdfObjectStream ,_eaga *PdfObjectDictionary )(*RunLengthEncoder ,error ){return NewRunLengthEncoder (),nil ; }; // WriteString outputs the object as it is to be written to file. func (_egdd *PdfObjectDictionary )WriteString ()string {var _ebce _de .Builder ;_ebce .WriteString ("\u003c\u003c");for _ ,_dggg :=range _egdd ._agde {_gacbc :=_egdd ._fecf [_dggg ];_ebce .WriteString (_dggg .WriteString ());_ebce .WriteString ("\u0020"); _ebce .WriteString (_gacbc .WriteString ());};_ebce .WriteString ("\u003e\u003e");return _ebce .String ();}; // NewParserFromString is used for testing purposes. func NewParserFromString (txt string )*PdfParser {_bbeg :=_fe .NewReader ([]byte (txt ));_fdca :=&PdfParser {ObjCache :objectCache {},_bcced :_bbeg ,_dcfe :_eb .NewReader (_bbeg ),_acfbc :int64 (len (txt )),_abeb :map[int64 ]bool {},_agdf :make (map[*PdfParser ]*PdfParser )}; _fdca ._fgaf .ObjectMap =make (map[int ]XrefObject );return _fdca ;}; // IsAuthenticated returns true if the PDF has already been authenticated for accessing. func (_bead *PdfParser )IsAuthenticated ()bool {return _bead ._agga ._bfc }; // GetInt returns the *PdfObjectBool object that is represented by a PdfObject either directly or indirectly // within an indirect object. The bool flag indicates whether a match was found. func GetInt (obj PdfObject )(_dbba *PdfObjectInteger ,_edeb bool ){_dbba ,_edeb =TraceToDirectObject (obj ).(*PdfObjectInteger );return _dbba ,_edeb ;}; // PdfObjectInteger represents the primitive PDF integer numerical object. type PdfObjectInteger int64 ; // GetBoolVal returns the bool value within a *PdObjectBool represented by an PdfObject interface directly or indirectly. // If the PdfObject does not represent a bool value, a default value of false is returned (found = false also). func GetBoolVal (obj PdfObject )(_fgae bool ,_eebb bool ){_ecbfa ,_eebb :=TraceToDirectObject (obj ).(*PdfObjectBool );if _eebb {return bool (*_ecbfa ),true ;};return false ,false ;}; // GoImageToJBIG2 creates a binary image on the base of 'i' golang image.Image. // If the image is not a black/white image then the function converts provided input into // JBIG2Image with 1bpp. For non grayscale images the function performs the conversion to the grayscale temp image. // Then it checks the value of the gray image value if it's within bounds of the black white threshold. // This 'bwThreshold' value should be in range (0.0, 1.0). The threshold checks if the grayscale pixel (uint) value // is greater or smaller than 'bwThreshold' * 255. Pixels inside the range will be white, and the others will be black. // If the 'bwThreshold' is equal to -1.0 - JB2ImageAutoThreshold then it's value would be set on the base of // it's histogram using Triangle method. For more information go to: // https://www.mathworks.com/matlabcentral/fileexchange/28047-gray-image-thresholding-using-the-triangle-method func GoImageToJBIG2 (i _fa .Image ,bwThreshold float64 )(*JBIG2Image ,error ){const _afdgg ="\u0047\u006f\u0049\u006d\u0061\u0067\u0065\u0054\u006fJ\u0042\u0049\u0047\u0032";if i ==nil {return nil ,_gd .Error (_afdgg ,"i\u006d\u0061\u0067\u0065 '\u0069'\u0020\u006e\u006f\u0074\u0020d\u0065\u0066\u0069\u006e\u0065\u0064"); };var (_gegf uint8 ;_dbaa _aeg .Image ;_dfcd error ;);if bwThreshold ==JB2ImageAutoThreshold {_dbaa ,_dfcd =_aeg .MonochromeConverter .Convert (i );}else if bwThreshold > 1.0||bwThreshold < 0.0{return nil ,_gd .Error (_afdgg ,"p\u0072\u006f\u0076\u0069\u0064\u0065\u0064\u0020\u0074h\u0072\u0065\u0073\u0068\u006f\u006c\u0064 i\u0073\u0020\u006e\u006ft\u0020\u0069\u006e\u0020\u0061\u0020\u0072\u0061\u006ege\u0020\u007b0\u002e\u0030\u002c\u0020\u0031\u002e\u0030\u007d"); }else {_gegf =uint8 (255*bwThreshold );_dbaa ,_dfcd =_aeg .MonochromeThresholdConverter (_gegf ).Convert (i );};if _dfcd !=nil {return nil ,_dfcd ;};return _bbff (_dbaa ),nil ;}; // GetFilterName returns the name of the encoding filter. func (_agfe *FlateEncoder )GetFilterName ()string {return StreamEncodingFilterNameFlate }; // TraceToDirectObject traces a PdfObject to a direct object. For example direct objects contained // in indirect objects (can be double referenced even). func TraceToDirectObject (obj PdfObject )PdfObject {if _fede ,_agcbb :=obj .(*PdfObjectReference );_agcbb {obj =_fede .Resolve ();};_baea ,_fdefg :=obj .(*PdfIndirectObject );_ddfcb :=0;for _fdefg {obj =_baea .PdfObject ;_baea ,_fdefg =GetIndirect (obj ); _ddfcb ++;if _ddfcb > _eaee {_fc .Log .Error ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0054\u0072\u0061\u0063\u0065\u0020\u0064\u0065p\u0074\u0068\u0020\u006c\u0065\u0076\u0065\u006c\u0020\u0062\u0065\u0079\u006fn\u0064\u0020\u0025\u0064\u0020\u002d\u0020\u006e\u006f\u0074\u0020\u0067oi\u006e\u0067\u0020\u0064\u0065\u0065\u0070\u0065\u0072\u0021",_eaee ); return nil ;};};return obj ;}; // HasInvalidHexRunes implements core.ParserMetadata interface. func (_bde ParserMetadata )HasInvalidHexRunes ()bool {return _bde ._ffcg };func (_gdaf *PdfParser )parseBool ()(PdfObjectBool ,error ){_egbc ,_ddbda :=_gdaf ._dcfe .Peek (4);if _ddbda !=nil {return PdfObjectBool (false ),_ddbda ;};if (len (_egbc )>=4)&&(string (_egbc [:4])=="\u0074\u0072\u0075\u0065"){_gdaf ._dcfe .Discard (4); return PdfObjectBool (true ),nil ;};_egbc ,_ddbda =_gdaf ._dcfe .Peek (5);if _ddbda !=nil {return PdfObjectBool (false ),_ddbda ;};if (len (_egbc )>=5)&&(string (_egbc [:5])=="\u0066\u0061\u006cs\u0065"){_gdaf ._dcfe .Discard (5);return PdfObjectBool (false ),nil ; };return PdfObjectBool (false ),_e .New ("\u0075n\u0065\u0078\u0070\u0065c\u0074\u0065\u0064\u0020\u0062o\u006fl\u0065a\u006e\u0020\u0073\u0074\u0072\u0069\u006eg");};type objectCache map[int ]PdfObject ; // RegisterCustomStreamEncoder register a custom encoder handler for certain filter. func RegisterCustomStreamEncoder (filterName string ,customStreamEncoder StreamEncoder ){_cbad .Store (filterName ,customStreamEncoder );}; // Resolve resolves a PdfObject to direct object, looking up and resolving references as needed (unlike TraceToDirect). func (_fcg *PdfParser )Resolve (obj PdfObject )(PdfObject ,error ){_beca ,_abfa :=obj .(*PdfObjectReference );if !_abfa {return obj ,nil ;};_ecee :=_fcg .GetFileOffset ();defer func (){_fcg .SetFileOffset (_ecee )}();_edg ,_afdb :=_fcg .LookupByReference (*_beca ); if _afdb !=nil {return nil ,_afdb ;};_beb ,_cabg :=_edg .(*PdfIndirectObject );if !_cabg {return _edg ,nil ;};_edg =_beb .PdfObject ;_ ,_abfa =_edg .(*PdfObjectReference );if _abfa {return _beb ,_e .New ("\u006d\u0075lt\u0069\u0020\u0064e\u0070\u0074\u0068\u0020tra\u0063e \u0070\u006f\u0069\u006e\u0074\u0065\u0072 t\u006f\u0020\u0070\u006f\u0069\u006e\u0074e\u0072"); };return _edg ,nil ;};func _bbff (_acfa _aeg .Image )*JBIG2Image {_dbag :=_acfa .Base ();return &JBIG2Image {Data :_dbag .Data ,Width :_dbag .Width ,Height :_dbag .Height ,HasPadding :true };};func _geb (_ecbc *PdfObjectStream ,_ade *PdfObjectDictionary )(*FlateEncoder ,error ){_cec :=NewFlateEncoder (); _egfe :=_ecbc .PdfObjectDictionary ;if _egfe ==nil {return _cec ,nil ;};_cec ._bdb =_gcaad (_egfe );if _ade ==nil {_cbe :=TraceToDirectObject (_egfe .Get ("D\u0065\u0063\u006f\u0064\u0065\u0050\u0061\u0072\u006d\u0073"));switch _cgfc :=_cbe .(type ){case *PdfObjectArray :if _cgfc .Len ()!=1{_fc .Log .Debug ("\u0045\u0072\u0072\u006f\u0072:\u0020\u0044\u0065\u0063\u006f\u0064\u0065\u0050\u0061\u0072\u006d\u0073\u0020a\u0072\u0072\u0061\u0079\u0020\u006c\u0065\u006e\u0067\u0074\u0068\u0020\u0021\u003d\u0020\u0031\u0020\u0028\u0025\u0064\u0029",_cgfc .Len ()); return nil ,_e .New ("\u0072\u0061\u006e\u0067\u0065\u0020\u0063\u0068\u0065\u0063\u006b\u0020e\u0072\u0072\u006f\u0072");};if _eba ,_cacf :=GetDict (_cgfc .Get (0));_cacf {_ade =_eba ;};case *PdfObjectDictionary :_ade =_cgfc ;case *PdfObjectNull ,nil :default:_fc .Log .Debug ("E\u0072\u0072\u006f\u0072\u003a\u0020\u0044\u0065\u0063\u006f\u0064\u0065\u0050\u0061\u0072\u006d\u0073\u0020n\u006f\u0074\u0020\u0061\u0020\u0064\u0069\u0063\u0074\u0069on\u0061\u0072\u0079 \u0028%\u0054\u0029",_cbe ); return nil ,_g .Errorf ("\u0069\u006e\u0076\u0061li\u0064\u0020\u0044\u0065\u0063\u006f\u0064\u0065\u0050\u0061\u0072\u006d\u0073");};};if _ade ==nil {return _cec ,nil ;};_fc .Log .Trace ("\u0064\u0065\u0063\u006f\u0064\u0065\u0020\u0070\u0061\u0072\u0061\u006ds\u003a\u0020\u0025\u0073",_ade .String ()); _fecda :=_ade .Get ("\u0050r\u0065\u0064\u0069\u0063\u0074\u006fr");if _fecda ==nil {_fc .Log .Debug ("E\u0072\u0072o\u0072\u003a\u0020\u0050\u0072\u0065\u0064\u0069\u0063\u0074\u006f\u0072\u0020\u006d\u0069\u0073\u0073\u0069\u006e\u0067 \u0066\u0072\u006f\u006d\u0020\u0044\u0065\u0063\u006f\u0064\u0065\u0050\u0061\u0072\u006d\u0073 \u002d\u0020\u0043\u006f\u006e\u0074\u0069\u006e\u0075\u0065\u0020\u0077\u0069t\u0068\u0020\u0064\u0065\u0066\u0061\u0075\u006c\u0074\u0020\u00281\u0029"); }else {_dab ,_gaab :=_fecda .(*PdfObjectInteger );if !_gaab {_fc .Log .Debug ("E\u0072\u0072\u006f\u0072\u003a\u0020\u0050\u0072\u0065d\u0069\u0063\u0074\u006f\u0072\u0020\u0073pe\u0063\u0069\u0066\u0069e\u0064\u0020\u0062\u0075\u0074\u0020\u006e\u006f\u0074 n\u0075\u006de\u0072\u0069\u0063\u0020\u0028\u0025\u0054\u0029",_fecda ); return nil ,_g .Errorf ("\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0050\u0072\u0065\u0064i\u0063\u0074\u006f\u0072");};_cec .Predictor =int (*_dab );};_fecda =_ade .Get ("\u0042\u0069t\u0073\u0050\u0065r\u0043\u006f\u006d\u0070\u006f\u006e\u0065\u006e\u0074"); if _fecda !=nil {_abfg ,_befb :=_fecda .(*PdfObjectInteger );if !_befb {_fc .Log .Debug ("\u0045\u0052\u0052O\u0052\u003a\u0020\u0049n\u0076\u0061\u006c\u0069\u0064\u0020\u0042i\u0074\u0073\u0050\u0065\u0072\u0043\u006f\u006d\u0070\u006f\u006e\u0065\u006e\u0074"); return nil ,_g .Errorf ("\u0069n\u0076\u0061\u006c\u0069\u0064\u0020\u0042\u0069\u0074\u0073\u0050e\u0072\u0043\u006f\u006d\u0070\u006f\u006e\u0065\u006e\u0074");};_cec .BitsPerComponent =int (*_abfg );};if _cec .Predictor > 1{_cec .Columns =1;_fecda =_ade .Get ("\u0043o\u006c\u0075\u006d\u006e\u0073"); if _fecda !=nil {_efca ,_fee :=_fecda .(*PdfObjectInteger );if !_fee {return nil ,_g .Errorf ("\u0070r\u0065\u0064\u0069\u0063\u0074\u006f\u0072\u0020\u0063\u006f\u006cu\u006d\u006e\u0020\u0069\u006e\u0076\u0061\u006c\u0069\u0064");};_cec .Columns =int (*_efca ); };_cec .Colors =1;_fecda =_ade .Get ("\u0043\u006f\u006c\u006f\u0072\u0073");if _fecda !=nil {_dfaf ,_bfdf :=_fecda .(*PdfObjectInteger );if !_bfdf {return nil ,_g .Errorf ("\u0070\u0072\u0065d\u0069\u0063\u0074\u006fr\u0020\u0063\u006f\u006c\u006f\u0072\u0073 \u006e\u006f\u0074\u0020\u0061\u006e\u0020\u0069\u006e\u0074\u0065\u0067\u0065\u0072"); };_cec .Colors =int (*_dfaf );};};return _cec ,nil ;};func _ece (_ccc PdfObject )(int64 ,int64 ,error ){if _faa ,_ddf :=_ccc .(*PdfIndirectObject );_ddf {return _faa .ObjectNumber ,_faa .GenerationNumber ,nil ;};if _adf ,_ac :=_ccc .(*PdfObjectStream ); _ac {return _adf .ObjectNumber ,_adf .GenerationNumber ,nil ;};return 0,0,_e .New ("\u006e\u006ft\u0020\u0061\u006e\u0020\u0069\u006e\u0064\u0069\u0072\u0065\u0063\u0074\u002f\u0073\u0074\u0072\u0065\u0061\u006d\u0020\u006f\u0062je\u0063\u0074");}; // WriteString outputs the object as it is to be written to file. func (_afabd *PdfObjectArray )WriteString ()string {var _fcbg _de .Builder ;_fcbg .WriteString ("\u005b");for _ffae ,_bada :=range _afabd .Elements (){_fcbg .WriteString (_bada .WriteString ());if _ffae < (_afabd .Len ()-1){_fcbg .WriteString ("\u0020"); };};_fcbg .WriteString ("\u005d");return _fcbg .String ();};func (_bfgaf *PdfParser )parseXrefStream (_ddfeg *PdfObjectInteger )(*PdfObjectDictionary ,error ){if _ddfeg !=nil {_fc .Log .Trace ("\u0058\u0052\u0065f\u0053\u0074\u006d\u0020x\u0072\u0065\u0066\u0020\u0074\u0061\u0062l\u0065\u0020\u006f\u0062\u006a\u0065\u0063\u0074\u0020\u0061\u0074\u0020\u0025\u0064",_ddfeg ); _bfgaf ._bcced .Seek (int64 (*_ddfeg ),_ae .SeekStart );_bfgaf ._dcfe =_eb .NewReader (_bfgaf ._bcced );};_acab :=_bfgaf .GetFileOffset ();_becg ,_dfbe :=_bfgaf .ParseIndirectObject ();if _dfbe !=nil {_fc .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a \u0046\u0061\u0069\u006c\u0065\u0064\u0020\u0074\u006f\u0020\u0072\u0065\u0061d\u0020\u0078\u0072\u0065\u0066\u0020\u006fb\u006a\u0065\u0063\u0074"); return nil ,_e .New ("\u0066\u0061\u0069\u006c\u0065\u0064\u0020\u0074\u006f\u0020\u0072e\u0061\u0064\u0020\u0078\u0072\u0065\u0066\u0020\u006f\u0062j\u0065\u0063\u0074");};_fc .Log .Trace ("\u0058R\u0065f\u0053\u0074\u006d\u0020\u006fb\u006a\u0065c\u0074\u003a\u0020\u0025\u0073",_becg ); _afec ,_aaega :=_becg .(*PdfObjectStream );if !_aaega {_fc .Log .Debug ("\u0045R\u0052\u004fR\u003a\u0020\u0058R\u0065\u0066\u0053\u0074\u006d\u0020\u0070o\u0069\u006e\u0074\u0069\u006e\u0067 \u0074\u006f\u0020\u006e\u006f\u006e\u002d\u0073\u0074\u0072\u0065a\u006d\u0020\u006f\u0062\u006a\u0065\u0063\u0074\u0021"); return nil ,_e .New ("\u0058\u0052\u0065\u0066\u0053\u0074\u006d\u0020\u0070\u006f\u0069\u006e\u0074i\u006e\u0067\u0020\u0074\u006f\u0020a\u0020\u006e\u006f\u006e\u002d\u0073\u0074\u0072\u0065\u0061\u006d\u0020\u006fb\u006a\u0065\u0063\u0074");};_cdgc :=_afec .PdfObjectDictionary ; _dgfg ,_aaega :=_afec .PdfObjectDictionary .Get ("\u0053\u0069\u007a\u0065").(*PdfObjectInteger );if !_aaega {_fc .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a \u004d\u0069\u0073\u0073\u0069\u006e\u0067\u0020\u0073\u0069\u007a\u0065\u0020f\u0072\u006f\u006d\u0020\u0078\u0072\u0065f\u0020\u0073\u0074\u006d"); return nil ,_e .New ("\u006d\u0069\u0073\u0073\u0069\u006e\u0067\u0020\u0053\u0069\u007ae\u0020\u0066\u0072\u006f\u006d\u0020\u0078\u0072\u0065\u0066 \u0073\u0074\u006d");};if int64 (*_dgfg )> 8388607{_fc .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0078\u0072\u0065\u0066\u0020\u0053\u0069\u007a\u0065\u0020\u0065x\u0063\u0065\u0065\u0064\u0065\u0064\u0020l\u0069\u006d\u0069\u0074\u002c\u0020\u006f\u0076\u0065\u0072\u00208\u0033\u0038\u0038\u0036\u0030\u0037\u0020\u0028\u0025\u0064\u0029",*_dgfg ); return nil ,_e .New ("\u0072\u0061\u006e\u0067\u0065\u0020\u0063\u0068\u0065\u0063\u006b\u0020e\u0072\u0072\u006f\u0072");};_dacc :=_afec .PdfObjectDictionary .Get ("\u0057");_bbbdb ,_aaega :=_dacc .(*PdfObjectArray );if !_aaega {return nil ,_e .New ("\u0069n\u0076\u0061\u006c\u0069\u0064\u0020\u0057\u0020\u0069\u006e\u0020x\u0072\u0065\u0066\u0020\u0073\u0074\u0072\u0065\u0061\u006d"); };_fdfe :=_bbbdb .Len ();if _fdfe !=3{_fc .Log .Debug ("\u0045\u0052R\u004f\u0052\u003a\u0020\u0055\u006e\u0073\u0075\u0070\u0070\u006f\u0072\u0074\u0065\u0064\u0020\u0078\u0072\u0065\u0066\u0020\u0073\u0074\u006d\u0020\u0028\u006c\u0065\u006e\u0028\u0057\u0029\u0020\u0021\u003d\u0020\u0033\u0020\u002d\u0020\u0025\u0064\u0029",_fdfe ); return nil ,_e .New ("\u0075\u006e\u0073\u0075\u0070\u0070\u006f\u0072\u0074\u0065\u0064\u0020\u0078\u0072\u0065f\u0020s\u0074\u006d\u0020\u006c\u0065\u006e\u0028\u0057\u0029\u0020\u0021\u003d\u0020\u0033");};var _caee []int64 ;for _fgdae :=0;_fgdae < 3; _fgdae ++{_abbg ,_gccd :=GetInt (_bbbdb .Get (_fgdae ));if !_gccd {return nil ,_e .New ("i\u006e\u0076\u0061\u006cid\u0020w\u0020\u006f\u0062\u006a\u0065c\u0074\u0020\u0074\u0079\u0070\u0065");};_caee =append (_caee ,int64 (*_abbg ));};_badd ,_dfbe :=DecodeStream (_afec ); if _dfbe !=nil {_fc .Log .Debug ("\u0045\u0052\u0052OR\u003a\u0020\u0055\u006e\u0061\u0062\u006c\u0065\u0020t\u006f \u0064e\u0063o\u0064\u0065\u0020\u0073\u0074\u0072\u0065\u0061\u006d\u003a\u0020\u0025\u0076",_dfbe );return nil ,_dfbe ;};_fabc :=int (_caee [0]); _gacae :=int (_caee [0]+_caee [1]);_dgefc :=int (_caee [0]+_caee [1]+_caee [2]);_bggg :=int (_caee [0]+_caee [1]+_caee [2]);if _fabc < 0||_gacae < 0||_dgefc < 0{_fc .Log .Debug ("\u0045\u0072\u0072\u006fr\u0020\u0073\u0020\u0076\u0061\u006c\u0075\u0065\u0020\u003c \u0030 \u0028\u0025\u0064\u002c\u0025\u0064\u002c%\u0064\u0029",_fabc ,_gacae ,_dgefc ); return nil ,_e .New ("\u0072\u0061\u006e\u0067\u0065\u0020\u0063\u0068\u0065\u0063\u006b\u0020e\u0072\u0072\u006f\u0072");};if _bggg ==0{_fc .Log .Debug ("\u004e\u006f\u0020\u0078\u0072\u0065\u0066\u0020\u006f\u0062\u006a\u0065\u0063t\u0073\u0020\u0069\u006e\u0020\u0073t\u0072\u0065\u0061\u006d\u0020\u0028\u0064\u0065\u006c\u0074\u0061\u0062\u0020=\u003d\u0020\u0030\u0029"); return _cdgc ,nil ;};_acbgf :=len (_badd )/_bggg ;_cdae :=0;_gbc :=_afec .PdfObjectDictionary .Get ("\u0049\u006e\u0064e\u0078");var _abcc []int ;if _gbc !=nil {_fc .Log .Trace ("\u0049n\u0064\u0065\u0078\u003a\u0020\u0025b",_gbc );_gega ,_afga :=_gbc .(*PdfObjectArray ); if !_afga {_fc .Log .Debug ("\u0049\u006e\u0076\u0061\u006ci\u0064\u0020\u0049\u006e\u0064\u0065\u0078\u0020\u006f\u0062\u006a\u0065\u0063t\u0020\u0028\u0073\u0068\u006f\u0075\u006c\u0064\u0020\u0062\u0065\u0020\u0061\u006e\u0020\u0061\u0072\u0072\u0061\u0079\u0029"); return nil ,_e .New ("i\u006ev\u0061\u006c\u0069\u0064\u0020\u0049\u006e\u0064e\u0078\u0020\u006f\u0062je\u0063\u0074");};if _gega .Len ()%2!=0{_fc .Log .Debug ("\u0057\u0041\u0052\u004eI\u004e\u0047\u0020\u0046\u0061\u0069\u006c\u0075\u0072e\u0020\u006c\u006f\u0061\u0064\u0069\u006e\u0067\u0020\u0078\u0072\u0065\u0066\u0020\u0073\u0074\u006d\u0020i\u006e\u0064\u0065\u0078\u0020n\u006f\u0074\u0020\u006d\u0075\u006c\u0074\u0069\u0070\u006c\u0065\u0020\u006f\u0066\u0020\u0032\u002e"); return nil ,_e .New ("\u0072\u0061\u006e\u0067\u0065\u0020\u0063\u0068\u0065\u0063\u006b\u0020e\u0072\u0072\u006f\u0072");};_cdae =0;_faegc ,_fcgcf :=_gega .ToIntegerArray ();if _fcgcf !=nil {_fc .Log .Debug ("\u0045\u0072\u0072\u006f\u0072 \u0067\u0065\u0074\u0074\u0069\u006e\u0067\u0020\u0069\u006e\u0064\u0065\u0078 \u0061\u0072\u0072\u0061\u0079\u0020\u0061\u0073\u0020\u0069\u006e\u0074\u0065\u0067\u0065\u0072\u0073\u003a\u0020\u0025\u0076",_fcgcf ); return nil ,_fcgcf ;};for _bcf :=0;_bcf < len (_faegc );_bcf +=2{_fedaa :=_faegc [_bcf ];_agdfd :=_faegc [_bcf +1];for _egaae :=0;_egaae < _agdfd ;_egaae ++{_abcc =append (_abcc ,_fedaa +_egaae );};_cdae +=_agdfd ;};}else {for _cgac :=0;_cgac < int (*_dgfg ); _cgac ++{_abcc =append (_abcc ,_cgac );};_cdae =int (*_dgfg );};if _acbgf ==_cdae +1{_fc .Log .Debug ("\u0049n\u0063\u006f\u006d\u0070ati\u0062\u0069\u006c\u0069t\u0079\u003a\u0020\u0049\u006e\u0064\u0065\u0078\u0020\u006di\u0073\u0073\u0069\u006e\u0067\u0020\u0063\u006f\u0076\u0065\u0072\u0061\u0067\u0065\u0020\u006f\u0066\u0020\u0031\u0020\u006f\u0062\u006ae\u0063\u0074\u0020\u002d\u0020\u0061\u0070\u0070en\u0064\u0069\u006eg\u0020\u006f\u006e\u0065\u0020-\u0020M\u0061\u0079\u0020\u006c\u0065\u0061\u0064\u0020\u0074o\u0020\u0070\u0072\u006f\u0062\u006c\u0065\u006d\u0073"); _aade :=_cdae -1;for _ ,_efgcc :=range _abcc {if _efgcc > _aade {_aade =_efgcc ;};};_abcc =append (_abcc ,_aade +1);_cdae ++;};if _acbgf !=len (_abcc ){_fc .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020x\u0072\u0065\u0066 \u0073\u0074\u006d:\u0020\u006eu\u006d\u0020\u0065\u006e\u0074\u0072i\u0065s \u0021\u003d\u0020\u006c\u0065\u006e\u0028\u0069\u006e\u0064\u0069\u0063\u0065\u0073\u0029\u0020\u0028\u0025\u0064\u0020\u0021\u003d\u0020\u0025\u0064\u0029",_acbgf ,len (_abcc )); return nil ,_e .New ("\u0078\u0072ef\u0020\u0073\u0074m\u0020\u006e\u0075\u006d en\u0074ri\u0065\u0073\u0020\u0021\u003d\u0020\u006cen\u0028\u0069\u006e\u0064\u0069\u0063\u0065s\u0029");};_fc .Log .Trace ("\u004f\u0062j\u0065\u0063\u0074s\u0020\u0063\u006f\u0075\u006e\u0074\u0020\u0025\u0064",_cdae ); _fc .Log .Trace ("\u0049\u006e\u0064i\u0063\u0065\u0073\u003a\u0020\u0025\u0020\u0064",_abcc );_fdfd :=func (_ffgc []byte )int64 {var _aacd int64 ;for _gfge :=0;_gfge < len (_ffgc );_gfge ++{_aacd +=int64 (_ffgc [_gfge ])*(1<=len (_abcc ){_fc .Log .Debug ("X\u0052\u0065\u0066\u0020\u0073\u0074\u0072\u0065\u0061\u006d\u0020\u002d\u0020\u0054\u0072\u0079\u0069\u006e\u0067\u0020\u0074\u006f\u0020\u0061\u0063\u0063e\u0073s\u0020\u0069\u006e\u0064e\u0078\u0020o\u0075\u0074\u0020\u006f\u0066\u0020\u0062\u006f\u0075\u006e\u0064\u0073\u0020\u002d\u0020\u0062\u0072\u0065\u0061\u006b\u0069\u006e\u0067"); break ;};_aeffb :=_abcc [_adca ];_adca ++;_fc .Log .Trace ("%\u0064\u002e\u0020\u0070\u0031\u003a\u0020\u0025\u0020\u0078",_aeffb ,_adgg );_fc .Log .Trace ("%\u0064\u002e\u0020\u0070\u0032\u003a\u0020\u0025\u0020\u0078",_aeffb ,_abea );_fc .Log .Trace ("%\u0064\u002e\u0020\u0070\u0033\u003a\u0020\u0025\u0020\u0078",_aeffb ,_fdag ); _fc .Log .Trace ("\u0025d\u002e \u0078\u0072\u0065\u0066\u003a \u0025\u0064 \u0025\u0064\u0020\u0025\u0064",_aeffb ,_gbddb ,_efb ,_dcbc );if _gbddb ==0{_fc .Log .Trace ("-\u0020\u0046\u0072\u0065\u0065\u0020o\u0062\u006a\u0065\u0063\u0074\u0020-\u0020\u0063\u0061\u006e\u0020\u0070\u0072o\u0062\u0061\u0062\u006c\u0079\u0020\u0069\u0067\u006e\u006fr\u0065"); }else if _gbddb ==1{_fc .Log .Trace ("\u002d\u0020I\u006e\u0020\u0075\u0073e\u0020\u002d \u0075\u006e\u0063\u006f\u006d\u0070\u0072\u0065s\u0073\u0065\u0064\u0020\u0076\u0069\u0061\u0020\u006f\u0066\u0066\u0073e\u0074\u0020\u0025\u0062",_abea );if _efb ==_acab {_fc .Log .Debug ("\u0055\u0070d\u0061\u0074\u0069\u006e\u0067\u0020\u006f\u0062\u006a\u0065\u0063\u0074\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020\u0066\u006f\u0072\u0020\u0058\u0052\u0065\u0066\u0020\u0074\u0061\u0062\u006c\u0065\u0020\u0025\u0064\u0020\u002d\u003e\u0020\u0025\u0064",_aeffb ,_afec .ObjectNumber ); _aeffb =int (_afec .ObjectNumber );};if _bafcf ,_dfcg :=_bfgaf ._fgaf .ObjectMap [_aeffb ];!_dfcg ||int (_dcbc )> _bafcf .Generation {_cfba :=XrefObject {ObjectNumber :_aeffb ,XType :XrefTypeTableEntry ,Offset :_efb ,Generation :int (_dcbc )};_bfgaf ._fgaf .ObjectMap [_aeffb ]=_cfba ; };}else if _gbddb ==2{_fc .Log .Trace ("\u002d\u0020\u0049\u006e \u0075\u0073\u0065\u0020\u002d\u0020\u0063\u006f\u006d\u0070r\u0065s\u0073\u0065\u0064\u0020\u006f\u0062\u006ae\u0063\u0074");if _ ,_gfae :=_bfgaf ._fgaf .ObjectMap [_aeffb ];!_gfae {_ggga :=XrefObject {ObjectNumber :_aeffb ,XType :XrefTypeObjectStream ,OsObjNumber :int (_efb ),OsObjIndex :int (_dcbc )}; _bfgaf ._fgaf .ObjectMap [_aeffb ]=_ggga ;_fc .Log .Trace ("\u0065\u006e\u0074\u0072\u0079\u003a\u0020\u0025\u002b\u0076",_ggga );};}else {_fc .Log .Debug ("\u0045\u0052\u0052\u004f\u0052:\u0020\u002d\u002d\u002d\u002d\u002d\u002d\u002d\u002d\u0049\u004e\u0056\u0041L\u0049\u0044\u0020\u0054\u0059\u0050\u0045\u0020\u0058\u0072\u0065\u0066\u0053\u0074\u006d\u0020\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u003f\u002d\u002d\u002d\u002d\u002d\u002d-"); continue ;};};if _bfgaf ._dffd ==nil {_fecae :=XrefTypeObjectStream ;_bfgaf ._dffd =&_fecae ;};return _cdgc ,nil ;}; // WriteString outputs the object as it is to be written to file. func (_ggdgb *PdfObjectStream )WriteString ()string {var _cbfb _de .Builder ;_cbfb .WriteString (_ef .FormatInt (_ggdgb .ObjectNumber ,10));_cbfb .WriteString ("\u0020\u0030\u0020\u0052");return _cbfb .String ();}; // ResolveReference resolves reference if `o` is a *PdfObjectReference and returns the object referenced to. // Otherwise returns back `o`. func ResolveReference (obj PdfObject )PdfObject {if _efdf ,_abcef :=obj .(*PdfObjectReference );_abcef {return _efdf .Resolve ();};return obj ;};var _dgce =[]byte ("\u0030\u0031\u0032\u003345\u0036\u0037\u0038\u0039\u0061\u0062\u0063\u0064\u0065\u0066\u0041\u0042\u0043\u0044E\u0046"); var _ccf =_d .MustCompile ("\u005e\u005b\u005c\u002b\u002d\u002e\u005d\u002a\u0028\u005b\u0030\u002d9\u002e\u005d\u002b\u0029");func (_cgegf *PdfParser )parseXref ()(*PdfObjectDictionary ,error ){const _eeb =20;_egcc ,_ :=_cgegf ._dcfe .Peek (_eeb );for _babf :=0; _babf < 2;_babf ++{if _cgegf ._cbce ==0{_cgegf ._cbce =_cgegf .GetFileOffset ();};if _ddfe .Match (_egcc ){_fc .Log .Trace ("\u0078\u0072e\u0066\u0020\u0070\u006f\u0069\u006e\u0074\u0073\u0020\u0074\u006f\u0020\u0061\u006e\u0020\u006f\u0062\u006a\u0065\u0063\u0074\u002e\u0020\u0050\u0072\u006f\u0062\u0061\u0062\u006c\u0079\u0020\u0078\u0072\u0065\u0066\u0020\u006f\u0062\u006a\u0065\u0063\u0074"); _fc .Log .Debug ("\u0073t\u0061r\u0074\u0069\u006e\u0067\u0020w\u0069\u0074h\u0020\u0022\u0025\u0073\u0022",string (_egcc ));return _cgegf .parseXrefStream (nil );};if _bgag .Match (_egcc ){_fc .Log .Trace ("\u0053\u0074\u0061\u006ed\u0061\u0072\u0064\u0020\u0078\u0072\u0065\u0066\u0020\u0073e\u0063t\u0069\u006f\u006e\u0020\u0074\u0061\u0062l\u0065\u0021"); return _cgegf .parseXrefTable ();};_fgee :=_cgegf .GetFileOffset ();if _cgegf ._cbce ==0{_cgegf ._cbce =_fgee ;};_cgegf .SetFileOffset (_fgee -_eeb );defer _cgegf .SetFileOffset (_fgee );_gfgg ,_ :=_cgegf ._dcfe .Peek (_eeb );_egcc =append (_gfgg ,_egcc ...); };_fc .Log .Debug ("\u0057\u0061\u0072\u006e\u0069\u006e\u0067\u003a\u0020\u0055\u006e\u0061\u0062\u006c\u0065\u0020\u0074\u006f \u0066\u0069\u006e\u0064\u0020\u0078\u0072\u0065f\u0020\u0074\u0061\u0062\u006c\u0065\u0020\u006fr\u0020\u0073\u0074\u0072\u0065\u0061\u006d.\u0020\u0052\u0065\u0070\u0061i\u0072\u0020\u0061\u0074\u0074e\u006d\u0070\u0074\u0065\u0064\u003a\u0020\u004c\u006f\u006f\u006b\u0069\u006e\u0067\u0020\u0066\u006f\u0072\u0020\u0065\u0061\u0072\u006c\u0069\u0065\u0073\u0074\u0020x\u0072\u0065\u0066\u0020\u0066\u0072\u006f\u006d\u0020\u0062\u006f\u0074to\u006d\u002e"); if _aefb :=_cgegf .repairSeekXrefMarker ();_aefb !=nil {_fc .Log .Debug ("\u0052e\u0070a\u0069\u0072\u0020\u0066\u0061i\u006c\u0065d\u0020\u002d\u0020\u0025\u0076",_aefb );return nil ,_aefb ;};return _cgegf .parseXrefTable ();}; // PdfObjectArray represents the primitive PDF array object. type PdfObjectArray struct{_cebff []PdfObject }; // DecodeStream decodes a multi-encoded stream by passing it through the // DecodeStream method of the underlying encoders. func (_bbgc *MultiEncoder )DecodeStream (streamObj *PdfObjectStream )([]byte ,error ){return _bbgc .DecodeBytes (streamObj .Stream );};func (_ebfea *PdfParser )inspect ()(map[string ]int ,error ){_fc .Log .Trace ("\u002d\u002d\u002d\u002d\u002d\u002d\u002d\u002d\u0049\u004e\u0053P\u0045\u0043\u0054\u0020\u002d\u002d\u002d\u002d\u002d\u002d-\u002d\u002d\u002d"); _fc .Log .Trace ("X\u0072\u0065\u0066\u0020\u0074\u0061\u0062\u006c\u0065\u003a");_cbgb :=map[string ]int {};_baag :=0;_eecc :=0;var _geccc []int ;for _bceec :=range _ebfea ._fgaf .ObjectMap {_geccc =append (_geccc ,_bceec );};_f .Ints (_geccc );_bggd :=0; for _ ,_ggec :=range _geccc {_ebgb :=_ebfea ._fgaf .ObjectMap [_ggec ];if _ebgb .ObjectNumber ==0{continue ;};_baag ++;_fc .Log .Trace ("\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d");_fc .Log .Trace ("\u004c\u006f\u006f\u006bi\u006e\u0067\u0020\u0075\u0070\u0020\u006f\u0062\u006a\u0065c\u0074 \u006e\u0075\u006d\u0062\u0065\u0072\u003a \u0025\u0064",_ebgb .ObjectNumber ); _dfgg ,_ddec :=_ebfea .LookupByNumber (_ebgb .ObjectNumber );if _ddec !=nil {_fc .Log .Trace ("\u0045\u0052\u0052\u004f\u0052\u003a \u0046\u0061\u0069\u006c\u0020\u0074\u006f\u0020\u006c\u006f\u006f\u006b\u0075p\u0020\u006f\u0062\u006a\u0020\u0025\u0064 \u0028\u0025\u0073\u0029",_ebgb .ObjectNumber ,_ddec ); _eecc ++;continue ;};_fc .Log .Trace ("\u006fb\u006a\u003a\u0020\u0025\u0073",_dfgg );_fadfe ,_fffg :=_dfgg .(*PdfIndirectObject );if _fffg {_fc .Log .Trace ("\u0049N\u0044 \u004f\u004f\u0042\u004a\u0020\u0025\u0064\u003a\u0020\u0025\u0073",_ebgb .ObjectNumber ,_fadfe ); _fagf ,_fgefb :=_fadfe .PdfObject .(*PdfObjectDictionary );if _fgefb {if _adadfe ,_bgae :=_fagf .Get ("\u0054\u0079\u0070\u0065").(*PdfObjectName );_bgae {_agdfe :=string (*_adadfe );_fc .Log .Trace ("\u002d\u002d\u002d\u003e\u0020\u004f\u0062\u006a\u0020\u0074\u0079\u0070e\u003a\u0020\u0025\u0073",_agdfe ); _ ,_bdfe :=_cbgb [_agdfe ];if _bdfe {_cbgb [_agdfe ]++;}else {_cbgb [_agdfe ]=1;};}else if _fagdg ,_gegd :=_fagf .Get ("\u0053u\u0062\u0074\u0079\u0070\u0065").(*PdfObjectName );_gegd {_gfbg :=string (*_fagdg );_fc .Log .Trace ("-\u002d-\u003e\u0020\u004f\u0062\u006a\u0020\u0073\u0075b\u0074\u0079\u0070\u0065: \u0025\u0073",_gfbg ); _ ,_afde :=_cbgb [_gfbg ];if _afde {_cbgb [_gfbg ]++;}else {_cbgb [_gfbg ]=1;};};if _cdgac ,_dbbc :=_fagf .Get ("\u0053").(*PdfObjectName );_dbbc &&*_cdgac =="\u004a\u0061\u0076\u0061\u0053\u0063\u0072\u0069\u0070\u0074"{_ ,_bgaf :=_cbgb ["\u004a\u0061\u0076\u0061\u0053\u0063\u0072\u0069\u0070\u0074"]; if _bgaf {_cbgb ["\u004a\u0061\u0076\u0061\u0053\u0063\u0072\u0069\u0070\u0074"]++;}else {_cbgb ["\u004a\u0061\u0076\u0061\u0053\u0063\u0072\u0069\u0070\u0074"]=1;};};};}else if _bgfg ,_bdba :=_dfgg .(*PdfObjectStream );_bdba {if _dbdb ,_dbfce :=_bgfg .PdfObjectDictionary .Get ("\u0054\u0079\u0070\u0065").(*PdfObjectName ); _dbfce {_fc .Log .Trace ("\u002d\u002d\u003e\u0020\u0053\u0074\u0072\u0065\u0061\u006d\u0020o\u0062\u006a\u0065\u0063\u0074\u0020\u0074\u0079\u0070\u0065:\u0020\u0025\u0073",*_dbdb );_dedbf :=string (*_dbdb );_cbgb [_dedbf ]++;};}else {_fbef ,_cfgdf :=_dfgg .(*PdfObjectDictionary ); if _cfgdf {_bcfbf ,_bdcc :=_fbef .Get ("\u0054\u0079\u0070\u0065").(*PdfObjectName );if _bdcc {_gfeb :=string (*_bcfbf );_fc .Log .Trace ("\u002d-\u002d \u006f\u0062\u006a\u0020\u0074\u0079\u0070\u0065\u0020\u0025\u0073",_gfeb );_cbgb [_gfeb ]++;};};_fc .Log .Trace ("\u0044\u0049\u0052\u0045\u0043\u0054\u0020\u004f\u0042\u004a\u0020\u0025d\u003a\u0020\u0025\u0073",_ebgb .ObjectNumber ,_dfgg ); };_bggd ++;};_fc .Log .Trace ("\u002d\u002d\u002d\u002d\u002d\u002d\u002d\u002d\u0045\u004fF\u0020\u0049\u004e\u0053\u0050\u0045\u0043T\u0020\u002d\u002d\u002d\u002d\u002d\u002d\u002d\u002d\u002d\u002d");_fc .Log .Trace ("\u003d=\u003d\u003d\u003d\u003d\u003d"); _fc .Log .Trace ("\u004f\u0062j\u0065\u0063\u0074 \u0063\u006f\u0075\u006e\u0074\u003a\u0020\u0025\u0064",_baag );_fc .Log .Trace ("\u0046\u0061\u0069\u006c\u0065\u0064\u0020\u006c\u006f\u006f\u006b\u0075p\u003a\u0020\u0025\u0064",_eecc );for _dfbea ,_gccc :=range _cbgb {_fc .Log .Trace ("\u0025\u0073\u003a\u0020\u0025\u0064",_dfbea ,_gccc ); };_fc .Log .Trace ("\u003d=\u003d\u003d\u003d\u003d\u003d");if len (_ebfea ._fgaf .ObjectMap )< 1{_fc .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0054\u0068\u0069\u0073 \u0064\u006f\u0063\u0075\u006d\u0065\u006e\u0074 \u0069s\u0020\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0028\u0078\u0072\u0065\u0066\u0020\u0074\u0061\u0062l\u0065\u0020\u006d\u0069\u0073\u0073\u0069\u006e\u0067\u0021\u0029"); return nil ,_g .Errorf ("\u0069\u006ev\u0061\u006c\u0069\u0064 \u0064\u006fc\u0075\u006d\u0065\u006e\u0074\u0020\u0028\u0078r\u0065\u0066\u0020\u0074\u0061\u0062\u006c\u0065\u0020\u006d\u0069\u0073s\u0069\u006e\u0067\u0029");};_fgeee ,_gfaea :=_cbgb ["\u0046\u006f\u006e\u0074"]; if !_gfaea ||_fgeee < 2{_fc .Log .Trace ("\u0054\u0068\u0069s \u0064\u006f\u0063\u0075\u006d\u0065\u006e\u0074\u0020i\u0073 \u0070r\u006fb\u0061\u0062\u006c\u0079\u0020\u0073\u0063\u0061\u006e\u006e\u0065\u0064\u0021");}else {_fc .Log .Trace ("\u0054\u0068\u0069\u0073\u0020\u0064\u006f\u0063\u0075\u006d\u0065\u006e\u0074\u0020\u0069\u0073\u0020\u0076\u0061\u006c\u0069\u0064\u0020\u0066o\u0072\u0020\u0065\u0078\u0074r\u0061\u0063t\u0069\u006f\u006e\u0021"); };return _cbgb ,nil ;}; // MakeNull creates an PdfObjectNull. func MakeNull ()*PdfObjectNull {_ecfc :=PdfObjectNull {};return &_ecfc }; // Set sets the dictionary's key -> val mapping entry. Overwrites if key already set. func (_aadf *PdfObjectDictionary )Set (key PdfObjectName ,val PdfObject ){_aadf .setWithLock (key ,val ,true );};const _eaee =10;func (_efcd *PdfParser )parseHexString ()(*PdfObjectString ,error ){_efcd ._dcfe .ReadByte ();var _fadfb _fe .Buffer ;for {_gdgce ,_gbga :=_efcd ._dcfe .Peek (1); if _gbga !=nil {return MakeString (""),_gbga ;};if _gdgce [0]=='>'{_efcd ._dcfe .ReadByte ();break ;};_fggg ,_ :=_efcd ._dcfe .ReadByte ();if _efcd ._egaa {if _fe .IndexByte (_dgce ,_fggg )==-1{_efcd ._adfgf ._ffcg =true ;};};if !IsWhiteSpace (_fggg ){_fadfb .WriteByte (_fggg ); };};if _fadfb .Len ()%2==1{_efcd ._adfgf ._bee =true ;_fadfb .WriteRune ('0');};_ffeb ,_ :=_bae .DecodeString (_fadfb .String ());return MakeHexString (string (_ffeb )),nil ;}; // IsEncrypted checks if the document is encrypted. A bool flag is returned indicating the result. // First time when called, will check if the Encrypt dictionary is accessible through the trailer dictionary. // If encrypted, prepares a crypt datastructure which can be used to authenticate and decrypt the document. // On failure, an error is returned. func (_dddc *PdfParser )IsEncrypted ()(bool ,error ){if _dddc ._agga !=nil {return true ,nil ;}else if _dddc ._affd ==nil {return false ,nil ;};_fc .Log .Trace ("\u0043\u0068\u0065c\u006b\u0069\u006e\u0067 \u0065\u006e\u0063\u0072\u0079\u0070\u0074i\u006f\u006e\u0020\u0064\u0069\u0063\u0074\u0069\u006f\u006e\u0061\u0072\u0079\u0021"); _fcfa :=_dddc ._affd .Get ("\u0045n\u0063\u0072\u0079\u0070\u0074");if _fcfa ==nil {return false ,nil ;};_fc .Log .Trace ("\u0049\u0073\u0020\u0065\u006e\u0063\u0072\u0079\u0070\u0074\u0065\u0064\u0021");var (_eaegd *PdfObjectDictionary ;);switch _cbfe :=_fcfa .(type ){case *PdfObjectDictionary :_eaegd =_cbfe ; case *PdfObjectReference :_fc .Log .Trace ("\u0030\u003a\u0020\u004c\u006f\u006f\u006b\u0020\u0075\u0070\u0020\u0072e\u0066\u0020\u0025\u0071",_cbfe );_abbb ,_gbfg :=_dddc .LookupByReference (*_cbfe );_fc .Log .Trace ("\u0031\u003a\u0020%\u0071",_abbb ); if _gbfg !=nil {return false ,_gbfg ;};_ggee ,_adfbg :=_abbb .(*PdfIndirectObject );if !_adfbg {_fc .Log .Debug ("E\u006e\u0063\u0072\u0079\u0070\u0074\u0069\u006f\u006e\u0020\u006f\u0062\u006a\u0065\u0063\u0074\u0020\u006eo\u0074\u0020\u0061\u006e\u0020\u0069\u006e\u0064\u0069\u0072ec\u0074\u0020\u006fb\u006ae\u0063\u0074"); return false ,_e .New ("\u0074\u0079p\u0065\u0020\u0063h\u0065\u0063\u006b\u0020\u0065\u0072\u0072\u006f\u0072");};_faea ,_adfbg :=_ggee .PdfObject .(*PdfObjectDictionary );_dddc ._fadb =_ggee ;_fc .Log .Trace ("\u0032\u003a\u0020%\u0071",_faea );if !_adfbg {return false ,_e .New ("\u0074\u0072a\u0069\u006c\u0065\u0072 \u0045\u006ec\u0072\u0079\u0070\u0074\u0020\u006f\u0062\u006ae\u0063\u0074\u0020\u006e\u006f\u006e\u0020\u0064\u0069\u0063\u0074\u0069o\u006e\u0061\u0072\u0079"); };_eaegd =_faea ;case *PdfObjectNull :_fc .Log .Debug ("\u0045\u006e\u0063\u0072\u0079\u0070\u0074 \u0069\u0073\u0020a\u0020\u006e\u0075l\u006c\u0020o\u0062\u006a\u0065\u0063\u0074\u002e \u0046il\u0065\u0020\u0073\u0068\u006f\u0075\u006c\u0064\u0020\u006e\u006f\u0074\u0020\u0062\u0065\u0020\u0065\u006e\u0063\u0072\u0079\u0070\u0074\u0065\u0064\u002e"); return false ,nil ;default:return false ,_g .Errorf ("u\u006es\u0075\u0070\u0070\u006f\u0072\u0074\u0065\u0064 \u0074\u0079\u0070\u0065: \u0025\u0054",_cbfe );};_abedg ,_eddcd :=PdfCryptNewDecrypt (_dddc ,_eaegd ,_dddc ._affd );if _eddcd !=nil {return false ,_eddcd ; };for _ ,_gdcab :=range []string {"\u0045n\u0063\u0072\u0079\u0070\u0074"}{_fgag :=_dddc ._affd .Get (PdfObjectName (_gdcab ));if _fgag ==nil {continue ;};switch _gceg :=_fgag .(type ){case *PdfObjectReference :_abedg ._ggg [int (_gceg .ObjectNumber )]=struct{}{}; case *PdfIndirectObject :_abedg ._abff [_gceg ]=true ;_abedg ._ggg [int (_gceg .ObjectNumber )]=struct{}{};};};_dddc ._agga =_abedg ;_fc .Log .Trace ("\u0043\u0072\u0079\u0070\u0074\u0065\u0072\u0020\u006f\u0062\u006a\u0065c\u0074\u0020\u0025\u0062",_abedg ); return true ,nil ;}; // DecodeStream decodes a JPX encoded stream and returns the result as a // slice of bytes. func (_eda *JPXEncoder )DecodeStream (streamObj *PdfObjectStream )([]byte ,error ){_fc .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u003a\u0020\u0041t\u0074\u0065\u006dpt\u0069\u006e\u0067\u0020\u0074\u006f \u0075\u0073\u0065\u0020\u0075\u006e\u0073\u0075\u0070\u0070\u006f\u0072\u0074\u0065\u0064 \u0065\u006e\u0063\u006f\u0064\u0069\u006e\u0067 \u0025\u0073",_eda .GetFilterName ()); return streamObj .Stream ,ErrNoJPXDecode ;}; // PdfObjectStreams represents the primitive PDF object streams. // 7.5.7 Object Streams (page 45). type PdfObjectStreams struct{PdfObjectReference ;_aggfea []PdfObject ;}; // GetFilterName returns the name of the encoding filter. func (_fdbg *ASCIIHexEncoder )GetFilterName ()string {return StreamEncodingFilterNameASCIIHex }; // MakeDecodeParams makes a new instance of an encoding dictionary based on // the current encoder settings. func (_fccc *ASCII85Encoder )MakeDecodeParams ()PdfObject {return nil };func (_bfbf *PdfParser )rebuildXrefTable ()error {_cgbdb :=XrefTable {};_cgbdb .ObjectMap =map[int ]XrefObject {};_ebbg :=make ([]int ,0,len (_bfbf ._fgaf .ObjectMap ));for _ddfg :=range _bfbf ._fgaf .ObjectMap {_ebbg =append (_ebbg ,_ddfg ); };_f .Ints (_ebbg );for _ ,_gbed :=range _ebbg {_dage :=_bfbf ._fgaf .ObjectMap [_gbed ];_ddbf ,_ ,_fddag :=_bfbf .lookupByNumberWrapper (_gbed ,false );if _fddag !=nil {_fc .Log .Debug ("\u0045\u0052RO\u0052\u003a\u0020U\u006e\u0061\u0062\u006ce t\u006f l\u006f\u006f\u006b\u0020\u0075\u0070\u0020ob\u006a\u0065\u0063\u0074\u0020\u0028\u0025s\u0029",_fddag ); _fc .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0058\u0072\u0065\u0066\u0020\u0074\u0061\u0062\u006c\u0065\u0020\u0063\u006fm\u0070\u006c\u0065\u0074\u0065\u006c\u0079\u0020\u0062\u0072\u006f\u006b\u0065\u006e\u0020\u002d\u0020\u0061\u0074\u0074\u0065\u006d\u0070\u0074\u0069\u006e\u0067\u0020\u0074\u006f \u0072\u0065\u0070\u0061\u0069r\u0020"); _cfgb ,_gbgb :=_bfbf .repairRebuildXrefsTopDown ();if _gbgb !=nil {_fc .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0046\u0061\u0069\u006c\u0065\u0064\u0020\u0078\u0072\u0065\u0066\u0020\u0072\u0065\u0062\u0075\u0069l\u0064\u0020\u0072\u0065\u0070a\u0069\u0072 \u0028\u0025\u0073\u0029",_gbgb ); return _gbgb ;};_bfbf ._fgaf =*_cfgb ;_fc .Log .Debug ("\u0052e\u0070\u0061\u0069\u0072e\u0064\u0020\u0078\u0072\u0065f\u0020t\u0061b\u006c\u0065\u0020\u0062\u0075\u0069\u006ct");return nil ;};_ebcf ,_eaeb ,_fddag :=_ece (_ddbf );if _fddag !=nil {return _fddag ; };_dage .ObjectNumber =int (_ebcf );_dage .Generation =int (_eaeb );_cgbdb .ObjectMap [int (_ebcf )]=_dage ;};_bfbf ._fgaf =_cgbdb ;_fc .Log .Debug ("N\u0065w\u0020\u0078\u0072\u0065\u0066\u0020\u0074\u0061b\u006c\u0065\u0020\u0062ui\u006c\u0074");_cga (_bfbf ._fgaf ); return nil ;}; // GetStringBytes is like GetStringVal except that it returns the string as a []byte. // It is for convenience. func GetStringBytes (obj PdfObject )(_ffdda []byte ,_ceddb bool ){_gead ,_ceddb :=TraceToDirectObject (obj ).(*PdfObjectString );if _ceddb {return _gead .Bytes (),true ;};return ;}; // DecodeBytes decodes a slice of ASCII encoded bytes and returns the result. func (_efdeb *ASCIIHexEncoder )DecodeBytes (encoded []byte )([]byte ,error ){_dae :=_fe .NewReader (encoded );var _dfea []byte ;for {_cbge ,_dgf :=_dae .ReadByte ();if _dgf !=nil {return nil ,_dgf ;};if _cbge =='>'{break ;};if IsWhiteSpace (_cbge ){continue ; };if (_cbge >='a'&&_cbge <='f')||(_cbge >='A'&&_cbge <='F')||(_cbge >='0'&&_cbge <='9'){_dfea =append (_dfea ,_cbge );}else {_fc .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0049\u006e\u0076\u0061\u006c\u0069d\u0020\u0061\u0073\u0063\u0069\u0069 \u0068\u0065\u0078\u0020\u0063\u0068\u0061\u0072\u0061\u0063\u0074\u0065\u0072 \u0028\u0025\u0063\u0029",_cbge ); return nil ,_g .Errorf ("\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0061\u0073\u0063\u0069\u0069\u0020\u0068e\u0078 \u0063\u0068\u0061\u0072\u0061\u0063\u0074\u0065\u0072\u0020\u0028\u0025\u0063\u0029",_cbge );};};if len (_dfea )%2==1{_dfea =append (_dfea ,'0'); };_fc .Log .Trace ("\u0049\u006e\u0062\u006f\u0075\u006e\u0064\u0020\u0025\u0073",_dfea );_cgbab :=make ([]byte ,_bae .DecodedLen (len (_dfea )));_ ,_efad :=_bae .Decode (_cgbab ,_dfea );if _efad !=nil {return nil ,_efad ;};return _cgbab ,nil ;}; // MakeStreamDict makes a new instance of an encoding dictionary for a stream object. // Has the Filter set and the DecodeParms. func (_bbde *LZWEncoder )MakeStreamDict ()*PdfObjectDictionary {_ceca :=MakeDict ();_ceca .Set ("\u0046\u0069\u006c\u0074\u0065\u0072",MakeName (_bbde .GetFilterName ()));_fgdf :=_bbde .MakeDecodeParams ();if _fgdf !=nil {_ceca .Set ("D\u0065\u0063\u006f\u0064\u0065\u0050\u0061\u0072\u006d\u0073",_fgdf ); };_ceca .Set ("E\u0061\u0072\u006c\u0079\u0043\u0068\u0061\u006e\u0067\u0065",MakeInteger (int64 (_bbde .EarlyChange )));return _ceca ;};func (_ffde *PdfParser )readComment ()(string ,error ){var _ggaff _fe .Buffer ;_ ,_aggf :=_ffde .skipSpaces ();if _aggf !=nil {return _ggaff .String (),_aggf ; };_agfff :=true ;for {_dcgf ,_cgecc :=_ffde ._dcfe .Peek (1);if _cgecc !=nil {_fc .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0025\u0073",_cgecc .Error ());return _ggaff .String (),_cgecc ;};if _agfff &&_dcgf [0]!='%'{return _ggaff .String (),_e .New ("c\u006f\u006d\u006d\u0065\u006e\u0074 \u0073\u0068\u006f\u0075\u006c\u0064\u0020\u0073\u0074a\u0072\u0074\u0020w\u0069t\u0068\u0020\u0025"); };_agfff =false ;if (_dcgf [0]!='\r')&&(_dcgf [0]!='\n'){_cdef ,_ :=_ffde ._dcfe .ReadByte ();_ggaff .WriteByte (_cdef );}else {break ;};};return _ggaff .String (),nil ;}; // MakeHexString creates an PdfObjectString from a string intended for output as a hexadecimal string. func MakeHexString (s string )*PdfObjectString {_acfg :=PdfObjectString {_bgfdf :s ,_gbddbe :true };return &_acfg ;}; // GetFilterName returns the names of the underlying encoding filters, // separated by spaces. // Note: This is just a string, should not be used in /Filter dictionary entry. Use GetFilterArray for that. // TODO(v4): Refactor to GetFilter() which can be used for /Filter (either Name or Array), this can be // renamed to String() as a pretty string to use in debugging etc. func (_cdde *MultiEncoder )GetFilterName ()string {_cfag :="";for _acbg ,_fbbc :=range _cdde ._fdec {_cfag +=_fbbc .GetFilterName ();if _acbg < len (_cdde ._fdec )-1{_cfag +="\u0020";};};return _cfag ;}; // PdfObjectNull represents the primitive PDF null object. type PdfObjectNull struct{};func (_gcae *PdfCrypt )checkAccessRights (_egf []byte )(bool ,_cg .Permissions ,error ){_ccab :=_gcae .securityHandler ();_cac ,_ecgg ,_dff :=_ccab .Authenticate (&_gcae ._fbe ,_egf );if _dff !=nil {return false ,0,_dff ;}else if _ecgg ==0||len (_cac )==0{return false ,0,nil ; };return true ,_ecgg ,nil ;}; // Get returns the PdfObject corresponding to the specified key. // Returns a nil value if the key is not set. func (_effe *PdfObjectDictionary )Get (key PdfObjectName )PdfObject {_effe ._cfcd .Lock ();defer _effe ._cfcd .Unlock ();_dcefd ,_agbg :=_effe ._fecf [key ];if !_agbg {return nil ;};return _dcefd ;};func (_ag *PdfParser )lookupByNumber (_ded int ,_bec bool )(PdfObject ,bool ,error ){_afdg ,_feg :=_ag .ObjCache [_ded ]; if _feg {_fc .Log .Trace ("\u0052\u0065\u0074\u0075\u0072\u006e\u0069\u006e\u0067\u0020\u0063a\u0063\u0068\u0065\u0064\u0020\u006f\u0062\u006a\u0065\u0063t\u0020\u0025\u0064",_ded );return _afdg ,false ,nil ;};if _ag ._aaaa ==nil {_ag ._aaaa =map[int ]bool {}; };if _ag ._aaaa [_ded ]{_fc .Log .Debug ("ER\u0052\u004f\u0052\u003a\u0020\u004c\u006fok\u0075\u0070\u0020\u006f\u0066\u0020\u0025\u0064\u0020\u0069\u0073\u0020\u0061\u006c\u0072e\u0061\u0064\u0079\u0020\u0069\u006e\u0020\u0070\u0072\u006f\u0067\u0072\u0065\u0073\u0073\u0020\u002d\u0020\u0072\u0065c\u0075\u0072\u0073\u0069\u0076\u0065 \u006c\u006f\u006f\u006b\u0075\u0070\u0020\u0061\u0074t\u0065m\u0070\u0074\u0020\u0062\u006c\u006f\u0063\u006b\u0065\u0064",_ded ); return nil ,false ,_e .New ("\u0072\u0065\u0063\u0075\u0072\u0073\u0069\u0076\u0065\u0020\u006c\u006f\u006f\u006b\u0075p\u0020a\u0074\u0074\u0065\u006d\u0070\u0074\u0020\u0062\u006c\u006f\u0063\u006b\u0065\u0064");};_ag ._aaaa [_ded ]=true ;defer delete (_ag ._aaaa ,_ded ); _gga ,_feg :=_ag ._fgaf .ObjectMap [_ded ];if !_feg {_fc .Log .Trace ("\u0055\u006e\u0061\u0062l\u0065\u0020\u0074\u006f\u0020\u006c\u006f\u0063\u0061t\u0065\u0020\u006f\u0062\u006a\u0065\u0063\u0074\u0020\u0069\u006e\u0020\u0078\u0072\u0065\u0066\u0073\u0021 \u002d\u0020\u0052\u0065\u0074u\u0072\u006e\u0069\u006e\u0067\u0020\u006e\u0075\u006c\u006c\u0020\u006f\u0062\u006a\u0065\u0063\u0074"); var _bc PdfObjectNull ;return &_bc ,false ,nil ;};_fc .Log .Trace ("L\u006fo\u006b\u0075\u0070\u0020\u006f\u0062\u006a\u0020n\u0075\u006d\u0062\u0065r \u0025\u0064",_ded );if _gga .XType ==XrefTypeTableEntry {_fc .Log .Trace ("\u0078r\u0065f\u006f\u0062\u006a\u0020\u006fb\u006a\u0020n\u0075\u006d\u0020\u0025\u0064",_gga .ObjectNumber ); _fc .Log .Trace ("\u0078\u0072\u0065\u0066\u006f\u0062\u006a\u0020\u0067e\u006e\u0020\u0025\u0064",_gga .Generation );_fc .Log .Trace ("\u0078\u0072\u0065\u0066\u006f\u0062\u006a\u0020\u006f\u0066\u0066\u0073e\u0074\u0020\u0025\u0064",_gga .Offset );_ag ._bcced .Seek (_gga .Offset ,_ae .SeekStart ); _ag ._dcfe =_eb .NewReader (_ag ._bcced );_bcd ,_ecf :=_ag .ParseIndirectObject ();if _ecf !=nil {_fc .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u0020\u0046\u0061\u0069\u006ce\u0064\u0020\u0072\u0065\u0061\u0064\u0069n\u0067\u0020\u0078\u0072\u0065\u0066\u0020\u0028\u0025\u0073\u0029",_ecf ); if _bec {_fc .Log .Debug ("\u0041\u0074t\u0065\u006d\u0070\u0074i\u006e\u0067 \u0074\u006f\u0020\u0072\u0065\u0070\u0061\u0069r\u0020\u0078\u0072\u0065\u0066\u0073\u0020\u0028\u0074\u006f\u0070\u0020d\u006f\u0077\u006e\u0029");_bab ,_cb :=_ag .repairRebuildXrefsTopDown (); if _cb !=nil {_fc .Log .Debug ("\u0045R\u0052\u004f\u0052\u0020\u0046\u0061\u0069\u006c\u0065\u0064\u0020r\u0065\u0070\u0061\u0069\u0072\u0020\u0028\u0025\u0073\u0029",_cb );return nil ,false ,_cb ;};_ag ._fgaf =*_bab ;return _ag .lookupByNumber (_ded ,false ); };return nil ,false ,_ecf ;};if _bec {_gbb ,_ ,_ :=_ece (_bcd );if int (_gbb )!=_ded {_fc .Log .Debug ("\u0049n\u0076\u0061\u006c\u0069d\u0020\u0078\u0072\u0065\u0066s\u003a \u0052e\u0062\u0075\u0069\u006c\u0064\u0069\u006eg");_dba :=_ag .rebuildXrefTable (); if _dba !=nil {return nil ,false ,_dba ;};_ag .ObjCache =objectCache {};return _ag .lookupByNumberWrapper (_ded ,false );};};_fc .Log .Trace ("\u0052\u0065\u0074\u0075\u0072\u006e\u0069\u006e\u0067\u0020\u006f\u0062\u006a");_ag .ObjCache [_ded ]=_bcd ; return _bcd ,false ,nil ;}else if _gga .XType ==XrefTypeObjectStream {_fc .Log .Trace ("\u0078r\u0065\u0066\u0020\u0066\u0072\u006f\u006d\u0020\u006f\u0062\u006ae\u0063\u0074\u0020\u0073\u0074\u0072\u0065\u0061\u006d\u0021");_fc .Log .Trace ("\u003e\u004c\u006f\u0061\u0064\u0020\u0076\u0069\u0061\u0020\u004f\u0053\u0021"); _fc .Log .Trace ("\u004f\u0062\u006a\u0065\u0063\u0074\u0020\u0073\u0074\u0072\u0065\u0061\u006d \u0061\u0076\u0061\u0069\u006c\u0061b\u006c\u0065\u0020\u0069\u006e\u0020\u006f\u0062\u006a\u0065\u0063\u0074\u0020%\u0064\u002f\u0025\u0064",_gga .OsObjNumber ,_gga .OsObjIndex ); if _gga .OsObjNumber ==_ded {_fc .Log .Debug ("E\u0052\u0052\u004f\u0052\u0020\u0043i\u0072\u0063\u0075\u006c\u0061\u0072\u0020\u0072\u0065f\u0065\u0072\u0065n\u0063e\u0021\u003f\u0021");return nil ,true ,_e .New ("\u0078\u0072\u0065f \u0063\u0069\u0072\u0063\u0075\u006c\u0061\u0072\u0020\u0072\u0065\u0066\u0065\u0072\u0065\u006e\u0063\u0065"); };if _ ,_eaf :=_ag ._fgaf .ObjectMap [_gga .OsObjNumber ];_eaf {_gdg ,_faf :=_ag .lookupObjectViaOS (_gga .OsObjNumber ,_ded );if _faf !=nil {_fc .Log .Debug ("\u0045R\u0052\u004f\u0052\u0020\u0052\u0065\u0074\u0075\u0072\u006e\u0069n\u0067\u0020\u0045\u0052\u0052\u0020\u0028\u0025\u0073\u0029",_faf ); return nil ,true ,_faf ;};_fc .Log .Trace ("\u003c\u004c\u006f\u0061\u0064\u0065\u0064\u0020\u0076i\u0061\u0020\u004f\u0053");_ag .ObjCache [_ded ]=_gdg ;if _ag ._agga !=nil {_ag ._agga ._abff [_gdg ]=true ;};return _gdg ,true ,nil ;};_fc .Log .Debug ("\u003f\u003f\u0020\u0042\u0065\u006c\u006f\u006eg\u0073\u0020\u0074o \u0061\u0020\u006e\u006f\u006e\u002dc\u0072\u006f\u0073\u0073\u0020\u0072\u0065\u0066\u0065\u0072\u0065\u006e\u0063\u0065\u0064 \u006f\u0062\u006a\u0065\u0063\u0074\u0020\u002e.\u002e\u0021"); return nil ,true ,_e .New ("\u006f\u0073\u0020\u0062\u0065\u006c\u006fn\u0067\u0073\u0020t\u006f\u0020\u0061\u0020n\u006f\u006e\u0020\u0063\u0072\u006f\u0073\u0073\u0020\u0072\u0065\u0066\u0065\u0072\u0065\u006e\u0063\u0065\u0064\u0020\u006f\u0062\u006a\u0065\u0063\u0074"); };return nil ,false ,_e .New ("\u0075\u006e\u006b\u006e\u006f\u0077\u006e\u0020\u0078\u0072\u0065\u0066 \u0074\u0079\u0070\u0065");};func (_bbcg *PdfParser )parseName ()(PdfObjectName ,error ){var _fbdg _fe .Buffer ;_fbca :=false ;for {_daac ,_cgbg :=_bbcg ._dcfe .Peek (1); if _cgbg ==_ae .EOF {break ;};if _cgbg !=nil {return PdfObjectName (_fbdg .String ()),_cgbg ;};if !_fbca {if _daac [0]=='/'{_fbca =true ;_bbcg ._dcfe .ReadByte ();}else if _daac [0]=='%'{_bbcg .readComment ();_bbcg .skipSpaces ();}else {_fc .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u0020N\u0061\u006d\u0065\u0020\u0073\u0074\u0061\u0072\u0074\u0069\u006e\u0067\u0020w\u0069\u0074\u0068\u0020\u0025\u0073\u0020(\u0025\u0020\u0078\u0029",_daac ,_daac ); return PdfObjectName (_fbdg .String ()),_g .Errorf ("\u0069n\u0076a\u006c\u0069\u0064\u0020\u006ea\u006d\u0065:\u0020\u0028\u0025\u0063\u0029",_daac [0]);};}else {if IsWhiteSpace (_daac [0]){break ;}else if (_daac [0]=='/')||(_daac [0]=='[')||(_daac [0]=='(')||(_daac [0]==']')||(_daac [0]=='<')||(_daac [0]=='>'){break ; }else if _daac [0]=='#'{_bbgce ,_fgbgd :=_bbcg ._dcfe .Peek (3);if _fgbgd !=nil {return PdfObjectName (_fbdg .String ()),_fgbgd ;};_cadg ,_fgbgd :=_bae .DecodeString (string (_bbgce [1:3]));if _fgbgd !=nil {_fc .Log .Debug ("\u0045\u0052\u0052\u004fR\u003a\u0020\u0049\u006ev\u0061\u006c\u0069d\u0020\u0068\u0065\u0078\u0020\u0066o\u006c\u006co\u0077\u0069\u006e\u0067 \u0027\u0023\u0027\u002c \u0063\u006f\u006e\u0074\u0069n\u0075\u0069\u006e\u0067\u0020\u0075\u0073i\u006e\u0067\u0020\u006c\u0069t\u0065\u0072\u0061\u006c\u0020\u002d\u0020\u004f\u0075t\u0070\u0075\u0074\u0020\u006d\u0061\u0079\u0020\u0062\u0065\u0020\u0069\u006e\u0063\u006f\u0072\u0072\u0065\u0063\u0074"); _fbdg .WriteByte ('#');_bbcg ._dcfe .Discard (1);continue ;};_bbcg ._dcfe .Discard (3);_fbdg .Write (_cadg );}else {_cgfb ,_ :=_bbcg ._dcfe .ReadByte ();_fbdg .WriteByte (_cgfb );};};};return PdfObjectName (_fbdg .String ()),nil ;}; // Decoded returns the PDFDocEncoding or UTF-16BE decoded string contents. // UTF-16BE is applied when the first two bytes are 0xFE, 0XFF, otherwise decoding of // PDFDocEncoding is performed. func (_gagba *PdfObjectString )Decoded ()string {if _gagba ==nil {return "";};_ecfdb :=[]byte (_gagba ._bgfdf );if len (_ecfdb )>=2&&_ecfdb [0]==0xFE&&_ecfdb [1]==0xFF{return _bge .UTF16ToString (_ecfdb [2:]);};return _bge .PDFDocEncodingToString (_ecfdb ); }; // GetFilterName returns the name of the encoding filter. func (_cbdb *DCTEncoder )GetFilterName ()string {return StreamEncodingFilterNameDCT };func (_gffc *PdfParser )xrefNextObjectOffset (_gcab int64 )int64 {_edcd :=int64 (0);if len (_gffc ._fgaf .ObjectMap )==0{return 0;};if len (_gffc ._fgaf ._aea )==0{_eece :=0; for _ ,_bdade :=range _gffc ._fgaf .ObjectMap {if _bdade .Offset > 0{_eece ++;};};if _eece ==0{return 0;};_gffc ._fgaf ._aea =make ([]XrefObject ,_eece );_ggff :=0;for _ ,_bdbcg :=range _gffc ._fgaf .ObjectMap {if _bdbcg .Offset > 0{_gffc ._fgaf ._aea [_ggff ]=_bdbcg ; _ggff ++;};};_f .Slice (_gffc ._fgaf ._aea ,func (_agaa ,_dcca int )bool {return _gffc ._fgaf ._aea [_agaa ].Offset < _gffc ._fgaf ._aea [_dcca ].Offset });};_acfaf :=_f .Search (len (_gffc ._fgaf ._aea ),func (_fefd int )bool {return _gffc ._fgaf ._aea [_fefd ].Offset >=_gcab }); if _acfaf < len (_gffc ._fgaf ._aea ){_edcd =_gffc ._fgaf ._aea [_acfaf ].Offset ;};return _edcd ;}; // IsOctalDigit checks if a character can be part of an octal digit string. func IsOctalDigit (c byte )bool {return '0'<=c &&c <='7'}; // EncodeBytes encodes slice of bytes into JBIG2 encoding format. // The input 'data' must be an image. In order to Decode it a user is responsible to // load the codec ('png', 'jpg'). // Returns jbig2 single page encoded document byte slice. The encoder uses DefaultPageSettings // to encode given image. func (_aegfb *JBIG2Encoder )EncodeBytes (data []byte )([]byte ,error ){const _cfb ="\u004aB\u0049\u0047\u0032\u0045\u006e\u0063\u006f\u0064\u0065\u0072\u002eE\u006e\u0063\u006f\u0064\u0065\u0042\u0079\u0074\u0065\u0073";if _aegfb .ColorComponents !=1||_aegfb .BitsPerComponent !=1{return nil ,_gd .Errorf (_cfb ,"\u0070\u0072\u006f\u0076\u0069\u0064\u0065\u0064\u0020i\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0069\u006e\u0070\u0075\u0074\u0020\u0069\u006d\u0061\u0067\u0065\u002e\u0020\u004a\u0042\u0049G\u0032\u0020E\u006e\u0063o\u0064\u0065\u0072\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020bi\u006e\u0061\u0072\u0079\u0020\u0069\u006d\u0061\u0067e\u0073\u0020\u0064\u0061\u0074\u0061"); };var (_ega *_gb .Bitmap ;_fgef error ;);_agcf :=(_aegfb .Width *_aegfb .Height )==len (data );if _agcf {_ega ,_fgef =_gb .NewWithUnpaddedData (_aegfb .Width ,_aegfb .Height ,data );}else {_ega ,_fgef =_gb .NewWithData (_aegfb .Width ,_aegfb .Height ,data ); };if _fgef !=nil {return nil ,_fgef ;};_edad :=_aegfb .DefaultPageSettings ;if _fgef =_edad .Validate ();_fgef !=nil {return nil ,_gd .Wrap (_fgef ,_cfb ,"");};if _aegfb ._aafa ==nil {_aegfb ._aafa =_af .InitEncodeDocument (_edad .FileMode );};switch _edad .Compression {case JB2Generic :if _fgef =_aegfb ._aafa .AddGenericPage (_ega ,_edad .DuplicatedLinesRemoval ); _fgef !=nil {return nil ,_gd .Wrap (_fgef ,_cfb ,"");};case JB2SymbolCorrelation :return nil ,_gd .Error (_cfb ,"s\u0079\u006d\u0062\u006f\u006c\u0020\u0063\u006f\u0072r\u0065\u006c\u0061\u0074\u0069\u006f\u006e e\u006e\u0063\u006f\u0064i\u006e\u0067\u0020\u006e\u006f\u0074\u0020\u0069\u006dpl\u0065\u006de\u006e\u0074\u0065\u0064\u0020\u0079\u0065\u0074"); case JB2SymbolRankHaus :return nil ,_gd .Error (_cfb ,"\u0073y\u006d\u0062o\u006c\u0020\u0072a\u006e\u006b\u0020\u0068\u0061\u0075\u0073 \u0065\u006e\u0063\u006f\u0064\u0069n\u0067\u0020\u006e\u006f\u0074\u0020\u0069\u006d\u0070\u006c\u0065m\u0065\u006e\u0074\u0065\u0064\u0020\u0079\u0065\u0074"); default:return nil ,_gd .Error (_cfb ,"\u0070\u0072\u006f\u0076i\u0064\u0065\u0064\u0020\u0069\u006e\u0076\u0061\u006c\u0069d\u0020c\u006f\u006d\u0070\u0072\u0065\u0073\u0073i\u006f\u006e");};return _aegfb .Encode ();};var _edea =_d .MustCompile ("\u0028\u005c\u0064\u002b\u0029\u005c\u0073\u002b\u0028\u005c\u0064+\u0029\u005c\u0073\u002b\u0028\u005b\u006e\u0066\u005d\u0029\\\u0073\u002a\u0024"); // MakeEncodedString creates a PdfObjectString with encoded content, which can be either // UTF-16BE or PDFDocEncoding depending on whether `utf16BE` is true or false respectively. func MakeEncodedString (s string ,utf16BE bool )*PdfObjectString {if utf16BE {var _baed _fe .Buffer ;_baed .Write ([]byte {0xFE,0xFF});_baed .WriteString (_bge .StringToUTF16 (s ));return &PdfObjectString {_bgfdf :_baed .String (),_gbddbe :true };};return &PdfObjectString {_bgfdf :string (_bge .StringToPDFDocEncoding (s )),_gbddbe :false }; };func (_becc *PdfParser )repairSeekXrefMarker ()error {_gacfe ,_ecegd :=_becc ._bcced .Seek (0,_ae .SeekEnd );if _ecegd !=nil {return _ecegd ;};_bbac :=_d .MustCompile ("\u005cs\u0078\u0072\u0065\u0066\u005c\u0073*");var _eaafa int64 ;var _egdb int64 =1000; for _eaafa < _gacfe {if _gacfe <=(_egdb +_eaafa ){_egdb =_gacfe -_eaafa ;};_ ,_aecc :=_becc ._bcced .Seek (-_eaafa -_egdb ,_ae .SeekEnd );if _aecc !=nil {return _aecc ;};_dfdc :=make ([]byte ,_egdb );_becc ._bcced .Read (_dfdc );_fc .Log .Trace ("\u004c\u006f\u006fki\u006e\u0067\u0020\u0066\u006f\u0072\u0020\u0078\u0072\u0065\u0066\u0020\u003a\u0020\u0022\u0025\u0073\u0022",string (_dfdc )); _fefb :=_bbac .FindAllStringIndex (string (_dfdc ),-1);if _fefb !=nil {_eeba :=_fefb [len (_fefb )-1];_fc .Log .Trace ("\u0049\u006e\u0064\u003a\u0020\u0025\u0020\u0064",_fefb );_becc ._bcced .Seek (-_eaafa -_egdb +int64 (_eeba [0]),_ae .SeekEnd );_becc ._dcfe =_eb .NewReader (_becc ._bcced ); for {_bfaa ,_gbdea :=_becc ._dcfe .Peek (1);if _gbdea !=nil {return _gbdea ;};_fc .Log .Trace ("\u0042\u003a\u0020\u0025\u0064\u0020\u0025\u0063",_bfaa [0],_bfaa [0]);if !IsWhiteSpace (_bfaa [0]){break ;};_becc ._dcfe .Discard (1);};return nil ;};_fc .Log .Debug ("\u0057\u0061\u0072\u006e\u0069\u006eg\u003a\u0020\u0045\u004f\u0046\u0020\u006d\u0061\u0072\u006b\u0065\u0072\u0020\u006e\u006f\u0074\u0020\u0066\u006f\u0075n\u0064\u0021\u0020\u002d\u0020\u0063\u006f\u006e\u0074\u0069\u006e\u0075\u0065\u0020s\u0065e\u006b\u0069\u006e\u0067"); _eaafa +=_egdb ;};_fc .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u003a\u0020\u0058\u0072\u0065\u0066\u0020\u0074a\u0062\u006c\u0065\u0020\u006d\u0061r\u006b\u0065\u0072\u0020\u0077\u0061\u0073\u0020\u006e\u006f\u0074\u0020\u0066o\u0075\u006e\u0064\u002e"); return _e .New ("\u0078r\u0065f\u0020\u006e\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064\u0020");}; // UpdateParams updates the parameter values of the encoder. func (_bbb *DCTEncoder )UpdateParams (params *PdfObjectDictionary ){_faae ,_fage :=GetNumberAsInt64 (params .Get ("\u0043o\u006co\u0072\u0043\u006f\u006d\u0070\u006f\u006e\u0065\u006e\u0074\u0073"));if _fage ==nil {_bbb .ColorComponents =int (_faae );}; _ggbc ,_fage :=GetNumberAsInt64 (params .Get ("\u0042\u0069t\u0073\u0050\u0065r\u0043\u006f\u006d\u0070\u006f\u006e\u0065\u006e\u0074"));if _fage ==nil {_bbb .BitsPerComponent =int (_ggbc );};_fagge ,_fage :=GetNumberAsInt64 (params .Get ("\u0057\u0069\u0064t\u0068")); if _fage ==nil {_bbb .Width =int (_fagge );};_cbgc ,_fage :=GetNumberAsInt64 (params .Get ("\u0048\u0065\u0069\u0067\u0068\u0074"));if _fage ==nil {_bbb .Height =int (_cbgc );};_ffgd ,_fage :=GetNumberAsInt64 (params .Get ("\u0051u\u0061\u006c\u0069\u0074\u0079")); if _fage ==nil {_bbb .Quality =int (_ffgd );};}; // MakeArrayFromFloats creates an PdfObjectArray from a slice of float64s, where each array element is an // PdfObjectFloat. func MakeArrayFromFloats (vals []float64 )*PdfObjectArray {_geedd :=MakeArray ();for _ ,_fcce :=range vals {_geedd .Append (MakeFloat (_fcce ));};return _geedd ;}; // DecodeBytes decodes a slice of JBIG2 encoded bytes and returns the results. func (_daeg *JBIG2Encoder )DecodeBytes (encoded []byte )([]byte ,error ){return _gdd .DecodeBytes (encoded ,_cc .Parameters {},_daeg .Globals );}; // Len returns the number of elements in the streams. func (_abbc *PdfObjectStreams )Len ()int {if _abbc ==nil {return 0;};return len (_abbc ._aggfea );}; // MakeStreamDict makes a new instance of an encoding dictionary for a stream object. func (_bdbc *JPXEncoder )MakeStreamDict ()*PdfObjectDictionary {return MakeDict ()}; // PdfCryptNewDecrypt makes the document crypt handler based on the encryption dictionary // and trailer dictionary. Returns an error on failure to process. func PdfCryptNewDecrypt (parser *PdfParser ,ed ,trailer *PdfObjectDictionary )(*PdfCrypt ,error ){_eadd :=&PdfCrypt {_bfc :false ,_abff :make (map[PdfObject ]bool ),_bgd :make (map[PdfObject ]bool ),_ggg :make (map[int ]struct{}),_gac :parser };_cca ,_faff :=ed .Get ("\u0046\u0069\u006c\u0074\u0065\u0072").(*PdfObjectName ); if !_faff {_fc .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u0020\u0043\u0072\u0079\u0070\u0074 \u0064\u0069\u0063\u0074\u0069\u006f\u006e\u0061r\u0079 \u006d\u0069\u0073\u0073\u0069\u006e\u0067\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0064\u0020\u0046i\u006c\u0074\u0065\u0072\u0020\u0066\u0069\u0065\u006c\u0064\u0021"); return _eadd ,_e .New ("r\u0065\u0071\u0075\u0069\u0072\u0065d\u0020\u0063\u0072\u0079\u0070\u0074 \u0066\u0069\u0065\u006c\u0064\u0020\u0046i\u006c\u0074\u0065\u0072\u0020\u006d\u0069\u0073\u0073\u0069n\u0067");};if *_cca !="\u0053\u0074\u0061\u006e\u0064\u0061\u0072\u0064"{_fc .Log .Debug ("\u0045\u0052R\u004f\u0052\u0020\u0055\u006e\u0073\u0075\u0070\u0070\u006f\u0072\u0074\u0065\u0064\u0020\u0066\u0069\u006c\u0074\u0065\u0072\u0020(%\u0073\u0029",*_cca ); return _eadd ,_e .New ("\u0075n\u0073u\u0070\u0070\u006f\u0072\u0074e\u0064\u0020F\u0069\u006c\u0074\u0065\u0072");};_eadd ._fgce .Filter =string (*_cca );if _fdd ,_faaa :=ed .Get ("\u0053u\u0062\u0046\u0069\u006c\u0074\u0065r").(*PdfObjectString );_faaa {_eadd ._fgce .SubFilter =_fdd .Str (); _fc .Log .Debug ("\u0055s\u0069n\u0067\u0020\u0073\u0075\u0062f\u0069\u006ct\u0065\u0072\u0020\u0025\u0073",_fdd );};if L ,_becb :=ed .Get ("\u004c\u0065\u006e\u0067\u0074\u0068").(*PdfObjectInteger );_becb {if (*L %8)!=0{_fc .Log .Debug ("\u0045\u0052\u0052O\u0052\u0020\u0049\u006ev\u0061\u006c\u0069\u0064\u0020\u0065\u006ec\u0072\u0079\u0070\u0074\u0069\u006f\u006e\u0020\u006c\u0065\u006e\u0067\u0074\u0068"); return _eadd ,_e .New ("\u0069n\u0076\u0061\u006c\u0069d\u0020\u0065\u006e\u0063\u0072y\u0070t\u0069o\u006e\u0020\u006c\u0065\u006e\u0067\u0074h");};_eadd ._fgce .Length =int (*L );}else {_eadd ._fgce .Length =40;};_eadd ._fgce .V =0;if _cgdb ,_cdf :=ed .Get ("\u0056").(*PdfObjectInteger ); _cdf {V :=int (*_cgdb );_eadd ._fgce .V =V ;if V >=1&&V <=2{_eadd ._cad =_cgg (_eadd ._fgce .Length );}else if V >=4&&V <=5{if _fac :=_eadd .loadCryptFilters (ed );_fac !=nil {return _eadd ,_fac ;};}else {_fc .Log .Debug ("E\u0052\u0052\u004f\u0052\u0020\u0055\u006e\u0073\u0075\u0070\u0070\u006f\u0072\u0074\u0065\u0064\u0020\u0065n\u0063\u0072\u0079\u0070\u0074\u0069\u006f\u006e\u0020\u0061lg\u006f\u0020\u0056 \u003d \u0025\u0064",V ); return _eadd ,_e .New ("u\u006e\u0073\u0075\u0070po\u0072t\u0065\u0064\u0020\u0061\u006cg\u006f\u0072\u0069\u0074\u0068\u006d");};};if _dga :=_fbc (&_eadd ._fbe ,ed );_dga !=nil {return _eadd ,_dga ;};_eddg :="";if _bac ,_cccd :=trailer .Get ("\u0049\u0044").(*PdfObjectArray ); _cccd &&_bac .Len ()>=1{_dfa ,_dbf :=GetString (_bac .Get (0));if !_dbf {return _eadd ,_e .New ("\u0069n\u0076a\u006c\u0069\u0064\u0020\u0074r\u0061\u0069l\u0065\u0072\u0020\u0049\u0044");};_eddg =_dfa .Str ();}else {_fc .Log .Debug ("\u0054\u0072ai\u006c\u0065\u0072 \u0049\u0044\u0020\u0061rra\u0079 m\u0069\u0073\u0073\u0069\u006e\u0067\u0020or\u0020\u0069\u006e\u0076\u0061\u006c\u0069d\u0021"); };_eadd ._beg =_eddg ;return _eadd ,nil ;};type limitedReadSeeker struct{_bgfd _ae .ReadSeeker ;_gfbf int64 ;}; // GetPreviousRevisionReadSeeker returns ReadSeeker for the previous version of the Pdf document. func (_cefd *PdfParser )GetPreviousRevisionReadSeeker ()(_ae .ReadSeeker ,error ){if _ccdc :=_cefd .seekToEOFMarker (_cefd ._acfbc -_defg );_ccdc !=nil {return nil ,_ccdc ;};_ddgf ,_bcab :=_cefd ._bcced .Seek (0,_ae .SeekCurrent );if _bcab !=nil {return nil ,_bcab ; };_ddgf +=_defg ;return _egdf (_cefd ._bcced ,_ddgf );}; // DecodeStream decodes a FlateEncoded stream object and give back decoded bytes. func (_bfdb *FlateEncoder )DecodeStream (streamObj *PdfObjectStream )([]byte ,error ){_fc .Log .Trace ("\u0046l\u0061t\u0065\u0044\u0065\u0063\u006fd\u0065\u0020s\u0074\u0072\u0065\u0061\u006d");_fc .Log .Trace ("\u0050\u0072\u0065\u0064\u0069\u0063\u0074\u006f\u0072\u003a\u0020\u0025\u0064",_bfdb .Predictor ); if _bfdb .BitsPerComponent !=8{return nil ,_g .Errorf ("\u0069\u006ev\u0061\u006c\u0069\u0064\u0020\u0042\u0069\u0074\u0073\u0050\u0065\u0072\u0043\u006f\u006d\u0070\u006f\u006e\u0065\u006e\u0074\u003d\u0025\u0064\u0020\u0028\u006f\u006e\u006c\u0079\u0020\u0038\u0020\u0073\u0075\u0070\u0070\u006f\u0072\u0074\u0065\u0064\u0029",_bfdb .BitsPerComponent ); };_cafa ,_acfd :=_bfdb .DecodeBytes (streamObj .Stream );if _acfd !=nil {return nil ,_acfd ;};_cafa ,_acfd =_bfdb .postDecodePredict (_cafa );if _acfd !=nil {return nil ,_acfd ;};return _cafa ,nil ;}; // Update updates multiple keys and returns the dictionary back so can be used in a chained fashion. func (_bggge *PdfObjectDictionary )Update (objmap map[string ]PdfObject )*PdfObjectDictionary {_bggge ._cfcd .Lock ();defer _bggge ._cfcd .Unlock ();for _dfae ,_gaeeg :=range objmap {_bggge .setWithLock (PdfObjectName (_dfae ),_gaeeg ,false );};return _bggge ; };func (_cf *PdfCrypt )newEncryptDict ()*PdfObjectDictionary {_gca :=MakeDict ();_gca .Set ("\u0046\u0069\u006c\u0074\u0065\u0072",MakeName ("\u0053\u0074\u0061\u006e\u0064\u0061\u0072\u0064"));_gca .Set ("\u0056",MakeInteger (int64 (_cf ._fgce .V ))); _gca .Set ("\u004c\u0065\u006e\u0067\u0074\u0068",MakeInteger (int64 (_cf ._fgce .Length )));return _gca ;};func _egfc (_gfff *PdfObjectStream ,_acda *PdfObjectDictionary )(*LZWEncoder ,error ){_dfde :=NewLZWEncoder ();_acff :=_gfff .PdfObjectDictionary ; if _acff ==nil {return _dfde ,nil ;};if _acda ==nil {_gaed :=TraceToDirectObject (_acff .Get ("D\u0065\u0063\u006f\u0064\u0065\u0050\u0061\u0072\u006d\u0073"));if _gaed !=nil {if _gbbd ,_cbg :=_gaed .(*PdfObjectDictionary );_cbg {_acda =_gbbd ;}else if _aed ,_bfga :=_gaed .(*PdfObjectArray ); _bfga {if _aed .Len ()==1{if _fddgc ,_geg :=GetDict (_aed .Get (0));_geg {_acda =_fddgc ;};};};if _acda ==nil {_fc .Log .Error ("\u0044\u0065\u0063\u006f\u0064\u0065\u0050\u0061\u0072\u006d\u0073\u0020\u006e\u006f\u0074 \u0061 \u0064\u0069\u0063\u0074\u0069\u006f\u006e\u0061\u0072\u0079\u0020\u0025\u0023\u0076",_gaed ); return nil ,_g .Errorf ("\u0069\u006e\u0076\u0061li\u0064\u0020\u0044\u0065\u0063\u006f\u0064\u0065\u0050\u0061\u0072\u006d\u0073");};};};_fcb :=_acff .Get ("E\u0061\u0072\u006c\u0079\u0043\u0068\u0061\u006e\u0067\u0065");if _fcb !=nil {_dfg ,_cgbd :=_fcb .(*PdfObjectInteger ); if !_cgbd {_fc .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u003a \u0045\u0061\u0072\u006c\u0079\u0043\u0068\u0061\u006e\u0067\u0065\u0020\u0073\u0070\u0065\u0063\u0069\u0066\u0069\u0065d\u0020\u0062\u0075\u0074\u0020\u006e\u006f\u0074\u0020\u006e\u0075\u006d\u0065\u0072i\u0063 \u0028\u0025\u0054\u0029",_fcb ); return nil ,_g .Errorf ("\u0069\u006e\u0076\u0061li\u0064\u0020\u0045\u0061\u0072\u006c\u0079\u0043\u0068\u0061\u006e\u0067\u0065");};if *_dfg !=0&&*_dfg !=1{return nil ,_g .Errorf ("\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0045\u0061\u0072\u006c\u0079\u0043\u0068\u0061\u006e\u0067\u0065\u0020\u0076\u0061\u006c\u0075e\u0020\u0028\u006e\u006f\u0074 \u0030\u0020o\u0072\u0020\u0031\u0029"); };_dfde .EarlyChange =int (*_dfg );}else {_dfde .EarlyChange =1;};if _acda ==nil {return _dfde ,nil ;};if _bfcd ,_gfb :=GetIntVal (_acda .Get ("E\u0061\u0072\u006c\u0079\u0043\u0068\u0061\u006e\u0067\u0065"));_gfb {if _bfcd ==0||_bfcd ==1{_dfde .EarlyChange =_bfcd ; }else {_fc .Log .Debug ("W\u0041\u0052\u004e\u003a\u0020\u0069n\u0076\u0061\u006c\u0069\u0064\u0020E\u0061\u0072\u006c\u0079\u0043\u0068\u0061n\u0067\u0065\u0020\u0076\u0061\u006c\u0075\u0065\u003a\u0020%\u0064",_bfcd );};};_fcb =_acda .Get ("\u0050r\u0065\u0064\u0069\u0063\u0074\u006fr"); if _fcb !=nil {_bdbe ,_ccb :=_fcb .(*PdfObjectInteger );if !_ccb {_fc .Log .Debug ("E\u0072\u0072\u006f\u0072\u003a\u0020\u0050\u0072\u0065d\u0069\u0063\u0074\u006f\u0072\u0020\u0073pe\u0063\u0069\u0066\u0069e\u0064\u0020\u0062\u0075\u0074\u0020\u006e\u006f\u0074 n\u0075\u006de\u0072\u0069\u0063\u0020\u0028\u0025\u0054\u0029",_fcb ); return nil ,_g .Errorf ("\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0050\u0072\u0065\u0064i\u0063\u0074\u006f\u0072");};_dfde .Predictor =int (*_bdbe );};_fcb =_acda .Get ("\u0042\u0069t\u0073\u0050\u0065r\u0043\u006f\u006d\u0070\u006f\u006e\u0065\u006e\u0074"); if _fcb !=nil {_gfca ,_ced :=_fcb .(*PdfObjectInteger );if !_ced {_fc .Log .Debug ("\u0045\u0052\u0052O\u0052\u003a\u0020\u0049n\u0076\u0061\u006c\u0069\u0064\u0020\u0042i\u0074\u0073\u0050\u0065\u0072\u0043\u006f\u006d\u0070\u006f\u006e\u0065\u006e\u0074"); return nil ,_g .Errorf ("\u0069n\u0076\u0061\u006c\u0069\u0064\u0020\u0042\u0069\u0074\u0073\u0050e\u0072\u0043\u006f\u006d\u0070\u006f\u006e\u0065\u006e\u0074");};_dfde .BitsPerComponent =int (*_gfca );};if _dfde .Predictor > 1{_dfde .Columns =1;_fcb =_acda .Get ("\u0043o\u006c\u0075\u006d\u006e\u0073"); if _fcb !=nil {_geae ,_eggc :=_fcb .(*PdfObjectInteger );if !_eggc {return nil ,_g .Errorf ("\u0070r\u0065\u0064\u0069\u0063\u0074\u006f\u0072\u0020\u0063\u006f\u006cu\u006d\u006e\u0020\u0069\u006e\u0076\u0061\u006c\u0069\u0064");};_dfde .Columns =int (*_geae ); };_dfde .Colors =1;_fcb =_acda .Get ("\u0043\u006f\u006c\u006f\u0072\u0073");if _fcb !=nil {_fdg ,_bcgf :=_fcb .(*PdfObjectInteger );if !_bcgf {return nil ,_g .Errorf ("\u0070\u0072\u0065d\u0069\u0063\u0074\u006fr\u0020\u0063\u006f\u006c\u006f\u0072\u0073 \u006e\u006f\u0074\u0020\u0061\u006e\u0020\u0069\u006e\u0074\u0065\u0067\u0065\u0072"); };_dfde .Colors =int (*_fdg );};};_fc .Log .Trace ("\u0064\u0065\u0063\u006f\u0064\u0065\u0020\u0070\u0061\u0072\u0061\u006ds\u003a\u0020\u0025\u0073",_acda .String ());return _dfde ,nil ;}; // HasInvalidSubsectionHeader implements core.ParserMetadata interface. func (_fga ParserMetadata )HasInvalidSubsectionHeader ()bool {return _fga ._afac }; // PdfCryptNewEncrypt makes the document crypt handler based on a specified crypt filter. func PdfCryptNewEncrypt (cf _gc .Filter ,userPass ,ownerPass []byte ,perm _cg .Permissions )(*PdfCrypt ,*EncryptInfo ,error ){_cae :=&PdfCrypt {_bgd :make (map[PdfObject ]bool ),_cad :make (cryptFilters ),_fbe :_cg .StdEncryptDict {P :perm ,EncryptMetadata :true }}; var _bcdd Version ;if cf !=nil {_eg :=cf .PDFVersion ();_bcdd .Major ,_bcdd .Minor =_eg [0],_eg [1];V ,R :=cf .HandlerVersion ();_cae ._fgce .V =V ;_cae ._fbe .R =R ;_cae ._fgce .Length =cf .KeyLength ()*8;};const (_fbd =_gaa ;);_cae ._cad [_fbd ]=cf ; if _cae ._fgce .V >=4{_cae ._ggag =_fbd ;_cae ._afaf =_fbd ;};_bdc :=_cae .newEncryptDict ();_cge :=_be .Sum ([]byte (_c .Now ().Format (_c .RFC850 )));_ccd :=string (_cge [:]);_fgc :=make ([]byte ,100);_ca .Read (_fgc );_cge =_be .Sum (_fgc );_daa :=string (_cge [:]); _fc .Log .Trace ("\u0052\u0061\u006e\u0064\u006f\u006d\u0020\u0062\u003a\u0020\u0025\u0020\u0078",_fgc );_fc .Log .Trace ("\u0047\u0065\u006e\u0020\u0049\u0064\u0020\u0030\u003a\u0020\u0025\u0020\u0078",_ccd );_cae ._beg =_ccd ;_daab :=_cae .generateParams (userPass ,ownerPass ); if _daab !=nil {return nil ,nil ,_daab ;};_age (&_cae ._fbe ,_bdc );if _cae ._fgce .V >=4{if _bcg :=_cae .saveCryptFilters (_bdc );_bcg !=nil {return nil ,nil ,_bcg ;};};return _cae ,&EncryptInfo {Version :_bcdd ,Encrypt :_bdc ,ID0 :_ccd ,ID1 :_daa },nil ; }; // WriteString outputs the object as it is to be written to file. func (_edac *PdfObjectNull )WriteString ()string {return "\u006e\u0075\u006c\u006c"};func (_eafa *PdfParser )parsePdfVersion ()(int ,int ,error ){var _dbebb int64 =20;_dfef :=make ([]byte ,_dbebb );_eafa ._bcced .Seek (0,_ae .SeekStart );_eafa ._bcced .Read (_dfef ); var _fabf error ;var _gabe ,_dfcf int ;if _cegc :=_gbfbb .FindStringSubmatch (string (_dfef ));len (_cegc )< 3{if _gabe ,_dfcf ,_fabf =_eafa .seekPdfVersionTopDown ();_fabf !=nil {_fc .Log .Debug ("F\u0061\u0069\u006c\u0065\u0064\u0020\u0072\u0065\u0063\u006f\u0076\u0065\u0072\u0079\u0020\u002d\u0020\u0075n\u0061\u0062\u006c\u0065\u0020\u0074\u006f\u0020\u0066\u0069nd\u0020\u0076\u0065r\u0073i\u006f\u006e"); return 0,0,_fabf ;};_eafa ._bcced ,_fabf =_fccb (_eafa ._bcced ,_eafa .GetFileOffset ()-8);if _fabf !=nil {return 0,0,_fabf ;};}else {if _gabe ,_fabf =_ef .Atoi (_cegc [1]);_fabf !=nil {return 0,0,_fabf ;};if _dfcf ,_fabf =_ef .Atoi (_cegc [2]);_fabf !=nil {return 0,0,_fabf ; };_eafa .SetFileOffset (0);};_eafa ._dcfe =_eb .NewReader (_eafa ._bcced );_fc .Log .Debug ("\u0050\u0064\u0066\u0020\u0076\u0065\u0072\u0073\u0069\u006f\u006e\u0020%\u0064\u002e\u0025\u0064",_gabe ,_dfcf );return _gabe ,_dfcf ,nil ;}; // GetXrefType returns the type of the first xref object (table or stream). func (_bgfe *PdfParser )GetXrefType ()*xrefType {return _bgfe ._dffd }; // GetFloatVal returns the float64 value represented by the PdfObject directly or indirectly if contained within an // indirect object. On type mismatch the found bool flag returned is false and a nil pointer is returned. func GetFloatVal (obj PdfObject )(_egfd float64 ,_eafec bool ){_bgadf ,_eafec :=TraceToDirectObject (obj ).(*PdfObjectFloat );if _eafec {return float64 (*_bgadf ),true ;};return 0,false ;};func (_fedbd *PdfParser )repairLocateXref ()(int64 ,error ){_eagb :=int64 (1000); _fedbd ._bcced .Seek (-_eagb ,_ae .SeekCurrent );_cbedg ,_cfbfg :=_fedbd ._bcced .Seek (0,_ae .SeekCurrent );if _cfbfg !=nil {return 0,_cfbfg ;};_adbbg :=make ([]byte ,_eagb );_fedbd ._bcced .Read (_adbbg );_degg :=_cdgd .FindAllStringIndex (string (_adbbg ),-1); if len (_degg )< 1{_fc .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0052\u0065\u0070a\u0069\u0072\u003a\u0020\u0078\u0072\u0065f\u0020\u006e\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064\u0021");return 0,_e .New ("\u0072\u0065\u0070\u0061ir\u003a\u0020\u0078\u0072\u0065\u0066\u0020\u006e\u006f\u0074\u0020\u0066\u006f\u0075n\u0064"); };_eaagd :=int64 (_degg [len (_degg )-1][0]);_acge :=_cbedg +_eaagd ;return _acge ,nil ;}; // Elements returns a slice of the PdfObject elements in the array. func (_cbda *PdfObjectArray )Elements ()[]PdfObject {if _cbda ==nil {return nil ;};return _cbda ._cebff ;};func _fbg (_fead int )int {_fcga :=_fead >>(_gce -1);return (_fead ^_fcga )-_fcga };type objectStreams map[int ]objectStream ;var _cdgd =_d .MustCompile ("\u005b\\\u0072\u005c\u006e\u005d\u005c\u0073\u002a\u0028\u0078\u0072\u0065f\u0029\u005c\u0073\u002a\u005b\u005c\u0072\u005c\u006e\u005d"); // ASCIIHexEncoder implements ASCII hex encoder/decoder. type ASCIIHexEncoder struct{};func _ccfa (_bdea PdfObject ,_gfdf int ,_agfg map[PdfObject ]struct{})error {_fc .Log .Trace ("\u0054\u0072\u0061\u0076\u0065\u0072s\u0065\u0020\u006f\u0062\u006a\u0065\u0063\u0074\u0020\u0064\u0061\u0074\u0061 \u0028\u0064\u0065\u0070\u0074\u0068\u0020=\u0020\u0025\u0064\u0029",_gfdf ); if _ ,_cefc :=_agfg [_bdea ];_cefc {_fc .Log .Trace ("-\u0041\u006c\u0072\u0065ad\u0079 \u0074\u0072\u0061\u0076\u0065r\u0073\u0065\u0064\u002e\u002e\u002e");return nil ;};_agfg [_bdea ]=struct{}{};switch _efcdf :=_bdea .(type ){case *PdfIndirectObject :_dagg :=_efcdf ; _fc .Log .Trace ("\u0069\u006f\u003a\u0020\u0025\u0073",_dagg );_fc .Log .Trace ("\u002d\u0020\u0025\u0073",_dagg .PdfObject );return _ccfa (_dagg .PdfObject ,_gfdf +1,_agfg );case *PdfObjectStream :_cbff :=_efcdf ;return _ccfa (_cbff .PdfObjectDictionary ,_gfdf +1,_agfg ); case *PdfObjectDictionary :_cfge :=_efcdf ;_fc .Log .Trace ("\u002d\u0020\u0064\u0069\u0063\u0074\u003a\u0020\u0025\u0073",_cfge );for _ ,_dcfc :=range _cfge .Keys (){_fegg :=_cfge .Get (_dcfc );if _afega ,_ccfe :=_fegg .(*PdfObjectReference );_ccfe {_fgfg :=_afega .Resolve (); _cfge .Set (_dcfc ,_fgfg );_egdg :=_ccfa (_fgfg ,_gfdf +1,_agfg );if _egdg !=nil {return _egdg ;};}else {_dbegg :=_ccfa (_fegg ,_gfdf +1,_agfg );if _dbegg !=nil {return _dbegg ;};};};return nil ;case *PdfObjectArray :_aabf :=_efcdf ;_fc .Log .Trace ("-\u0020\u0061\u0072\u0072\u0061\u0079\u003a\u0020\u0025\u0073",_aabf ); for _gbdee ,_dccg :=range _aabf .Elements (){if _dgfga ,_cefgf :=_dccg .(*PdfObjectReference );_cefgf {_edba :=_dgfga .Resolve ();_aabf .Set (_gbdee ,_edba );_agdad :=_ccfa (_edba ,_gfdf +1,_agfg );if _agdad !=nil {return _agdad ;};}else {_fgggd :=_ccfa (_dccg ,_gfdf +1,_agfg ); if _fgggd !=nil {return _fgggd ;};};};return nil ;case *PdfObjectReference :_fc .Log .Debug ("E\u0052\u0052\u004f\u0052\u003a\u0020T\u0072\u0061\u0063\u0069\u006e\u0067\u0020\u0061\u0020r\u0065\u0066\u0065r\u0065n\u0063\u0065\u0021");return _e .New ("\u0065r\u0072\u006f\u0072\u0020t\u0072\u0061\u0063\u0069\u006eg\u0020a\u0020r\u0065\u0066\u0065\u0072\u0065\u006e\u0063e"); };return nil ;}; // MakeDecodeParams makes a new instance of an encoding dictionary based on // the current encoder settings. func (_gabb *RawEncoder )MakeDecodeParams ()PdfObject {return nil };func (_egca *PdfParser )repairRebuildXrefsTopDown ()(*XrefTable ,error ){if _egca ._fbba {return nil ,_g .Errorf ("\u0072\u0065\u0070\u0061\u0069\u0072\u0020\u0066\u0061\u0069\u006c\u0065\u0064"); };_egca ._fbba =true ;_egca ._bcced .Seek (0,_ae .SeekStart );_egca ._dcfe =_eb .NewReader (_egca ._bcced );_gecc :=20;_feab :=make ([]byte ,_gecc );_fdafd :=XrefTable {};_fdafd .ObjectMap =make (map[int ]XrefObject );for {_ebdg ,_cafcd :=_egca ._dcfe .ReadByte (); if _cafcd !=nil {if _cafcd ==_ae .EOF {break ;}else {return nil ,_cafcd ;};};if _ebdg =='j'&&_feab [_gecc -1]=='b'&&_feab [_gecc -2]=='o'&&IsWhiteSpace (_feab [_gecc -3]){_acbgc :=_gecc -4;for IsWhiteSpace (_feab [_acbgc ])&&_acbgc > 0{_acbgc --;};if _acbgc ==0||!IsDecimalDigit (_feab [_acbgc ]){continue ; };for IsDecimalDigit (_feab [_acbgc ])&&_acbgc > 0{_acbgc --;};if _acbgc ==0||!IsWhiteSpace (_feab [_acbgc ]){continue ;};for IsWhiteSpace (_feab [_acbgc ])&&_acbgc > 0{_acbgc --;};if _acbgc ==0||!IsDecimalDigit (_feab [_acbgc ]){continue ;};for IsDecimalDigit (_feab [_acbgc ])&&_acbgc > 0{_acbgc --; };if _acbgc ==0{continue ;};_gedabf :=_egca .GetFileOffset ()-int64 (_gecc -_acbgc );_gdcb :=append (_feab [_acbgc +1:],_ebdg );_afabda ,_ccga ,_geac :=_gcfgb (string (_gdcb ));if _geac !=nil {_fc .Log .Debug ("\u0055\u006e\u0061\u0062\u006c\u0065 \u0074\u006f\u0020\u0070\u0061\u0072\u0073\u0065\u0020\u006f\u0062\u006a\u0065c\u0074\u0020\u006e\u0075\u006d\u0062\u0065r\u003a\u0020\u0025\u0076",_geac ); return nil ,_geac ;};if _gffd ,_aeag :=_fdafd .ObjectMap [_afabda ];!_aeag ||_gffd .Generation < _ccga {_cffb :=XrefObject {};_cffb .XType =XrefTypeTableEntry ;_cffb .ObjectNumber =_afabda ;_cffb .Generation =_ccga ;_cffb .Offset =_gedabf ;_fdafd .ObjectMap [_afabda ]=_cffb ; };};_feab =append (_feab [1:_gecc ],_ebdg );};_egca ._aaaa =nil ;return &_fdafd ,nil ;};func (_feed *JBIG2Encoder )encodeImage (_egcb _fa .Image )([]byte ,error ){const _ecead ="e\u006e\u0063\u006f\u0064\u0065\u0049\u006d\u0061\u0067\u0065";_cbeeg ,_abg :=GoImageToJBIG2 (_egcb ,JB2ImageAutoThreshold ); if _abg !=nil {return nil ,_gd .Wrap (_abg ,_ecead ,"\u0063\u006f\u006e\u0076\u0065\u0072\u0074\u0020\u0069\u006e\u0070\u0075\u0074\u0020\u0069m\u0061g\u0065\u0020\u0074\u006f\u0020\u006a\u0062\u0069\u0067\u0032\u0020\u0069\u006d\u0067");};if _abg =_feed .AddPageImage (_cbeeg ,&_feed .DefaultPageSettings ); _abg !=nil {return nil ,_gd .Wrap (_abg ,_ecead ,"");};return _feed .Encode ();}; // MakeDecodeParams makes a new instance of an encoding dictionary based on the current encoder settings. func (_ebdb *JBIG2Encoder )MakeDecodeParams ()PdfObject {return MakeDict ()}; // MakeStreamDict makes a new instance of an encoding dictionary for a stream object. func (_begf *RunLengthEncoder )MakeStreamDict ()*PdfObjectDictionary {_eecdf :=MakeDict ();_eecdf .Set ("\u0046\u0069\u006c\u0074\u0065\u0072",MakeName (_begf .GetFilterName ()));return _eecdf ;}; // Append appends PdfObject(s) to the streams. func (_ggcbg *PdfObjectStreams )Append (objects ...PdfObject ){if _ggcbg ==nil {_fc .Log .Debug ("\u0057\u0061\u0072\u006e\u0020-\u0020\u0041\u0074\u0074\u0065\u006d\u0070\u0074\u0020\u0074\u006f\u0020\u0061p\u0070\u0065\u006e\u0064\u0020\u0074\u006f\u0020\u0061\u0020\u006e\u0069\u006c\u0020\u0073\u0074\u0072\u0065\u0061\u006d\u0073"); return ;};_ggcbg ._aggfea =append (_ggcbg ._aggfea ,objects ...);};func _cga (_cd XrefTable ){_fc .Log .Debug ("\u003dX\u003d\u0058\u003d\u0058\u003d");_fc .Log .Debug ("X\u0072\u0065\u0066\u0020\u0074\u0061\u0062\u006c\u0065\u003a");_dce :=0;for _ ,_fag :=range _cd .ObjectMap {_fc .Log .Debug ("i\u002b\u0031\u003a\u0020\u0025\u0064 \u0028\u006f\u0062\u006a\u0020\u006eu\u006d\u003a\u0020\u0025\u0064\u0020\u0067e\u006e\u003a\u0020\u0025\u0064\u0029\u0020\u002d\u003e\u0020%\u0064",_dce +1,_fag .ObjectNumber ,_fag .Generation ,_fag .Offset ); _dce ++;};}; // StreamEncoder represents the interface for all PDF stream encoders. type StreamEncoder interface{GetFilterName ()string ;MakeDecodeParams ()PdfObject ;MakeStreamDict ()*PdfObjectDictionary ;UpdateParams (_bgbf *PdfObjectDictionary );EncodeBytes (_dge []byte )([]byte ,error );DecodeBytes (_baee []byte )([]byte ,error ); DecodeStream (_eedd *PdfObjectStream )([]byte ,error );}; // GetIndirect returns the *PdfIndirectObject represented by the PdfObject. On type mismatch the found bool flag is // false and a nil pointer is returned. func GetIndirect (obj PdfObject )(_bfef *PdfIndirectObject ,_cfde bool ){obj =ResolveReference (obj );_bfef ,_cfde =obj .(*PdfIndirectObject );return _bfef ,_cfde ;}; // GetObjectStreams returns the *PdfObjectStreams represented by the PdfObject. On type mismatch the found bool flag is // false and a nil pointer is returned. func GetObjectStreams (obj PdfObject )(_aafb *PdfObjectStreams ,_ebfee bool ){_aafb ,_ebfee =obj .(*PdfObjectStreams );return _aafb ,_ebfee ;}; // IsFloatDigit checks if a character can be a part of a float number string. func IsFloatDigit (c byte )bool {return ('0'<=c &&c <='9')||c =='.'}; // MakeDecodeParams makes a new instance of an encoding dictionary based on // the current encoder settings. func (_dfga *CCITTFaxEncoder )MakeDecodeParams ()PdfObject {_cgad :=MakeDict ();_cgad .Set ("\u004b",MakeInteger (int64 (_dfga .K )));_cgad .Set ("\u0043o\u006c\u0075\u006d\u006e\u0073",MakeInteger (int64 (_dfga .Columns )));if _dfga .BlackIs1 {_cgad .Set ("\u0042\u006c\u0061\u0063\u006b\u0049\u0073\u0031",MakeBool (_dfga .BlackIs1 )); };if _dfga .EncodedByteAlign {_cgad .Set ("\u0045\u006ec\u006f\u0064\u0065d\u0042\u0079\u0074\u0065\u0041\u006c\u0069\u0067\u006e",MakeBool (_dfga .EncodedByteAlign ));};if _dfga .EndOfLine &&_dfga .K >=0{_cgad .Set ("\u0045n\u0064\u004f\u0066\u004c\u0069\u006ee",MakeBool (_dfga .EndOfLine )); };if _dfga .Rows !=0&&!_dfga .EndOfBlock {_cgad .Set ("\u0052\u006f\u0077\u0073",MakeInteger (int64 (_dfga .Rows )));};if !_dfga .EndOfBlock {_cgad .Set ("\u0045\u006e\u0064\u004f\u0066\u0042\u006c\u006f\u0063\u006b",MakeBool (_dfga .EndOfBlock ));};if _dfga .DamagedRowsBeforeError !=0{_cgad .Set ("\u0044\u0061\u006d\u0061ge\u0064\u0052\u006f\u0077\u0073\u0042\u0065\u0066\u006f\u0072\u0065\u0045\u0072\u0072o\u0072",MakeInteger (int64 (_dfga .DamagedRowsBeforeError ))); };return _cgad ;};func _cgg (_ecg int )cryptFilters {return cryptFilters {_gaa :_gc .NewFilterV2 (_ecg )}}; // Decrypt an object with specified key. For numbered objects, // the key argument is not used and a new one is generated based // on the object and generation number. // Traverses through all the subobjects (recursive). // // Does not look up references.. That should be done prior to calling. func (_dee *PdfCrypt )Decrypt (obj PdfObject ,parentObjNum ,parentGenNum int64 )error {if _dee .isDecrypted (obj ){return nil ;};switch _acf :=obj .(type ){case *PdfIndirectObject :_dee ._abff [_acf ]=true ;_fc .Log .Trace ("\u0044\u0065\u0063\u0072\u0079\u0070\u0074\u0069\u006e\u0067 \u0069\u006e\u0064\u0069\u0072\u0065\u0063t\u0020\u0025\u0064\u0020\u0025\u0064\u0020\u006f\u0062\u006a\u0021",_acf .ObjectNumber ,_acf .GenerationNumber ); _cefg :=_acf .ObjectNumber ;_bef :=_acf .GenerationNumber ;_bbc :=_dee .Decrypt (_acf .PdfObject ,_cefg ,_bef );if _bbc !=nil {return _bbc ;};return nil ;case *PdfObjectStream :_dee ._abff [_acf ]=true ;_eef :=_acf .PdfObjectDictionary ;if _dee ._fbe .R !=5{if _fgdd ,_dgd :=_eef .Get ("\u0054\u0079\u0070\u0065").(*PdfObjectName ); _dgd &&*_fgdd =="\u0058\u0052\u0065\u0066"{return nil ;};};_ffe :=_acf .ObjectNumber ;_gbg :=_acf .GenerationNumber ;_fc .Log .Trace ("\u0044e\u0063\u0072\u0079\u0070t\u0069\u006e\u0067\u0020\u0073t\u0072e\u0061m\u0020\u0025\u0064\u0020\u0025\u0064\u0020!",_ffe ,_gbg ); _gagg :=_gaa ;if _dee ._fgce .V >=4{_gagg =_dee ._ggag ;_fc .Log .Trace ("\u0074\u0068\u0069\u0073.s\u0074\u0072\u0065\u0061\u006d\u0046\u0069\u006c\u0074\u0065\u0072\u0020\u003d\u0020%\u0073",_dee ._ggag );if _fge ,_eed :=_eef .Get ("\u0046\u0069\u006c\u0074\u0065\u0072").(*PdfObjectArray ); _eed {if _fbeb ,_cagd :=GetName (_fge .Get (0));_cagd {if *_fbeb =="\u0043\u0072\u0079p\u0074"{_gagg ="\u0049\u0064\u0065\u006e\u0074\u0069\u0074\u0079";if _dfd ,_bbd :=_eef .Get ("D\u0065\u0063\u006f\u0064\u0065\u0050\u0061\u0072\u006d\u0073").(*PdfObjectDictionary ); _bbd {if _bddb ,_aff :=_dfd .Get ("\u004e\u0061\u006d\u0065").(*PdfObjectName );_aff {if _ ,_agb :=_dee ._cad [string (*_bddb )];_agb {_fc .Log .Trace ("\u0055\u0073\u0069\u006eg \u0073\u0074\u0072\u0065\u0061\u006d\u0020\u0066\u0069\u006c\u0074\u0065\u0072\u0020%\u0073",*_bddb ); _gagg =string (*_bddb );};};};};};};_fc .Log .Trace ("\u0077\u0069\u0074\u0068\u0020\u0025\u0073\u0020\u0066i\u006c\u0074\u0065\u0072",_gagg );if _gagg =="\u0049\u0064\u0065\u006e\u0074\u0069\u0074\u0079"{return nil ;};};_cada :=_dee .Decrypt (_eef ,_ffe ,_gbg ); if _cada !=nil {return _cada ;};_gf ,_cada :=_dee .makeKey (_gagg ,uint32 (_ffe ),uint32 (_gbg ),_dee ._ccda );if _cada !=nil {return _cada ;};_acf .Stream ,_cada =_dee .decryptBytes (_acf .Stream ,_gagg ,_gf );if _cada !=nil {return _cada ;};_eef .Set ("\u004c\u0065\u006e\u0067\u0074\u0068",MakeInteger (int64 (len (_acf .Stream )))); return nil ;case *PdfObjectString :_fc .Log .Trace ("\u0044e\u0063r\u0079\u0070\u0074\u0069\u006eg\u0020\u0073t\u0072\u0069\u006e\u0067\u0021");_bgb :=_gaa ;if _dee ._fgce .V >=4{_fc .Log .Trace ("\u0077\u0069\u0074\u0068\u0020\u0025\u0073\u0020\u0066i\u006c\u0074\u0065\u0072",_dee ._afaf ); if _dee ._afaf =="\u0049\u0064\u0065\u006e\u0074\u0069\u0074\u0079"{return nil ;};_bgb =_dee ._afaf ;};_afdf ,_fegd :=_dee .makeKey (_bgb ,uint32 (parentObjNum ),uint32 (parentGenNum ),_dee ._ccda );if _fegd !=nil {return _fegd ;};_agecf :=_acf .Str (); _ggcg :=make ([]byte ,len (_agecf ));for _egd :=0;_egd < len (_agecf );_egd ++{_ggcg [_egd ]=_agecf [_egd ];};if len (_ggcg )> 0{_fc .Log .Trace ("\u0044e\u0063\u0072\u0079\u0070\u0074\u0020\u0073\u0074\u0072\u0069\u006eg\u003a\u0020\u0025\u0073\u0020\u003a\u0020\u0025\u0020\u0078",_ggcg ,_ggcg ); _ggcg ,_fegd =_dee .decryptBytes (_ggcg ,_bgb ,_afdf );if _fegd !=nil {return _fegd ;};};_acf ._bgfdf =string (_ggcg );return nil ;case *PdfObjectArray :for _ ,_cbcb :=range _acf .Elements (){_dddd :=_dee .Decrypt (_cbcb ,parentObjNum ,parentGenNum );if _dddd !=nil {return _dddd ; };};return nil ;case *PdfObjectDictionary :_edde :=false ;if _cfgd :=_acf .Get ("\u0054\u0079\u0070\u0065");_cfgd !=nil {_afbd ,_bdda :=_cfgd .(*PdfObjectName );if _bdda &&*_afbd =="\u0053\u0069\u0067"{_edde =true ;};};for _ ,_dede :=range _acf .Keys (){_baa :=_acf .Get (_dede ); if _edde &&string (_dede )=="\u0043\u006f\u006e\u0074\u0065\u006e\u0074\u0073"{continue ;};if string (_dede )!="\u0050\u0061\u0072\u0065\u006e\u0074"&&string (_dede )!="\u0050\u0072\u0065\u0076"&&string (_dede )!="\u004c\u0061\u0073\u0074"{_ddc :=_dee .Decrypt (_baa ,parentObjNum ,parentGenNum ); if _ddc !=nil {return _ddc ;};};};return nil ;};return nil ;}; // String returns the state of the bool as "true" or "false". func (_dgabc *PdfObjectBool )String ()string {if *_dgabc {return "\u0074\u0072\u0075\u0065";};return "\u0066\u0061\u006cs\u0065";};func (_fddg *PdfParser )checkPostEOFData ()error {const _cgec ="\u0025\u0025\u0045O\u0046";_ ,_daf :=_fddg ._bcced .Seek (-int64 (len ([]byte (_cgec )))-1,_ae .SeekEnd ); if _daf !=nil {return _daf ;};_dcg :=make ([]byte ,len ([]byte (_cgec ))+1);_ ,_daf =_fddg ._bcced .Read (_dcg );if _daf !=nil {if _daf !=_ae .EOF {return _daf ;};};if string (_dcg )==_cgec ||string (_dcg )==_cgec +"\u000a"{_fddg ._adfgf ._ede =true ;}; return nil ;};