// // 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 model provides an interface for working with high-level objects (models) in PDF files, including // reading and writing documents. // // The document structure of a PDF is constructed of a hierarchy of data models, representing a tree // of information starting from the Document catalog (Figure 5 p. 80). // It is based on the core package which handles core functionality such as file i/o, parsing and // handling of primitive PDF objects (core.PdfObject). // // As an example of the interface, the following snippet can read the PDF and output the number of pages: // // f, err := os.Open(inputPath) // if err != nil { // return nil, err // } // defer f.Close() // pdfReader, err := unipdf.NewPdfReader(f) // if err != nil { // fmt.Printf("Failed to read PDF file: %v\n", err) // os.Exit(1) // } // numPages, err := pdfReader.GetNumPages() // if err != nil { // fmt.Printf("Failed to get number of pages: %v\n", err) // os.Exit(1) // } // fmt.Printf("The PDF file has %d pages\n", numPages) // // For more examples, see the unidoc-examples repository on GitHub: https://github.com/unidoc/unidoc-examples package model ;import (_c "bufio";_cca "bytes";_cd "crypto/md5";_da "crypto/rand";_cc "crypto/sha1";_de "crypto/x509";_bg "encoding/binary";_bc "encoding/hex";_bd "errors";_d "fmt";_ccaf "github.com/h2non/filetype";_gec "github.com/unidoc/freetype";_afc "github.com/unidoc/freetype/truetype"; _ec "github.com/unidoc/pkcs7";_egb "github.com/unidoc/unipdf/v4/common";_dfg "github.com/unidoc/unipdf/v4/core";_fc "github.com/unidoc/unipdf/v4/core/security";_edb "github.com/unidoc/unipdf/v4/core/security/crypt";_efg "github.com/unidoc/unipdf/v4/internal/cmap"; _ef "github.com/unidoc/unipdf/v4/internal/imageutil";_gb "github.com/unidoc/unipdf/v4/internal/license";_efe "github.com/unidoc/unipdf/v4/internal/sampling";_ff "github.com/unidoc/unipdf/v4/internal/textencoding";_ea "github.com/unidoc/unipdf/v4/internal/timeutils"; _eea "github.com/unidoc/unipdf/v4/internal/transform";_gdb "github.com/unidoc/unipdf/v4/internal/uuid";_beg "github.com/unidoc/unipdf/v4/model/internal/docutil";_bf "github.com/unidoc/unipdf/v4/model/internal/fonts";_bba "github.com/unidoc/unipdf/v4/model/mdp"; _dfd "github.com/unidoc/unipdf/v4/model/sigutil";_cb "github.com/unidoc/unipdf/v4/ps";_be "github.com/unidoc/unitype";_fce "golang.org/x/image/font";_gff "golang.org/x/xerrors";_g "hash";_gf "image";_dc "image/color";_f "image/draw";_ "image/gif";_e "image/png"; _edg "io";_df "math";_eg "math/rand";_ga "os";_ac "path/filepath";_gd "regexp";_ed "sort";_gg "strconv";_af "strings";_b "sync";_ge "time";_cf "unicode";_ee "unicode/utf8";); // RemovePage removes a page by number. func (_adbdb *PdfAppender )RemovePage (pageNum int ){_bdfd :=pageNum -1;_adbdb ._egfc =append (_adbdb ._egfc [0:_bdfd ],_adbdb ._egfc [pageNum :]...);}; // String returns a string describing the font descriptor. func (_edfaf *PdfFontDescriptor )String ()string {var _abcb []string ;if _edfaf .FontName !=nil {_abcb =append (_abcb ,_edfaf .FontName .String ());};if _edfaf .FontFamily !=nil {_abcb =append (_abcb ,_edfaf .FontFamily .String ());};if _edfaf .fontFile !=nil {_abcb =append (_abcb ,_edfaf .fontFile .String ()); };if _edfaf ._gcge !=nil {_abcb =append (_abcb ,_edfaf ._gcge .String ());};_abcb =append (_abcb ,_d .Sprintf ("\u0046\u006f\u006et\u0046\u0069\u006c\u0065\u0033\u003d\u0025\u0074",_edfaf .FontFile3 !=nil ));return _d .Sprintf ("\u0046\u004f\u004e\u0054_D\u0045\u0053\u0043\u0052\u0049\u0050\u0054\u004f\u0052\u007b\u0025\u0073\u007d",_af .Join (_abcb ,"\u002c\u0020")); }; // NewPdfFontFromPdfObject loads a PdfFont from the dictionary `fontObj`. If there is a problem an // error is returned. func NewPdfFontFromPdfObject (fontObj _dfg .PdfObject )(*PdfFont ,error ){return _gfaec (fontObj ,true )}; // GetSamples converts the raw byte slice into samples which are stored in a uint32 bit array. // Each sample is represented by BitsPerComponent consecutive bits in the raw data. // NOTE: The method resamples the image byte data before returning the result and // this could lead to high memory usage, especially on large images. It should // be avoided, when possible. It is recommended to access the Data field of the // image directly or use the ColorAt method to extract individual pixels. func (_cedd *Image )GetSamples ()[]uint32 {_edffc :=_efe .ResampleBytes (_cedd .Data ,int (_cedd .BitsPerComponent ));if _cedd .BitsPerComponent < 8{_edffc =_cedd .samplesTrimPadding (_edffc );};_ceac :=int (_cedd .Width )*int (_cedd .Height )*_cedd .ColorComponents ; if len (_edffc )< _ceac {_egb .Log .Debug ("\u0045r\u0072\u006fr\u003a\u0020\u0054o\u006f\u0020\u0066\u0065\u0077\u0020\u0073a\u006d\u0070\u006c\u0065\u0073\u0020(\u0067\u006f\u0074\u0020\u0025\u0064\u002c\u0020\u0065\u0078\u0070e\u0063\u0074\u0069\u006e\u0067\u0020\u0025\u0064\u0029",len (_edffc ),_ceac ); return _edffc ;}else if len (_edffc )> _ceac {_egb .Log .Debug ("\u0045r\u0072\u006fr\u003a\u0020\u0054o\u006f\u0020\u006d\u0061\u006e\u0079\u0020s\u0061\u006d\u0070\u006c\u0065\u0073 \u0028\u0067\u006f\u0074\u0020\u0025\u0064\u002c\u0020\u0065\u0078p\u0065\u0063\u0074\u0069\u006e\u0067\u0020\u0025\u0064",len (_edffc ),_ceac ); _edffc =_edffc [:_ceac ];};return _edffc ;}; // PdfInfoTrapped specifies pdf trapped information. type PdfInfoTrapped string ; // PdfActionTrans represents a trans action. type PdfActionTrans struct{*PdfAction ;Trans _dfg .PdfObject ;}; // PdfOutputIntent provides a means for matching the color characteristics of a PDF document with // those of a target output device. // Multiple PdfOutputIntents allows the production process to be customized to the expected workflow and the specific // tools available. type PdfOutputIntent struct{ // Type is an optional PDF object that this dictionary describes. // If present, must be OutputIntent for an output intent dictionary. Type string ; // S defines the OutputIntent subtype which should match the standard used in given document i.e: // for PDF/X use PdfOutputIntentTypeX. S PdfOutputIntentType ; // OutputCondition is an optional field that is identifying the intended output device or production condition in // human-readable form. This is preferred method of defining such a string for presentation to the user. OutputCondition string ; // OutputConditionIdentifier is a required field identifying the intended output device or production condition in // human or machine-readable form. If human-readable, this string may be used // in lieu of an OutputCondition for presentation to the user. // A typical value for this entry would be the name of a production condition maintained // in an industry-standard registry such as the ICC Characterization Data Registry // If the intended production condition is not a recognized standard, the value Custom is recommended for this entry. // the DestOutputProfile entry defines the ICC profile, and the Info entry is used for further // human-readable identification. OutputConditionIdentifier string ; // RegistryName is an optional string field (conventionally URI) identifying the registry in which the condition // designated by OutputConditionIdentifier is defined. RegistryName string ; // Info is a required field if OutputConditionIdentifier does not specify a standard production condition. // A human-readable text string containing additional information or comments about intended // target device or production condition. Info string ; // DestOutputProfile is required if OutputConditionIdentifier does not specify a standard production condition. // It is an ICC profile stream defining the transformation from the PDF document's source colors to output device colorants. DestOutputProfile []byte ; // ColorComponents is the number of color components supported by given output profile. ColorComponents int ;_gacff *_dfg .PdfObjectDictionary ;};func (_ddfa *PdfReader )newPdfAnnotationPolygonFromDict (_fdf *_dfg .PdfObjectDictionary )(*PdfAnnotationPolygon ,error ){_feba :=PdfAnnotationPolygon {};_gedb ,_feg :=_ddfa .newPdfAnnotationMarkupFromDict (_fdf ); if _feg !=nil {return nil ,_feg ;};_feba .PdfAnnotationMarkup =_gedb ;_feba .Vertices =_fdf .Get ("\u0056\u0065\u0072\u0074\u0069\u0063\u0065\u0073");_feba .LE =_fdf .Get ("\u004c\u0045");_feba .BS =_fdf .Get ("\u0042\u0053");_feba .IC =_fdf .Get ("\u0049\u0043"); _feba .BE =_fdf .Get ("\u0042\u0045");_feba .IT =_fdf .Get ("\u0049\u0054");_feba .Measure =_fdf .Get ("\u004de\u0061\u0073\u0075\u0072\u0065");return &_feba ,nil ;}; // GetContainingPdfObject returns the container of the outline (indirect object). func (_cgfed *PdfOutline )GetContainingPdfObject ()_dfg .PdfObject {return _cgfed ._gcdeg }; // PdfFieldText represents a text field where user can enter text. type PdfFieldText struct{*PdfField ;DA *_dfg .PdfObjectString ;Q *_dfg .PdfObjectInteger ;DS *_dfg .PdfObjectString ;RV _dfg .PdfObject ;MaxLen *_dfg .PdfObjectInteger ;}; // ToPdfObject implements interface PdfModel. func (_cadb *PdfAnnotationPolygon )ToPdfObject ()_dfg .PdfObject {_cadb .PdfAnnotation .ToPdfObject ();_acc :=_cadb ._afae ;_cgg :=_acc .PdfObject .(*_dfg .PdfObjectDictionary );_cadb .appendToPdfDictionary (_cgg );_cgg .SetIfNotNil ("\u0053u\u0062\u0074\u0079\u0070\u0065",_dfg .MakeName ("\u0050o\u006c\u0079\u0067\u006f\u006e")); _cgg .SetIfNotNil ("\u0056\u0065\u0072\u0074\u0069\u0063\u0065\u0073",_cadb .Vertices );_cgg .SetIfNotNil ("\u004c\u0045",_cadb .LE );_cgg .SetIfNotNil ("\u0042\u0053",_cadb .BS );_cgg .SetIfNotNil ("\u0049\u0043",_cadb .IC );_cgg .SetIfNotNil ("\u0042\u0045",_cadb .BE ); _cgg .SetIfNotNil ("\u0049\u0054",_cadb .IT );_cgg .SetIfNotNil ("\u004de\u0061\u0073\u0075\u0072\u0065",_cadb .Measure );return _acc ;};const (RelationshipSource FileRelationship =iota ;RelationshipData ;RelationshipAlternative ;RelationshipSupplement ; RelationshipUnspecified ;); // EmbeddedFile represents an embedded file. type EmbeddedFile struct{Name string ;Content []byte ;FileType string ;Description string ;Relationship FileRelationship ;Hash string ;CreationTime _ge .Time ;ModTime _ge .Time ;}; // PdfAnnotationPopup represents Popup annotations. // (Section 12.5.6.14). type PdfAnnotationPopup struct{*PdfAnnotation ;Parent _dfg .PdfObject ;Open _dfg .PdfObject ;};func _befee (_bacdf _dfg .PdfObject )(*PdfFunctionType3 ,error ){_bbdd :=&PdfFunctionType3 {};var _dbgg *_dfg .PdfObjectDictionary ;if _aeff ,_ffgce :=_bacdf .(*_dfg .PdfIndirectObject ); _ffgce {_fbffa ,_gbeca :=_aeff .PdfObject .(*_dfg .PdfObjectDictionary );if !_gbeca {return nil ,_bd .New ("\u0074\u0079p\u0065\u0020\u0063h\u0065\u0063\u006b\u0020\u0065\u0072\u0072\u006f\u0072");};_bbdd ._begcf =_aeff ;_dbgg =_fbffa ;}else if _gabc ,_gabbc :=_bacdf .(*_dfg .PdfObjectDictionary ); _gabbc {_dbgg =_gabc ;}else {return nil ,_bd .New ("\u0074\u0079p\u0065\u0020\u0063h\u0065\u0063\u006b\u0020\u0065\u0072\u0072\u006f\u0072");};_feece ,_eadec :=_dfg .TraceToDirectObject (_dbgg .Get ("\u0044\u006f\u006d\u0061\u0069\u006e")).(*_dfg .PdfObjectArray ); if !_eadec {_egb .Log .Error ("D\u006fm\u0061\u0069\u006e\u0020\u006e\u006f\u0074\u0020s\u0070\u0065\u0063\u0069fi\u0065\u0064");return nil ,_bd .New ("\u0072\u0065q\u0075\u0069\u0072\u0065d\u0020\u0061t\u0074\u0072\u0069\u0062\u0075\u0074\u0065\u0020m\u0069\u0073\u0073\u0069\u006e\u0067\u0020\u006f\u0072\u0020\u0069\u006ev\u0061\u006c\u0069\u0064"); };if _feece .Len ()!=2{_egb .Log .Error ("\u0044\u006f\u006d\u0061\u0069\u006e\u0020\u0069\u006ev\u0061\u006c\u0069\u0064");return nil ,_bd .New ("i\u006ev\u0061\u006c\u0069\u0064\u0020\u0064\u006f\u006da\u0069\u006e\u0020\u0072an\u0067\u0065");};_fbfae ,_feebg :=_feece .ToFloat64Array (); if _feebg !=nil {return nil ,_feebg ;};_bbdd .Domain =_fbfae ;_feece ,_eadec =_dfg .TraceToDirectObject (_dbgg .Get ("\u0052\u0061\u006eg\u0065")).(*_dfg .PdfObjectArray );if _eadec {if _feece .Len ()< 0||_feece .Len ()%2!=0{return nil ,_bd .New ("\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0072\u0061\u006e\u0067\u0065"); };_dbbbe ,_aeeceg :=_feece .ToFloat64Array ();if _aeeceg !=nil {return nil ,_aeeceg ;};_bbdd .Range =_dbbbe ;};_feece ,_eadec =_dfg .TraceToDirectObject (_dbgg .Get ("\u0046u\u006e\u0063\u0074\u0069\u006f\u006es")).(*_dfg .PdfObjectArray );if !_eadec {_egb .Log .Error ("\u0046\u0075\u006ect\u0069\u006f\u006e\u0073\u0020\u006e\u006f\u0074\u0020\u0073\u0070\u0065\u0063\u0069\u0066\u0069\u0065\u0064"); return nil ,_bd .New ("\u0072\u0065q\u0075\u0069\u0072\u0065d\u0020\u0061t\u0074\u0072\u0069\u0062\u0075\u0074\u0065\u0020m\u0069\u0073\u0073\u0069\u006e\u0067\u0020\u006f\u0072\u0020\u0069\u006ev\u0061\u006c\u0069\u0064");};_bbdd .Functions =[]PdfFunction {}; for _ ,_cdga :=range _feece .Elements (){_cggb ,_gcefe :=_gbada (_cdga );if _gcefe !=nil {return nil ,_gcefe ;};_bbdd .Functions =append (_bbdd .Functions ,_cggb );};_feece ,_eadec =_dfg .TraceToDirectObject (_dbgg .Get ("\u0042\u006f\u0075\u006e\u0064\u0073")).(*_dfg .PdfObjectArray ); if !_eadec {_egb .Log .Error ("B\u006fu\u006e\u0064\u0073\u0020\u006e\u006f\u0074\u0020s\u0070\u0065\u0063\u0069fi\u0065\u0064");return nil ,_bd .New ("\u0072\u0065q\u0075\u0069\u0072\u0065d\u0020\u0061t\u0074\u0072\u0069\u0062\u0075\u0074\u0065\u0020m\u0069\u0073\u0073\u0069\u006e\u0067\u0020\u006f\u0072\u0020\u0069\u006ev\u0061\u006c\u0069\u0064"); };_gfcd ,_feebg :=_feece .ToFloat64Array ();if _feebg !=nil {return nil ,_feebg ;};_bbdd .Bounds =_gfcd ;if len (_bbdd .Bounds )!=len (_bbdd .Functions )-1{_egb .Log .Error ("B\u006f\u0075\u006e\u0064\u0073\u0020\u0028\u0025\u0064)\u0020\u0061\u006e\u0064\u0020\u006e\u0075m \u0066\u0075\u006e\u0063t\u0069\u006f\u006e\u0073\u0020\u0028\u0025\u0064\u0029 n\u006f\u0074 \u006d\u0061\u0074\u0063\u0068\u0069\u006e\u0067",len (_bbdd .Bounds ),len (_bbdd .Functions )); return nil ,_bd .New ("r\u0061\u006e\u0067\u0065\u0020\u0063\u0068\u0065\u0063\u006b");};_feece ,_eadec =_dfg .TraceToDirectObject (_dbgg .Get ("\u0045\u006e\u0063\u006f\u0064\u0065")).(*_dfg .PdfObjectArray );if !_eadec {_egb .Log .Error ("E\u006ec\u006f\u0064\u0065\u0020\u006e\u006f\u0074\u0020s\u0070\u0065\u0063\u0069fi\u0065\u0064"); return nil ,_bd .New ("\u0072\u0065q\u0075\u0069\u0072\u0065d\u0020\u0061t\u0074\u0072\u0069\u0062\u0075\u0074\u0065\u0020m\u0069\u0073\u0073\u0069\u006e\u0067\u0020\u006f\u0072\u0020\u0069\u006ev\u0061\u006c\u0069\u0064");};_gfaab ,_feebg :=_feece .ToFloat64Array (); if _feebg !=nil {return nil ,_feebg ;};_bbdd .Encode =_gfaab ;if len (_bbdd .Encode )!=2*len (_bbdd .Functions ){_egb .Log .Error ("\u004c\u0065\u006e\u0020\u0065\u006e\u0063\u006f\u0064\u0065\u0020\u0028\u0025\u0064\u0029 \u0061\u006e\u0064\u0020\u006e\u0075\u006d\u0020\u0066\u0075\u006e\u0063\u0074i\u006f\u006e\u0073\u0020\u0028\u0025\u0064\u0029\u0020\u006e\u006f\u0074 m\u0061\u0074\u0063\u0068\u0069\u006e\u0067\u0020\u0075\u0070",len (_bbdd .Encode ),len (_bbdd .Functions )); return nil ,_bd .New ("r\u0061\u006e\u0067\u0065\u0020\u0063\u0068\u0065\u0063\u006b");};return _bbdd ,nil ;};func _fgagc (_fgbc *PdfField ,_fcedfb _dfg .PdfObject ){for _ ,_becec :=range _fgbc .Annotations {_becec .AS =_fcedfb ;_becec .ToPdfObject (); };}; // SetVersion sets the PDF version of the output file. func (_adecd *PdfWriter )SetVersion (majorVersion ,minorVersion int ){_adecd ._cfbcb .Major =majorVersion ;_adecd ._cfbcb .Minor =minorVersion ;}; // DecodeArray returns the range of color component values in the Lab colorspace. func (_fbgab *PdfColorspaceLab )DecodeArray ()[]float64 {_dfae :=[]float64 {0,100};if _fbgab !=nil &&_fbgab .Range !=nil &&len (_fbgab .Range )==4{_dfae =append (_dfae ,_fbgab .Range ...);}else {_dfae =append (_dfae ,-100,100,-100,100);};return _dfae ; }; // StandardValidator is the interface that is used for the PDF StandardImplementer validation for the PDF document. // It is using a CompliancePdfReader which is expected to give more Metadata during reading process. // NOTE: This implementation is in experimental development state. // // Keep in mind that it might change in the subsequent minor versions. type StandardValidator interface{ // ValidateStandard checks if the input reader ValidateStandard (_dcfga *CompliancePdfReader )error ;}; // SetHideMenubar sets the value of the hideMenubar flag. func (_bbbcea *ViewerPreferences )SetHideMenubar (hideMenubar bool ){_bbbcea ._eaded =&hideMenubar }; // ToPdfObject returns the PDF representation of the DSS dictionary. func (_gaddd *DSS )ToPdfObject ()_dfg .PdfObject {_fffe :=_gaddd ._beab .PdfObject .(*_dfg .PdfObjectDictionary );_fffe .Clear ();_adee :=_dfg .MakeDict ();for _ggagf ,_aeda :=range _gaddd .VRI {_adee .Set (*_dfg .MakeName (_ggagf ),_aeda .ToPdfObject ()); };_fffe .SetIfNotNil ("\u0043\u0065\u0072t\u0073",_aedcf (_gaddd .Certs ));_fffe .SetIfNotNil ("\u004f\u0043\u0053P\u0073",_aedcf (_gaddd .OCSPs ));_fffe .SetIfNotNil ("\u0043\u0052\u004c\u0073",_aedcf (_gaddd .CRLs ));_fffe .Set ("\u0056\u0052\u0049",_adee ); return _gaddd ._beab ;}; // Permissions specify a permissions dictionary (PDF 1.5). // (Section 12.8.4, Table 258 - Entries in a permissions dictionary p. 477 in PDF32000_2008). type Permissions struct{DocMDP *PdfSignature ;_gbdee *_dfg .PdfObjectDictionary ;}; // PdfColorspaceDeviceNAttributes contains additional information about the components of colour space that // conforming readers may use. Conforming readers need not use the alternateSpace and tintTransform parameters, // and may instead use a custom blending algorithms, along with other information provided in the attributes // dictionary if present. type PdfColorspaceDeviceNAttributes struct{Subtype *_dfg .PdfObjectName ;Colorants _dfg .PdfObject ;Process _dfg .PdfObject ;MixingHints _dfg .PdfObject ;_bfddg *_dfg .PdfIndirectObject ;};func (_fbbc *PdfReader )newPdfAnnotationFromIndirectObject (_bbcg *_dfg .PdfIndirectObject )(*PdfAnnotation ,error ){_ccd ,_adc :=_bbcg .PdfObject .(*_dfg .PdfObjectDictionary ); if !_adc {return nil ,_d .Errorf ("\u0061\u006e\u006e\u006f\u0074\u0061\u0074\u0069\u006f\u006e\u0020\u0069\u006e\u0064\u0069r\u0065\u0063\u0074\u0020\u006f\u0062\u006a\u0065\u0063\u0074\u0020\u006e\u006ft\u0020\u0063\u006f\u006e\u0074\u0061\u0069\u006e\u0069\u006e\u0067\u0020a \u0064\u0069\u0063\u0074\u0069\u006f\u006e\u0061\u0072\u0079"); };if model :=_fbbc ._acaed .GetModelFromPrimitive (_ccd );model !=nil {_fcace ,_acag :=model .(*PdfAnnotation );if !_acag {return nil ,_d .Errorf ("\u0063\u0061\u0063\u0068\u0065\u0064 \u006d\u006f\u0064\u0065\u006c\u0020\u006e\u006f\u0074\u0020\u0061\u0020\u0050D\u0046\u0020\u0061\u006e\u006e\u006f\u0074a\u0074\u0069\u006f\u006e"); };return _fcace ,nil ;};_bbca :=&PdfAnnotation {};_bbca ._afae =_bbcg ;_fbbc ._acaed .Register (_ccd ,_bbca );if _aeeg :=_ccd .Get ("\u0054\u0079\u0070\u0065");_aeeg !=nil {_adfd ,_aff :=_aeeg .(*_dfg .PdfObjectName );if !_aff {_egb .Log .Trace ("\u0049\u006e\u0063\u006f\u006d\u0070\u0061\u0074\u0069\u0062\u0069\u006c\u0069\u0074\u0079\u0021\u0020\u0049\u006e\u0076a\u006c\u0069\u0064\u0020\u0074\u0079\u0070\u0065\u0020\u006f\u0066\u0020\u0054\u0079\u0070\u0065\u0020\u0028\u0025\u0054\u0029\u0020\u002d\u0020\u0073\u0068\u006f\u0075\u006c\u0064 \u0062\u0065\u0020\u004e\u0061m\u0065",_aeeg ); }else {if *_adfd !="\u0041\u006e\u006eo\u0074"{_egb .Log .Trace ("\u0055\u006e\u0073\u0075\u0073\u0070\u0065\u0063\u0074\u0065d\u0020\u0054\u0079\u0070\u0065\u0020\u0021=\u0020\u0041\u006e\u006e\u006f\u0074\u0020\u0028\u0025\u0073\u0029",*_adfd );};};}; if _cddf :=_ccd .Get ("\u0052\u0065\u0063\u0074");_cddf !=nil {_bbca .Rect =_cddf ;};if _eaf :=_ccd .Get ("\u0043\u006f\u006e\u0074\u0065\u006e\u0074\u0073");_eaf !=nil {_bbca .Contents =_eaf ;};if _bde :=_ccd .Get ("\u0050");_bde !=nil {_bbca .P =_bde ; };if _ddb :=_ccd .Get ("\u004e\u004d");_ddb !=nil {_bbca .NM =_ddb ;};if _fac :=_ccd .Get ("\u004d");_fac !=nil {_bbca .M =_fac ;};if _cgb :=_ccd .Get ("\u0046");_cgb !=nil {_bbca .F =_cgb ;};if _cbc :=_ccd .Get ("\u0041\u0050");_cbc !=nil {_bbca .AP =_cbc ; };if _cdda :=_ccd .Get ("\u0041\u0053");_cdda !=nil {_bbca .AS =_cdda ;};if _eeae :=_ccd .Get ("\u0042\u006f\u0072\u0064\u0065\u0072");_eeae !=nil {_bbca .Border =_eeae ;};if _efee :=_ccd .Get ("\u0043");_efee !=nil {_bbca .C =_efee ;};if _eee :=_ccd .Get ("\u0053\u0074\u0072u\u0063\u0074\u0050\u0061\u0072\u0065\u006e\u0074"); _eee !=nil {_bbca .StructParent =_eee ;};if _ccc :=_ccd .Get ("\u004f\u0043");_ccc !=nil {_bbca .OC =_ccc ;};_eeee :=_ccd .Get ("\u0053u\u0062\u0074\u0079\u0070\u0065");if _eeee ==nil {_egb .Log .Debug ("\u0057\u0041\u0052\u004e\u0049\u004e\u0047:\u0020\u0043\u006f\u006d\u0070\u0061\u0074\u0069\u0062\u0069\u006c\u0069\u0074\u0079 \u0069s\u0073\u0075\u0065\u0020\u002d\u0020a\u006e\u006e\u006f\u0074\u0061\u0074\u0069o\u006e\u0020\u0053\u0075\u0062\u0074\u0079\u0070\u0065\u0020\u006d\u0069\u0073\u0073\u0069\u006e\u0067\u0020\u002d\u0020\u0061\u0073\u0073u\u006d\u0069\u006e\u0067\u0020\u006e\u006f\u0020\u0073\u0075\u0062\u0074\u0079p\u0065"); _bbca ._dga =nil ;return _bbca ,nil ;};_dfe ,_fdc :=_eeee .(*_dfg .PdfObjectName );if !_fdc {_egb .Log .Debug ("E\u0052\u0052\u004f\u0052\u003a\u0020\u0049\u006e\u0076a\u006c\u0069\u0064\u0020\u0053\u0075\u0062ty\u0070\u0065\u0020\u006fb\u006a\u0065\u0063\u0074\u0020\u0074\u0079\u0070\u0065 !\u003d\u0020n\u0061\u006d\u0065\u0020\u0028\u0025\u0054\u0029",_eeee ); return nil ,_d .Errorf ("i\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0053\u0075\u0062\u0074\u0079\u0070\u0065\u0020\u006f\u0062\u006ae\u0063\u0074\u0020\u0074\u0079\u0070\u0065\u0020\u0021\u003d n\u0061\u006d\u0065 \u0028%\u0054\u0029",_eeee );};switch *_dfe {case "\u0054\u0065\u0078\u0074":_ecc ,_cecg :=_fbbc .newPdfAnnotationTextFromDict (_ccd ); if _cecg !=nil {return nil ,_cecg ;};_ecc .PdfAnnotation =_bbca ;_bbca ._dga =_ecc ;return _bbca ,nil ;case "\u004c\u0069\u006e\u006b":_agba ,_cfb :=_fbbc .newPdfAnnotationLinkFromDict (_ccd );if _cfb !=nil {return nil ,_cfb ;};_agba .PdfAnnotation =_bbca ; _bbca ._dga =_agba ;return _bbca ,nil ;case "\u0046\u0072\u0065\u0065\u0054\u0065\u0078\u0074":_bdd ,_caae :=_fbbc .newPdfAnnotationFreeTextFromDict (_ccd );if _caae !=nil {return nil ,_caae ;};_bdd .PdfAnnotation =_bbca ;_bbca ._dga =_bdd ;return _bbca ,nil ; case "\u004c\u0069\u006e\u0065":_edgd ,_bfgb :=_fbbc .newPdfAnnotationLineFromDict (_ccd );if _bfgb !=nil {return nil ,_bfgb ;};_edgd .PdfAnnotation =_bbca ;_bbca ._dga =_edgd ;_egb .Log .Trace ("\u004c\u0049\u004e\u0045\u0020\u0041N\u004e\u004f\u0054\u0041\u0054\u0049\u004f\u004e\u003a\u0020\u0061\u006e\u006eo\u0074\u0020\u0028\u0025\u0054\u0029\u003a \u0025\u002b\u0076\u000a",_bbca ,_bbca ); _egb .Log .Trace ("\u004c\u0049\u004eE\u0020\u0041\u004e\u004eO\u0054\u0041\u0054\u0049\u004f\u004e\u003a \u0063\u0074\u0078\u0020\u0028\u0025\u0054\u0029\u003a\u0020\u0025\u002b\u0076\u000a",_edgd ,_edgd );_egb .Log .Trace ("\u004c\u0049\u004e\u0045\u0020\u0041\u004e\u004e\u004f\u0054\u0041\u0054\u0049\u004f\u004e\u0020\u004d\u0061\u0072\u006b\u0075\u0070\u003a\u0020c\u0074\u0078\u0020\u0028\u0025T\u0029\u003a \u0025\u002b\u0076\u000a",_edgd .PdfAnnotationMarkup ,_edgd .PdfAnnotationMarkup ); return _bbca ,nil ;case "\u0053\u0071\u0075\u0061\u0072\u0065":_afd ,_babe :=_fbbc .newPdfAnnotationSquareFromDict (_ccd );if _babe !=nil {return nil ,_babe ;};_afd .PdfAnnotation =_bbca ;_bbca ._dga =_afd ;return _bbca ,nil ;case "\u0043\u0069\u0072\u0063\u006c\u0065":_bbb ,_aga :=_fbbc .newPdfAnnotationCircleFromDict (_ccd ); if _aga !=nil {return nil ,_aga ;};_bbb .PdfAnnotation =_bbca ;_bbca ._dga =_bbb ;return _bbca ,nil ;case "\u0050o\u006c\u0079\u0067\u006f\u006e":_daca ,_dcd :=_fbbc .newPdfAnnotationPolygonFromDict (_ccd );if _dcd !=nil {return nil ,_dcd ;};_daca .PdfAnnotation =_bbca ; _bbca ._dga =_daca ;return _bbca ,nil ;case "\u0050\u006f\u006c\u0079\u004c\u0069\u006e\u0065":_eff ,_cffa :=_fbbc .newPdfAnnotationPolyLineFromDict (_ccd );if _cffa !=nil {return nil ,_cffa ;};_eff .PdfAnnotation =_bbca ;_bbca ._dga =_eff ;return _bbca ,nil ; case "\u0048i\u0067\u0068\u006c\u0069\u0067\u0068t":_gcd ,_gbag :=_fbbc .newPdfAnnotationHighlightFromDict (_ccd );if _gbag !=nil {return nil ,_gbag ;};_gcd .PdfAnnotation =_bbca ;_bbca ._dga =_gcd ;return _bbca ,nil ;case "\u0055n\u0064\u0065\u0072\u006c\u0069\u006ee":_gfee ,_fdde :=_fbbc .newPdfAnnotationUnderlineFromDict (_ccd ); if _fdde !=nil {return nil ,_fdde ;};_gfee .PdfAnnotation =_bbca ;_bbca ._dga =_gfee ;return _bbca ,nil ;case "\u0053\u0071\u0075\u0069\u0067\u0067\u006c\u0079":_dff ,_cfeec :=_fbbc .newPdfAnnotationSquigglyFromDict (_ccd );if _cfeec !=nil {return nil ,_cfeec ; };_dff .PdfAnnotation =_bbca ;_bbca ._dga =_dff ;return _bbca ,nil ;case "\u0053t\u0072\u0069\u006b\u0065\u004f\u0075t":_edbg ,_bbaf :=_fbbc .newPdfAnnotationStrikeOut (_ccd );if _bbaf !=nil {return nil ,_bbaf ;};_edbg .PdfAnnotation =_bbca ;_bbca ._dga =_edbg ; return _bbca ,nil ;case "\u0043\u0061\u0072e\u0074":_cgc ,_dbc :=_fbbc .newPdfAnnotationCaretFromDict (_ccd );if _dbc !=nil {return nil ,_dbc ;};_cgc .PdfAnnotation =_bbca ;_bbca ._dga =_cgc ;return _bbca ,nil ;case "\u0053\u0074\u0061m\u0070":_becd ,_afg :=_fbbc .newPdfAnnotationStampFromDict (_ccd ); if _afg !=nil {return nil ,_afg ;};_becd .PdfAnnotation =_bbca ;_bbca ._dga =_becd ;return _bbca ,nil ;case "\u0049\u006e\u006b":_efd ,_eabg :=_fbbc .newPdfAnnotationInkFromDict (_ccd );if _eabg !=nil {return nil ,_eabg ;};_efd .PdfAnnotation =_bbca ;_bbca ._dga =_efd ; return _bbca ,nil ;case "\u0050\u006f\u0070u\u0070":_cbe ,_gbb :=_fbbc .newPdfAnnotationPopupFromDict (_ccd );if _gbb !=nil {return nil ,_gbb ;};_cbe .PdfAnnotation =_bbca ;_bbca ._dga =_cbe ;return _bbca ,nil ;case "\u0046\u0069\u006c\u0065\u0041\u0074\u0074\u0061\u0063h\u006d\u0065\u006e\u0074":_eabe ,_adfg :=_fbbc .newPdfAnnotationFileAttachmentFromDict (_ccd ); if _adfg !=nil {return nil ,_adfg ;};_eabe .PdfAnnotation =_bbca ;_bbca ._dga =_eabe ;return _bbca ,nil ;case "\u0053\u006f\u0075n\u0064":_gce ,_efa :=_fbbc .newPdfAnnotationSoundFromDict (_ccd );if _efa !=nil {return nil ,_efa ;};_gce .PdfAnnotation =_bbca ; _bbca ._dga =_gce ;return _bbca ,nil ;case "\u0052i\u0063\u0068\u004d\u0065\u0064\u0069a":_gbe ,_bgcd :=_fbbc .newPdfAnnotationRichMediaFromDict (_ccd );if _bgcd !=nil {return nil ,_bgcd ;};_gbe .PdfAnnotation =_bbca ;_bbca ._dga =_gbe ;return _bbca ,nil ; case "\u004d\u006f\u0076i\u0065":_edad ,_fcg :=_fbbc .newPdfAnnotationMovieFromDict (_ccd );if _fcg !=nil {return nil ,_fcg ;};_edad .PdfAnnotation =_bbca ;_bbca ._dga =_edad ;return _bbca ,nil ;case "\u0053\u0063\u0072\u0065\u0065\u006e":_begf ,_faaa :=_fbbc .newPdfAnnotationScreenFromDict (_ccd ); if _faaa !=nil {return nil ,_faaa ;};_begf .PdfAnnotation =_bbca ;_bbca ._dga =_begf ;return _bbca ,nil ;case "\u0057\u0069\u0064\u0067\u0065\u0074":_feef ,_cddc :=_fbbc .newPdfAnnotationWidgetFromDict (_ccd );if _cddc !=nil {return nil ,_cddc ;};_feef .PdfAnnotation =_bbca ; _bbca ._dga =_feef ;return _bbca ,nil ;case "P\u0072\u0069\u006e\u0074\u0065\u0072\u004d\u0061\u0072\u006b":_dbbb ,_fed :=_fbbc .newPdfAnnotationPrinterMarkFromDict (_ccd );if _fed !=nil {return nil ,_fed ;};_dbbb .PdfAnnotation =_bbca ;_bbca ._dga =_dbbb ; return _bbca ,nil ;case "\u0054r\u0061\u0070\u004e\u0065\u0074":_fec ,_bedb :=_fbbc .newPdfAnnotationTrapNetFromDict (_ccd );if _bedb !=nil {return nil ,_bedb ;};_fec .PdfAnnotation =_bbca ;_bbca ._dga =_fec ;return _bbca ,nil ;case "\u0057a\u0074\u0065\u0072\u006d\u0061\u0072k":_ccbg ,_cfc :=_fbbc .newPdfAnnotationWatermarkFromDict (_ccd ); if _cfc !=nil {return nil ,_cfc ;};_ccbg .PdfAnnotation =_bbca ;_bbca ._dga =_ccbg ;return _bbca ,nil ;case "\u0033\u0044":_eaa ,_efcg :=_fbbc .newPdfAnnotation3DFromDict (_ccd );if _efcg !=nil {return nil ,_efcg ;};_eaa .PdfAnnotation =_bbca ;_bbca ._dga =_eaa ; return _bbca ,nil ;case "\u0050\u0072\u006f\u006a\u0065\u0063\u0074\u0069\u006f\u006e":_bfca ,_fdbf :=_fbbc .newPdfAnnotationProjectionFromDict (_ccd );if _fdbf !=nil {return nil ,_fdbf ;};_bfca .PdfAnnotation =_bbca ;_bbca ._dga =_bfca ;return _bbca ,nil ; case "\u0052\u0065\u0064\u0061\u0063\u0074":_cgea ,_cbf :=_fbbc .newPdfAnnotationRedactFromDict (_ccd );if _cbf !=nil {return nil ,_cbf ;};_cgea .PdfAnnotation =_bbca ;_bbca ._dga =_cgea ;return _bbca ,nil ;};_egb .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0049\u0067\u006e\u006f\u0072\u0069\u006e\u0067\u0020\u0075\u006e\u006b\u006e\u006f\u0077\u006e\u0020a\u006e\u006e\u006f\u0074\u0061t\u0069\u006fn\u003a\u0020\u0025\u0073",*_dfe ); return nil ,nil ;}; // NewPdfActionNamed returns a new "named" action. func NewPdfActionNamed ()*PdfActionNamed {_dece :=NewPdfAction ();_ggab :=&PdfActionNamed {};_ggab .PdfAction =_dece ;_dece .SetContext (_ggab );return _ggab ;}; // ToPdfObject returns the PDF representation of the shading pattern. func (_aefcc *PdfShadingPattern )ToPdfObject ()_dfg .PdfObject {_aefcc .PdfPattern .ToPdfObject ();_dggcd :=_aefcc .getDict ();if _aefcc .Shading !=nil {_dggcd .Set ("\u0053h\u0061\u0064\u0069\u006e\u0067",_aefcc .Shading .ToPdfObject ());};if _aefcc .Matrix !=nil {_dggcd .Set ("\u004d\u0061\u0074\u0072\u0069\u0078",_aefcc .Matrix ); };if _aefcc .ExtGState !=nil {_dggcd .Set ("\u0045x\u0074\u0047\u0053\u0074\u0061\u0074e",_aefcc .ExtGState );};return _aefcc ._adcec ;}; // ToPdfObject returns the text field dictionary within an indirect object (container). func (_bbgac *PdfFieldText )ToPdfObject ()_dfg .PdfObject {_bbgac .PdfField .ToPdfObject ();_bdebf :=_bbgac ._caaa ;_eadbda :=_bdebf .PdfObject .(*_dfg .PdfObjectDictionary );_eadbda .Set ("\u0046\u0054",_dfg .MakeName ("\u0054\u0078"));if _bbgac .DA !=nil {_eadbda .Set ("\u0044\u0041",_bbgac .DA ); };if _bbgac .Q !=nil {_eadbda .Set ("\u0051",_bbgac .Q );};if _bbgac .DS !=nil {_eadbda .Set ("\u0044\u0053",_bbgac .DS );};if _bbgac .RV !=nil {_eadbda .Set ("\u0052\u0056",_bbgac .RV );};if _bbgac .MaxLen !=nil {_eadbda .Set ("\u004d\u0061\u0078\u004c\u0065\u006e",_bbgac .MaxLen ); };return _bdebf ;}; // NewPdfActionURI returns a new "Uri" action. func NewPdfActionURI ()*PdfActionURI {_gga :=NewPdfAction ();_cdf :=&PdfActionURI {};_cdf .PdfAction =_gga ;_gga .SetContext (_cdf );return _cdf ;}; // GetContainingPdfObject gets the primitive used to parse the color space. func (_adgbg *PdfColorspaceICCBased )GetContainingPdfObject ()_dfg .PdfObject {return _adgbg ._edadb }; // NewPdfAnnotationScreen returns a new screen annotation. func NewPdfAnnotationScreen ()*PdfAnnotationScreen {_ddf :=NewPdfAnnotation ();_bag :=&PdfAnnotationScreen {};_bag .PdfAnnotation =_ddf ;_ddf .SetContext (_bag );return _bag ;};func (_eabbb *pdfFontType0 )baseFields ()*fontCommon {return &_eabbb .fontCommon }; // NewPdfShadingType2 creates an empty shading type 2 dictionary. func NewPdfShadingType2 ()*PdfShadingType2 {_ebdcc :=&PdfShadingType2 {};_ebdcc .PdfShading =&PdfShading {};_ebdcc .PdfShading ._gdfdg =_dfg .MakeIndirectObject (_dfg .MakeDict ());_ebdcc .PdfShading ._fdbfb =_ebdcc ;return _ebdcc ;}; // NewPdfAnnotationProjection returns a new projection annotation. func NewPdfAnnotationProjection ()*PdfAnnotationProjection {_aece :=NewPdfAnnotation ();_bfea :=&PdfAnnotationProjection {};_bfea .PdfAnnotation =_aece ;_bfea .PdfAnnotationMarkup =&PdfAnnotationMarkup {};_aece .SetContext (_bfea );return _bfea ;}; // NewPdfColorspaceDeviceN returns an initialized PdfColorspaceDeviceN. func NewPdfColorspaceDeviceN ()*PdfColorspaceDeviceN {_gcbc :=&PdfColorspaceDeviceN {};return _gcbc }; // PartialName returns the partial name of the field. func (_ecag *PdfField )PartialName ()string {_gfef :="";if _ecag .T !=nil {_gfef =_ecag .T .Decoded ();}else {_egb .Log .Debug ("\u0046\u0069el\u0064\u0020\u006di\u0073\u0073\u0069\u006eg T\u0020fi\u0065\u006c\u0064\u0020\u0028\u0069\u006eco\u006d\u0070\u0061\u0074\u0069\u0062\u006ce\u0029"); };return _gfef ;}; // ToPdfObject returns the PDF representation of the colorspace. func (_fdfab *PdfPageResourcesColorspaces )ToPdfObject ()_dfg .PdfObject {_deage :=_dfg .MakeDict ();for _ ,_fdace :=range _fdfab .Names {_deage .Set (_dfg .PdfObjectName (_fdace ),_fdfab .Colorspaces [_fdace ].ToPdfObject ());};if _fdfab ._acbeg !=nil {_fdfab ._acbeg .PdfObject =_deage ; return _fdfab ._acbeg ;};return _deage ;}; // PdfColorPattern represents a pattern color. type PdfColorPattern struct{Color PdfColor ;PatternName _dfg .PdfObjectName ;};const (_dbacd =0x00001;_fgba =0x00002;_dfefc =0x00004;_gbcad =0x00008;_cacg =0x00020;_dfdb =0x00040;_beeeg =0x10000;_ddgeb =0x20000;_gfba =0x40000;); // String returns a string that describes `font`. func (_afcga *PdfFont )String ()string {_bffb :="";if _afcga ._fab .Encoder ()!=nil {_bffb =_afcga ._fab .Encoder ().String ();};return _d .Sprintf ("\u0046\u004f\u004e\u0054\u007b\u0025\u0054\u0020\u0025s\u0020\u0025\u0073\u007d",_afcga ._fab ,_afcga .baseFields ().coreString (),_bffb ); };func (_bddeg *PdfWriter )writeBytes (_cedgf []byte ){if _bddeg ._afgfcg !=nil {return ;};_gedbf ,_eedee :=_bddeg ._bfdbg .Write (_cedgf );_bddeg ._cffge +=int64 (_gedbf );_bddeg ._afgfcg =_eedee ;}; // PdfField contains the common attributes of a form field. The context object contains the specific field data // which can represent a button, text, choice or signature. // The PdfField is typically not used directly, but is encapsulated by the more specific field types such as // PdfFieldButton etc (i.e. the context attribute). type PdfField struct{_agcfe PdfModel ;_caaa *_dfg .PdfIndirectObject ;Parent *PdfField ;Annotations []*PdfAnnotationWidget ;Kids []*PdfField ;FT *_dfg .PdfObjectName ;T *_dfg .PdfObjectString ;TU *_dfg .PdfObjectString ;TM *_dfg .PdfObjectString ;Ff *_dfg .PdfObjectInteger ; V _dfg .PdfObject ;DV _dfg .PdfObject ;AA _dfg .PdfObject ;VariableText *VariableText ;}; // DefaultFont returns the default font, which is currently the built in Helvetica. func DefaultFont ()*PdfFont {_gcfee ,_afcc :=_bf .NewStdFontByName (HelveticaName );if !_afcc {panic ("\u0048\u0065lv\u0065\u0074\u0069c\u0061\u0020\u0073\u0068oul\u0064 a\u006c\u0077\u0061\u0079\u0073\u0020\u0062e \u0061\u0076\u0061\u0069\u006c\u0061\u0062l\u0065"); };_bdcc :=_agafd (_gcfee );return &PdfFont {_fab :&_bdcc };};func (_daac *PdfReader )flattenFieldsWithOpts (_cbbd bool ,_eegc FieldAppearanceGenerator ,_edfc *FieldFlattenOpts )error {if _edfc ==nil {_edfc =&FieldFlattenOpts {};};var _eaeg bool ;_fbba :=map[*PdfAnnotation ]bool {}; {var _cbfca []*PdfField ;_fdee :=_daac .AcroForm ;if _fdee !=nil {if _edfc .FilterFunc !=nil {_cbfca =_fdee .filteredFields (_edfc .FilterFunc ,true );_eaeg =_fdee .Fields !=nil &&len (*_fdee .Fields )> 0;}else {_cbfca =_fdee .AllFields ();};};for _ ,_beaee :=range _cbfca {if len (_beaee .Annotations )< 1{_egb .Log .Debug ("\u004e\u006f\u0020\u0061\u006e\u006e\u006f\u0074\u0061\u0074\u0069\u006f\u006e\u0020\u0066\u006f\u0075\u006ed\u0020\u0066\u006f\u0072\u003a\u0020\u0025v\u002c\u0020\u006c\u006f\u006f\u006b\u0020\u0069\u006e\u0074\u006f \u004b\u0069\u0064\u0073\u0020\u004f\u0062\u006a\u0065\u0063\u0074",_beaee .PartialName ()); for _fcga ,_fagbd :=range _beaee .Kids {for _ ,_gecb :=range _fagbd .Annotations {_fbba [_gecb .PdfAnnotation ]=_beaee .V !=nil ;if _fagbd .V ==nil {_fagbd .V =_beaee .V ;};if _fagbd .T ==nil {_fagbd .T =_dfg .MakeString (_d .Sprintf ("\u0025\u0073\u0023%\u0064",_beaee .PartialName (),_fcga )); };if _eegc !=nil {_cegca ,_aeece :=_eegc .GenerateAppearanceDict (_fdee ,_fagbd ,_gecb );if _aeece !=nil {return _aeece ;};_gecb .AP =_cegca ;};};};};for _ ,_ffba :=range _beaee .Annotations {_fbba [_ffba .PdfAnnotation ]=_beaee .V !=nil ;if _eegc !=nil {_adeb ,_gdafe :=_eegc .GenerateAppearanceDict (_fdee ,_beaee ,_ffba ); if _gdafe !=nil {return _gdafe ;};_ffba .AP =_adeb ;};};};};if _cbbd {for _ ,_begfb :=range _daac .PageList {_gaegf ,_dgbee :=_begfb .GetAnnotations ();if _dgbee !=nil {return _dgbee ;};for _ ,_bfgea :=range _gaegf {_fbba [_bfgea ]=true ;};};};for _ ,_fefgf :=range _daac .PageList {_fcedf :=_fefgf .flattenFieldsWithOpts (_eegc ,_edfc ,_fbba ); if _fcedf !=nil {return _fcedf ;};};if !_eaeg {_daac .AcroForm =nil ;};return nil ;}; // PdfAnnotationUnderline represents Underline annotations. // (Section 12.5.6.10). type PdfAnnotationUnderline struct{*PdfAnnotation ;*PdfAnnotationMarkup ;QuadPoints _dfg .PdfObject ;}; // ReplaceAcroForm replaces the acrobat form. It appends a new form to the Pdf which // replaces the original AcroForm. func (_egdc *PdfAppender )ReplaceAcroForm (acroForm *PdfAcroForm ){if acroForm !=nil {_egdc .updateObjectsDeep (acroForm .ToPdfObject (),nil );};_egdc ._ebfe =acroForm ;}; // SubsetRegistered subsets the font to only the glyphs that have been registered by the encoder. // // NOTE: This only works on fonts that support subsetting. For unsupported fonts this is a no-op, although a debug // message is emitted. Currently supported fonts are embedded Truetype CID fonts (type 0). // // NOTE: Make sure to call this soon before writing (once all needed runes have been registered). // If using package creator, use its EnableFontSubsetting method instead. func (_gbdcf *PdfFont )SubsetRegistered ()error {switch _agece :=_gbdcf ._fab .(type ){case *pdfFontType0 :_ccgce :=_agece .subsetRegistered ();if _ccgce !=nil {_egb .Log .Debug ("\u0053\u0075b\u0073\u0065\u0074 \u0065\u0072\u0072\u006f\u0072\u003a\u0020\u0025\u0076",_ccgce ); return _ccgce ;};if _agece ._gfcf !=nil {if _agece ._gbaf !=nil {_agece ._gbaf .ToPdfObject ();};_agece .ToPdfObject ();};default:_egb .Log .Debug ("F\u006f\u006e\u0074\u0020\u0025\u0054 \u0064\u006f\u0065\u0073\u0020\u006eo\u0074\u0020\u0073\u0075\u0070\u0070\u006fr\u0074\u0020\u0073\u0075\u0062\u0073\u0065\u0074\u0074\u0069n\u0067",_agece ); };return nil ;}; // AddExtGState add External Graphics State (GState). The gsDict can be specified // either directly as a dictionary or an indirect object containing a dictionary. func (_gfgfc *PdfPageResources )AddExtGState (gsName _dfg .PdfObjectName ,gsDict _dfg .PdfObject )error {if _gfgfc .ExtGState ==nil {_gfgfc .ExtGState =_dfg .MakeDict ();};_cfebc :=_gfgfc .ExtGState ;_bfddd ,_ggeeg :=_dfg .TraceToDirectObject (_cfebc ).(*_dfg .PdfObjectDictionary ); if !_ggeeg {_egb .Log .Debug ("\u0045\u0078\u0074\u0047\u0053\u0074\u0061\u0074\u0065\u0020\u0074\u0079\u0070\u0065\u0020e\u0072r\u006f\u0072\u0020\u0028\u0067\u006f\u0074\u0020\u0025\u0054\u002f\u0025\u0054\u0029",_cfebc ,_dfg .TraceToDirectObject (_cfebc )); return _dfg .ErrTypeError ;};_bfddd .Set (gsName ,gsDict );return nil ;};func (_ecdg *PdfReader )newPdfActionImportDataFromDict (_afcg *_dfg .PdfObjectDictionary )(*PdfActionImportData ,error ){_fag ,_acfe :=_dbga (_afcg .Get ("\u0046"));if _acfe !=nil {return nil ,_acfe ; };return &PdfActionImportData {F :_fag },nil ;}; // B returns the value of the B component of the color. func (_fdcc *PdfColorCalRGB )B ()float64 {return _fdcc [1]};func (_gdcef *pdfCIDFontType0 )baseFields ()*fontCommon {return &_gdcef .fontCommon }; // PdfActionGoToE represents a GoToE action. type PdfActionGoToE struct{*PdfAction ;F *PdfFilespec ;D _dfg .PdfObject ;NewWindow _dfg .PdfObject ;T _dfg .PdfObject ;};var (_dfbaa _b .Mutex ;_eebage ="";_cedee _ge .Time ;_gecfb ="";_bdbaed ="";_agfff _ge .Time ;_fgfff ="";_gabfe ="";_geccfa ="";); func (_efec *pdfFontSimple )updateStandard14Font (){_eade ,_fgae :=_efec .Encoder ().(_ff .SimpleEncoder );if !_fgae {_egb .Log .Error ("\u0057\u0072\u006f\u006e\u0067\u0020\u0065\u006e\u0063\u006f\u0064\u0065\u0072\u0020\u0074y\u0070e\u003a\u0020\u0025\u0054\u002e\u0020\u0066\u006f\u006e\u0074\u003d\u0025\u0073\u002e",_efec .Encoder (),_efec ); return ;};_gdfa :=_eade .Charcodes ();_efec ._aefba =make (map[_ff .CharCode ]float64 ,len (_gdfa ));for _ ,_abdbe :=range _gdfa {_gggda ,_ :=_eade .CharcodeToRune (_abdbe );_deagd ,_ :=_efec ._eecea .Read (_gggda );_efec ._aefba [_abdbe ]=_deagd .Wx ; };}; // PdfAnnotationStrikeOut represents StrikeOut annotations. // (Section 12.5.6.10). type PdfAnnotationStrikeOut struct{*PdfAnnotation ;*PdfAnnotationMarkup ;QuadPoints _dfg .PdfObject ;}; // NewXObjectImageFromStream builds the image xobject from a stream object. // An image dictionary is the dictionary portion of a stream object representing an image XObject. func NewXObjectImageFromStream (stream *_dfg .PdfObjectStream )(*XObjectImage ,error ){_beabc :=&XObjectImage {};_beabc ._gfgedd =stream ;_agbed :=*(stream .PdfObjectDictionary );_dfbfd ,_beffc :=_dfg .NewEncoderFromStream (stream );if _beffc !=nil {return nil ,_beffc ; };_beabc .Filter =_dfbfd ;if _abaeac :=_dfg .TraceToDirectObject (_agbed .Get ("\u0057\u0069\u0064t\u0068"));_abaeac !=nil {_fgbda ,_gedef :=_abaeac .(*_dfg .PdfObjectInteger );if !_gedef {return nil ,_bd .New ("\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0069\u006d\u0061g\u0065\u0020\u0077\u0069\u0064\u0074\u0068\u0020\u006f\u0062j\u0065\u0063\u0074"); };_eafdeg :=int64 (*_fgbda );_beabc .Width =&_eafdeg ;}else {return nil ,_bd .New ("\u0077\u0069\u0064\u0074\u0068\u0020\u006d\u0069\u0073\u0073\u0069\u006e\u0067");};if _eeaa :=_dfg .TraceToDirectObject (_agbed .Get ("\u0048\u0065\u0069\u0067\u0068\u0074")); _eeaa !=nil {_gddgb ,_ebgeg :=_eeaa .(*_dfg .PdfObjectInteger );if !_ebgeg {return nil ,_bd .New ("i\u006e\u0076\u0061\u006c\u0069\u0064 \u0069\u006d\u0061\u0067\u0065\u0020\u0068\u0065\u0069g\u0068\u0074\u0020o\u0062j\u0065\u0063\u0074");};_cecfb :=int64 (*_gddgb ); _beabc .Height =&_cecfb ;}else {return nil ,_bd .New ("\u0068\u0065\u0069\u0067\u0068\u0074\u0020\u006d\u0069s\u0073\u0069\u006e\u0067");};if _eegaf :=_dfg .TraceToDirectObject (_agbed .Get ("\u0043\u006f\u006c\u006f\u0072\u0053\u0070\u0061\u0063\u0065")); _eegaf !=nil {_fgaf ,_dcdegb :=NewPdfColorspaceFromPdfObject (_eegaf );if _dcdegb !=nil {return nil ,_dcdegb ;};_beabc .ColorSpace =_fgaf ;}else {_egb .Log .Debug ("\u0058O\u0062\u006a\u0065c\u0074\u0020\u0049m\u0061ge\u0020\u0063\u006f\u006c\u006f\u0072\u0073p\u0061\u0063\u0065\u0020\u006e\u006f\u0074\u0020\u0073\u0070\u0065\u0063\u0069\u0066\u0069\u0065\u0064\u0020\u002d\u0020\u0061\u0073\u0073\u0075\u006d\u0069\u006e\u0067 1\u0020c\u006f\u006c\u006f\u0072\u0020\u0063o\u006d\u0070\u006f\u006e\u0065n\u0074\u0020\u002d\u0020\u0044\u0065\u0076\u0069\u0063\u0065\u0047r\u0061\u0079"); _beabc .ColorSpace =NewPdfColorspaceDeviceGray ();};if _dcege :=_dfg .TraceToDirectObject (_agbed .Get ("\u0042\u0069t\u0073\u0050\u0065r\u0043\u006f\u006d\u0070\u006f\u006e\u0065\u006e\u0074"));_dcege !=nil {_faeaff ,_gbebb :=_dcege .(*_dfg .PdfObjectInteger ); if !_gbebb {return nil ,_bd .New ("i\u006e\u0076\u0061\u006c\u0069\u0064 \u0069\u006d\u0061\u0067\u0065\u0020\u0068\u0065\u0069g\u0068\u0074\u0020o\u0062j\u0065\u0063\u0074");};_ccbef :=int64 (*_faeaff );_beabc .BitsPerComponent =&_ccbef ;};_beabc .Intent =_agbed .Get ("\u0049\u006e\u0074\u0065\u006e\u0074"); _beabc .ImageMask =_agbed .Get ("\u0049m\u0061\u0067\u0065\u004d\u0061\u0073k");_beabc .Mask =_agbed .Get ("\u004d\u0061\u0073\u006b");_beabc .Decode =_agbed .Get ("\u0044\u0065\u0063\u006f\u0064\u0065");_beabc .Interpolate =_agbed .Get ("I\u006e\u0074\u0065\u0072\u0070\u006f\u006c\u0061\u0074\u0065"); _beabc .Alternatives =_agbed .Get ("\u0041\u006c\u0074e\u0072\u006e\u0061\u0074\u0069\u0076\u0065\u0073");_beabc .SMask =_agbed .Get ("\u0053\u004d\u0061s\u006b");_beabc .SMaskInData =_agbed .Get ("S\u004d\u0061\u0073\u006b\u0049\u006e\u0044\u0061\u0074\u0061"); _beabc .Matte =_agbed .Get ("\u004d\u0061\u0074t\u0065");_beabc .Name =_agbed .Get ("\u004e\u0061\u006d\u0065");_beabc .StructParent =_agbed .Get ("\u0053\u0074\u0072u\u0063\u0074\u0050\u0061\u0072\u0065\u006e\u0074");_beabc .ID =_agbed .Get ("\u0049\u0044"); _beabc .OPI =_agbed .Get ("\u004f\u0050\u0049");_beabc .Metadata =_agbed .Get ("\u004d\u0065\u0074\u0061\u0064\u0061\u0074\u0061");_beabc .OC =_agbed .Get ("\u004f\u0043");_beabc .Stream =stream .Stream ;return _beabc ,nil ;};func (_fad *PdfReader )newPdfActionGotoFromDict (_ebd *_dfg .PdfObjectDictionary )(*PdfActionGoTo ,error ){return &PdfActionGoTo {D :_ebd .Get ("\u0044")},nil ; };func _fafd (_abegg _dfg .PdfObject )(map[_ff .CharCode ]float64 ,error ){if _abegg ==nil {return nil ,nil ;};_ffgef ,_bgeeb :=_dfg .GetArray (_abegg );if !_bgeeb {return nil ,nil ;};_agecd :=map[_ff .CharCode ]float64 {};_dfgbg :=_ffgef .Len ();for _ecedb :=0; _ecedb < _dfgbg -1;_ecedb ++{_eddab :=_dfg .TraceToDirectObject (_ffgef .Get (_ecedb ));_gbabf ,_fadff :=_dfg .GetIntVal (_eddab );if !_fadff {return nil ,_d .Errorf ("\u0062a\u0064\u0020\u0066\u006fn\u0074\u0020\u0057\u0020\u006fb\u006a0\u003a \u0069\u003d\u0025\u0064\u0020\u0025\u0023v",_ecedb ,_eddab ); };_ecedb ++;if _ecedb > _dfgbg -1{return nil ,_d .Errorf ("\u0062\u0061\u0064\u0020\u0066\u006f\u006e\u0074\u0020\u0057\u0020a\u0072\u0072\u0061\u0079\u003a\u0020\u0061\u0072\u0072\u0032=\u0025\u002b\u0076",_ffgef );};_agecdc :=_dfg .TraceToDirectObject (_ffgef .Get (_ecedb )); switch _agecdc .(type ){case *_dfg .PdfObjectArray :_gfdcf ,_ :=_dfg .GetArray (_agecdc );if _dgeg ,_fggd :=_gfdcf .ToFloat64Array ();_fggd ==nil {for _geacf :=0;_geacf < len (_dgeg );_geacf ++{_agecd [_ff .CharCode (_gbabf +_geacf )]=_dgeg [_geacf ];}; }else {return nil ,_d .Errorf ("\u0062\u0061\u0064 \u0066\u006f\u006e\u0074 \u0057\u0020\u0061\u0072\u0072\u0061\u0079 \u006f\u0062\u006a\u0031\u003a\u0020\u0069\u003d\u0025\u0064\u0020\u0025\u0023\u0076",_ecedb ,_agecdc );};case *_dfg .PdfObjectInteger :_dggce ,_dgbaa :=_dfg .GetIntVal (_agecdc ); if !_dgbaa {return nil ,_d .Errorf ("\u0062\u0061d\u0020\u0066\u006f\u006e\u0074\u0020\u0057\u0020\u0069\u006e\u0074\u0020\u006f\u0062\u006a\u0031\u003a\u0020\u0069\u003d\u0025\u0064 %\u0023\u0076",_ecedb ,_agecdc );};_ecedb ++;if _ecedb > _dfgbg -1{return nil ,_d .Errorf ("\u0062\u0061\u0064\u0020\u0066\u006f\u006e\u0074\u0020\u0057\u0020a\u0072\u0072\u0061\u0079\u003a\u0020\u0061\u0072\u0072\u0032=\u0025\u002b\u0076",_ffgef ); };_aecb :=_ffgef .Get (_ecedb );_ddbec ,_gagfg :=_dfg .GetNumberAsFloat (_aecb );if _gagfg !=nil {return nil ,_d .Errorf ("\u0062\u0061d\u0020\u0066\u006f\u006e\u0074\u0020\u0057\u0020\u0069\u006e\u0074\u0020\u006f\u0062\u006a\u0032\u003a\u0020\u0069\u003d\u0025\u0064 %\u0023\u0076",_ecedb ,_aecb ); };for _agaee :=_gbabf ;_agaee <=_dggce ;_agaee ++{_agecd [_ff .CharCode (_agaee )]=_ddbec ;};default:return nil ,_d .Errorf ("\u0062\u0061\u0064\u0020\u0066\u006f\u006e\u0074\u0020\u0057 \u006f\u0062\u006a\u0031\u0020\u0074\u0079p\u0065\u003a\u0020\u0069\u003d\u0025\u0064\u0020\u0025\u0023\u0076",_ecedb ,_agecdc ); };};return _agecd ,nil ;}; // PdfFontDescriptor specifies metrics and other attributes of a font and can refer to a FontFile // for embedded fonts. // 9.8 Font Descriptors (page 281) type PdfFontDescriptor struct{FontName _dfg .PdfObject ;FontFamily _dfg .PdfObject ;FontStretch _dfg .PdfObject ;FontWeight _dfg .PdfObject ;Flags _dfg .PdfObject ;FontBBox _dfg .PdfObject ;ItalicAngle _dfg .PdfObject ;Ascent _dfg .PdfObject ;Descent _dfg .PdfObject ; Leading _dfg .PdfObject ;CapHeight _dfg .PdfObject ;XHeight _dfg .PdfObject ;StemV _dfg .PdfObject ;StemH _dfg .PdfObject ;AvgWidth _dfg .PdfObject ;MaxWidth _dfg .PdfObject ;MissingWidth _dfg .PdfObject ;FontFile _dfg .PdfObject ;FontFile2 _dfg .PdfObject ; FontFile3 _dfg .PdfObject ;CharSet _dfg .PdfObject ;_dffgf int ;_decbb float64 ;*fontFile ;_gcge *_bf .TtfType ; // Additional entries for CIDFonts Style _dfg .PdfObject ;Lang _dfg .PdfObject ;FD _dfg .PdfObject ;CIDSet _dfg .PdfObject ;_cdab *_dfg .PdfIndirectObject ;}; // ImageToRGB converts ICCBased colorspace image to RGB and returns the result. func (_aage *PdfColorspaceICCBased )ImageToRGB (img Image )(Image ,error ){if _aage .Alternate ==nil {_egb .Log .Debug ("I\u0043\u0043\u0020\u0042\u0061\u0073\u0065\u0064\u0020\u0063\u006f\u006c\u006f\u0072\u0073\u0070\u0061\u0063e\u0020\u006d\u0069\u0073\u0073\u0069\u006e\u0067\u0020\u0061lt\u0065\u0072\u006ea\u0074i\u0076\u0065"); if _aage .N ==1{_egb .Log .Debug ("\u0049\u0043\u0043\u0020\u0042a\u0073\u0065\u0064\u0020\u0063o\u006co\u0072\u0073\u0070\u0061\u0063\u0065\u0020\u006d\u0069\u0073\u0073\u0069\u006e\u0067\u0020\u0061\u006c\u0074\u0065r\u006e\u0061\u0074\u0069\u0076\u0065\u0020\u002d\u0020\u0075\u0073\u0069\u006e\u0067\u0020\u0044\u0065\u0076\u0069\u0063\u0065\u0047\u0072\u0061y\u0020\u0028\u004e\u003d\u0031\u0029"); _gdce :=NewPdfColorspaceDeviceGray ();return _gdce .ImageToRGB (img );}else if _aage .N ==3{_egb .Log .Debug ("\u0049\u0043\u0043\u0020\u0042\u0061\u0073\u0065\u0064\u0020\u0063\u006f\u006c\u006f\u0072\u0073\u0070a\u0063\u0065\u0020\u006d\u0069\u0073\u0073\u0069\u006e\u0067 \u0061\u006c\u0074\u0065\u0072\u006e\u0061\u0074\u0069\u0076\u0065\u0020\u002d\u0020\u0075\u0073\u0069\u006eg\u0020\u0044\u0065\u0076\u0069\u0063e\u0052\u0047B\u0020\u0028N\u003d3\u0029"); return img ,nil ;}else if _aage .N ==4{_egb .Log .Debug ("\u0049\u0043\u0043\u0020\u0042a\u0073\u0065\u0064\u0020\u0063o\u006co\u0072\u0073\u0070\u0061\u0063\u0065\u0020\u006d\u0069\u0073\u0073\u0069\u006e\u0067\u0020\u0061\u006c\u0074\u0065r\u006e\u0061\u0074\u0069\u0076\u0065\u0020\u002d\u0020\u0075\u0073\u0069\u006e\u0067\u0020\u0044\u0065\u0076\u0069\u0063\u0065\u0043\u004d\u0059K\u0020\u0028\u004e\u003d\u0034\u0029"); _cfea :=NewPdfColorspaceDeviceCMYK ();return _cfea .ImageToRGB (img );}else {return img ,_bd .New ("I\u0043\u0043\u0020\u0042\u0061\u0073\u0065\u0064\u0020\u0063\u006f\u006c\u006f\u0072\u0073\u0070\u0061\u0063e\u0020\u006d\u0069\u0073\u0073\u0069\u006e\u0067\u0020\u0061lt\u0065\u0072\u006ea\u0074i\u0076\u0065"); };};_egb .Log .Trace ("\u0049\u0043\u0043 \u0042\u0061\u0073\u0065\u0064\u0020\u0063\u006f\u006c\u006f\u0072\u0073\u0070\u0061\u0063\u0065\u0020\u0077\u0069\u0074\u0068\u0020\u0061\u006c\u0074\u0065\u0072\u006e\u0061t\u0069\u0076\u0065\u003a\u0020\u0025\u0023\u0076",_aage ); _ggaae ,_ebada :=_aage .Alternate .ImageToRGB (img );_egb .Log .Trace ("I\u0043C\u0020\u0049\u006e\u0070\u0075\u0074\u0020\u0069m\u0061\u0067\u0065\u003a %\u002b\u0076",img );_egb .Log .Trace ("I\u0043\u0043\u0020\u004fut\u0070u\u0074\u0020\u0069\u006d\u0061g\u0065\u003a\u0020\u0025\u002b\u0076",_ggaae ); return _ggaae ,_ebada ;}; // ToPdfObject returns the PDF representation of the colorspace. func (_fdfdg *PdfColorspaceDeviceRGB )ToPdfObject ()_dfg .PdfObject {return _dfg .MakeName ("\u0044e\u0076\u0069\u0063\u0065\u0052\u0047B");}; // GetDescent returns the Descent of the font `descriptor`. func (_bgad *PdfFontDescriptor )GetDescent ()(float64 ,error ){return _dfg .GetNumberAsFloat (_bgad .Descent );};func (_dadf *PdfPage )generateImage (_ffdd string ,_cacga float64 ,_egfcd string ,_dcafa _dc .Color )([]byte ,error ){_gaddg ,_agda ,_abbgf ,_ :=_dcafa .RGBA (); _adecg :=_dc .RGBA {uint8 (_gaddg >>8),uint8 (_agda >>8),uint8 (_abbgf >>8),255};_gadbdg :=_dc .RGBA {0xff,0xff,0xff,0x00};_fdcea ,_dcdde :=_dadf .loadFont (_egfcd );if _dcdde !=nil {return nil ,_dcdde ;};_gdfag :=_af .ReplaceAll (_ffdd ,"\u0009","\u0020\u0020\u0020\u0020"); _fbad :=_af .Split (_gdfag ,"\u000a");_dged :=1.0;for _ ,_abada :=range _fbad {if float64 (len (_abada ))*_cacga > _dged {_dged =float64 (len (_abada ))*_cacga ;};};if _dged > _dadf .MediaBox .Width (){_dged =_dadf .MediaBox .Width ();};_geacc :=_gf .NewUniform (_adecg ); _gcgee :=_gf .NewUniform (_gadbdg );_ebaa :=_gf .NewRGBA (_gf .Rect (0,0,int (_dged ),int (_cacga *1.5*float64 (len (_fbad )))));_f .Draw (_ebaa ,_ebaa .Bounds (),_gcgee ,_gf .Pt (0,0),_f .Src );_bfece :=_gec .NewContext ();_bfece .SetDPI (72);_bfece .SetFont (_fdcea ); _bfece .SetFontSize (_cacga );_bfece .SetHinting (_fce .HintingNone );_bfece .SetClip (_ebaa .Bounds ());_bfece .SetDst (_ebaa );_bfece .SetSrc (_geacc );_gadca :=50;_ffee :=10+int (_bfece .PointToFixed (_cacga )>>6);_afga :=_gec .Pt (_gadca ,_ffee );for _ ,_gfaea :=range _fbad {_ ,_dcdde =_bfece .DrawString (_af .ReplaceAll (_gfaea ,"\u000d",""),_afga ); if _dcdde !=nil {return nil ,_dcdde ;};_afga .Y +=_bfece .PointToFixed (_cacga *1.5);};_ddaff :=new (_cca .Buffer );if _fbebga :=_e .Encode (_ddaff ,_ebaa );_fbebga !=nil {return nil ,_fbebga ;};return _ddaff .Bytes (),nil ;}; // ToUnicode returns the name of the font's "ToUnicode" field if there is one, or "" if there isn't. func (_affc *PdfFont )ToUnicode ()string {if _affc .baseFields ()._bgdcbc ==nil {return "";};return _affc .baseFields ()._bgdcbc .Name ();}; // GetPageLabels returns the PageLabels entry in the PDF catalog. // See section 12.4.2 "Page Labels" (p. 382 PDF32000_2008). func (_dgea *PdfReader )GetPageLabels ()(_dfg .PdfObject ,error ){_geefa :=_dfg .ResolveReference (_dgea ._fbfgb .Get ("\u0050\u0061\u0067\u0065\u004c\u0061\u0062\u0065\u006c\u0073"));if _geefa ==nil {return nil ,nil ;};if !_dgea ._bafba {_gbabe :=_dgea .traverseObjectData (_geefa ); if _gbabe !=nil {return nil ,_gbabe ;};};return _geefa ,nil ;}; // HasExtGState checks if ExtGState name is available. func (_aafc *PdfPage )HasExtGState (name _dfg .PdfObjectName )bool {if _aafc .Resources ==nil {return false ;};if _aafc .Resources .ExtGState ==nil {return false ;};_efeg ,_adeag :=_dfg .TraceToDirectObject (_aafc .Resources .ExtGState ).(*_dfg .PdfObjectDictionary ); if !_adeag {_egb .Log .Debug ("\u0045\u0078\u0070\u0065\u0063\u0074\u0065\u0064\u0020\u0045\u0078t\u0047\u0053\u0074\u0061\u0074\u0065\u0020\u0064i\u0063t\u0069\u006f\u006e\u0061\u0072\u0079\u0020\u0069\u0073\u0020\u006e\u006f\u0074\u0020\u0061\u0020\u0064\u0069c\u0074\u0069\u006f\u006e\u0061\u0072\u0079\u003a\u0020\u0025\u0076",_dfg .TraceToDirectObject (_aafc .Resources .ExtGState )); return false ;};_bfcadg :=_efeg .Get (name );_dbgag :=_bfcadg !=nil ;return _dbgag ;}; // ButtonType represents the subtype of a button field, can be one of: // - Checkbox (ButtonTypeCheckbox) // - PushButton (ButtonTypePushButton) // - RadioButton (ButtonTypeRadioButton) type ButtonType int ; // PdfAnnotationCaret represents Caret annotations. // (Section 12.5.6.11). type PdfAnnotationCaret struct{*PdfAnnotation ;*PdfAnnotationMarkup ;RD _dfg .PdfObject ;Sy _dfg .PdfObject ;}; // IsCenterWindow returns the value of the centerWindow flag. func (_acffb *ViewerPreferences )IsCenterWindow ()bool {if _acffb ._ebdgb ==nil {return false ;};return *_acffb ._ebdgb ;}; // PdfActionSetOCGState represents a SetOCGState action. type PdfActionSetOCGState struct{*PdfAction ;State _dfg .PdfObject ;PreserveRB _dfg .PdfObject ;};func (_aaadc *PdfWriter )writeDocumentVersion (){if _aaadc ._cddgg {_aaadc .writeString ("\u000a");}else {_aaadc .writeString (_d .Sprintf ("\u0025\u0025\u0050D\u0046\u002d\u0025\u0064\u002e\u0025\u0064\u000a",_aaadc ._cfbcb .Major ,_aaadc ._cfbcb .Minor )); _aaadc .writeString ("\u0025\u00e2\u00e3\u00cf\u00d3\u000a");};}; // DecodeArray returns the component range values for the Separation colorspace. func (_agdc *PdfColorspaceSpecialSeparation )DecodeArray ()[]float64 {return []float64 {0,1.0}};func _agfe (_face *_dfg .PdfObjectStream )(*PdfFunctionType0 ,error ){_ecdf :=&PdfFunctionType0 {};_ecdf ._deefg =_face ;_dagd :=_face .PdfObjectDictionary ; _ebdb ,_ccfef :=_dfg .TraceToDirectObject (_dagd .Get ("\u0044\u006f\u006d\u0061\u0069\u006e")).(*_dfg .PdfObjectArray );if !_ccfef {_egb .Log .Error ("D\u006fm\u0061\u0069\u006e\u0020\u006e\u006f\u0074\u0020s\u0070\u0065\u0063\u0069fi\u0065\u0064");return nil ,_bd .New ("\u0072\u0065q\u0075\u0069\u0072\u0065d\u0020\u0061t\u0074\u0072\u0069\u0062\u0075\u0074\u0065\u0020m\u0069\u0073\u0073\u0069\u006e\u0067\u0020\u006f\u0072\u0020\u0069\u006ev\u0061\u006c\u0069\u0064"); };if _ebdb .Len ()< 0||_ebdb .Len ()%2!=0{_egb .Log .Error ("\u0044\u006f\u006d\u0061\u0069\u006e\u0020\u0069\u006ev\u0061\u006c\u0069\u0064");return nil ,_bd .New ("i\u006ev\u0061\u006c\u0069\u0064\u0020\u0064\u006f\u006da\u0069\u006e\u0020\u0072an\u0067\u0065"); };_ecdf .NumInputs =_ebdb .Len ()/2;_dbaca ,_acaaa :=_ebdb .ToFloat64Array ();if _acaaa !=nil {return nil ,_acaaa ;};_ecdf .Domain =_dbaca ;_ebdb ,_ccfef =_dfg .TraceToDirectObject (_dagd .Get ("\u0052\u0061\u006eg\u0065")).(*_dfg .PdfObjectArray );if !_ccfef {_egb .Log .Error ("\u0052\u0061\u006e\u0067e \u006e\u006f\u0074\u0020\u0073\u0070\u0065\u0063\u0069\u0066\u0069\u0065\u0064"); return nil ,_bd .New ("\u0072\u0065q\u0075\u0069\u0072\u0065d\u0020\u0061t\u0074\u0072\u0069\u0062\u0075\u0074\u0065\u0020m\u0069\u0073\u0073\u0069\u006e\u0067\u0020\u006f\u0072\u0020\u0069\u006ev\u0061\u006c\u0069\u0064");};if _ebdb .Len ()< 0||_ebdb .Len ()%2!=0{return nil ,_bd .New ("\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0072\u0061\u006e\u0067\u0065"); };_ecdf .NumOutputs =_ebdb .Len ()/2;_cddcd ,_acaaa :=_ebdb .ToFloat64Array ();if _acaaa !=nil {return nil ,_acaaa ;};_ecdf .Range =_cddcd ;_ebdb ,_ccfef =_dfg .TraceToDirectObject (_dagd .Get ("\u0053\u0069\u007a\u0065")).(*_dfg .PdfObjectArray );if !_ccfef {_egb .Log .Error ("\u0053i\u007ae\u0020\u006e\u006f\u0074\u0020s\u0070\u0065c\u0069\u0066\u0069\u0065\u0064"); return nil ,_bd .New ("\u0072\u0065q\u0075\u0069\u0072\u0065d\u0020\u0061t\u0074\u0072\u0069\u0062\u0075\u0074\u0065\u0020m\u0069\u0073\u0073\u0069\u006e\u0067\u0020\u006f\u0072\u0020\u0069\u006ev\u0061\u006c\u0069\u0064");};_ebcfg ,_acaaa :=_ebdb .ToIntegerArray (); if _acaaa !=nil {return nil ,_acaaa ;};if len (_ebcfg )!=_ecdf .NumInputs {_egb .Log .Error ("T\u0061\u0062\u006c\u0065\u0020\u0073\u0069\u007a\u0065\u0020\u006e\u006f\u0074\u0020\u006d\u0061\u0074\u0063h\u0069\u006e\u0067\u0020\u006e\u0075\u006d\u0062\u0065\u0072 o\u0066\u0020\u0069n\u0070u\u0074\u0073"); return nil ,_bd .New ("r\u0061\u006e\u0067\u0065\u0020\u0063\u0068\u0065\u0063\u006b");};_ecdf .Size =_ebcfg ;_daef ,_ccfef :=_dfg .TraceToDirectObject (_dagd .Get ("\u0042\u0069\u0074\u0073\u0050\u0065\u0072\u0053\u0061\u006d\u0070\u006c\u0065")).(*_dfg .PdfObjectInteger ); if !_ccfef {_egb .Log .Error ("B\u0069\u0074\u0073\u0050\u0065\u0072S\u0061\u006d\u0070\u006c\u0065\u0020\u006e\u006f\u0074 \u0073\u0070\u0065c\u0069f\u0069\u0065\u0064");return nil ,_bd .New ("\u0072\u0065q\u0075\u0069\u0072\u0065d\u0020\u0061t\u0074\u0072\u0069\u0062\u0075\u0074\u0065\u0020m\u0069\u0073\u0073\u0069\u006e\u0067\u0020\u006f\u0072\u0020\u0069\u006ev\u0061\u006c\u0069\u0064"); };if *_daef !=1&&*_daef !=2&&*_daef !=4&&*_daef !=8&&*_daef !=12&&*_daef !=16&&*_daef !=24&&*_daef !=32{_egb .Log .Error ("\u0042\u0069\u0074s \u0070\u0065\u0072\u0020\u0073\u0061\u006d\u0070\u006ce\u0020o\u0075t\u0073i\u0064\u0065\u0020\u0072\u0061\u006e\u0067\u0065\u0020\u0028\u0025\u0064\u0029",*_daef ); return nil ,_bd .New ("r\u0061\u006e\u0067\u0065\u0020\u0063\u0068\u0065\u0063\u006b");};_ecdf .BitsPerSample =int (*_daef );_ecdf .Order =1;_dccf ,_ccfef :=_dfg .TraceToDirectObject (_dagd .Get ("\u004f\u0072\u0064e\u0072")).(*_dfg .PdfObjectInteger ); if _ccfef {if *_dccf !=1&&*_dccf !=3{_egb .Log .Error ("\u0049n\u0076a\u006c\u0069\u0064\u0020\u006fr\u0064\u0065r\u0020\u0028\u0025\u0064\u0029",*_dccf );return nil ,_bd .New ("r\u0061\u006e\u0067\u0065\u0020\u0063\u0068\u0065\u0063\u006b");};_ecdf .Order =int (*_dccf ); };_ebdb ,_ccfef =_dfg .TraceToDirectObject (_dagd .Get ("\u0045\u006e\u0063\u006f\u0064\u0065")).(*_dfg .PdfObjectArray );if _ccfef {_ddaa ,_abaea :=_ebdb .ToFloat64Array ();if _abaea !=nil {return nil ,_abaea ;};_ecdf .Encode =_ddaa ;};_ebdb ,_ccfef =_dfg .TraceToDirectObject (_dagd .Get ("\u0044\u0065\u0063\u006f\u0064\u0065")).(*_dfg .PdfObjectArray ); if _ccfef {_cgggd ,_cgfd :=_ebdb .ToFloat64Array ();if _cgfd !=nil {return nil ,_cgfd ;};_ecdf .Decode =_cgggd ;};_aagaa ,_acaaa :=_dfg .DecodeStream (_face );if _acaaa !=nil {return nil ,_acaaa ;};_ecdf ._ffdce =_aagaa ;return _ecdf ,nil ;}; // Val returns the value of the color. func (_aeggf *PdfColorCalGray )Val ()float64 {return float64 (*_aeggf )}; // GetNumComponents returns the number of color components (1 for CalGray). func (_adgaf *PdfColorCalGray )GetNumComponents ()int {return 1};func _ddcab (_bdbfb *fontCommon )*pdfCIDFontType2 {return &pdfCIDFontType2 {fontCommon :*_bdbfb }}; // String returns a string that describes `base`. func (_ceedbb fontCommon )String ()string {return _d .Sprintf ("\u0046\u004f\u004e\u0054\u007b\u0025\u0073\u007d",_ceedbb .coreString ());}; // AddCRLs adds CRLs to DSS. func (_bgcb *DSS )AddCRLs (crls [][]byte )([]*_dfg .PdfObjectStream ,error ){return _bgcb .add (&_bgcb .CRLs ,_bgcb ._cccc ,crls );}; // PdfAnnotationSound represents Sound annotations. // (Section 12.5.6.16). type PdfAnnotationSound struct{*PdfAnnotation ;*PdfAnnotationMarkup ;Sound _dfg .PdfObject ;Name _dfg .PdfObject ;}; // SetPdfCreationDate sets the CreationDate attribute of the output PDF. func SetPdfCreationDate (creationDate _ge .Time ){_dfbaa .Lock ();defer _dfbaa .Unlock ();_cedee =creationDate ;}; // NewPdfActionHide returns a new "hide" action. func NewPdfActionHide ()*PdfActionHide {_ded :=NewPdfAction ();_ecg :=&PdfActionHide {};_ecg .PdfAction =_ded ;_ded .SetContext (_ecg );return _ecg ;}; // GetContext returns a reference to the subpattern entry: either PdfTilingPattern or PdfShadingPattern. func (_caggbe *PdfPattern )GetContext ()PdfModel {return _caggbe ._bfaedb }; // ToPdfObject returns the PDF representation of the function. func (_eceddf *PdfFunctionType2 )ToPdfObject ()_dfg .PdfObject {_dgbbe :=_dfg .MakeDict ();_dgbbe .Set ("\u0046\u0075\u006ec\u0074\u0069\u006f\u006e\u0054\u0079\u0070\u0065",_dfg .MakeInteger (2));_facee :=&_dfg .PdfObjectArray {};for _ ,_fddga :=range _eceddf .Domain {_facee .Append (_dfg .MakeFloat (_fddga )); };_dgbbe .Set ("\u0044\u006f\u006d\u0061\u0069\u006e",_facee );if _eceddf .Range !=nil {_dggfe :=&_dfg .PdfObjectArray {};for _ ,_cbbf :=range _eceddf .Range {_dggfe .Append (_dfg .MakeFloat (_cbbf ));};_dgbbe .Set ("\u0052\u0061\u006eg\u0065",_dggfe ); };if _eceddf .C0 !=nil {_fbedd :=&_dfg .PdfObjectArray {};for _ ,_eabac :=range _eceddf .C0 {_fbedd .Append (_dfg .MakeFloat (_eabac ));};_dgbbe .Set ("\u0043\u0030",_fbedd );};if _eceddf .C1 !=nil {_beacb :=&_dfg .PdfObjectArray {};for _ ,_aeea :=range _eceddf .C1 {_beacb .Append (_dfg .MakeFloat (_aeea )); };_dgbbe .Set ("\u0043\u0031",_beacb );};_dgbbe .Set ("\u004e",_dfg .MakeFloat (_eceddf .N ));if _eceddf ._gggdd !=nil {_eceddf ._gggdd .PdfObject =_dgbbe ;return _eceddf ._gggdd ;};return _dgbbe ;}; // SetPrintScaling sets the value of the printScaling. func (_ggebb *ViewerPreferences )SetPrintScaling (printScaling PrintScaling ){_ggebb ._bcdgc =printScaling ;};func (_fadf *PdfReader )newPdfAnnotationUnderlineFromDict (_ggd *_dfg .PdfObjectDictionary )(*PdfAnnotationUnderline ,error ){_ebcd :=PdfAnnotationUnderline {}; _baca ,_ccdc :=_fadf .newPdfAnnotationMarkupFromDict (_ggd );if _ccdc !=nil {return nil ,_ccdc ;};_ebcd .PdfAnnotationMarkup =_baca ;_ebcd .QuadPoints =_ggd .Get ("\u0051\u0075\u0061\u0064\u0050\u006f\u0069\u006e\u0074\u0073");return &_ebcd ,nil ;}; // ToPdfObject implements interface PdfModel. func (_ccdb *PdfAnnotationSquare )ToPdfObject ()_dfg .PdfObject {_ccdb .PdfAnnotation .ToPdfObject ();_bcgf :=_ccdb ._afae ;_dcgc :=_bcgf .PdfObject .(*_dfg .PdfObjectDictionary );if _ccdb .PdfAnnotationMarkup !=nil {_ccdb .appendToPdfDictionary (_dcgc ); };_dcgc .SetIfNotNil ("\u0053u\u0062\u0074\u0079\u0070\u0065",_dfg .MakeName ("\u0053\u0071\u0075\u0061\u0072\u0065"));_dcgc .SetIfNotNil ("\u0042\u0053",_ccdb .BS );_dcgc .SetIfNotNil ("\u0049\u0043",_ccdb .IC );_dcgc .SetIfNotNil ("\u0042\u0045",_ccdb .BE ); _dcgc .SetIfNotNil ("\u0052\u0044",_ccdb .RD );return _bcgf ;};func (_egga *PdfReader )newPdfAnnotationMovieFromDict (_fbdf *_dfg .PdfObjectDictionary )(*PdfAnnotationMovie ,error ){_bfac :=PdfAnnotationMovie {};_bfac .T =_fbdf .Get ("\u0054");_bfac .Movie =_fbdf .Get ("\u004d\u006f\u0076i\u0065"); _bfac .A =_fbdf .Get ("\u0041");return &_bfac ,nil ;}; // SignatureHandler interface defines the common functionality for PDF signature handlers, which // need to be capable of validating digital signatures and signing PDF documents. type SignatureHandler interface{ // IsApplicable checks if a given signature dictionary `sig` is applicable for the signature handler. // For example a signature of type `adbe.pkcs7.detached` might not fit for a rsa.sha1 handler. IsApplicable (_facdc *PdfSignature )bool ; // Validate validates a PDF signature against a given digest (hash) such as that determined // for an input file. Returns validation results. Validate (_dffgc *PdfSignature ,_ffag Hasher )(SignatureValidationResult ,error ); // InitSignature prepares the signature dictionary for signing. This involves setting all // necessary fields, and also allocating sufficient space to the Contents so that the // finalized signature can be inserted once the hash is calculated. InitSignature (_fbbgd *PdfSignature )error ; // NewDigest creates a new digest/hasher based on the signature dictionary and handler. NewDigest (_bcfcg *PdfSignature )(Hasher ,error ); // Sign receives the hash `digest` (for example hash of an input file), and signs based // on the signature dictionary `sig` and applies the signature data to the signature // dictionary Contents field. Sign (_cdcac *PdfSignature ,_aebga Hasher )error ;};func (_aedae *Image )samplesAddPadding (_gfbe []uint32 )[]uint32 {_acaea :=_ef .BytesPerLine (int (_aedae .Width ),int (_aedae .BitsPerComponent ),_aedae .ColorComponents )*(8/int (_aedae .BitsPerComponent )); _bccg :=_acaea *int (_aedae .Height );if len (_gfbe )==_bccg {return _gfbe ;};_bbgf :=make ([]uint32 ,_bccg );_ddgfe :=int (_aedae .Width )*_aedae .ColorComponents ;for _cgagc :=0;_cgagc < int (_aedae .Height );_cgagc ++{_aaadb :=_cgagc *int (_aedae .Width ); _cggab :=_cgagc *_acaea ;for _cfcf :=0;_cfcf < _ddgfe ;_cfcf ++{_bbgf [_cggab +_cfcf ]=_gfbe [_aaadb +_cfcf ];};};return _bbgf ;};var (CourierName =_bf .CourierName ;CourierBoldName =_bf .CourierBoldName ;CourierObliqueName =_bf .CourierObliqueName ;CourierBoldObliqueName =_bf .CourierBoldObliqueName ; HelveticaName =_bf .HelveticaName ;HelveticaBoldName =_bf .HelveticaBoldName ;HelveticaObliqueName =_bf .HelveticaObliqueName ;HelveticaBoldObliqueName =_bf .HelveticaBoldObliqueName ;SymbolName =_bf .SymbolName ;ZapfDingbatsName =_bf .ZapfDingbatsName ; TimesRomanName =_bf .TimesRomanName ;TimesBoldName =_bf .TimesBoldName ;TimesItalicName =_bf .TimesItalicName ;TimesBoldItalicName =_bf .TimesBoldItalicName ;); // Subtype returns the font's "Subtype" field. func (_cedc *PdfFont )Subtype ()string {_afdf :=_cedc .baseFields ()._gdab ;if _babd ,_bfdcf :=_cedc ._fab .(*pdfFontType0 );_bfdcf {_afdf =_afdf +"\u003a"+_babd .DescendantFont .Subtype ();};return _afdf ;};func (_efbd *PdfReader )newPdfAnnotationCaretFromDict (_caf *_dfg .PdfObjectDictionary )(*PdfAnnotationCaret ,error ){_eadb :=PdfAnnotationCaret {}; _gefa ,_dadc :=_efbd .newPdfAnnotationMarkupFromDict (_caf );if _dadc !=nil {return nil ,_dadc ;};_eadb .PdfAnnotationMarkup =_gefa ;_eadb .RD =_caf .Get ("\u0052\u0044");_eadb .Sy =_caf .Get ("\u0053\u0079");return &_eadb ,nil ;};func (_dfeee *PdfReader )buildOutlineTree (_dcece _dfg .PdfObject ,_gagfe *PdfOutlineTreeNode ,_edffa *PdfOutlineTreeNode ,_fccda map[_dfg .PdfObject ]struct{})(*PdfOutlineTreeNode ,*PdfOutlineTreeNode ,error ){if _fccda ==nil {_fccda =map[_dfg .PdfObject ]struct{}{}; };_fccda [_dcece ]=struct{}{};_eacgd ,_cfedg :=_dcece .(*_dfg .PdfIndirectObject );if !_cfedg {return nil ,nil ,_d .Errorf ("\u006f\u0075\u0074\u006c\u0069\u006e\u0065 \u0063\u006f\u006et\u0061\u0069\u006e\u0065r\u0020\u006e\u006f\u0074\u0020\u0061\u006e\u0020\u0069\u006e\u0064\u0069\u0072\u0065\u0063\u0074\u0020\u006f\u0062\u006a\u0065\u0063\u0074\u0020\u0025\u0054",_dcece ); };_ggfae ,_aeae :=_eacgd .PdfObject .(*_dfg .PdfObjectDictionary );if !_aeae {return nil ,nil ,_bd .New ("\u006e\u006f\u0074 a\u0020\u0064\u0069\u0063\u0074\u0069\u006f\u006e\u0061\u0072\u0079\u0020\u006f\u0062\u006a\u0065\u0063\u0074");};_egb .Log .Trace ("\u0062\u0075\u0069\u006c\u0064\u0020\u006f\u0075\u0074\u006c\u0069\u006e\u0065 \u0074\u0072\u0065\u0065\u003a\u0020d\u0069\u0063\u0074\u003a\u0020\u0025\u0076\u0020\u0028\u0025\u0076\u0029\u0020p\u003a\u0020\u0025\u0070",_ggfae ,_eacgd ,_eacgd ); if _ggfgb :=_ggfae .Get ("\u0054\u0069\u0074l\u0065");_ggfgb !=nil {_ceab ,_cgdgd :=_dfeee .newPdfOutlineItemFromIndirectObject (_eacgd );if _cgdgd !=nil {return nil ,nil ,_cgdgd ;};_ceab .Parent =_gagfe ;_ceab .Prev =_edffa ;_dadcc :=_dfg .ResolveReference (_ggfae .Get ("\u0046\u0069\u0072s\u0074")); if _ ,_gaged :=_fccda [_dadcc ];_dadcc !=nil &&_dadcc !=_eacgd &&!_gaged {if !_dfg .IsNullObject (_dadcc ){_agecf ,_fdbdc ,_fddbc :=_dfeee .buildOutlineTree (_dadcc ,&_ceab .PdfOutlineTreeNode ,nil ,_fccda );if _fddbc !=nil {_egb .Log .Debug ("D\u0045\u0042U\u0047\u003a\u0020\u0063\u006f\u0075\u006c\u0064\u0020\u006e\u006f\u0074\u0020\u0062\u0075\u0069\u006c\u0064\u0020\u006fu\u0074\u006c\u0069\u006e\u0065\u0020\u0069\u0074\u0065\u006d\u0020\u0074\u0072\u0065\u0065\u003a \u0025\u0076\u002e\u0020\u0053\u006b\u0069\u0070\u0070\u0069\u006e\u0067\u0020n\u006f\u0064\u0065\u0020\u0063\u0068\u0069\u006c\u0064\u0072\u0065n\u002e",_fddbc ); }else {_ceab .First =_agecf ;_ceab .Last =_fdbdc ;};};};_fdbefc :=_dfg .ResolveReference (_ggfae .Get ("\u004e\u0065\u0078\u0074"));if _ ,_cbff :=_fccda [_fdbefc ];_fdbefc !=nil &&_fdbefc !=_eacgd &&!_cbff {if !_dfg .IsNullObject (_fdbefc ){_abefb ,_fdec ,_caacf :=_dfeee .buildOutlineTree (_fdbefc ,_gagfe ,&_ceab .PdfOutlineTreeNode ,_fccda ); if _caacf !=nil {_egb .Log .Debug ("D\u0045\u0042U\u0047\u003a\u0020\u0063\u006f\u0075\u006c\u0064\u0020\u006e\u006f\u0074\u0020\u0062\u0075\u0069\u006c\u0064\u0020\u006fu\u0074\u006c\u0069\u006e\u0065\u0020\u0074\u0072\u0065\u0065\u0020\u0066\u006f\u0072\u0020\u004ee\u0078\u0074\u0020\u006e\u006f\u0064\u0065\u003a\u0020\u0025\u0076\u002e\u0020S\u006b\u0069\u0070\u0070\u0069\u006e\u0067\u0020\u006e\u006f\u0064e\u002e",_caacf ); }else {_ceab .Next =_abefb ;return &_ceab .PdfOutlineTreeNode ,_fdec ,nil ;};};};return &_ceab .PdfOutlineTreeNode ,&_ceab .PdfOutlineTreeNode ,nil ;};_dggcg ,_caacd :=_cccge (_eacgd );if _caacd !=nil {return nil ,nil ,_caacd ;};_dggcg .Parent =_gagfe ; if _gebc :=_ggfae .Get ("\u0046\u0069\u0072s\u0074");_gebc !=nil {_gebc =_dfg .ResolveReference (_gebc );if _ ,_gafa :=_fccda [_gebc ];_gebc !=nil &&_gebc !=_eacgd &&!_gafa {_cafag :=_dfg .TraceToDirectObject (_gebc );if _ ,_cgde :=_cafag .(*_dfg .PdfObjectNull ); !_cgde &&_cafag !=nil {_dgcgf ,_agfba ,_fbbge :=_dfeee .buildOutlineTree (_gebc ,&_dggcg .PdfOutlineTreeNode ,nil ,_fccda );if _fbbge !=nil {_egb .Log .Debug ("\u0044\u0045\u0042\u0055\u0047\u003a\u0020\u0063\u006f\u0075\u006c\u0064\u0020\u006e\u006f\u0074\u0020b\u0075\u0069\u006c\u0064\u0020\u006f\u0075\u0074\u006c\u0069n\u0065\u0020\u0074\u0072\u0065\u0065\u003a\u0020\u0025\u0076\u002e\u0020\u0053\u006b\u0069\u0070\u0070\u0069n\u0067\u0020\u006e\u006f\u0064\u0065 \u0063\u0068i\u006c\u0064r\u0065n\u002e",_fbbge ); }else {_dggcg .First =_dgcgf ;_dggcg .Last =_agfba ;};};};};return &_dggcg .PdfOutlineTreeNode ,&_dggcg .PdfOutlineTreeNode ,nil ;}; // SetSamples convert samples to byte-data and sets for the image. // NOTE: The method resamples the data and this could lead to high memory usage, // especially on large images. It should be used only when it is not possible // to work with the image byte data directly. func (_cbada *Image )SetSamples (samples []uint32 ){if _cbada .BitsPerComponent < 8{samples =_cbada .samplesAddPadding (samples );};_ccec :=_efe .ResampleUint32 (samples ,int (_cbada .BitsPerComponent ),8);_cfbg :=make ([]byte ,len (_ccec ));for _fbaec ,_cgcge :=range _ccec {_cfbg [_fbaec ]=byte (_cgcge ); };_cbada .Data =_cfbg ;}; // PdfActionMovie represents a movie action. type PdfActionMovie struct{*PdfAction ;Annotation _dfg .PdfObject ;T _dfg .PdfObject ;Operation _dfg .PdfObject ;}; // ToPdfObject implements interface PdfModel. func (_aaea *EmbeddedFile )ToPdfObject ()_dfg .PdfObject {_fgce :=_dfg .NewFlateEncoder ();_edge ,_gagfb :=_dfg .MakeStream (_aaea .Content ,_fgce );if _gagfb !=nil {_egb .Log .Debug ("\u0046\u0061\u0069\u006c\u0065d\u0020\u0074\u006f\u0020\u0063\u0072\u0065\u0061\u0074\u0065\u0020\u0065\u006db\u0065\u0064\u0064\u0065\u0064\u0020\u0066\u0069\u006c\u0065\u0020\u0073\u0074\u0072\u0065\u0061\u006d\u003a\u0020\u0025\u0076",_gagfb ); return nil ;};_abdb :=_edge .PdfObjectDictionary ;_abdb .Set ("\u0054\u0079\u0070\u0065",_dfg .MakeName ("\u0045\u006d\u0062e\u0064\u0064\u0065\u0064\u0046\u0069\u006c\u0065"));_abdb .Set ("\u0053u\u0062\u0074\u0079\u0070\u0065",_dfg .MakeEncodedString ("\u0074\u0065\u0078\u0074\u002f\u0070\u006c\u0061\u0069\u006e",true )); _defg :=_dfg .MakeDict ();_defg .Set ("\u0043\u0068\u0065\u0063\u006b\u0053\u0075\u006d",_dfg .MakeString (_aaea .Hash [:]));_defg .Set ("\u0053\u0069\u007a\u0065",_dfg .MakeInteger (int64 (len (_aaea .Content ))));_efbca :=_aaea .CreationTime ;if _efbca .IsZero (){_efbca =_ge .Now (); };_eedac :=_aaea .ModTime ;if _eedac .IsZero (){_eedac =_efbca ;};_fafg ,_gagfb :=NewPdfDateFromTime (_efbca );if _gagfb !=nil {_egb .Log .Debug ("\u0046\u0061\u0069\u006c\u0065\u0064\u0020\u0074o\u0020\u0063\u0072ea\u0074\u0065\u0020\u0065\u006d\u0062e\u0064\u0064\u0065\u0064\u0020\u0066\u0069\u006c\u0065\u0020\u0063\u0072\u0065\u0061\u0074i\u006f\u006e\u0020\u0064\u0061\u0074\u0065\u003a \u0025\u0076",_gagfb ); return nil ;};_bdffa ,_gagfb :=NewPdfDateFromTime (_eedac );if _gagfb !=nil {_egb .Log .Debug ("\u0046\u0061\u0069\u006c\u0065\u0064\u0020\u0074o\u0020\u0063\u0072ea\u0074\u0065\u0020\u0065\u006d\u0062e\u0064\u0064\u0065\u0064\u0020\u0066\u0069\u006c\u0065\u0020\u0063\u0072\u0065\u0061\u0074i\u006f\u006e\u0020\u0064\u0061\u0074\u0065\u003a \u0025\u0076",_gagfb ); return nil ;};_defg .Set ("\u0043\u0072\u0065a\u0074\u0069\u006f\u006e\u0044\u0061\u0074\u0065",_fafg .ToPdfObject ());_defg .Set ("\u004do\u0064\u0044\u0061\u0074\u0065",_bdffa .ToPdfObject ());_abdb .Set ("\u0050\u0061\u0072\u0061\u006d\u0073",_defg ); _aeged :=_dfg .MakeDict ();_aeged .Set (*_dfg .MakeName ("\u0046"),_edge );return _aeged ;}; // WatermarkImageOptions contains options for configuring the image watermark process. type WatermarkImageOptions struct{Alpha float64 ;FitToWidth bool ;PreserveAspectRatio bool ;Angle float64 ;}; // PdfAnnotationCircle represents Circle annotations. // (Section 12.5.6.8). type PdfAnnotationCircle struct{*PdfAnnotation ;*PdfAnnotationMarkup ;BS _dfg .PdfObject ;IC _dfg .PdfObject ;BE _dfg .PdfObject ;RD _dfg .PdfObject ;}; // NewPdfAppender creates a new Pdf appender from a Pdf reader. func NewPdfAppender (reader *PdfReader )(*PdfAppender ,error ){_ebdcg :=&PdfAppender {_ggag :reader ._cggac ,Reader :reader ,_cggd :reader ._agbcd ,_bbf :reader ._fcecf };_cgge ,_fcfb :=_ebdcg ._ggag .Seek (0,_edg .SeekEnd );if _fcfb !=nil {return nil ,_fcfb ; };_ebdcg ._bgdc =_cgge ;if _ ,_fcfb =_ebdcg ._ggag .Seek (0,_edg .SeekStart );_fcfb !=nil {return nil ,_fcfb ;};_ebdcg ._eege ,_fcfb =NewPdfReader (_ebdcg ._ggag );if _fcfb !=nil {return nil ,_fcfb ;};for _ ,_bgdg :=range _ebdcg .Reader .GetObjectNums (){if _ebdcg ._edab < _bgdg {_ebdcg ._edab =_bgdg ; };};_ebdcg ._bbcb =_ebdcg ._cggd .GetXrefTable ();_ebdcg ._gcf =_ebdcg ._cggd .GetXrefOffset ();_ebdcg ._egfc =append (_ebdcg ._egfc ,_ebdcg ._eege .PageList ...);_ebdcg ._dadd =make (map[_dfg .PdfObject ]struct{});_ebdcg ._effe =make (map[_dfg .PdfObject ]int64 ); _ebdcg ._gadd =make (map[_dfg .PdfObject ]struct{});_ebdcg ._ebfe =_ebdcg ._eege .AcroForm ;_ebdcg ._caagc =_ebdcg ._eege .DSS ;return _ebdcg ,nil ;};const (TrappedUnknown PdfInfoTrapped ="\u0055n\u006b\u006e\u006f\u0077\u006e";TrappedTrue PdfInfoTrapped ="\u0054\u0072\u0075\u0065"; TrappedFalse PdfInfoTrapped ="\u0046\u0061\u006cs\u0065";);func _fcabf (_bceaac []byte )([]byte ,error ){_beagf :=_cc .New ();if _ ,_gfcfb :=_edg .Copy (_beagf ,_cca .NewReader (_bceaac ));_gfcfb !=nil {return nil ,_gfcfb ;};return _beagf .Sum (nil ),nil ; }; // GetContext returns the context of the outline tree node, which is either a // *PdfOutline or a *PdfOutlineItem. The method returns nil for uninitialized // tree nodes. func (_feac *PdfOutlineTreeNode )GetContext ()PdfModel {if _dcfggc ,_badbc :=_feac ._cface .(*PdfOutline );_badbc {return _dcfggc ;};if _bgbc ,_fbec :=_feac ._cface .(*PdfOutlineItem );_fbec {return _bgbc ;};_egb .Log .Debug ("\u0045\u0052RO\u0052\u0020\u0049n\u0076\u0061\u006c\u0069d o\u0075tl\u0069\u006e\u0065\u0020\u0074\u0072\u0065e \u006e\u006f\u0064\u0065\u0020\u0069\u0074e\u006d"); return nil ;}; // SetDisplayDocTitle sets the value of the displayDocTitle flag. func (_cegf *ViewerPreferences )SetDisplayDocTitle (displayDocTitle bool ){_cegf ._dagge =&displayDocTitle ;}; // DecodeArray returns the range of color component values in the ICCBased colorspace. func (_aabe *PdfColorspaceICCBased )DecodeArray ()[]float64 {return _aabe .Range }; // GetDSS gets the DSS dictionary (ETSI TS 102 778-4 V1.1.1) of the current // document revision. func (_dee *PdfAppender )GetDSS ()(_ggee *DSS ){return _dee ._caagc }; // NewPdfAnnotationSound returns a new sound annotation. func NewPdfAnnotationSound ()*PdfAnnotationSound {_ccafd :=NewPdfAnnotation ();_cef :=&PdfAnnotationSound {};_cef .PdfAnnotation =_ccafd ;_cef .PdfAnnotationMarkup =&PdfAnnotationMarkup {};_ccafd .SetContext (_cef );return _cef ;}; // ColorToRGB converts a ICCBased color to an RGB color. func (_eedcg *PdfColorspaceICCBased )ColorToRGB (color PdfColor )(PdfColor ,error ){if _eedcg .Alternate ==nil {_egb .Log .Debug ("I\u0043\u0043\u0020\u0042\u0061\u0073\u0065\u0064\u0020\u0063\u006f\u006c\u006f\u0072\u0073\u0070\u0061\u0063e\u0020\u006d\u0069\u0073\u0073\u0069\u006e\u0067\u0020\u0061lt\u0065\u0072\u006ea\u0074i\u0076\u0065"); if _eedcg .N ==1{_egb .Log .Debug ("\u0049\u0043\u0043\u0020\u0042a\u0073\u0065\u0064\u0020\u0063o\u006co\u0072\u0073\u0070\u0061\u0063\u0065\u0020\u006d\u0069\u0073\u0073\u0069\u006e\u0067\u0020\u0061\u006c\u0074\u0065r\u006e\u0061\u0074\u0069\u0076\u0065\u0020\u002d\u0020\u0075\u0073\u0069\u006e\u0067\u0020\u0044\u0065\u0076\u0069\u0063\u0065\u0047\u0072\u0061y\u0020\u0028\u004e\u003d\u0031\u0029"); _ffab :=NewPdfColorspaceDeviceGray ();return _ffab .ColorToRGB (color );}else if _eedcg .N ==3{_egb .Log .Debug ("\u0049\u0043\u0043\u0020\u0042\u0061\u0073\u0065\u0064\u0020\u0063\u006f\u006c\u006f\u0072\u0073\u0070a\u0063\u0065\u0020\u006d\u0069\u0073\u0073\u0069\u006e\u0067 \u0061\u006c\u0074\u0065\u0072\u006e\u0061\u0074\u0069\u0076\u0065\u0020\u002d\u0020\u0075\u0073\u0069\u006eg\u0020\u0044\u0065\u0076\u0069\u0063e\u0052\u0047B\u0020\u0028N\u003d3\u0029"); return color ,nil ;}else if _eedcg .N ==4{_egb .Log .Debug ("\u0049\u0043\u0043\u0020\u0042a\u0073\u0065\u0064\u0020\u0063o\u006co\u0072\u0073\u0070\u0061\u0063\u0065\u0020\u006d\u0069\u0073\u0073\u0069\u006e\u0067\u0020\u0061\u006c\u0074\u0065r\u006e\u0061\u0074\u0069\u0076\u0065\u0020\u002d\u0020\u0075\u0073\u0069\u006e\u0067\u0020\u0044\u0065\u0076\u0069\u0063\u0065\u0043\u004d\u0059K\u0020\u0028\u004e\u003d\u0034\u0029"); _acce :=NewPdfColorspaceDeviceCMYK ();return _acce .ColorToRGB (color );}else {return nil ,_bd .New ("I\u0043\u0043\u0020\u0042\u0061\u0073\u0065\u0064\u0020\u0063\u006f\u006c\u006f\u0072\u0073\u0070\u0061\u0063e\u0020\u006d\u0069\u0073\u0073\u0069\u006e\u0067\u0020\u0061lt\u0065\u0072\u006ea\u0074i\u0076\u0065"); };};_egb .Log .Trace ("\u0049\u0043\u0043 \u0042\u0061\u0073\u0065\u0064\u0020\u0063\u006f\u006c\u006f\u0072\u0073\u0070\u0061\u0063\u0065\u0020\u0077\u0069\u0074\u0068\u0020\u0061\u006c\u0074\u0065\u0072\u006e\u0061t\u0069\u0076\u0065\u003a\u0020\u0025\u0023\u0076",_eedcg ); return _eedcg .Alternate .ColorToRGB (color );}; // NewPdfSignatureReferenceDocMDP returns PdfSignatureReference for the transformParams. func NewPdfSignatureReferenceDocMDP (transformParams *PdfTransformParamsDocMDP )*PdfSignatureReference {return &PdfSignatureReference {Type :_dfg .MakeName ("\u0053\u0069\u0067\u0052\u0065\u0066"),TransformMethod :_dfg .MakeName ("\u0044\u006f\u0063\u004d\u0044\u0050"),TransformParams :transformParams .ToPdfObject ()}; }; // GetType returns the button field type which returns one of the following // - PdfFieldButtonPush for push button fields // - PdfFieldButtonCheckbox for checkbox fields // - PdfFieldButtonRadio for radio button fields func (_gedg *PdfFieldButton )GetType ()ButtonType {_ccde :=ButtonTypeCheckbox ;if _gedg .Ff !=nil {if (uint32 (*_gedg .Ff )&FieldFlagPushbutton .Mask ())> 0{_ccde =ButtonTypePush ;}else if (uint32 (*_gedg .Ff )&FieldFlagRadio .Mask ())> 0{_ccde =ButtonTypeRadio ; };};return _ccde ;}; // AddContentStreamByString adds content stream by string. Puts the content // string into a stream object and points the content stream towards it. func (_cegea *PdfPage )AddContentStreamByString (contentStr string )error {_cgad ,_fcgd :=_dfg .MakeStream ([]byte (contentStr ),_dfg .NewFlateEncoder ());if _fcgd !=nil {return _fcgd ;};if _cegea .Contents ==nil {_cegea .Contents =_cgad ;}else {_bdcg :=_dfg .TraceToDirectObject (_cegea .Contents ); _gdefgg ,_agbec :=_bdcg .(*_dfg .PdfObjectArray );if !_agbec {_gdefgg =_dfg .MakeArray (_bdcg );};_gdefgg .Append (_cgad );_cegea .Contents =_gdefgg ;};return nil ;}; // PdfColorPatternType3 represents a color shading pattern type 3 (Radial). type PdfColorPatternType3 struct{Color PdfColor ;PatternName _dfg .PdfObjectName ;}; // ToPdfObject returns a *PdfIndirectObject containing a *PdfObjectArray representation of the DeviceN colorspace. /* Format: [/DeviceN names alternateSpace tintTransform] or: [/DeviceN names alternateSpace tintTransform attributes] */ func (_defd *PdfColorspaceDeviceN )ToPdfObject ()_dfg .PdfObject {_gacgf :=_dfg .MakeArray (_dfg .MakeName ("\u0044e\u0076\u0069\u0063\u0065\u004e"));_gacgf .Append (_defd .ColorantNames );_gacgf .Append (_defd .AlternateSpace .ToPdfObject ());_gacgf .Append (_defd .TintTransform .ToPdfObject ()); if _defd .Attributes !=nil {_gacgf .Append (_defd .Attributes .ToPdfObject ());};if _defd ._fbae !=nil {_defd ._fbae .PdfObject =_gacgf ;return _defd ._fbae ;};return _gacgf ;}; // AddOCSPs adds OCSPs to DSS. func (_efdb *DSS )AddOCSPs (ocsps [][]byte )([]*_dfg .PdfObjectStream ,error ){return _efdb .add (&_efdb .OCSPs ,_efdb ._fecgg ,ocsps );};func (_bagad *PdfFunctionType0 )processSamples ()error {_gaca :=_efe .ResampleBytes (_bagad ._ffdce ,_bagad .BitsPerSample ); _bagad ._aabea =_gaca ;return nil ;}; // Insert adds a top level outline item in the outline, // at the specified index. func (_abded *Outline )Insert (index uint ,item *OutlineItem ){_cfead :=uint (len (_abded .Entries ));if index > _cfead {index =_cfead ;};_abded .Entries =append (_abded .Entries [:index ],append ([]*OutlineItem {item },_abded .Entries [index :]...)...); }; // FileRelationship represents a attachment file relationship type. type FileRelationship int ; // ToPdfObject returns a PDF object representation of the outline. func (_aaebd *Outline )ToPdfObject ()_dfg .PdfObject {return _aaebd .ToPdfOutline ().ToPdfObject ()}; // Encoder returns the font's text encoder. func (_cgeg *pdfFontSimple )Encoder ()_ff .TextEncoder {if _cgeg ._febca !=nil {return _cgeg ._febca ;};if _cgeg ._eabff !=nil {return _cgeg ._eabff ;};_bbad ,_ :=_ff .NewSimpleTextEncoder ("\u0053\u0074a\u006e\u0064\u0061r\u0064\u0045\u006e\u0063\u006f\u0064\u0069\u006e\u0067",nil ); return _bbad ;}; // ColorFromPdfObjects gets the color from a series of pdf objects (4 for cmyk). func (_efdf *PdfColorspaceDeviceCMYK )ColorFromPdfObjects (objects []_dfg .PdfObject )(PdfColor ,error ){if len (objects )!=4{return nil ,_bd .New ("r\u0061\u006e\u0067\u0065\u0020\u0063\u0068\u0065\u0063\u006b");};_cdgd ,_ccee :=_dfg .GetNumbersAsFloat (objects ); if _ccee !=nil {return nil ,_ccee ;};return _efdf .ColorFromFloats (_cdgd );}; // Names represents a PDF name tree. // // Ref: PDF32000_2008 chapter 7.7.4. type Names struct{_ggeed *_dfg .PdfIndirectObject ; // Dests is a name tree mapping name string to destinations. Dests *_dfg .PdfObjectDictionary ; // AP is a name tree mapping name strings to annotation appearance streams. AP *_dfg .PdfObjectDictionary ; // JavaScript is a name tree mapping name strings to JavaScript actions. JavaScript *_dfg .PdfObjectDictionary ; // Pages is a name tree mapping name strings to visible pages for use in interactive forms. Pages *_dfg .PdfObjectDictionary ; // Templates is a name tree mapping name strings to invisible (template) pages for use in interactive forms. Templates *_dfg .PdfObjectDictionary ; // IDS is a name tree mapping digital identifies to Web Capture content sets. IDS *_dfg .PdfObjectDictionary ; // URLS is a name tree mapping URLs to Web Capture content sets. URLS *_dfg .PdfObjectDictionary ; // EmbeddedFiles is a name tree mapping name strings to file specifications for embedded file streams. EmbeddedFiles *_dfg .PdfObjectDictionary ; // AlternatePresentations is a name tree mapping name strings to alternate presentations. AlternatePresentations *_dfg .PdfObjectDictionary ; // Renditions is a name tree mapping name strings (which shall have Unicode encoding) to rendition objects. Renditions *_dfg .PdfObjectDictionary ;}; // Tab order types. type TabOrderType string ; // Outline represents a PDF outline dictionary (Table 152 - p. 376). // Currently, the Outline object can only be used to construct PDF outlines. type Outline struct{Entries []*OutlineItem `json:"entries,omitempty"`;}; // AddCerts adds certificates to DSS. func (_afeac *DSS )AddCerts (certs [][]byte )([]*_dfg .PdfObjectStream ,error ){return _afeac .add (&_afeac .Certs ,_afeac ._fbgf ,certs );};func (_gfebe *PdfPage )loadFont (_bbaca string )(*_afc .Font ,error ){_gaea ,_bfecc :=_ga .ReadFile (_bbaca );if _bfecc !=nil {return nil ,_bfecc ; };_ecae ,_bfecc :=_gec .ParseFont (_gaea );if _bfecc !=nil {return nil ,_bfecc ;};return _ecae ,nil ;}; // SetContentStream sets the pattern cell's content stream. func (_aebg *PdfTilingPattern )SetContentStream (content []byte ,encoder _dfg .StreamEncoder )error {_dccb ,_fdcda :=_aebg ._adcec .(*_dfg .PdfObjectStream );if !_fdcda {_egb .Log .Debug ("\u0054\u0069l\u0069\u006e\u0067\u0020\u0070\u0061\u0074\u0074\u0065\u0072\u006e\u0020\u0063\u006f\u006e\u0074\u0061\u0069\u006e\u0065\u0072\u0020\u006e\u006f\u0074\u0020\u0061\u0020\u0073\u0074\u0072\u0065\u0061\u006d\u0020\u0028\u0067\u006f\u0074\u0020\u0025\u0054\u0029",_aebg ._adcec ); return _dfg .ErrTypeError ;};if encoder ==nil {encoder =_dfg .NewRawEncoder ();};_cgfa :=_dccb .PdfObjectDictionary ;_edfea :=encoder .MakeStreamDict ();_cgfa .Merge (_edfea );_cdef ,_bggfd :=encoder .EncodeBytes (content );if _bggfd !=nil {return _bggfd ; };_cgfa .Set ("\u004c\u0065\u006e\u0067\u0074\u0068",_dfg .MakeInteger (int64 (len (_cdef ))));_dccb .Stream =_cdef ;return nil ;}; // GetCharMetrics returns the char metrics for character code `code`. func (_baga pdfCIDFontType2 )GetCharMetrics (code _ff .CharCode )(_bf .CharMetrics ,bool ){if _gggb ,_begce :=_baga ._gdebe [code ];_begce {return _bf .CharMetrics {Wx :_gggb },true ;};_fbcd :=rune (code );_caeaf ,_febg :=_baga ._cede [_fbcd ];if !_febg {_caeaf =int (_baga ._cfcga ); };return _bf .CharMetrics {Wx :float64 (_caeaf )},true ;};func (_bdcgc *PdfWriter )writeObject (_gfbd int ,_faabg _dfg .PdfObject ){_egb .Log .Trace ("\u0057\u0072\u0069\u0074\u0065\u0020\u006f\u0062\u006a \u0023\u0025\u0064\u000a",_gfbd );if _bded ,_dffba :=_faabg .(*_dfg .PdfIndirectObject ); _dffba {_bdcgc ._effg [_gfbd ]=crossReference {Type :1,Offset :_bdcgc ._cffge ,Generation :_bded .GenerationNumber };_eeafb :=_d .Sprintf ("\u0025d\u0020\u0030\u0020\u006f\u0062\u006a\n",_gfbd );if _dceee ,_dcfaa :=_bded .PdfObject .(*pdfSignDictionary ); _dcfaa {_dceee ._dgead =_bdcgc ._cffge +int64 (len (_eeafb ));};if _bded .PdfObject ==nil {_egb .Log .Debug ("E\u0072\u0072\u006fr\u003a\u0020\u0069\u006e\u0064\u0069\u0072\u0065\u0063\u0074\u0020\u006f\u0062\u006a\u0065\u0063\u0074\u0027\u0073\u0020\u0050\u0064\u0066\u004f\u0062j\u0065\u0063\u0074 \u0073\u0068\u006f\u0075\u006c\u0064\u0020\u006e\u0065\u0076\u0065\u0072\u0020b\u0065\u0020\u006e\u0069l\u0020\u002d\u0020\u0073e\u0074\u0074\u0069\u006e\u0067\u0020\u0074\u006f\u0020\u0050\u0064\u0066\u004f\u0062\u006a\u0065\u0063t\u004e\u0075\u006c\u006c"); _bded .PdfObject =_dfg .MakeNull ();};_eeafb +=string (_bded .PdfObject .Write ());_eeafb +="\u000a\u0065\u006e\u0064\u006f\u0062\u006a\u000a";_bdcgc .writeString (_eeafb );return ;};if _adabd ,_egadbe :=_faabg .(*_dfg .PdfObjectStream );_egadbe {_bdcgc ._effg [_gfbd ]=crossReference {Type :1,Offset :_bdcgc ._cffge ,Generation :_adabd .GenerationNumber }; _bdcgc .writeString (_d .Sprintf ("\u0025d\u0020\u0030\u0020\u006f\u0062\u006a\n",_gfbd ));_bdcgc .writeBytes (_adabd .PdfObjectDictionary .Write ());_bdcgc .writeString ("\u000a\u0073\u0074\u0072\u0065\u0061\u006d\u000a");if _adabd .Lazy {_aeaec ,_ccgae :=_ga .Open (_adabd .TempFile ); if _ccgae !=nil {_egb .Log .Info ("\u0045\u0072\u0072\u006f\u0072\u0020\u0066\u0069\u006e\u0064\u0069\u006e\u0067\u0020\u006ca\u007ay\u0020\u0074\u0065\u006d\u0070\u0020\u0066\u0069\u006c\u0065\u003a\u0020\u0025\u0073",_adabd .TempFile );return ;};defer _aeaec .Close (); _dace :=make ([]byte ,64*1024);for {_afeff ,_aedeg :=_aeaec .Read (_dace );if _afeff > 0{_bdcgc .writeBytes (_dace [:_afeff ]);};if _aedeg ==_edg .EOF {break ;};if _aedeg !=nil {_egb .Log .Info ("\u0045\u0072\u0072\u006f\u0072\u0020\u0072\u0065\u0061\u0064\u0069\u006e\u0067\u0020\u006ca\u007ay\u0020\u0074\u0065\u006d\u0070\u0020\u0066\u0069\u006c\u0065\u003a\u0020\u0025\u0073",_adabd .TempFile ); return ;};};_ga .Remove (_adabd .TempFile );}else {_bdcgc .writeBytes (_adabd .Stream );};_bdcgc .writeString ("\u000ae\u006ed\u0073\u0074\u0072\u0065\u0061m\u000a\u0065n\u0064\u006f\u0062\u006a\u000a");return ;};if _efceac ,_cdgaab :=_faabg .(*_dfg .PdfObjectStreams ); _cdgaab {_bdcgc ._effg [_gfbd ]=crossReference {Type :1,Offset :_bdcgc ._cffge ,Generation :_efceac .GenerationNumber };_gbgde :=_d .Sprintf ("\u0025d\u0020\u0030\u0020\u006f\u0062\u006a\n",_gfbd );var _dgda []string ;var _dafde string ;var _afeg int64 ; for _aabgcc ,_bagbc :=range _efceac .Elements (){_fcaeg ,_fbbdbe :=_bagbc .(*_dfg .PdfIndirectObject );if !_fbbdbe {_egb .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u004f\u0062\u006a\u0065\u0063\u0074\u0020\u0073\u0074\u0072\u0065am\u0073 \u004e\u0020\u0025\u0064\u0020\u0063\u006f\u006e\u0074\u0061\u0069\u006es\u0020\u006e\u006f\u006e\u0020\u0069\u006e\u0064\u0069\u0072\u0065\u0063\u0074\u0020\u0070\u0064\u0066 \u006f\u0062\u006a\u0065\u0063\u0074\u0020\u0025\u0076",_gfbd ,_bagbc ); continue ;};_efcdae :=string (_fcaeg .PdfObject .Write ())+"\u0020";_dafde =_dafde +_efcdae ;_dgda =append (_dgda ,_d .Sprintf ("\u0025\u0064\u0020%\u0064",_fcaeg .ObjectNumber ,_afeg ));_bdcgc ._effg [int (_fcaeg .ObjectNumber )]=crossReference {Type :2,ObjectNumber :_gfbd ,Index :_aabgcc }; _afeg =_afeg +int64 (len ([]byte (_efcdae )));};_aefbd :=_af .Join (_dgda ,"\u0020")+"\u0020";_edcee :=_dfg .NewFlateEncoder ();_fcddf :=_edcee .MakeStreamDict ();_fcddf .Set (_dfg .PdfObjectName ("\u0054\u0079\u0070\u0065"),_dfg .MakeName ("\u004f\u0062\u006a\u0053\u0074\u006d")); _bceee :=int64 (_efceac .Len ());_fcddf .Set (_dfg .PdfObjectName ("\u004e"),_dfg .MakeInteger (_bceee ));_ggdfg :=int64 (len (_aefbd ));_fcddf .Set (_dfg .PdfObjectName ("\u0046\u0069\u0072s\u0074"),_dfg .MakeInteger (_ggdfg ));_bddbb ,_ :=_edcee .EncodeBytes ([]byte (_aefbd +_dafde )); _gdegb :=int64 (len (_bddbb ));_fcddf .Set (_dfg .PdfObjectName ("\u004c\u0065\u006e\u0067\u0074\u0068"),_dfg .MakeInteger (_gdegb ));_gbgde +=string (_fcddf .Write ());_gbgde +="\u000a\u0073\u0074\u0072\u0065\u0061\u006d\u000a";_bdcgc .writeString (_gbgde ); _bdcgc .writeBytes (_bddbb );_bdcgc .writeString ("\u000ae\u006ed\u0073\u0074\u0072\u0065\u0061m\u000a\u0065n\u0064\u006f\u0062\u006a\u000a");return ;};_bdcgc .writeBytes (_faabg .Write ());};const (FieldFlagClear FieldFlag =0;FieldFlagReadOnly FieldFlag =1; FieldFlagRequired FieldFlag =(1<<1);FieldFlagNoExport FieldFlag =(2<<1);FieldFlagNoToggleToOff FieldFlag =(1<<14);FieldFlagRadio FieldFlag =(1<<15);FieldFlagPushbutton FieldFlag =(1<<16);FieldFlagRadiosInUnision FieldFlag =(1<<25);FieldFlagMultiline FieldFlag =(1<<12); FieldFlagPassword FieldFlag =(1<<13);FieldFlagFileSelect FieldFlag =(1<<20);FieldFlagDoNotScroll FieldFlag =(1<<23);FieldFlagComb FieldFlag =(1<<24);FieldFlagRichText FieldFlag =(1<<26);FieldFlagDoNotSpellCheck FieldFlag =(1<<22);FieldFlagCombo FieldFlag =(1<<17); FieldFlagEdit FieldFlag =(1<<18);FieldFlagSort FieldFlag =(1<<19);FieldFlagMultiSelect FieldFlag =(1<<21);FieldFlagCommitOnSelChange FieldFlag =(1<<27););var ErrColorOutOfRange =_bd .New ("\u0063o\u006co\u0072\u0020\u006f\u0075\u0074 \u006f\u0066 \u0072\u0061\u006e\u0067\u0065"); // NewPdfColorspaceSpecialPattern returns a new pattern color. func NewPdfColorspaceSpecialPattern ()*PdfColorspaceSpecialPattern {return &PdfColorspaceSpecialPattern {};}; // NewBorderStyle returns an initialized PdfBorderStyle. func NewBorderStyle ()*PdfBorderStyle {_acbd :=&PdfBorderStyle {};return _acbd }; // ToPdfObject returns the PDF representation of the function. func (_ggff *PdfFunctionType0 )ToPdfObject ()_dfg .PdfObject {if _ggff ._deefg ==nil {_ggff ._deefg =&_dfg .PdfObjectStream {};};_ggec :=_dfg .MakeDict ();_ggec .Set ("\u0046\u0075\u006ec\u0074\u0069\u006f\u006e\u0054\u0079\u0070\u0065",_dfg .MakeInteger (0)); _cagage :=&_dfg .PdfObjectArray {};for _ ,_egdbg :=range _ggff .Domain {_cagage .Append (_dfg .MakeFloat (_egdbg ));};_ggec .Set ("\u0044\u006f\u006d\u0061\u0069\u006e",_cagage );_beef :=&_dfg .PdfObjectArray {};for _ ,_ebbd :=range _ggff .Range {_beef .Append (_dfg .MakeFloat (_ebbd )); };_ggec .Set ("\u0052\u0061\u006eg\u0065",_beef );_fcacf :=&_dfg .PdfObjectArray {};for _ ,_bgeb :=range _ggff .Size {_fcacf .Append (_dfg .MakeInteger (int64 (_bgeb )));};_ggec .Set ("\u0053\u0069\u007a\u0065",_fcacf );_ggec .Set ("\u0042\u0069\u0074\u0073\u0050\u0065\u0072\u0053\u0061\u006d\u0070\u006c\u0065",_dfg .MakeInteger (int64 (_ggff .BitsPerSample ))); if _ggff .Order !=1{_ggec .Set ("\u004f\u0072\u0064e\u0072",_dfg .MakeInteger (int64 (_ggff .Order )));};_ggec .Set ("\u004c\u0065\u006e\u0067\u0074\u0068",_dfg .MakeInteger (int64 (len (_ggff ._ffdce ))));_ggff ._deefg .Stream =_ggff ._ffdce ;_ggff ._deefg .PdfObjectDictionary =_ggec ; return _ggff ._deefg ;}; // FillWithAppearance populates `form` with values provided by `provider`. // If not nil, `appGen` is used to generate appearance dictionaries for the // field annotations, based on the specified settings. Otherwise, appearance // generation is skipped. // e.g.: appGen := annotator.FieldAppearance{OnlyIfMissing: true, RegenerateTextFields: true} // NOTE: In next major version this functionality will be part of Fill. (v4) func (_agcgd *PdfAcroForm )FillWithAppearance (provider FieldValueProvider ,appGen FieldAppearanceGenerator )error {_dabcd :=_agcgd .fill (provider ,appGen );if _dabcd !=nil {return _dabcd ;};if _ ,_bcbcc :=provider .(FieldImageProvider );_bcbcc {_dabcd =_agcgd .fillImageWithAppearance (provider .(FieldImageProvider ),appGen ); };return _dabcd ;}; // ToPdfObject returns the PDF representation of the colorspace. func (_gbbg *PdfColorspaceSpecialSeparation )ToPdfObject ()_dfg .PdfObject {_ccac :=_dfg .MakeArray (_dfg .MakeName ("\u0053\u0065\u0070\u0061\u0072\u0061\u0074\u0069\u006f\u006e"));_ccac .Append (_gbbg .ColorantName );_ccac .Append (_gbbg .AlternateSpace .ToPdfObject ()); _ccac .Append (_gbbg .TintTransform .ToPdfObject ());if _gbbg ._fdcef !=nil {_gbbg ._fdcef .PdfObject =_ccac ;return _gbbg ._fdcef ;};return _ccac ;};func (_fbaab *XObjectImage )getParamsDict ()*_dfg .PdfObjectDictionary {_gccdf :=_dfg .MakeDict ();_gccdf .Set ("\u0057\u0069\u0064t\u0068",_dfg .MakeInteger (*_fbaab .Width )); _gccdf .Set ("\u0048\u0065\u0069\u0067\u0068\u0074",_dfg .MakeInteger (*_fbaab .Height ));_gccdf .Set ("\u0043o\u006co\u0072\u0043\u006f\u006d\u0070\u006f\u006e\u0065\u006e\u0074\u0073",_dfg .MakeInteger (int64 (_fbaab .ColorSpace .GetNumComponents ()))); _gccdf .Set ("\u0042\u0069t\u0073\u0050\u0065r\u0043\u006f\u006d\u0070\u006f\u006e\u0065\u006e\u0074",_dfg .MakeInteger (*_fbaab .BitsPerComponent ));return _gccdf ;}; // GetNumComponents returns the number of color components of the colorspace device. // Returns 4 for a CMYK32 device. func (_bbec *PdfColorspaceDeviceCMYK )GetNumComponents ()int {return 4}; // NewPdfColorLab returns a new Lab color. func NewPdfColorLab (l ,a ,b float64 )*PdfColorLab {_eeda :=PdfColorLab {l ,a ,b };return &_eeda }; // StructTreeRoot represents the structure tree root dictionary. // Reference: PDF documentation chapter 14.7 Logical Structure, table 322. type StructTreeRoot struct{K []*KDict ;IDTree *IDTree ;ParentTree *_dfg .PdfObjectDictionary ;ParentTreeNextKey int64 ;RoleMap _dfg .PdfObject ;ClassMap *_dfg .PdfObjectDictionary ;_badddb *_dfg .PdfIndirectObject ;_afeaa []_gdb .UUID ;};func (_ebdc *PdfReader )newPdfAnnotationScreenFromDict (_cag *_dfg .PdfObjectDictionary )(*PdfAnnotationScreen ,error ){_gbba :=PdfAnnotationScreen {}; _gbba .T =_cag .Get ("\u0054");_gbba .MK =_cag .Get ("\u004d\u004b");_gbba .A =_cag .Get ("\u0041");_gbba .AA =_cag .Get ("\u0041\u0041");return &_gbba ,nil ;};func _eaagaf (_dcga *_dfg .PdfObjectStream )(*PdfFunctionType4 ,error ){_fgbe :=&PdfFunctionType4 {}; _fgbe ._gbaed =_dcga ;_dbbc :=_dcga .PdfObjectDictionary ;_ggagfe ,_dgcg :=_dfg .TraceToDirectObject (_dbbc .Get ("\u0044\u006f\u006d\u0061\u0069\u006e")).(*_dfg .PdfObjectArray );if !_dgcg {_egb .Log .Error ("D\u006fm\u0061\u0069\u006e\u0020\u006e\u006f\u0074\u0020s\u0070\u0065\u0063\u0069fi\u0065\u0064"); return nil ,_bd .New ("\u0072\u0065q\u0075\u0069\u0072\u0065d\u0020\u0061t\u0074\u0072\u0069\u0062\u0075\u0074\u0065\u0020m\u0069\u0073\u0073\u0069\u006e\u0067\u0020\u006f\u0072\u0020\u0069\u006ev\u0061\u006c\u0069\u0064");};if _ggagfe .Len ()%2!=0{_egb .Log .Error ("\u0044\u006f\u006d\u0061\u0069\u006e\u0020\u0069\u006ev\u0061\u006c\u0069\u0064"); return nil ,_bd .New ("i\u006ev\u0061\u006c\u0069\u0064\u0020\u0064\u006f\u006da\u0069\u006e\u0020\u0072an\u0067\u0065");};_cgead ,_addae :=_ggagfe .ToFloat64Array ();if _addae !=nil {return nil ,_addae ;};_fgbe .Domain =_cgead ;_ggagfe ,_dgcg =_dfg .TraceToDirectObject (_dbbc .Get ("\u0052\u0061\u006eg\u0065")).(*_dfg .PdfObjectArray ); if _dgcg {if _ggagfe .Len ()< 0||_ggagfe .Len ()%2!=0{return nil ,_bd .New ("\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0072\u0061\u006e\u0067\u0065");};_cgcb ,_ecef :=_ggagfe .ToFloat64Array ();if _ecef !=nil {return nil ,_ecef ;};_fgbe .Range =_cgcb ; };_fbbd ,_addae :=_dfg .DecodeStream (_dcga );if _addae !=nil {return nil ,_addae ;};_fgbe ._gbgcb =_fbbd ;_dgfgd :=_cb .NewPSParser (_fbbd );_ecdgd ,_addae :=_dgfgd .Parse ();if _addae !=nil {return nil ,_addae ;};_fgbe .Program =_ecdgd ;return _fgbe ,nil ; }; // GetVersion gets the document version. func (_ddded *PdfWriter )GetVersion ()_dfg .Version {return _ddded ._cfbcb }; // SetCatalogLanguage sets the catalog language. func (_gdedd *PdfWriter )SetCatalogLanguage (lang _dfg .PdfObject )error {if lang ==nil {_gdedd ._acgcc .Remove ("\u004c\u0061\u006e\u0067");return nil ;};if _ ,_egffa :=lang .(*_dfg .PdfIndirectObject );_egffa {_gdedd .addObject (lang );};_gdedd ._acgcc .Set ("\u004c\u0061\u006e\u0067",lang ); return nil ;};func (_defcef *PdfWriter )checkLicense ()error {_gbega :=_gb .GetLicenseKey ();if (_gbega ==nil ||!_gbega .IsLicensed ())&&!_ecdba {_d .Printf ("\u0055\u006e\u006c\u0069\u0063\u0065\u006e\u0073\u0065\u0064\u0020c\u006f\u0070\u0079\u0020\u006f\u0066\u0020\u0055\u006e\u0069P\u0044\u0046\u000a"); _d .Println ("-\u0020\u0047\u0065\u0074\u0020\u0061\u0020\u0066\u0072e\u0065\u0020\u0074\u0072\u0069\u0061\u006c l\u0069\u0063\u0065\u006es\u0065\u0020\u006f\u006e\u0020\u0068\u0074\u0074\u0070s:\u002f\u002fu\u006e\u0069\u0064\u006f\u0063\u002e\u0069\u006f"); return _bd .New ("\u0075\u006e\u0069\u0070d\u0066\u0020\u006c\u0069\u0063\u0065\u006e\u0073\u0065\u0020c\u006fd\u0065\u0020\u0072\u0065\u0071\u0075\u0069r\u0065\u0064");};return nil ;}; // SetOptimizer sets the optimizer to optimize PDF before writing. func (_aebc *PdfWriter )SetOptimizer (optimizer Optimizer ){_aebc ._gface =optimizer }; // B returns the value of the blue component of the color. func (_fgb *PdfColorDeviceRGB )B ()float64 {return _fgb [2]}; // PdfAnnotationRedact represents Redact annotations. // (Section 12.5.6.23). type PdfAnnotationRedact struct{*PdfAnnotation ;*PdfAnnotationMarkup ;QuadPoints _dfg .PdfObject ;IC _dfg .PdfObject ;RO _dfg .PdfObject ;OverlayText _dfg .PdfObject ;Repeat _dfg .PdfObject ;DA _dfg .PdfObject ;Q _dfg .PdfObject ;};func _gggbc (_gbeg string )map[string ]string {_dcfbb :=_dbcab .Split (_gbeg ,-1); _fgab :=map[string ]string {};for _ ,_ggdbgf :=range _dcfbb {_ffbfb :=_cbcb .FindStringSubmatch (_ggdbgf );if _ffbfb ==nil {continue ;};_dgbbb ,_abga :=_ffbfb [1],_ffbfb [2];_fgab [_dgbbb ]=_abga ;};return _fgab ;}; // ImageToRGB converts image in CalGray color space to RGB (A, B, C -> X, Y, Z). func (_bdge *PdfColorspaceCalGray )ImageToRGB (img Image )(Image ,error ){_gegfa :=_efe .NewReader (img .getBase ());_cgdb :=_ef .NewImageBase (int (img .Width ),int (img .Height ),int (img .BitsPerComponent ),3,nil ,nil ,nil );_cddfa :=_efe .NewWriter (_cgdb ); _agae :=_df .Pow (2,float64 (img .BitsPerComponent ))-1;_gfbc :=make ([]uint32 ,3);var (_decd uint32 ;ANorm ,X ,Y ,Z ,_ccafe ,_ebfa ,_caaed float64 ;_aaa error ;);for {_decd ,_aaa =_gegfa .ReadSample ();if _aaa ==_edg .EOF {break ;}else if _aaa !=nil {return img ,_aaa ; };ANorm =float64 (_decd )/_agae ;X =_bdge .WhitePoint [0]*_df .Pow (ANorm ,_bdge .Gamma );Y =_bdge .WhitePoint [1]*_df .Pow (ANorm ,_bdge .Gamma );Z =_bdge .WhitePoint [2]*_df .Pow (ANorm ,_bdge .Gamma );_ccafe =3.240479*X +-1.537150*Y +-0.498535*Z ;_ebfa =-0.969256*X +1.875992*Y +0.041556*Z ; _caaed =0.055648*X +-0.204043*Y +1.057311*Z ;_ccafe =_df .Min (_df .Max (_ccafe ,0),1.0);_ebfa =_df .Min (_df .Max (_ebfa ,0),1.0);_caaed =_df .Min (_df .Max (_caaed ,0),1.0);_gfbc [0]=uint32 (_ccafe *_agae );_gfbc [1]=uint32 (_ebfa *_agae );_gfbc [2]=uint32 (_caaed *_agae ); if _aaa =_cddfa .WriteSamples (_gfbc );_aaa !=nil {return img ,_aaa ;};};return _deba (&_cgdb ),nil ;}; // GetNumComponents returns the number of color components of the colorspace device. // Returns 1 for a grayscale device. func (_cbfeb *PdfColorspaceDeviceGray )GetNumComponents ()int {return 1}; // HasExtGState checks whether a font is defined by the specified keyName. func (_fgcff *PdfPageResources )HasExtGState (keyName _dfg .PdfObjectName )bool {_ ,_aabab :=_fgcff .GetFontByName (keyName );return _aabab ;}; // ToPdfObject implements interface PdfModel. func (_gafb *PdfAnnotationUnderline )ToPdfObject ()_dfg .PdfObject {_gafb .PdfAnnotation .ToPdfObject ();_fge :=_gafb ._afae ;_bfgbg :=_fge .PdfObject .(*_dfg .PdfObjectDictionary );_gafb .appendToPdfDictionary (_bfgbg );_bfgbg .SetIfNotNil ("\u0053u\u0062\u0074\u0079\u0070\u0065",_dfg .MakeName ("\u0055n\u0064\u0065\u0072\u006c\u0069\u006ee")); _bfgbg .SetIfNotNil ("\u0051\u0075\u0061\u0064\u0050\u006f\u0069\u006e\u0074\u0073",_gafb .QuadPoints );return _fge ;}; // ArtifactType represents the type of an artifact in a PDF document. type ArtifactType string ;func (_abccf *Image )resampleLowBits (_bfgcf []uint32 ){_dfbg :=_ef .BytesPerLine (int (_abccf .Width ),int (_abccf .BitsPerComponent ),_abccf .ColorComponents );_fecea :=make ([]byte ,_abccf .ColorComponents *_dfbg *int (_abccf .Height )); _bddgd :=int (_abccf .BitsPerComponent )*_abccf .ColorComponents *int (_abccf .Width );_eaaaf :=uint8 (8);var (_ggfab ,_ffbc int ;_ebgdd uint32 ;);for _dfdg :=0;_dfdg < int (_abccf .Height );_dfdg ++{_ffbc =_dfdg *_dfbg ;for _gccg :=0;_gccg < _bddgd ;_gccg ++{_ebgdd =_bfgcf [_ggfab ]; _eaaaf -=uint8 (_abccf .BitsPerComponent );_fecea [_ffbc ]|=byte (_ebgdd )<<_eaaaf ;if _eaaaf ==0{_eaaaf =8;_ffbc ++;};_ggfab ++;};};_abccf .Data =_fecea ;}; // PdfBorderStyle represents a border style dictionary (12.5.4 Border Styles p. 394). type PdfBorderStyle struct{W *float64 ;S *BorderStyle ;D *[]int ;_gcac _dfg .PdfObject ;}; // NewPdfColorPattern returns an empty color pattern. func NewPdfColorPattern ()*PdfColorPattern {_gea :=&PdfColorPattern {};return _gea }; // SetFileName sets the pdf writer file name for metered usage tracker. func (_fcfbe *PdfWriter )SetFileName (name string ){_fcfbe ._bdadb =name }; // ImageToRGB converts an image with samples in Separation CS to an image with samples specified in // DeviceRGB CS. func (_fbeb *PdfColorspaceSpecialSeparation )ImageToRGB (img Image )(Image ,error ){_gfgb :=_efe .NewReader (img .getBase ());_fdcg :=_ef .NewImageBase (int (img .Width ),int (img .Height ),int (img .BitsPerComponent ),_fbeb .AlternateSpace .GetNumComponents (),nil ,img ._baeef ,nil ); _fbeg :=_efe .NewWriter (_fdcg );_dedg :=_df .Pow (2,float64 (img .BitsPerComponent ))-1;_egb .Log .Trace ("\u0053\u0065\u0070a\u0072\u0061\u0074\u0069\u006f\u006e\u0020\u0063\u006f\u006c\u006f\u0072\u0020\u0073\u0070\u0061\u0063\u0065\u0020\u002d\u003e\u0020\u0054\u006f\u0052\u0047\u0042\u0020\u0063o\u006e\u0076\u0065\u0072\u0073\u0069\u006f\u006e"); _egb .Log .Trace ("\u0054i\u006et\u0054\u0072\u0061\u006e\u0073f\u006f\u0072m\u003a\u0020\u0025\u002b\u0076",_fbeb .TintTransform );_gead :=_fbeb .AlternateSpace .DecodeArray ();var (_ddee uint32 ;_fdafc error ;);for {_ddee ,_fdafc =_gfgb .ReadSample (); if _fdafc ==_edg .EOF {break ;};if _fdafc !=nil {return img ,_fdafc ;};_cedg :=float64 (_ddee )/_dedg ;_bccd ,_ccef :=_fbeb .TintTransform .Evaluate ([]float64 {_cedg });if _ccef !=nil {return img ,_ccef ;};for _agce ,_gbc :=range _bccd {_eadc :=_ef .LinearInterpolate (_gbc ,_gead [_agce *2],_gead [_agce *2+1],0,1); if _ccef =_fbeg .WriteSample (uint32 (_eadc *_dedg ));_ccef !=nil {return img ,_ccef ;};};};return _fbeb .AlternateSpace .ImageToRGB (_deba (&_fdcg ));}; // PdfShadingType7 is a Tensor-product patch mesh. type PdfShadingType7 struct{*PdfShading ;BitsPerCoordinate *_dfg .PdfObjectInteger ;BitsPerComponent *_dfg .PdfObjectInteger ;BitsPerFlag *_dfg .PdfObjectInteger ;Decode *_dfg .PdfObjectArray ;Function []PdfFunction ;};func NewViewerPreferencesFromPdfObject (obj _dfg .PdfObject )(*ViewerPreferences ,error ){_bcbga :=_dfg .ResolveReference (obj ); _bbeab ,_fafffg :=_dfg .GetDict (_bcbga );if !_fafffg {return nil ,_d .Errorf ("e\u0078\u0069\u0073\u0074\u0069\u006e\u0067\u0020\u0076i\u0065\u0077\u0065\u0072\u0020\u0070\u0072ef\u0065\u0072\u0065\u006ec\u0065\u0073\u0020\u0069\u0073\u0020\u006e\u006f\u0074 a\u0020\u0064i\u0063\u0074\u0069\u006f\u006e\u0061\u0072\u0079"); };_cdcdb :=NewViewerPreferences ();if _ggabdc :=_bbeab .Get ("H\u0069\u0064\u0065\u0054\u006f\u006f\u006c\u0062\u0061\u0072");_ggabdc !=nil {if _bcadgc ,_dgdb :=_dfg .GetBool (_ggabdc );_dgdb {_cdcdb ._dcdcg =(*bool )(_bcadgc );};};if _bdeef :=_bbeab .Get ("H\u0069\u0064\u0065\u004d\u0065\u006e\u0075\u0062\u0061\u0072"); _bdeef !=nil {if _ebbff ,_abbddd :=_dfg .GetBool (_bdeef );_abbddd {_cdcdb ._eaded =(*bool )(_ebbff );};};if _ccefg :=_bbeab .Get ("\u0048\u0069\u0064e\u0057\u0069\u006e\u0064\u006f\u0077\u0055\u0049");_ccefg !=nil {if _edcf ,_gdgea :=_dfg .GetBool (_ccefg ); _gdgea {_cdcdb ._dgbgf =(*bool )(_edcf );};};if _egcfc :=_bbeab .Get ("\u0046i\u0074\u0057\u0069\u006e\u0064\u006fw");_egcfc !=nil {if _fefag ,_cbeg :=_dfg .GetBool (_egcfc );_cbeg {_cdcdb ._abea =(*bool )(_fefag );};};if _eeefg :=_bbeab .Get ("\u0043\u0065\u006et\u0065\u0072\u0057\u0069\u006e\u0064\u006f\u0077"); _eeefg !=nil {if _bcded ,_cfdef :=_dfg .GetBool (_eeefg );_cfdef {_cdcdb ._ebdgb =(*bool )(_bcded );};};if _dbcc :=_bbeab .Get ("\u0044i\u0073p\u006c\u0061\u0079\u0044\u006f\u0063\u0054\u0069\u0074\u006c\u0065");_dbcc !=nil {if _bfegfg ,_egbag :=_dfg .GetBool (_dbcc ); _egbag {_cdcdb ._dagge =(*bool )(_bfegfg );};};if _fdecd :=_bbeab .Get ("N\u006f\u006e\u0046\u0075ll\u0053c\u0072\u0065\u0065\u006e\u0050a\u0067\u0065\u004d\u006f\u0064\u0065");_fdecd !=nil {if _cabb ,_gdbca :=_dfg .GetName (_fdecd );_gdbca {_cdcdb ._gbbce =NonFullScreenPageMode (*_cabb ); };};if _eadda :=_bbeab .Get ("\u0044i\u0072\u0065\u0063\u0074\u0069\u006fn");_eadda !=nil {if _bggec ,_bdbdcf :=_dfg .GetName (_eadda );_bdbdcf {_cdcdb ._afddc =Direction (*_bggec );};};if _efege :=_bbeab .Get ("\u0056\u0069\u0065\u0077\u0041\u0072\u0065\u0061"); _efege !=nil {if _fafdc ,_bbbba :=_dfg .GetName (_efege );_bbbba {_cdcdb ._gaeae =PageBoundary (*_fafdc );};};if _gcgeg :=_bbeab .Get ("\u0056\u0069\u0065\u0077\u0043\u006c\u0069\u0070");_gcgeg !=nil {if _bggda ,_gaae :=_dfg .GetName (_gcgeg );_gaae {_cdcdb ._cfbeg =PageBoundary (*_bggda ); };};if _gadag :=_bbeab .Get ("\u0050r\u0069\u006e\u0074\u0041\u0072\u0065a");_gadag !=nil {if _adbac ,_gfgfcg :=_dfg .GetName (_gadag );_gfgfcg {_cdcdb ._ggbeb =PageBoundary (*_adbac );};};if _efgf :=_bbeab .Get ("\u0050r\u0069\u006e\u0074\u0043\u006c\u0069p"); _efgf !=nil {if _edcdd ,_acdgc :=_dfg .GetName (_efgf );_acdgc {_cdcdb ._cdbee =PageBoundary (*_edcdd );};};if _ffeegc :=_bbeab .Get ("\u0050\u0072\u0069n\u0074\u0053\u0063\u0061\u006c\u0069\u006e\u0067");_ffeegc !=nil {if _cdaae ,_gdfe :=_dfg .GetName (_ffeegc ); _gdfe {_cdcdb ._bcdgc =PrintScaling (*_cdaae );};};if _baafa :=_bbeab .Get ("\u0044\u0075\u0070\u006c\u0065\u0078");_baafa !=nil {if _efecf ,_dbdbb :=_dfg .GetName (_baafa );_dbdbb {_cdcdb ._adeg =Duplex (*_efecf );};};if _gfbb :=_bbeab .Get ("\u0050\u0069\u0063\u006b\u0054\u0072\u0061\u0079\u0042\u0079\u0050\u0044F\u0053\u0069\u007a\u0065"); _gfbb !=nil {if _eefad ,_ccbcg :=_dfg .GetBool (_gfbb );_ccbcg {_cdcdb ._cdgcd =(*bool )(_eefad );};};if _dagfd :=_bbeab .Get ("\u0050\u0072\u0069\u006e\u0074\u0050\u0061\u0067\u0065R\u0061\u006e\u0067\u0065");_dagfd !=nil {if _cefecg ,_badfa :=_dfg .GetArray (_dagfd ); _badfa {_cdcdb ._gbdfbf =make ([]int ,_cefecg .Len ());for _aeeed :=range _cdcdb ._gbdfbf {if _bfdcbg :=_cefecg .Get (_aeeed );_bfdcbg !=nil {if _cffce ,_bgace :=_dfg .GetInt (_bfdcbg );_bgace {_cdcdb ._gbdfbf [_aeeed ]=int (*_cffce );};};};};};if _fcfe :=_bbeab .Get ("\u004eu\u006d\u0043\u006f\u0070\u0069\u0065s"); _fcfe !=nil {if _fgfdf ,_dgdea :=_dfg .GetInt (_fcfe );_dgdea {_cdcdb ._gefff =int (*_fgfdf );};};return _cdcdb ,nil ;}; // ToPdfObject converts the PdfPage to a dictionary within an indirect object container. func (_gbaedb *PdfPage )ToPdfObject ()_dfg .PdfObject {_deee :=_gbaedb ._bdeee ;_gbaedb .GetPageDict ();return _deee ;}; // SignatureHandlerDocMDPParams describe the specific parameters for the SignatureHandlerEx // These parameters describe how to check the difference between revisions. // Revisions of the document get from the PdfParser. type SignatureHandlerDocMDPParams struct{Parser *_dfg .PdfParser ;DiffPolicy _bba .DiffPolicy ;}; // ColorFromPdfObjects gets the color from a series of pdf objects (3 for rgb). func (_gacd *PdfColorspaceDeviceRGB )ColorFromPdfObjects (objects []_dfg .PdfObject )(PdfColor ,error ){if len (objects )!=3{return nil ,_bd .New ("r\u0061\u006e\u0067\u0065\u0020\u0063\u0068\u0065\u0063\u006b");};_afdb ,_eedc :=_dfg .GetNumbersAsFloat (objects ); if _eedc !=nil {return nil ,_eedc ;};return _gacd .ColorFromFloats (_afdb );}; // NewXObjectImageFromImageLazy creates a new XObject Image from an image object // with default options. If encoder is nil, uses raw encoding (none). // If lazy is true, then lazy mode is enabled for XObject. // Lazy mode allows to reduce memory usage with the help of temporary files. func NewXObjectImageFromImageLazy (img *Image ,cs PdfColorspace ,encoder _dfg .StreamEncoder ,lazy bool )(*XObjectImage ,error ){_bbff :=NewXObjectImage ();if lazy {_bdbdb ,_daadgd :=UpdateXObjectImageFromImage (_bbff ,img ,cs ,encoder );if _daadgd !=nil {return nil ,_daadgd ; };_bdbdb .ToPdfObject ();_daadgd =_bdbdb ._gfgedd .MakeLazy ();if _daadgd !=nil {return nil ,_daadgd ;};_bdbdb .Stream =nil ;return _bdbdb ,nil ;};return UpdateXObjectImageFromImage (_bbff ,img ,cs ,encoder );}; // NewPdfAnnotationPolygon returns a new polygon annotation. func NewPdfAnnotationPolygon ()*PdfAnnotationPolygon {_aded :=NewPdfAnnotation ();_eced :=&PdfAnnotationPolygon {};_eced .PdfAnnotation =_aded ;_eced .PdfAnnotationMarkup =&PdfAnnotationMarkup {};_aded .SetContext (_eced );return _eced ;}; // NewImageFromGoImage creates a new NRGBA32 unidoc Image from a golang Image. // If `goimg` is grayscale (*goimage.Gray8) then calls NewGrayImageFromGoImage instead. func (_caegg DefaultImageHandler )NewImageFromGoImage (goimg _gf .Image )(*Image ,error ){_ecdbg ,_baeed :=_ef .FromGoImage (goimg );if _baeed !=nil {return nil ,_baeed ;};_febgf :=_deba (_ecdbg .Base ());return &_febgf ,nil ;}; // NewPdfFilespec returns an initialized generic PDF filespec model. func NewPdfFilespec ()*PdfFilespec {_faabf :=&PdfFilespec {};_faabf ._bcadf =_dfg .MakeIndirectObject (_dfg .MakeDict ());return _faabf ;}; // GetContainingPdfObject returns the container of the pattern object (indirect object). func (_bccgd *PdfPattern )GetContainingPdfObject ()_dfg .PdfObject {return _bccgd ._adcec }; // ToPdfObject converts the structure tree root to a PDF object. func (_gagcf *StructTreeRoot )ToPdfObject ()_dfg .PdfObject {_ggefe :=_gagcf ._badddb ;if _ggefe ==nil {_ggefe =&_dfg .PdfIndirectObject {};_ggefe .PdfObject =_dfg .MakeDict ();};_bbea :=_ggefe .PdfObject .(*_dfg .PdfObjectDictionary );var _ecbbf _dfg .PdfObject ; if len (_gagcf .K )==1{_ecbbf =_dfg .MakeIndirectObject (_gagcf .K [0].ToPdfObject ());}else {_defcd :=_dfg .MakeArray ();for _ ,K :=range _gagcf .K {_defcd .Append (_dfg .MakeIndirectObject (K .ToPdfObject ()));};_ecbbf =_defcd ;};var (_eccfd =[]_dfg .PdfObject {}; _febdg =map[_dfg .PdfObject ][]_dfg .PdfObject {};_fcag =map[string ]_dfg .PdfObject {};);_eacc (_ecbbf ,_ggefe ,_febdg ,_fcag ,&_eccfd );_bbea .Set ("\u0054\u0079\u0070\u0065",_dfg .MakeName ("\u0053\u0074\u0072\u0075\u0063\u0074\u0054\u0072\u0065e\u0052\u006f\u006f\u0074")); _bbea .Set ("\u004b",_ecbbf );if _gagcf .IDTree !=nil {_bbea .Set ("\u0049\u0044\u0054\u0072\u0065\u0065",_dfg .MakeIndirectObject (_gagcf .IDTree .ToPdfObject ()));}else if len (_fcag )> 0{_fgdf :=_dfg .MakeArray ();_dgeda :=make ([]string ,0,len (_fcag )); for _dfddgc :=range _fcag {_dgeda =append (_dgeda ,_dfddgc );};_ed .Strings (_dgeda );for _ ,_cebce :=range _dgeda {_fgdf .Append (_dfg .MakeString (_cebce ));_fgdf .Append (_fcag [_cebce ]);};_gagcf .IDTree =&IDTree {Names :_fgdf ,Limits :_dfg .MakeArray (_dfg .MakeString (_dgeda [0]),_dfg .MakeString (_dgeda [len (_dgeda )-1]))}; _bbea .Set ("\u0049\u0044\u0054\u0072\u0065\u0065",_dfg .MakeIndirectObject (_gagcf .IDTree .ToPdfObject ()));};if _gagcf .ParentTree !=nil {_bbea .Set ("\u0050\u0061\u0072\u0065\u006e\u0074\u0054\u0072\u0065\u0065",_dfg .MakeIndirectObject (_gagcf .ParentTree )); }else if len (_febdg )> 0||len (_eccfd )> 0{_cabcb :=_dfg .MakeArray ();_fcfab :=0;for _edfef ,_fecef :=range _febdg {_bagge :=_dfg .MakeArray ();for _ ,_febgd :=range _fecef {_bagge .Append (_febgd );};_gbbda :=_dfg .MakeInteger (int64 (_fcfab ));_cabcb .Append (_gbbda ); _cabcb .Append (_dfg .MakeIndirectObject (_bagge ));if _aafgd ,_dccfe :=_dfg .GetIndirect (_edfef );_dccfe {if _geeff ,_ddfaa :=_dfg .GetDict (_aafgd .PdfObject );_ddfaa {_abbefb :=_geeff .Get ("\u0053\u0074\u0072\u0075\u0063\u0074\u0050\u0061\u0072\u0065\u006e\u0074\u0073"); if _abbefb !=nil {if _dgad ,_ggecc :=_dfg .GetIntVal (_abbefb );_ggecc {if _fcfab < _dgad {_geeff .Set ("\u0053\u0074\u0072\u0075\u0063\u0074\u0050\u0061\u0072\u0065\u006e\u0074\u0073",_gbbda );};};}else {_geeff .Set ("\u0053\u0074\u0072\u0075\u0063\u0074\u0050\u0061\u0072\u0065\u006e\u0074\u0073",_gbbda ); };};};_fcfab ++;};_cefcc :=func (_gbefa _dfg .PdfObject ,_effcc *_dfg .PdfObjectDictionary )bool {_fbbee :=_effcc ;if _faagd :=_effcc .Get ("\u0054\u0079\u0070\u0065");_faagd .String ()=="\u004f\u0042\u004a\u0052"{if _gbcgf :=_effcc .Get ("\u004f\u0062\u006a"); _gbcgf !=nil {if _eacffb ,_ffcgc :=_dfg .GetDict (_gbcgf );_ffcgc {_fbbee =_eacffb ;};};};_dbgaca :=_fbbee .Get ("\u0054\u0079\u0070\u0065");if _dbgaca !=nil &&_dbgaca .String ()=="\u0041\u006e\u006eo\u0074"{_ddfgd :=_dfg .MakeInteger (int64 (_fcfab )); _fbbee .Set ("\u0053\u0074\u0072u\u0063\u0074\u0050\u0061\u0072\u0065\u006e\u0074",_ddfgd );_cabcb .Append (_ddfgd );_cabcb .Append (_gbefa );_fcfab ++;return true ;};return false ;};for _ ,_daec :=range _eccfd {if _fbede ,_baacg :=_dfg .GetDict (_daec ); _baacg {if _caaga :=_fbede .Get ("\u0053");_caaga !=nil {if _addg ,_cdcef :=_dfg .GetNameVal (_caaga );_cdcef &&(_addg ==string (StructureTypeLink )||_addg ==string (StructureTypeAnnot )){if _ggfe :=_fbede .Get ("\u004b");_ggfe !=nil {if _bbbff ,_aaac :=_dfg .GetArray (_ggfe ); _aaac {for _ ,_eead :=range _bbbff .Elements (){if _cabggc ,_cecac :=_dfg .GetDict (_eead );_cecac {_cefcc (_daec ,_cabggc );};};}else if _efeee ,_bdadd :=_dfg .GetDict (_ggfe );_bdadd {_cefcc (_daec ,_efeee );};};};};};};_gagcf .ParentTree =_dfg .MakeDict (); _gagcf .ParentTree .Set ("\u004e\u0075\u006d\u0073",_cabcb );_gagcf .ParentTreeNextKey =int64 (_fcfab );_bbea .Set ("\u0050\u0061\u0072\u0065\u006e\u0074\u0054\u0072\u0065\u0065",_dfg .MakeIndirectObject (_gagcf .ParentTree ));};_bbea .Set ("\u0050\u0061\u0072\u0065\u006e\u0074\u0054\u0072\u0065\u0065\u004e\u0065x\u0074\u004b\u0065\u0079",_dfg .MakeInteger (_gagcf .ParentTreeNextKey )); if _gagcf .RoleMap !=nil {_bbea .Set ("\u0052o\u006c\u0065\u004d\u0061\u0070",_gagcf .RoleMap );};if _gagcf .ClassMap !=nil {_bbea .Set ("\u0043\u006c\u0061\u0073\u0073\u004d\u0061\u0070",_gagcf .ClassMap );};return _ggefe ;}; // GetRuneMetrics returns the character metrics for the rune. // A bool flag is returned to indicate whether or not the entry was found. func (_defb pdfFontSimple )GetRuneMetrics (r rune )(_bf .CharMetrics ,bool ){if _defb ._eecea !=nil {_cdaac ,_cfgc :=_defb ._eecea .Read (r );if _cfgc {return _cdaac ,true ;};};_dgbac :=_defb .Encoder ();if _dgbac ==nil {_egb .Log .Debug ("\u004e\u006f\u0020en\u0063\u006f\u0064\u0065\u0072\u0020\u0066\u006f\u0072\u0020\u0066\u006f\u006e\u0074\u0073\u003d\u0025\u0073",_defb ); return _bf .CharMetrics {},false ;};_agag ,_gcgfg :=_dgbac .RuneToCharcode (r );if !_gcgfg {if r !=' '{_egb .Log .Trace ("\u004e\u006f\u0020c\u0068\u0061\u0072\u0063o\u0064\u0065\u0020\u0066\u006f\u0072\u0020r\u0075\u006e\u0065\u003d\u0025\u0076\u0020\u0066\u006f\u006e\u0074\u003d\u0025\u0073",r ,_defb ); };return _bf .CharMetrics {},false ;};_abaec ,_efda :=_defb .GetCharMetrics (_agag );return _abaec ,_efda ;}; // Encoder returns the font's text encoder. func (_cbcca pdfFontType0 )Encoder ()_ff .TextEncoder {return _cbcca ._gbaf };func (_gaa *PdfReader )newPdfActionResetFormFromDict (_ddd *_dfg .PdfObjectDictionary )(*PdfActionResetForm ,error ){return &PdfActionResetForm {Fields :_ddd .Get ("\u0046\u0069\u0065\u006c\u0064\u0073"),Flags :_ddd .Get ("\u0046\u006c\u0061g\u0073")},nil ; }; // R returns the value of the red component of the color. func (_dfgb *PdfColorDeviceRGB )R ()float64 {return _dfgb [0]};func (_becg *PdfReader )newPdfActionSetOCGStateFromDict (_agb *_dfg .PdfObjectDictionary )(*PdfActionSetOCGState ,error ){return &PdfActionSetOCGState {State :_agb .Get ("\u0053\u0074\u0061t\u0065"),PreserveRB :_agb .Get ("\u0050\u0072\u0065\u0073\u0065\u0072\u0076\u0065\u0052\u0042")},nil ; };func (_cfbee *PdfReader )newPdfFieldFromIndirectObject (_gadg *_dfg .PdfIndirectObject ,_abde *PdfField )(*PdfField ,error ){if _egaad ,_baacf :=_cfbee ._acaed .GetModelFromPrimitive (_gadg ).(*PdfField );_baacf {return _egaad ,nil ;};_baag ,_ggdbg :=_dfg .GetDict (_gadg ); if !_ggdbg {return nil ,_d .Errorf ("\u0050\u0064f\u0046\u0069\u0065\u006c\u0064 \u0069\u006e\u0064\u0069\u0072e\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\u0061\u0020\u0064\u0069\u0063\u0074\u0069\u006f\u006e\u0061\u0072\u0079"); };_aaef :=NewPdfField ();_aaef ._caaa =_gadg ;_aaef ._caaa .PdfObject =_baag ;if _gggd ,_bgee :=_dfg .GetName (_baag .Get ("\u0046\u0054"));_bgee {_aaef .FT =_gggd ;};if _abde !=nil {_aaef .Parent =_abde ;};_aaef .T ,_ =_baag .Get ("\u0054").(*_dfg .PdfObjectString ); _aaef .TU ,_ =_baag .Get ("\u0054\u0055").(*_dfg .PdfObjectString );_aaef .TM ,_ =_baag .Get ("\u0054\u004d").(*_dfg .PdfObjectString );_aaef .Ff ,_ =_baag .Get ("\u0046\u0066").(*_dfg .PdfObjectInteger );_aaef .V =_baag .Get ("\u0056");_aaef .DV =_baag .Get ("\u0044\u0056"); _aaef .AA =_baag .Get ("\u0041\u0041");if DA :=_baag .Get ("\u0044\u0041");DA !=nil {DA ,_ :=_dfg .GetString (DA );_aaef .VariableText =&VariableText {DA :DA };Q ,_ :=_baag .Get ("\u0051").(*_dfg .PdfObjectInteger );DS ,_ :=_baag .Get ("\u0044\u0053").(*_dfg .PdfObjectString ); RV :=_baag .Get ("\u0052\u0056");_aaef .VariableText .Q =Q ;_aaef .VariableText .DS =DS ;_aaef .VariableText .RV =RV ;};_fdeab :=_aaef .FT ;if _fdeab ==nil &&_abde !=nil {_fdeab =_abde .FT ;};if _fdeab !=nil {switch *_fdeab {case "\u0054\u0078":_fbdd ,_bdfgb :=_aafa (_baag ); if _bdfgb !=nil {return nil ,_bdfgb ;};_fbdd .PdfField =_aaef ;_aaef ._agcfe =_fbdd ;case "\u0043\u0068":_gdbg ,_egfg :=_ggadd (_baag );if _egfg !=nil {return nil ,_egfg ;};_gdbg .PdfField =_aaef ;_aaef ._agcfe =_gdbg ;case "\u0042\u0074\u006e":_bgcg ,_ffbb :=_cbbce (_baag ); if _ffbb !=nil {return nil ,_ffbb ;};_bgcg .PdfField =_aaef ;_aaef ._agcfe =_bgcg ;case "\u0053\u0069\u0067":_efef ,_gegca :=_cfbee .newPdfFieldSignatureFromDict (_baag );if _gegca !=nil {return nil ,_gegca ;};_efef .PdfField =_aaef ;_aaef ._agcfe =_efef ; default:_egb .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0055\u006e\u0073\u0075\u0070\u0070\u006f\u0072t\u0065d\u0020\u0066\u0069\u0065\u006c\u0064\u0020\u0074\u0079\u0070\u0065\u0020\u0025\u0073",*_aaef .FT );return nil ,_bd .New ("\u0075\u006e\u0073\u0075pp\u006f\u0072\u0074\u0065\u0064\u0020\u0066\u0069\u0065\u006c\u0064\u0020\u0074\u0079p\u0065"); };};if _fadg ,_bafa :=_dfg .GetName (_baag .Get ("\u0053u\u0062\u0074\u0079\u0070\u0065"));_bafa {if *_fadg =="\u0057\u0069\u0064\u0067\u0065\u0074"{_dgbc ,_gbdfg :=_cfbee .newPdfAnnotationFromIndirectObject (_gadg );if _gbdfg !=nil {return nil ,_gbdfg ; };_gbbe ,_cgcaa :=_dgbc .GetContext ().(*PdfAnnotationWidget );if !_cgcaa {return nil ,_bd .New ("\u0069n\u0076\u0061\u006c\u0069d\u0020\u0077\u0069\u0064\u0067e\u0074 \u0061n\u006e\u006f\u0074\u0061\u0074\u0069\u006fn");};_gbbe ._bcad =_aaef ;_gbbe .Parent =_aaef ._caaa ; _aaef .Annotations =append (_aaef .Annotations ,_gbbe );return _aaef ,nil ;};};_cfdg :=true ;if _caef ,_edaa :=_dfg .GetArray (_baag .Get ("\u004b\u0069\u0064\u0073"));_edaa {_bbcfd :=make ([]*_dfg .PdfIndirectObject ,0,_caef .Len ());for _ ,_gdcdfe :=range _caef .Elements (){_cfdf ,_bfce :=_dfg .GetIndirect (_gdcdfe ); if !_bfce {_ceedb ,_cdgg :=_dfg .GetStream (_gdcdfe );if _cdgg &&_ceedb .PdfObjectDictionary !=nil {_cfcee ,_geac :=_dfg .GetNameVal (_ceedb .Get ("\u0054\u0079\u0070\u0065"));if _geac &&_cfcee =="\u004d\u0065\u0074\u0061\u0064\u0061\u0074\u0061"{_egb .Log .Debug ("E\u0052RO\u0052:\u0020f\u006f\u0072\u006d\u0020\u0066i\u0065\u006c\u0064 \u004b\u0069\u0064\u0073\u0020a\u0072\u0072\u0061y\u0020\u0063\u006f\u006e\u0074\u0061\u0069\u006e\u0073\u0020\u0069n\u0076\u0061\u006cid \u004d\u0065\u0074\u0061\u0064\u0061t\u0061\u0020\u0073\u0074\u0072\u0065\u0061\u006d\u002e\u0020\u0053\u006bi\u0070p\u0069\u006e\u0067\u002e"); continue ;};};return nil ,_bd .New ("n\u006f\u0074\u0020\u0061\u006e\u0020i\u006e\u0064\u0069\u0072\u0065\u0063t\u0020\u006f\u0062\u006a\u0065\u0063\u0074 \u0028\u0066\u006f\u0072\u006d\u0020\u0066\u0069\u0065\u006cd\u0029");};_cabgg ,_ccbdf :=_dfg .GetDict (_cfdf ); if !_ccbdf {return nil ,ErrTypeCheck ;};if _cfdg {_cfdg =!_aeegd (_cabgg );};_bbcfd =append (_bbcfd ,_cfdf );};for _ ,_feed :=range _bbcfd {if _cfdg {_fefd ,_eeagc :=_cfbee .newPdfAnnotationFromIndirectObject (_feed );if _eeagc !=nil {_egb .Log .Debug ("\u0045r\u0072\u006fr\u0020\u006c\u006fa\u0064\u0069\u006e\u0067\u0020\u0077\u0069d\u0067\u0065\u0074\u0020\u0061\u006en\u006f\u0074\u0061\u0074\u0069\u006f\u006e\u0020\u0066\u006f\u0072 \u0066\u0069\u0065\u006c\u0064\u003a\u0020\u0025\u0076",_eeagc ); return nil ,_eeagc ;};_agdd ,_afge :=_fefd ._dga .(*PdfAnnotationWidget );if !_afge {return nil ,ErrTypeCheck ;};_agdd ._bcad =_aaef ;_aaef .Annotations =append (_aaef .Annotations ,_agdd );}else {_ddccf ,_fbgbe :=_cfbee .newPdfFieldFromIndirectObject (_feed ,_aaef ); if _fbgbe !=nil {_egb .Log .Debug ("\u0045\u0072r\u006f\u0072\u0020\u006c\u006f\u0061\u0064\u0069\u006e\u0067\u0020\u0063\u0068\u0069\u006c\u0064\u0020\u0066\u0069\u0065\u006c\u0064: \u0025\u0076",_fbgbe );return nil ,_fbgbe ;};_aaef .Kids =append (_aaef .Kids ,_ddccf ); };};};return _aaef ,nil ;};func (_bcdeaa *PdfReader )resolveReference (_ebafb *_dfg .PdfObjectReference )(_dfg .PdfObject ,bool ,error ){_gegeb ,_cafdc :=_bcdeaa ._agbcd .ObjCache [int (_ebafb .ObjectNumber )];if !_cafdc {_egb .Log .Trace ("R\u0065\u0061\u0064\u0065r \u004co\u006f\u006b\u0075\u0070\u0020r\u0065\u0066\u003a\u0020\u0025\u0073",_ebafb ); _bcaea ,_edfg :=_bcdeaa ._agbcd .LookupByReference (*_ebafb );if _edfg !=nil {return nil ,false ,_edfg ;};_bcdeaa ._agbcd .ObjCache [int (_ebafb .ObjectNumber )]=_bcaea ;return _bcaea ,false ,nil ;};return _gegeb ,true ,nil ;}; // GetStandardApplier gets currently used StandardApplier.. func (_faeded *PdfWriter )GetStandardApplier ()StandardApplier {return _faeded ._fbafb }; // ToPdfObject returns colorspace in a PDF object format [name dictionary] func (_ccfg *PdfColorspaceCalRGB )ToPdfObject ()_dfg .PdfObject {_cabe :=&_dfg .PdfObjectArray {};_cabe .Append (_dfg .MakeName ("\u0043\u0061\u006c\u0052\u0047\u0042"));_ccfb :=_dfg .MakeDict ();if _ccfg .WhitePoint !=nil {_debc :=_dfg .MakeArray (_dfg .MakeFloat (_ccfg .WhitePoint [0]),_dfg .MakeFloat (_ccfg .WhitePoint [1]),_dfg .MakeFloat (_ccfg .WhitePoint [2])); _ccfb .Set ("\u0057\u0068\u0069\u0074\u0065\u0050\u006f\u0069\u006e\u0074",_debc );}else {_egb .Log .Error ("\u0043\u0061l\u0052\u0047\u0042\u003a \u004d\u0069s\u0073\u0069\u006e\u0067\u0020\u0057\u0068\u0069t\u0065\u0050\u006f\u0069\u006e\u0074\u0020\u0028\u0052\u0065\u0071\u0075i\u0072\u0065\u0064\u0029"); };if _ccfg .BlackPoint !=nil {_ccaa :=_dfg .MakeArray (_dfg .MakeFloat (_ccfg .BlackPoint [0]),_dfg .MakeFloat (_ccfg .BlackPoint [1]),_dfg .MakeFloat (_ccfg .BlackPoint [2]));_ccfb .Set ("\u0042\u006c\u0061\u0063\u006b\u0050\u006f\u0069\u006e\u0074",_ccaa ); };if _ccfg .Gamma !=nil {_ddca :=_dfg .MakeArray (_dfg .MakeFloat (_ccfg .Gamma [0]),_dfg .MakeFloat (_ccfg .Gamma [1]),_dfg .MakeFloat (_ccfg .Gamma [2]));_ccfb .Set ("\u0047\u0061\u006dm\u0061",_ddca );};if _ccfg .Matrix !=nil {_cfaf :=_dfg .MakeArray (_dfg .MakeFloat (_ccfg .Matrix [0]),_dfg .MakeFloat (_ccfg .Matrix [1]),_dfg .MakeFloat (_ccfg .Matrix [2]),_dfg .MakeFloat (_ccfg .Matrix [3]),_dfg .MakeFloat (_ccfg .Matrix [4]),_dfg .MakeFloat (_ccfg .Matrix [5]),_dfg .MakeFloat (_ccfg .Matrix [6]),_dfg .MakeFloat (_ccfg .Matrix [7]),_dfg .MakeFloat (_ccfg .Matrix [8])); _ccfb .Set ("\u004d\u0061\u0074\u0072\u0069\u0078",_cfaf );};_cabe .Append (_ccfb );if _ccfg ._fbag !=nil {_ccfg ._fbag .PdfObject =_cabe ;return _ccfg ._fbag ;};return _cabe ;}; // GenerateXObjectName generates an unused XObject name that can be used for // adding new XObjects. Uses format XObj1, XObj2, ... func (_gbbf *PdfPageResources )GenerateXObjectName ()_dfg .PdfObjectName {_fgbgg :=1;for {_dgcbc :=_dfg .MakeName (_d .Sprintf ("\u0058\u004f\u0062\u006a\u0025\u0064",_fgbgg ));if !_gbbf .HasXObjectByName (*_dgcbc ){return *_dgcbc ;};_fgbgg ++;};}; // Resample resamples the image data converting from current BitsPerComponent to a target BitsPerComponent // value. Sets the image's BitsPerComponent to the target value following resampling. // // For example, converting an 8-bit RGB image to 1-bit grayscale (common for scanned images): // // // Convert RGB image to grayscale. // rgbColorSpace := pdf.NewPdfColorspaceDeviceRGB() // grayImage, err := rgbColorSpace.ImageToGray(rgbImage) // if err != nil { // return err // } // // Resample as 1 bit. // grayImage.Resample(1) func (_ffbff *Image )Resample (targetBitsPerComponent int64 ){if _ffbff .BitsPerComponent ==targetBitsPerComponent {return ;};_ddfgf :=_ffbff .GetSamples ();if targetBitsPerComponent < _ffbff .BitsPerComponent {_gggcd :=_ffbff .BitsPerComponent -targetBitsPerComponent ; for _gabbg :=range _ddfgf {_ddfgf [_gabbg ]>>=uint (_gggcd );};}else if targetBitsPerComponent > _ffbff .BitsPerComponent {_gfabb :=targetBitsPerComponent -_ffbff .BitsPerComponent ;for _acfeg :=range _ddfgf {_ddfgf [_acfeg ]<<=uint (_gfabb );};};_ffbff .BitsPerComponent =targetBitsPerComponent ; if _ffbff .BitsPerComponent < 8{_ffbff .resampleLowBits (_ddfgf );return ;};_dbgb :=_ef .BytesPerLine (int (_ffbff .Width ),int (_ffbff .BitsPerComponent ),_ffbff .ColorComponents );_baeab :=make ([]byte ,_dbgb *int (_ffbff .Height ));var (_bdaf ,_fedee ,_cafaa ,_bbfe int ; _ddffg uint32 ;);for _cafaa =0;_cafaa < int (_ffbff .Height );_cafaa ++{_bdaf =_cafaa *_dbgb ;_fedee =(_cafaa +1)*_dbgb -1;_cdbfa :=_efe .ResampleUint32 (_ddfgf [_bdaf :_fedee ],int (targetBitsPerComponent ),8);for _bbfe ,_ddffg =range _cdbfa {_baeab [_bbfe +_bdaf ]=byte (_ddffg ); };};_ffbff .Data =_baeab ;}; // NewPdfActionTrans returns a new "trans" action. func NewPdfActionTrans ()*PdfActionTrans {_gc :=NewPdfAction ();_gfb :=&PdfActionTrans {};_gfb .PdfAction =_gc ;_gc .SetContext (_gfb );return _gfb ;}; // Read reads an image and loads into a new Image object with an RGB // colormap and 8 bits per component. func (_caed DefaultImageHandler )Read (reader _edg .Reader )(*Image ,error ){_cggbf ,_ ,_feaeg :=_gf .Decode (reader );if _feaeg !=nil {_egb .Log .Debug ("\u0045\u0072\u0072or\u0020\u0064\u0065\u0063\u006f\u0064\u0069\u006e\u0067\u0020\u0066\u0069\u006c\u0065\u003a\u0020\u0025\u0073",_feaeg ); return nil ,_feaeg ;};return _caed .NewImageFromGoImage (_cggbf );}; // ToPdfObject returns the PDF representation of the shading dictionary. func (_aegae *PdfShadingType7 )ToPdfObject ()_dfg .PdfObject {_aegae .PdfShading .ToPdfObject ();_bgfg ,_gbbcf :=_aegae .getShadingDict ();if _gbbcf !=nil {_egb .Log .Error ("\u0055\u006ea\u0062\u006c\u0065\u0020\u0074\u006f\u0020\u0061\u0063\u0063\u0065\u0073\u0073\u0020\u0073\u0068\u0061\u0064\u0069\u006e\u0067\u0020di\u0063\u0074"); return nil ;};if _aegae .BitsPerCoordinate !=nil {_bgfg .Set ("\u0042\u0069\u0074\u0073\u0050\u0065\u0072\u0043\u006f\u006f\u0072\u0064i\u006e\u0061\u0074\u0065",_aegae .BitsPerCoordinate );};if _aegae .BitsPerComponent !=nil {_bgfg .Set ("\u0042\u0069t\u0073\u0050\u0065r\u0043\u006f\u006d\u0070\u006f\u006e\u0065\u006e\u0074",_aegae .BitsPerComponent ); };if _aegae .BitsPerFlag !=nil {_bgfg .Set ("B\u0069\u0074\u0073\u0050\u0065\u0072\u0046\u006c\u0061\u0067",_aegae .BitsPerFlag );};if _aegae .Decode !=nil {_bgfg .Set ("\u0044\u0065\u0063\u006f\u0064\u0065",_aegae .Decode );};if _aegae .Function !=nil {if len (_aegae .Function )==1{_bgfg .Set ("\u0046\u0075\u006e\u0063\u0074\u0069\u006f\u006e",_aegae .Function [0].ToPdfObject ()); }else {_dddgbb :=_dfg .MakeArray ();for _ ,_cadad :=range _aegae .Function {_dddgbb .Append (_cadad .ToPdfObject ());};_bgfg .Set ("\u0046\u0075\u006e\u0063\u0074\u0069\u006f\u006e",_dddgbb );};};return _aegae ._gdfdg ;}; // ToPdfObject returns a PDF object representation of the ViewerPreferences. func (_fcabaf *ViewerPreferences )ToPdfObject ()_dfg .PdfObject {_dfdce :=_dfg .MakeDict ();if _fcabaf ._dcdcg !=nil {_dfdce .Set ("H\u0069\u0064\u0065\u0054\u006f\u006f\u006c\u0062\u0061\u0072",_dfg .MakeBool (*_fcabaf ._dcdcg ));};if _fcabaf ._eaded !=nil {_dfdce .Set ("H\u0069\u0064\u0065\u004d\u0065\u006e\u0075\u0062\u0061\u0072",_dfg .MakeBool (*_fcabaf ._eaded )); };if _fcabaf ._dgbgf !=nil {_dfdce .Set ("\u0048\u0069\u0064e\u0057\u0069\u006e\u0064\u006f\u0077\u0055\u0049",_dfg .MakeBool (*_fcabaf ._dgbgf ));};if _fcabaf ._abea !=nil {_dfdce .Set ("\u0046i\u0074\u0057\u0069\u006e\u0064\u006fw",_dfg .MakeBool (*_fcabaf ._abea )); };if _fcabaf ._ebdgb !=nil {_dfdce .Set ("\u0043\u0065\u006et\u0065\u0072\u0057\u0069\u006e\u0064\u006f\u0077",_dfg .MakeBool (*_fcabaf ._ebdgb ));};if _fcabaf ._dagge !=nil {_dfdce .Set ("\u0044i\u0073p\u006c\u0061\u0079\u0044\u006f\u0063\u0054\u0069\u0074\u006c\u0065",_dfg .MakeBool (*_fcabaf ._dagge )); };if _fcabaf ._gbbce !=""{_dfdce .Set ("N\u006f\u006e\u0046\u0075ll\u0053c\u0072\u0065\u0065\u006e\u0050a\u0067\u0065\u004d\u006f\u0064\u0065",_dfg .MakeName (string (_fcabaf ._gbbce )));};if _fcabaf ._afddc !=""{_dfdce .Set ("\u0044i\u0072\u0065\u0063\u0074\u0069\u006fn",_dfg .MakeName (string (_fcabaf ._afddc ))); };if _fcabaf ._gaeae !=""{_dfdce .Set ("\u0056\u0069\u0065\u0077\u0041\u0072\u0065\u0061",_dfg .MakeName (string (_fcabaf ._gaeae )));};if _fcabaf ._cfbeg !=""{_dfdce .Set ("\u0056\u0069\u0065\u0077\u0043\u006c\u0069\u0070",_dfg .MakeName (string (_fcabaf ._cfbeg ))); };if _fcabaf ._ggbeb !=""{_dfdce .Set ("\u0050r\u0069\u006e\u0074\u0041\u0072\u0065a",_dfg .MakeName (string (_fcabaf ._ggbeb )));};if _fcabaf ._cdbee !=""{_dfdce .Set ("\u0050r\u0069\u006e\u0074\u0043\u006c\u0069p",_dfg .MakeName (string (_fcabaf ._cdbee ))); };if _fcabaf ._bcdgc !=""{_dfdce .Set ("\u0050\u0072\u0069n\u0074\u0053\u0063\u0061\u006c\u0069\u006e\u0067",_dfg .MakeName (string (_fcabaf ._bcdgc )));};if _fcabaf ._adeg !=""{_dfdce .Set ("\u0044\u0075\u0070\u006c\u0065\u0078",_dfg .MakeName (string (_fcabaf ._adeg ))); };if _fcabaf ._cdgcd !=nil {_dfdce .Set ("\u0050\u0069\u0063\u006b\u0054\u0072\u0061\u0079\u0042\u0079\u0050\u0044F\u0053\u0069\u007a\u0065",_dfg .MakeBool (*_fcabaf ._cdgcd ));};if _fcabaf ._gbdfbf !=nil {_dfdce .Set ("\u0050\u0072\u0069\u006e\u0074\u0050\u0061\u0067\u0065R\u0061\u006e\u0067\u0065",_dfg .MakeArrayFromIntegers (_fcabaf ._gbdfbf )); };if _fcabaf ._gefff !=0{_dfdce .Set ("\u004eu\u006d\u0043\u006f\u0070\u0069\u0065s",_dfg .MakeInteger (int64 (_fcabaf ._gefff )));};return _dfdce ;}; // ToPdfObject implements interface PdfModel. func (_dgbb *PdfAnnotationRichMedia )ToPdfObject ()_dfg .PdfObject {_dgbb .PdfAnnotation .ToPdfObject ();_cdb :=_dgbb ._afae ;_begbe :=_cdb .PdfObject .(*_dfg .PdfObjectDictionary );_begbe .SetIfNotNil ("\u0053u\u0062\u0074\u0079\u0070\u0065",_dfg .MakeName ("\u0052i\u0063\u0068\u004d\u0065\u0064\u0069a")); _begbe .SetIfNotNil ("\u0052\u0069\u0063\u0068\u004d\u0065\u0064\u0069\u0061\u0053\u0065\u0074t\u0069\u006e\u0067\u0073",_dgbb .RichMediaSettings );_begbe .SetIfNotNil ("\u0052\u0069c\u0068\u004d\u0065d\u0069\u0061\u0043\u006f\u006e\u0074\u0065\u006e\u0074",_dgbb .RichMediaContent ); return _cdb ;}; // AddWatermarkText adds a text watermark to the page. func (_bgfbd *PdfPage )AddWatermarkText (text string ,opt WatermarkTextOptions )error {if text ==""{return _bd .New ("n\u006f\u0020\u0074\u0065\u0078\u0074\u0020\u0073\u0065\u0074");};if opt .FontPath ==""{return _bd .New ("\u006e\u006f \u0066\u006f\u006et\u0020\u0070\u0061\u0074\u0068\u0020\u0073\u0065\u0074"); };if opt .Alpha ==0{opt .Alpha =0.5;};if opt .FontSize ==0{opt .FontSize =20.0;};if opt .FontColor ==nil {opt .FontColor =_dc .Black ;};_ccdde ,_ddcce :=_bgfbd .generateImage (text ,opt .FontSize ,opt .FontPath ,opt .FontColor );if _ddcce !=nil {return _ddcce ; };_egfdc ,_ ,_ddcce :=_gf .Decode (_cca .NewReader (_ccdde ));if _ddcce !=nil {return _ddcce ;};_gebge ,_ddcce :=ImageHandling .NewImageFromGoImage (_egfdc );if _ddcce !=nil {return _ddcce ;};_efbcf ,_ddcce :=NewXObjectImageFromImage (_gebge ,nil ,_dfg .NewFlateEncoder ()); if _ddcce !=nil {return _ddcce ;};_dced :=WatermarkImageOptions {Alpha :opt .Alpha ,FitToWidth :false ,PreserveAspectRatio :true ,Angle :opt .Angle };return _bgfbd .AddWatermarkImage (_efbcf ,_dced );};func (_aecab *pdfCIDFontType2 )getFontDescriptor ()*PdfFontDescriptor {return _aecab ._cebfd }; // BytesToCharcodes converts the bytes in a PDF string to character codes. func (_cecgg *PdfFont )BytesToCharcodes (data []byte )[]_ff .CharCode {_egb .Log .Trace ("\u0042\u0079\u0074es\u0054\u006f\u0043\u0068\u0061\u0072\u0063\u006f\u0064e\u0073:\u0020d\u0061t\u0061\u003d\u005b\u0025\u0020\u0030\u0032\u0078\u005d\u003d\u0025\u0023\u0071",data ,data ); if _ccgcc ,_bfcfd :=_cecgg ._fab .(*pdfFontType0 );_bfcfd &&_ccgcc ._dfec !=nil {if _dffa ,_cdgc :=_ccgcc .bytesToCharcodes (data );_cdgc {return _dffa ;};};var (_edgdf =make ([]_ff .CharCode ,0,len (data )+len (data )%2);_bedd =_cecgg .baseFields ();); if _bedd ._bgdcbc !=nil {if _geda ,_abgfc :=_bedd ._bgdcbc .BytesToCharcodes (data );_abgfc {for _ ,_fdeg :=range _geda {_edgdf =append (_edgdf ,_ff .CharCode (_fdeg ));};return _edgdf ;};};if _bedd .isCIDFont (){if len (data )==1{data =[]byte {0,data [0]}; };if len (data )%2!=0{_egb .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0050\u0061\u0064\u0064\u0069\u006e\u0067\u0020\u0064\u0061\u0074\u0061\u003d\u0025\u002b\u0076\u0020t\u006f\u0020\u0065\u0076\u0065n\u0020\u006ce\u006e\u0067\u0074\u0068",data ); data =append (data ,0);};for _gdeg :=0;_gdeg < len (data );_gdeg +=2{_fbdc :=uint16 (data [_gdeg ])<<8|uint16 (data [_gdeg +1]);_edgdf =append (_edgdf ,_ff .CharCode (_fbdc ));};}else {for _ ,_faeaf :=range data {_edgdf =append (_edgdf ,_ff .CharCode (_faeaf )); };};return _edgdf ;}; // HasFontByName checks if has font resource by name. func (_dacb *PdfPage )HasFontByName (name _dfg .PdfObjectName )bool {_bcffd ,_facda :=_dacb .Resources .Font .(*_dfg .PdfObjectDictionary );if !_facda {return false ;};if _fcgg :=_bcffd .Get (name );_fcgg !=nil {return true ;};return false ;}; // SetContext sets the sub annotation (context). func (_dbb *PdfAnnotation )SetContext (ctx PdfModel ){_dbb ._dga =ctx }; // DecodeArray returns the component range values for the Indexed colorspace. func (_cbcc *PdfColorspaceSpecialIndexed )DecodeArray ()[]float64 {return []float64 {0,float64 (_cbcc .HiVal )};}; // PdfActionResetForm represents a resetForm action. type PdfActionResetForm struct{*PdfAction ;Fields _dfg .PdfObject ;Flags _dfg .PdfObject ;}; // UpdatePage updates the `page` in the new revision if it has changed. func (_dfgab *PdfAppender )UpdatePage (page *PdfPage ){_dfgab .updateObjectsDeep (page .ToPdfObject (),nil );}; // PdfShadingType3 is a Radial shading. type PdfShadingType3 struct{*PdfShading ;Coords *_dfg .PdfObjectArray ;Domain *_dfg .PdfObjectArray ;Function []PdfFunction ;Extend *_dfg .PdfObjectArray ;}; // ToPdfObject returns the PDF representation of the function. func (_cgafb *PdfFunctionType3 )ToPdfObject ()_dfg .PdfObject {_gebb :=_dfg .MakeDict ();_gebb .Set ("\u0046\u0075\u006ec\u0074\u0069\u006f\u006e\u0054\u0079\u0070\u0065",_dfg .MakeInteger (3));_fgfeb :=&_dfg .PdfObjectArray {};for _ ,_gfged :=range _cgafb .Domain {_fgfeb .Append (_dfg .MakeFloat (_gfged )); };_gebb .Set ("\u0044\u006f\u006d\u0061\u0069\u006e",_fgfeb );if _cgafb .Range !=nil {_bddaef :=&_dfg .PdfObjectArray {};for _ ,_feggd :=range _cgafb .Range {_bddaef .Append (_dfg .MakeFloat (_feggd ));};_gebb .Set ("\u0052\u0061\u006eg\u0065",_bddaef ); };if _cgafb .Functions !=nil {_cfffe :=&_dfg .PdfObjectArray {};for _ ,_ddac :=range _cgafb .Functions {_cfffe .Append (_ddac .ToPdfObject ());};_gebb .Set ("\u0046u\u006e\u0063\u0074\u0069\u006f\u006es",_cfffe );};if _cgafb .Bounds !=nil {_eeffc :=&_dfg .PdfObjectArray {}; for _ ,_fdbgc :=range _cgafb .Bounds {_eeffc .Append (_dfg .MakeFloat (_fdbgc ));};_gebb .Set ("\u0042\u006f\u0075\u006e\u0064\u0073",_eeffc );};if _cgafb .Encode !=nil {_debdd :=&_dfg .PdfObjectArray {};for _ ,_dbcbg :=range _cgafb .Encode {_debdd .Append (_dfg .MakeFloat (_dbcbg )); };_gebb .Set ("\u0045\u006e\u0063\u006f\u0064\u0065",_debdd );};if _cgafb ._begcf !=nil {_cgafb ._begcf .PdfObject =_gebb ;return _cgafb ._begcf ;};return _gebb ;}; // AcroFormRepairOptions contains options for rebuilding the AcroForm. type AcroFormRepairOptions struct{}; // NewPdfOutlineItem returns an initialized PdfOutlineItem. func NewPdfOutlineItem ()*PdfOutlineItem {_edbcf :=&PdfOutlineItem {_fcecb :_dfg .MakeIndirectObject (_dfg .MakeDict ())};_edbcf ._cface =_edbcf ;return _edbcf ;};func (_ddbag *pdfFontSimple )addEncoding ()error {var (_dedf string ;_bggga map[_ff .CharCode ]_ff .GlyphName ; _ggbe _ff .SimpleEncoder ;);if _ddbag .Encoder ()!=nil {_ddbb ,_aedd :=_ddbag .Encoder ().(_ff .SimpleEncoder );if _aedd &&_ddbb !=nil {_dedf =_ddbb .BaseName ();};};if _ddbag .Encoding !=nil {_bgged ,_ggcea ,_ebgae :=_ddbag .getFontEncoding ();if _ebgae !=nil {_egb .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0042\u0061\u0073\u0065F\u006f\u006e\u0074\u003d\u0025\u0071\u0020\u0053u\u0062t\u0079\u0070\u0065\u003d\u0025\u0071\u0020\u0045\u006e\u0063\u006f\u0064\u0069\u006e\u0067\u003d\u0025\u0073 \u0028\u0025\u0054\u0029\u0020\u0065\u0072\u0072\u003d\u0025\u0076",_ddbag ._dbcbc ,_ddbag ._gdab ,_ddbag .Encoding ,_ddbag .Encoding ,_ebgae ); return _ebgae ;};if _bgged !=""{_dedf =_bgged ;};_bggga =_ggcea ;_ggbe ,_ebgae =_ff .NewSimpleTextEncoder (_dedf ,_bggga );if _ebgae !=nil {return _ebgae ;};};if _ggbe ==nil {_efgaa :=_ddbag ._cebfd ;if _efgaa !=nil {switch _ddbag ._gdab {case "\u0054\u0079\u0070e\u0031":if _efgaa .fontFile !=nil &&_efgaa ._adbgd !=nil {_egb .Log .Debug ("\u0055\u0073\u0069\u006e\u0067\u0020\u0066\u006f\u006et\u0046\u0069\u006c\u0065"); _ggbe =_efgaa ._adbgd ;};case "\u0054\u0072\u0075\u0065\u0054\u0079\u0070\u0065":if _efgaa ._gcge !=nil {_egb .Log .Debug ("\u0055s\u0069n\u0067\u0020\u0046\u006f\u006e\u0074\u0046\u0069\u006c\u0065\u0032");_ddbgb ,_fcdc :=_efgaa ._gcge .MakeEncoder (); if _fcdc ==nil {_ggbe =_ddbgb ;};if _ddbag ._bgdcbc ==nil {_ddbag ._bgdcbc =_efgaa ._gcge .MakeToUnicode ();};};};};};if _ggbe !=nil {if _bggga !=nil {_egb .Log .Trace ("\u0064\u0069\u0066fe\u0072\u0065\u006e\u0063\u0065\u0073\u003d\u0025\u002b\u0076\u0020\u0066\u006f\u006e\u0074\u003d\u0025\u0073",_bggga ,_ddbag .baseFields ()); _ggbe =_ff .ApplyDifferences (_ggbe ,_bggga );};_ddbag .SetEncoder (_ggbe );};return nil ;}; // GetRuneMetrics iterates through each font in the list of fonts the returns the fonts.CharMetrics from working font. func (_cbbdc *MultipleFontEncoder )GetRuneMetrics (r rune )(_bf .CharMetrics ,bool ){_acfg :=_cbbdc .CurrentFont ;_gafg ,_ccefb :=_acfg .GetRuneMetrics (r );for _egccgd :=1;_egccgd < len (_cbbdc ._ceede )&&_gafg .Wx ==0;_egccgd ++{_acfg =_cbbdc ._ceede [_egccgd ]; _gafg ,_ccefb =_acfg .GetRuneMetrics (r );};return _gafg ,_ccefb ;}; // ImageToRGB converts an Image in a given PdfColorspace to an RGB image. func (_bfbef *PdfColorspaceDeviceN )ImageToRGB (img Image )(Image ,error ){_adae :=_efe .NewReader (img .getBase ());_affg :=_ef .NewImageBase (int (img .Width ),int (img .Height ),int (img .BitsPerComponent ),img .ColorComponents ,nil ,img ._baeef ,img ._begcc ); _abbe :=_efe .NewWriter (_affg );_acgcd :=_df .Pow (2,float64 (img .BitsPerComponent ))-1;_bggg :=_bfbef .GetNumComponents ();_fgeb :=make ([]uint32 ,_bggg );_bcaed :=make ([]float64 ,_bggg );for {_faaf :=_adae .ReadSamples (_fgeb );if _faaf ==_edg .EOF {break ; }else if _faaf !=nil {return img ,_faaf ;};for _bdbgbe :=0;_bdbgbe < _bggg ;_bdbgbe ++{_daadg :=float64 (_fgeb [_bdbgbe ])/_acgcd ;_bcaed [_bdbgbe ]=_daadg ;};_eaea ,_faaf :=_bfbef .TintTransform .Evaluate (_bcaed );if _faaf !=nil {return img ,_faaf ;}; for _ ,_cbdeg :=range _eaea {_cbdeg =_df .Min (_df .Max (0,_cbdeg ),1.0);if _faaf =_abbe .WriteSample (uint32 (_cbdeg *_acgcd ));_faaf !=nil {return img ,_faaf ;};};};return _bfbef .AlternateSpace .ImageToRGB (_deba (&_affg ));}; // IsRadio returns true if the button field represents a radio button, false otherwise. func (_agbcf *PdfFieldButton )IsRadio ()bool {return _agbcf .GetType ()==ButtonTypeRadio }; // NewReaderForText makes a new PdfReader for an input PDF content string. For use in testing. func NewReaderForText (txt string )*PdfReader {return &PdfReader {_fcecf :map[_dfg .PdfObject ]struct{}{},_acaed :_cebfb (),_agbcd :_dfg .NewParserFromString (txt )};}; // NewPdfColorCalGray returns a new CalGray color. func NewPdfColorCalGray (grayVal float64 )*PdfColorCalGray {_aced :=PdfColorCalGray (grayVal );return &_aced ;}; // GetContentStream returns the pattern cell's content stream func (_fcdg *PdfTilingPattern )GetContentStream ()([]byte ,error ){_ecdgg ,_ ,_eeggb :=_fcdg .GetContentStreamWithEncoder ();return _ecdgg ,_eeggb ;}; // SetNumCopies sets the value of the numCopies. func (_cdddd *ViewerPreferences )SetNumCopies (numCopies int ){_cdddd ._gefff =numCopies };func _abfgc (_fafe *fontCommon )*pdfCIDFontType0 {return &pdfCIDFontType0 {fontCommon :*_fafe }};func (_ccdga *PdfWriter )flushWriter ()error {if _ccdga ._afgfcg ==nil {_ccdga ._afgfcg =_ccdga ._bfdbg .Flush (); };return _ccdga ._afgfcg ;}; // NewPdfFileSpecFromEmbeddedFile construct a new PdfFileSpec that contains an embedded file. func NewPdfFileSpecFromEmbeddedFile (file *EmbeddedFile )*PdfFilespec {_babec :=&PdfFilespec {};_babec ._bcadf =_dfg .MakeIndirectObject (_dfg .MakeDict ());_babec .Desc =_dfg .MakeString (file .Description );_babec .EF =file .ToPdfObject ();_babec .F =_dfg .MakeString (file .Name ); _babec .UF =_dfg .MakeEncodedString (file .Name ,true );_fcbaf :="U\u006e\u0073\u0070\u0065\u0063\u0069\u0066\u0069\u0065\u0064";switch file .Relationship {case RelationshipSource :_fcbaf ="\u0053\u006f\u0075\u0072\u0063\u0065";case RelationshipData :_fcbaf ="\u0044\u0061\u0074\u0061"; case RelationshipAlternative :_fcbaf ="A\u006c\u0074\u0065\u0072\u006e\u0061\u0074\u0069\u0076\u0065";case RelationshipSupplement :_fcbaf ="\u0053\u0075\u0070\u0070\u006c\u0065\u006d\u0065\u006e\u0074";};_babec .AFRelationship =_dfg .MakeName (_fcbaf ); return _babec ;}; // PdfTilingPattern is a Tiling pattern that consists of repetitions of a pattern cell with defined intervals. // It is a type 1 pattern. (PatternType = 1). // A tiling pattern is represented by a stream object, where the stream content is // a content stream that describes the pattern cell. type PdfTilingPattern struct{*PdfPattern ;PaintType *_dfg .PdfObjectInteger ;TilingType *_dfg .PdfObjectInteger ;BBox *PdfRectangle ;XStep *_dfg .PdfObjectFloat ;YStep *_dfg .PdfObjectFloat ;Resources *PdfPageResources ;Matrix *_dfg .PdfObjectArray ;}; // NewPdfAnnotation returns an initialized generic PDF annotation model. func NewPdfAnnotation ()*PdfAnnotation {_cgd :=&PdfAnnotation {};_cgd ._afae =_dfg .MakeIndirectObject (_dfg .MakeDict ());return _cgd ;};func (_gcace *LTV )getCerts (_bcdea []*_de .Certificate )([][]byte ,error ){_fgcdc :=make ([][]byte ,0,len (_bcdea )); for _ ,_gedc :=range _bcdea {_fgcdc =append (_fgcdc ,_gedc .Raw );};return _fgcdc ,nil ;}; // GetCatalogLanguage gets catalog Language object. func (_faeef *PdfReader )GetCatalogLanguage ()(_dfg .PdfObject ,bool ){if _faeef ._fbfgb ==nil {return nil ,false ;};_cadea :=_faeef ._fbfgb .Get ("\u004c\u0061\u006e\u0067");return _cadea ,_cadea !=nil ;}; // GetRotate gets the inheritable rotate value, either from the page // or a higher up page/pages struct. func (_gbfa *PdfPage )GetRotate ()(int64 ,error ){if _gbfa .Rotate !=nil {return *_gbfa .Rotate ,nil ;};_addfg :=_gbfa .Parent ;for _addfg !=nil {_gebeb ,_fdccf :=_dfg .GetDict (_addfg );if !_fdccf {return 0,_bd .New ("\u0069\u006e\u0076\u0061\u006c\u0069d\u0020\u0070\u0061\u0072\u0065\u006e\u0074\u0020\u006f\u0062\u006a\u0065\u0063t\u0073\u0020\u0064\u0069\u0063\u0074\u0069o\u006e\u0061\u0072\u0079"); };if _bcbaf :=_gebeb .Get ("\u0052\u006f\u0074\u0061\u0074\u0065");_bcbaf !=nil {_baefc ,_afdbc :=_dfg .GetInt (_bcbaf );if !_afdbc {return 0,_bd .New ("i\u006ev\u0061\u006c\u0069\u0064\u0020\u0072\u006f\u0074a\u0074\u0065\u0020\u0076al\u0075\u0065");}; if _baefc !=nil {return int64 (*_baefc ),nil ;};return 0,_bd .New ("\u0072\u006f\u0074\u0061te\u0020\u0076\u0061\u006c\u0075\u0065\u0020\u0069\u0073\u0020\u006e\u0069\u006c");};_addfg =_gebeb .Get ("\u0050\u0061\u0072\u0065\u006e\u0074");};return 0,_bd .New ("\u0072o\u0074a\u0074\u0065\u0020\u006e\u006ft\u0020\u0064e\u0066\u0069\u006e\u0065\u0064"); }; // GetNumComponents returns the number of color components of the colorspace device. // Returns 1 for a CalGray device. func (_bbga *PdfColorspaceCalGray )GetNumComponents ()int {return 1}; // PrintScaling represents the page scaling option that shall be selected // when a print dialog is displayed for this document. type PrintScaling string ; // PdfActionGoTo represents a GoTo action. type PdfActionGoTo struct{*PdfAction ;D _dfg .PdfObject ;};func (_gagbd *PdfSignature )extractChainFromCert ()([]*_de .Certificate ,error ){var _cefeb *_dfg .PdfObjectArray ;switch _ebffb :=_gagbd .Cert .(type ){case *_dfg .PdfObjectString :_cefeb =_dfg .MakeArray (_ebffb ); case *_dfg .PdfObjectArray :_cefeb =_ebffb ;default:return nil ,_d .Errorf ("\u0069n\u0076\u0061l\u0069\u0064\u0020s\u0069\u0067\u006e\u0061\u0074\u0075\u0072e\u0020\u0063\u0065\u0072\u0074\u0069f\u0069\u0063\u0061\u0074\u0065\u0020\u006f\u0062\u006a\u0065\u0063t\u0020\u0074\u0079\u0070\u0065\u003a\u0020\u0025\u0054",_ebffb ); };var _agadf _cca .Buffer ;for _ ,_eedge :=range _cefeb .Elements (){_cbgbf ,_cfdgc :=_dfg .GetString (_eedge );if !_cfdgc {return nil ,_d .Errorf ("\u0069\u006ev\u0061\u006c\u0069\u0064\u0020\u0063\u0065\u0072\u0074\u0069\u0066\u0069\u0063\u0061\u0074\u0065\u0020\u006f\u0062j\u0065\u0063\u0074\u0020\u0074\u0079p\u0065\u0020\u0069\u006e\u0020\u0073\u0069\u0067\u006e\u0061\u0074\u0075\u0072\u0065 \u0063\u0065r\u0074\u0069\u0066\u0069c\u0061\u0074\u0065\u0020\u0063h\u0061\u0069\u006e\u003a\u0020\u0025\u0054",_eedge ); };if _ ,_gfbcde :=_agadf .Write (_cbgbf .Bytes ());_gfbcde !=nil {return nil ,_gfbcde ;};};return _de .ParseCertificates (_agadf .Bytes ());}; // NewPdfColorspaceSpecialSeparation returns a new separation color. func NewPdfColorspaceSpecialSeparation ()*PdfColorspaceSpecialSeparation {_fcddb :=&PdfColorspaceSpecialSeparation {};return _fcddb ;}; // ToPdfObject implements interface PdfModel. func (_effd *PdfAnnotationStrikeOut )ToPdfObject ()_dfg .PdfObject {_effd .PdfAnnotation .ToPdfObject ();_agfa :=_effd ._afae ;_dfcf :=_agfa .PdfObject .(*_dfg .PdfObjectDictionary );_effd .appendToPdfDictionary (_dfcf );_dfcf .SetIfNotNil ("\u0053u\u0062\u0074\u0079\u0070\u0065",_dfg .MakeName ("\u0053t\u0072\u0069\u006b\u0065\u004f\u0075t")); _dfcf .SetIfNotNil ("\u0051\u0075\u0061\u0064\u0050\u006f\u0069\u006e\u0074\u0073",_effd .QuadPoints );return _agfa ;}; // SetCatalogMarkInfo sets the catalog MarkInfo dictionary. func (_cggag *PdfWriter )SetCatalogMarkInfo (info _dfg .PdfObject )error {if info ==nil {_cggag ._acgcc .Remove ("\u004d\u0061\u0072\u006b\u0049\u006e\u0066\u006f");return nil ;};if _bbbg ,_ccadd :=info .(*_dfg .PdfObjectReference );_ccadd {info =_bbbg .Resolve (); if info ==nil {_cggag ._acgcc .Remove ("\u004d\u0061\u0072\u006b\u0049\u006e\u0066\u006f");return nil ;};};if _ ,_bfadge :=info .(*_dfg .PdfIndirectObject );_bfadge {_cggag .addObject (info );};_cggag ._acgcc .Set ("\u004d\u0061\u0072\u006b\u0049\u006e\u0066\u006f",info ); return nil ;}; // String returns a human readable description of `fontfile`. func (_cadbe *fontFile )String ()string {_bfcfa :="\u005b\u004e\u006f\u006e\u0065\u005d";if _cadbe ._adbgd !=nil {_bfcfa =_cadbe ._adbgd .String ();};return _d .Sprintf ("\u0046O\u004e\u0054\u0046\u0049\u004c\u0045\u007b\u0025\u0023\u0071\u0020e\u006e\u0063\u006f\u0064\u0065\u0072\u003d\u0025\u0073\u007d",_cadbe ._agcb ,_bfcfa ); };var ImageHandling ImageHandler =DefaultImageHandler {}; // NewPdfAnnotationCaret returns a new caret annotation. func NewPdfAnnotationCaret ()*PdfAnnotationCaret {_bcag :=NewPdfAnnotation ();_eab :=&PdfAnnotationCaret {};_eab .PdfAnnotation =_bcag ;_eab .PdfAnnotationMarkup =&PdfAnnotationMarkup {};_bcag .SetContext (_eab );return _eab ;}; // ToPdfObject returns colorspace in a PDF object format [name stream] func (_febec *PdfColorspaceICCBased )ToPdfObject ()_dfg .PdfObject {_bagee :=&_dfg .PdfObjectArray {};_bagee .Append (_dfg .MakeName ("\u0049\u0043\u0043\u0042\u0061\u0073\u0065\u0064"));var _gdfb *_dfg .PdfObjectStream ;if _febec ._edadb !=nil {_gdfb =_febec ._edadb ; }else {_gdfb =&_dfg .PdfObjectStream {};};_ddbfg :=_dfg .MakeDict ();_ddbfg .Set ("\u004e",_dfg .MakeInteger (int64 (_febec .N )));if _febec .Alternate !=nil {_ddbfg .Set ("\u0041l\u0074\u0065\u0072\u006e\u0061\u0074e",_febec .Alternate .ToPdfObject ()); };if _febec .Metadata !=nil {_ddbfg .Set ("\u004d\u0065\u0074\u0061\u0064\u0061\u0074\u0061",_febec .Metadata );};if _febec .Range !=nil {var _bcfd []_dfg .PdfObject ;for _ ,_dbgc :=range _febec .Range {_bcfd =append (_bcfd ,_dfg .MakeFloat (_dbgc ));}; _ddbfg .Set ("\u0052\u0061\u006eg\u0065",_dfg .MakeArray (_bcfd ...));};_ddbfg .Set ("\u004c\u0065\u006e\u0067\u0074\u0068",_dfg .MakeInteger (int64 (len (_febec .Data ))));_gdfb .Stream =_febec .Data ;_gdfb .PdfObjectDictionary =_ddbfg ;_bagee .Append (_gdfb ); if _febec ._ggdb !=nil {_febec ._ggdb .PdfObject =_bagee ;return _febec ._ggdb ;};return _bagee ;}; // PdfReader represents a PDF file reader. It is a frontend to the lower level parsing mechanism and provides // a higher level access to work with PDF structure and information, such as the page structure etc. type PdfReader struct{_agbcd *_dfg .PdfParser ;_ceff _dfg .PdfObject ;_ffdb *_dfg .PdfIndirectObject ;_gfbee *_dfg .PdfObjectDictionary ;_ggbf []*_dfg .PdfIndirectObject ;PageList []*PdfPage ;_dfgg int ;_fbfgb *_dfg .PdfObjectDictionary ;_dagg *PdfOutlineTreeNode ; AcroForm *PdfAcroForm ;DSS *DSS ;Rotate *int64 ;_efgca *Permissions ;_cceg map[*PdfReader ]*PdfReader ;_eaff []*PdfReader ;_acaed *modelManager ;_bafba bool ;_fcecf map[_dfg .PdfObject ]struct{};_cggac _edg .ReadSeeker ;_befaf string ;_ggda bool ;_aefda string ; _abef *ReaderOpts ;_faage bool ;}; // ToPdfObject returns the PDF representation of the VRI dictionary. func (_eafef *VRI )ToPdfObject ()*_dfg .PdfObjectDictionary {_agaf :=_dfg .MakeDict ();_agaf .SetIfNotNil (_dfg .PdfObjectName ("\u0043\u0065\u0072\u0074"),_aedcf (_eafef .Cert ));_agaf .SetIfNotNil (_dfg .PdfObjectName ("\u004f\u0043\u0053\u0050"),_aedcf (_eafef .OCSP )); _agaf .SetIfNotNil (_dfg .PdfObjectName ("\u0043\u0052\u004c"),_aedcf (_eafef .CRL ));_agaf .SetIfNotNil ("\u0054\u0055",_eafef .TU );_agaf .SetIfNotNil ("\u0054\u0053",_eafef .TS );return _agaf ;}; // PdfAcroForm represents the AcroForm dictionary used for representation of form data in PDF. type PdfAcroForm struct{Fields *[]*PdfField ;NeedAppearances *_dfg .PdfObjectBool ;SigFlags *_dfg .PdfObjectInteger ;CO *_dfg .PdfObjectArray ;DR *PdfPageResources ;DA *_dfg .PdfObjectString ;Q *_dfg .PdfObjectInteger ;XFA _dfg .PdfObject ; // ADBEEchoSign extra objects from Adobe Acrobat, causing signature invalid if not exists. ADBEEchoSign _dfg .PdfObject ;_gddd *_dfg .PdfIndirectObject ;_ecfa bool ;}; // PdfFieldSignature signature field represents digital signatures and optional data for authenticating // the name of the signer and verifying document contents. type PdfFieldSignature struct{*PdfField ;*PdfAnnotationWidget ;V *PdfSignature ;Lock *_dfg .PdfIndirectObject ;SV *_dfg .PdfIndirectObject ;};func (_dfdgg *LTV )getOCSPs (_abdge []*_de .Certificate ,_bfbag map[string ]*_de .Certificate )([][]byte ,error ){_bfgaf :=make ([][]byte ,0,len (_abdge )); for _ ,_bfeg :=range _abdge {for _ ,_ceedbf :=range _bfeg .OCSPServer {if _dfdgg .CertClient .IsCA (_bfeg ){continue ;};_cefc ,_afeaf :=_bfbag [_bfeg .Issuer .CommonName ];if !_afeaf {_egb .Log .Debug ("\u0057\u0041\u0052\u004e:\u0020\u0053\u006b\u0069\u0070\u0070\u0069\u006e\u0067 \u004f\u0043\u0053\u0050\u0020\u0072\u0065\u0071\u0075\u0065\u0073\u0074\u003a\u0020\u0069\u0073\u0073\u0075e\u0072\u0020\u0063\u0065\u0072t\u0069\u0066\u0069\u0063\u0061\u0074\u0065\u0020\u006e\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064"); continue ;};_ ,_caecf ,_agead :=_dfdgg .OCSPClient .MakeRequest (_ceedbf ,_bfeg ,_cefc );if _agead !=nil {_egb .Log .Debug ("\u0057\u0041\u0052\u004e:\u0020\u004f\u0043\u0053\u0050\u0020\u0072\u0065\u0071\u0075e\u0073t\u0020\u0065\u0072\u0072\u006f\u0072\u003a \u0025\u0076",_agead ); continue ;};_bfgaf =append (_bfgaf ,_caecf );};};return _bfgaf ,nil ;}; // ToPdfObject returns colorspace in a PDF object format [name dictionary] func (_bggcb *PdfColorspaceLab )ToPdfObject ()_dfg .PdfObject {_gcdb :=_dfg .MakeArray ();_gcdb .Append (_dfg .MakeName ("\u004c\u0061\u0062"));_cfdd :=_dfg .MakeDict ();if _bggcb .WhitePoint !=nil {_fecg :=_dfg .MakeArray (_dfg .MakeFloat (_bggcb .WhitePoint [0]),_dfg .MakeFloat (_bggcb .WhitePoint [1]),_dfg .MakeFloat (_bggcb .WhitePoint [2])); _cfdd .Set ("\u0057\u0068\u0069\u0074\u0065\u0050\u006f\u0069\u006e\u0074",_fecg );}else {_egb .Log .Error ("\u004c\u0061\u0062: \u004d\u0069\u0073\u0073\u0069\u006e\u0067\u0020\u0057h\u0069t\u0065P\u006fi\u006e\u0074\u0020\u0028\u0052\u0065\u0071\u0075\u0069\u0072\u0065\u0064\u0029"); };if _bggcb .BlackPoint !=nil {_fffc :=_dfg .MakeArray (_dfg .MakeFloat (_bggcb .BlackPoint [0]),_dfg .MakeFloat (_bggcb .BlackPoint [1]),_dfg .MakeFloat (_bggcb .BlackPoint [2]));_cfdd .Set ("\u0042\u006c\u0061\u0063\u006b\u0050\u006f\u0069\u006e\u0074",_fffc ); };if _bggcb .Range !=nil {_aeggb :=_dfg .MakeArray (_dfg .MakeFloat (_bggcb .Range [0]),_dfg .MakeFloat (_bggcb .Range [1]),_dfg .MakeFloat (_bggcb .Range [2]),_dfg .MakeFloat (_bggcb .Range [3]));_cfdd .Set ("\u0052\u0061\u006eg\u0065",_aeggb );};_gcdb .Append (_cfdd ); if _bggcb ._abbf !=nil {_bggcb ._abbf .PdfObject =_gcdb ;return _bggcb ._abbf ;};return _gcdb ;}; // CharMetrics represents width and height metrics of a glyph. type CharMetrics =_bf .CharMetrics ;func (_caee SignatureValidationResult )String ()string {var _cbge _cca .Buffer ;_cbge .WriteString (_d .Sprintf ("\u004ea\u006d\u0065\u003a\u0020\u0025\u0073\n",_caee .Name ));if _caee .Date ._accga > 0{_cbge .WriteString (_d .Sprintf ("\u0044a\u0074\u0065\u003a\u0020\u0025\u0073\n",_caee .Date .ToGoTime ().String ())); }else {_cbge .WriteString ("\u0044\u0061\u0074\u0065 n\u006f\u0074\u0020\u0073\u0070\u0065\u0063\u0069\u0066\u0069\u0065\u0064\u000a");};if len (_caee .Reason )> 0{_cbge .WriteString (_d .Sprintf ("R\u0065\u0061\u0073\u006f\u006e\u003a\u0020\u0025\u0073\u000a",_caee .Reason )); }else {_cbge .WriteString ("N\u006f \u0072\u0065\u0061\u0073\u006f\u006e\u0020\u0073p\u0065\u0063\u0069\u0066ie\u0064\u000a");};if len (_caee .Location )> 0{_cbge .WriteString (_d .Sprintf ("\u004c\u006f\u0063\u0061\u0074\u0069\u006f\u006e\u003a\u0020\u0025\u0073\u000a",_caee .Location )); }else {_cbge .WriteString ("\u004c\u006f\u0063at\u0069\u006f\u006e\u0020\u006e\u006f\u0074\u0020\u0073\u0070\u0065\u0063\u0069\u0066\u0069\u0065\u0064\u000a");};if len (_caee .ContactInfo )> 0{_cbge .WriteString (_d .Sprintf ("\u0043\u006f\u006e\u0074\u0061\u0063\u0074\u0020\u0049\u006e\u0066\u006f:\u0020\u0025\u0073\u000a",_caee .ContactInfo )); }else {_cbge .WriteString ("C\u006f\u006e\u0074\u0061\u0063\u0074 \u0069\u006e\u0066\u006f\u0020\u006e\u006f\u0074\u0020s\u0070\u0065\u0063i\u0066i\u0065\u0064\u000a");};_cbge .WriteString (_d .Sprintf ("F\u0069\u0065\u006c\u0064\u0073\u003a\u0020\u0025\u0064\u000a",len (_caee .Fields ))); if _caee .IsSigned {_cbge .WriteString ("S\u0069\u0067\u006e\u0065\u0064\u003a \u0044\u006f\u0063\u0075\u006d\u0065\u006e\u0074\u0020i\u0073\u0020\u0073i\u0067n\u0065\u0064\u000a");}else {_cbge .WriteString ("\u0053\u0069\u0067\u006eed\u003a\u0020\u004e\u006f\u0074\u0020\u0073\u0069\u0067\u006e\u0065\u0064\u000a"); };if _caee .IsVerified {_cbge .WriteString ("\u0053\u0069\u0067n\u0061\u0074\u0075\u0072e\u0020\u0076\u0061\u006c\u0069\u0064\u0061t\u0069\u006f\u006e\u003a\u0020\u0049\u0073\u0020\u0076\u0061\u006c\u0069\u0064\u000a");}else {_cbge .WriteString ("\u0053\u0069\u0067\u006e\u0061\u0074u\u0072\u0065\u0020\u0076\u0061\u006c\u0069\u0064\u0061\u0074\u0069\u006f\u006e:\u0020\u0049\u0073\u0020\u0069\u006e\u0076a\u006c\u0069\u0064\u000a"); };if _caee .IsTrusted {_cbge .WriteString ("\u0054\u0072\u0075\u0073\u0074\u0065\u0064\u003a\u0020\u0043\u0065\u0072\u0074\u0069\u0066i\u0063a\u0074\u0065\u0020\u0069\u0073\u0020\u0074\u0072\u0075\u0073\u0074\u0065\u0064\u000a");}else {_cbge .WriteString ("\u0054\u0072\u0075s\u0074\u0065\u0064\u003a \u0055\u006e\u0074\u0072\u0075\u0073\u0074e\u0064\u0020\u0063\u0065\u0072\u0074\u0069\u0066\u0069\u0063\u0061\u0074\u0065\u000a"); };if !_caee .GeneralizedTime .IsZero (){_cbge .WriteString (_d .Sprintf ("G\u0065n\u0065\u0072\u0061\u006c\u0069\u007a\u0065\u0064T\u0069\u006d\u0065\u003a %\u0073\u000a",_caee .GeneralizedTime .String ()));};if _caee .DiffResults !=nil {_cbge .WriteString (_d .Sprintf ("\u0064\u0069\u0066\u0066 i\u0073\u0020\u0070\u0065\u0072\u006d\u0069\u0074\u0074\u0065\u0064\u003a\u0020\u0025v\u000a",_caee .DiffResults .IsPermitted ())); if len (_caee .DiffResults .Warnings )> 0{_cbge .WriteString ("\u004d\u0044\u0050\u0020\u0077\u0061\u0072\u006e\u0069n\u0067\u0073\u003a\u000a");for _ ,_bbee :=range _caee .DiffResults .Warnings {_cbge .WriteString (_d .Sprintf ("\u0009\u0025\u0073\u000a",_bbee )); };};if len (_caee .DiffResults .Errors )> 0{_cbge .WriteString ("\u004d\u0044\u0050 \u0065\u0072\u0072\u006f\u0072\u0073\u003a\u000a");for _ ,_ebca :=range _caee .DiffResults .Errors {_cbge .WriteString (_d .Sprintf ("\u0009\u0025\u0073\u000a",_ebca )); };};};if _caee .IsCrlFound {_cbge .WriteString ("R\u0065\u0076\u006f\u0063\u0061\u0074i\u006f\u006e\u0020\u0064\u0061\u0074\u0061\u003a\u0020C\u0052\u004c\u0020f\u006fu\u006e\u0064\u000a");}else {_cbge .WriteString ("\u0052\u0065\u0076o\u0063\u0061\u0074\u0069o\u006e\u0020\u0064\u0061\u0074\u0061\u003a \u0043\u0052\u004c\u0020\u006e\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064\u000a"); };if _caee .IsOcspFound {_cbge .WriteString ("\u0052\u0065\u0076\u006fc\u0061\u0074\u0069\u006f\u006e\u0020\u0064\u0061\u0074\u0061:\u0020O\u0043\u0053\u0050\u0020\u0066\u006f\u0075n\u0064\u000a");}else {_cbge .WriteString ("\u0052\u0065\u0076\u006f\u0063\u0061\u0074\u0069\u006f\u006e\u0020\u0064\u0061\u0074\u0061:\u0020O\u0043\u0053\u0050\u0020\u006e\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064\u000a"); };return _cbge .String ();};func (_afdg *PdfFilespec )getDict ()*_dfg .PdfObjectDictionary {if _fdgb ,_effc :=_afdg ._bcadf .(*_dfg .PdfIndirectObject );_effc {_dfba ,_eebc :=_fdgb .PdfObject .(*_dfg .PdfObjectDictionary );if !_eebc {return nil ;};return _dfba ; }else if _dabb ,_aecce :=_afdg ._bcadf .(*_dfg .PdfObjectDictionary );_aecce {return _dabb ;}else {_egb .Log .Debug ("\u0054\u0072\u0079\u0069\u006e\u0067\u0020\u0074\u006f\u0020\u0061\u0063\u0063\u0065\u0073\u0073\u0020F\u0069\u006c\u0065\u0073\u0070\u0065\u0063\u0020\u0064\u0069c\u0074\u0069\u006f\u006e\u0061\u0072\u0079\u0020\u006f\u0066\u0020\u0069\u006e\u0076\u0061\u006c\u0069\u0064 \u006f\u0062\u006a\u0065\u0063\u0074 \u0074\u0079p\u0065\u0020(\u0025T\u0029",_afdg ._bcadf ); return nil ;};}; // KValue is a wrapper object to hold various type of K's children objects. type KValue struct{_badbf *KDict ;_gbedc _dfg .PdfObject ;_dddge *int ;};func (_gbbed *pdfFontSimple )baseFields ()*fontCommon {return &_gbbed .fontCommon }; // GetContext returns the action context which contains the specific type-dependent context. // The context represents the subaction. func (_eef *PdfAction )GetContext ()PdfModel {if _eef ==nil {return nil ;};return _eef ._bdb ;}; // NewPdfActionGoTo3DView returns a new "goTo3DView" action. func NewPdfActionGoTo3DView ()*PdfActionGoTo3DView {_efc :=NewPdfAction ();_eeg :=&PdfActionGoTo3DView {};_eeg .PdfAction =_efc ;_efc .SetContext (_eeg );return _eeg ;}; // PdfShading represents a shading dictionary. There are 7 types of shading, // indicatedby the shading type variable: // 1: Function-based shading. // 2: Axial shading. // 3: Radial shading. // 4: Free-form Gouraud-shaded triangle mesh. // 5: Lattice-form Gouraud-shaded triangle mesh. // 6: Coons patch mesh. // 7: Tensor-product patch mesh. // types 4-7 are contained in a stream object, where the dictionary is given by the stream dictionary. type PdfShading struct{ShadingType *_dfg .PdfObjectInteger ;ColorSpace PdfColorspace ;Background *_dfg .PdfObjectArray ;BBox *PdfRectangle ;AntiAlias *_dfg .PdfObjectBool ;_fdbfb PdfModel ;_gdfdg _dfg .PdfObject ;};func _bbcge (_gecda *_dfg .PdfObjectDictionary )(*PdfShadingType2 ,error ){_bcgdb :=PdfShadingType2 {}; _gddbd :=_gecda .Get ("\u0043\u006f\u006f\u0072\u0064\u0073");if _gddbd ==nil {_egb .Log .Debug ("R\u0065\u0071\u0075\u0069\u0072\u0065d\u0020\u0061\u0074\u0074\u0072\u0069b\u0075\u0074\u0065\u0020\u006d\u0069\u0073s\u0069\u006e\u0067\u003a\u0020\u0020\u0043\u006f\u006f\u0072d\u0073"); return nil ,ErrRequiredAttributeMissing ;};_aeag ,_fddaf :=_gddbd .(*_dfg .PdfObjectArray );if !_fddaf {_egb .Log .Debug ("\u0043\u006f\u006f\u0072d\u0073\u0020\u006e\u006f\u0074\u0020\u0061\u006e\u0020\u0061r\u0072a\u0079\u0020\u0028\u0067\u006f\u0074\u0020%\u0054\u0029",_gddbd ); return nil ,_bd .New ("\u0074\u0079p\u0065\u0020\u0063h\u0065\u0063\u006b\u0020\u0065\u0072\u0072\u006f\u0072");};if _aeag .Len ()!=4{_egb .Log .Debug ("\u0043\u006f\u006f\u0072d\u0073\u0020\u006c\u0065\u006e\u0067\u0074\u0068\u0020\u006eo\u0074 \u0034\u0020\u0028\u0067\u006f\u0074\u0020%\u0064\u0029",_aeag .Len ()); return nil ,_bd .New ("\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0061\u0074\u0074\u0072i\u0062\u0075\u0074\u0065");};_bcgdb .Coords =_aeag ;if _gcgc :=_gecda .Get ("\u0044\u006f\u006d\u0061\u0069\u006e");_gcgc !=nil {_gcgc =_dfg .TraceToDirectObject (_gcgc ); _afada ,_afef :=_gcgc .(*_dfg .PdfObjectArray );if !_afef {_egb .Log .Debug ("\u0044\u006f\u006d\u0061i\u006e\u0020\u006e\u006f\u0074\u0020\u0061\u006e\u0020\u0061r\u0072a\u0079\u0020\u0028\u0067\u006f\u0074\u0020%\u0054\u0029",_gcgc );return nil ,_bd .New ("\u0074\u0079p\u0065\u0020\u0063h\u0065\u0063\u006b\u0020\u0065\u0072\u0072\u006f\u0072"); };_bcgdb .Domain =_afada ;};_gddbd =_gecda .Get ("\u0046\u0075\u006e\u0063\u0074\u0069\u006f\u006e");if _gddbd ==nil {_egb .Log .Debug ("\u0052\u0065q\u0075\u0069\u0072\u0065d\u0020\u0061t\u0074\u0072\u0069\u0062\u0075\u0074\u0065\u0020m\u0069\u0073\u0073\u0069\u006e\u0067\u003a\u0020\u0020\u0046\u0075\u006ec\u0074\u0069\u006f\u006e"); return nil ,ErrRequiredAttributeMissing ;};_bcgdb .Function =[]PdfFunction {};if _dcfd ,_dbfff :=_gddbd .(*_dfg .PdfObjectArray );_dbfff {for _ ,_afeb :=range _dcfd .Elements (){_ggecb ,_bccbc :=_gbada (_afeb );if _bccbc !=nil {_egb .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0070\u0061\u0072\u0073\u0069n\u0067\u0020\u0066\u0075\u006e\u0063\u0074\u0069\u006f\u006e:\u0020\u0025\u0076",_bccbc ); return nil ,_bccbc ;};_bcgdb .Function =append (_bcgdb .Function ,_ggecb );};}else {_cddgb ,_gagba :=_gbada (_gddbd );if _gagba !=nil {_egb .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0070\u0061\u0072\u0073\u0069n\u0067\u0020\u0066\u0075\u006e\u0063\u0074\u0069\u006f\u006e:\u0020\u0025\u0076",_gagba ); return nil ,_gagba ;};_bcgdb .Function =append (_bcgdb .Function ,_cddgb );};if _edaga :=_gecda .Get ("\u0045\u0078\u0074\u0065\u006e\u0064");_edaga !=nil {_edaga =_dfg .TraceToDirectObject (_edaga );_bcedbb ,_dccef :=_edaga .(*_dfg .PdfObjectArray );if !_dccef {_egb .Log .Debug ("\u004d\u0061\u0074\u0072i\u0078\u0020\u006e\u006f\u0074\u0020\u0061\u006e\u0020\u0061r\u0072a\u0079\u0020\u0028\u0067\u006f\u0074\u0020%\u0054\u0029",_edaga ); return nil ,_dfg .ErrTypeError ;};if _bcedbb .Len ()!=2{_egb .Log .Debug ("\u0045\u0078\u0074\u0065n\u0064\u0020\u006c\u0065\u006e\u0067\u0074\u0068\u0020\u006eo\u0074 \u0032\u0020\u0028\u0067\u006f\u0074\u0020%\u0064\u0029",_bcedbb .Len ());return nil ,ErrInvalidAttribute ; };_bcgdb .Extend =_bcedbb ;};return &_bcgdb ,nil ;};func _ecedbf (_dbdg []byte )(_ccad ,_fcefg string ,_abgff error ){_egb .Log .Trace ("g\u0065\u0074\u0041\u0053CI\u0049S\u0065\u0063\u0074\u0069\u006fn\u0073\u003a\u0020\u0025\u0064\u0020",len (_dbdg )); _bdfed :=_cccdc .FindIndex (_dbdg );if _bdfed ==nil {_egb .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a \u0067\u0065\u0074\u0041\u0053\u0043\u0049\u0049\u0053\u0065\u0063\u0074\u0069o\u006e\u0073\u002e\u0020\u004e\u006f\u0020d\u0069\u0063\u0074\u002e"); return "","",_dfg .ErrTypeError ;};_adefe :=_bdfed [1];_abbdd :=_af .Index (string (_dbdg [_adefe :]),_cfbdf );if _abbdd < 0{_ccad =string (_dbdg [_adefe :]);return _ccad ,"",nil ;};_dedfd :=_adefe +_abbdd ;_ccad =string (_dbdg [_adefe :_dedfd ]);_gdcbf :=_dedfd ; _abbdd =_af .Index (string (_dbdg [_gdcbf :]),_efdd );if _abbdd < 0{_egb .Log .Debug ("\u0045\u0052\u0052O\u0052\u003a\u0020\u0067e\u0074\u0041\u0053\u0043\u0049\u0049\u0053e\u0063\u0074\u0069\u006f\u006e\u0073\u002e\u0020\u0065\u0072\u0072\u003d\u0025\u0076",_abgff ); return "","",_dfg .ErrTypeError ;};_ggagda :=_gdcbf +_abbdd ;_fcefg =string (_dbdg [_gdcbf :_ggagda ]);return _ccad ,_fcefg ,nil ;};func (_ggg *PdfReader )newPdfAnnotationRichMediaFromDict (_ffgf *_dfg .PdfObjectDictionary )(*PdfAnnotationRichMedia ,error ){_cffg :=&PdfAnnotationRichMedia {}; _cffg .RichMediaSettings =_ffgf .Get ("\u0052\u0069\u0063\u0068\u004d\u0065\u0064\u0069\u0061\u0053\u0065\u0074t\u0069\u006e\u0067\u0073");_cffg .RichMediaContent =_ffgf .Get ("\u0052\u0069c\u0068\u004d\u0065d\u0069\u0061\u0043\u006f\u006e\u0074\u0065\u006e\u0074"); return _cffg ,nil ;}; // NewPdfAnnotationWidget returns an initialized annotation widget. func NewPdfAnnotationWidget ()*PdfAnnotationWidget {_gadc :=NewPdfAnnotation ();_egfb :=&PdfAnnotationWidget {};_egfb .PdfAnnotation =_gadc ;_gadc .SetContext (_egfb );return _egfb ;}; // NewPdfFontFromTTF loads a TTF font and returns a PdfFont type that can be // used in text styling functions. // Uses a WinAnsiTextEncoder and loads only character codes 32-255. // NOTE: For composite fonts such as used in symbolic languages, use NewCompositePdfFontFromTTF. func NewPdfFontFromTTF (r _edg .ReadSeeker )(*PdfFont ,error ){const _febdc =_ff .CharCode (32);const _dgbec =_ff .CharCode (255);_fdcf ,_bfgbc :=_edg .ReadAll (r );if _bfgbc !=nil {_egb .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0055\u006e\u0061\u0062\u006c\u0065 \u0074\u006f\u0020\u0072\u0065\u0061d\u0020\u0066\u006f\u006e\u0074\u0020\u0063\u006f\u006e\u0074\u0065\u006e\u0074s\u003a\u0020\u0025\u0076",_bfgbc ); return nil ,_bfgbc ;};_agebb ,_bfgbc :=_bf .TtfParse (_cca .NewReader (_fdcf ));if _bfgbc !=nil {_egb .Log .Debug ("E\u0052\u0052\u004f\u0052\u003a\u0020l\u006f\u0061\u0064\u0069\u006e\u0067\u0020\u0054\u0054F\u0020\u0066\u006fn\u0074:\u0020\u0025\u0076",_bfgbc ); return nil ,_bfgbc ;};_abbd :=&pdfFontSimple {_aefba :make (map[_ff .CharCode ]float64 ),fontCommon :fontCommon {_gdab :"\u0054\u0072\u0075\u0065\u0054\u0079\u0070\u0065"}};_abbd ._febca =_ff .NewWinAnsiEncoder ();_abbd ._dbcbc =_agebb .PostScriptName ; _abbd .FirstChar =_dfg .MakeInteger (int64 (_febdc ));_abbd .LastChar =_dfg .MakeInteger (int64 (_dgbec ));_gecbd :=1000.0/float64 (_agebb .UnitsPerEm );if len (_agebb .Widths )<=0{return nil ,_bd .New ("\u0045\u0052\u0052O\u0052\u003a\u0020\u004d\u0069\u0073\u0073\u0069\u006e\u0067\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0064\u0020\u0061\u0074\u0074\u0072\u0069\u0062\u0075\u0074\u0065 \u0028\u0057\u0069\u0064\u0074\u0068\u0073\u0029"); };_feded :=_gecbd *float64 (_agebb .Widths [0]);_ggba :=make ([]float64 ,0,_dgbec -_febdc +1);for _dfbae :=_febdc ;_dfbae <=_dgbec ;_dfbae ++{_cefec ,_ggfcd :=_abbd .Encoder ().CharcodeToRune (_dfbae );if !_ggfcd {_egb .Log .Debug ("\u0052u\u006e\u0065\u0020\u006eo\u0074\u0020\u0066\u006f\u0075n\u0064 \u0028c\u006f\u0064\u0065\u003a\u0020\u0025\u0064)",_dfbae ); _ggba =append (_ggba ,_feded );continue ;};_gcag ,_ccgd :=_agebb .Chars [_cefec ];if !_ccgd {_egb .Log .Debug ("R\u0075\u006e\u0065\u0020no\u0074 \u0069\u006e\u0020\u0054\u0054F\u0020\u0043\u0068\u0061\u0072\u0073");_ggba =append (_ggba ,_feded );continue ; };_eeegg :=_gecbd *float64 (_agebb .Widths [_gcag ]);_ggba =append (_ggba ,_eeegg );};_abbd .Widths =_dfg .MakeIndirectObject (_dfg .MakeArrayFromFloats (_ggba ));if len (_ggba )< int (_dgbec -_febdc +1){_egb .Log .Debug ("E\u0052\u0052\u004f\u0052\u003a\u0020\u0049\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u006c\u0065\u006e\u0067t\u0068\u0020\u006f\u0066\u0020\u0077\u0069\u0064\u0074\u0068s,\u0020\u0025\u0064 \u003c \u0025\u0064",len (_ggba ),255-32+1); return nil ,_dfg .ErrRangeError ;};for _beaeb :=_febdc ;_beaeb <=_dgbec ;_beaeb ++{_abbd ._aefba [_beaeb ]=_ggba [_beaeb -_febdc ];};_abbd .Encoding =_dfg .MakeName ("\u0057i\u006eA\u006e\u0073\u0069\u0045\u006e\u0063\u006f\u0064\u0069\u006e\u0067");_gbfe :=&PdfFontDescriptor {}; _gbfe .FontName =_dfg .MakeName (_agebb .PostScriptName );_gbfe .Ascent =_dfg .MakeFloat (_gecbd *float64 (_agebb .TypoAscender ));_gbfe .Descent =_dfg .MakeFloat (_gecbd *float64 (_agebb .TypoDescender ));_gbfe .CapHeight =_dfg .MakeFloat (_gecbd *float64 (_agebb .CapHeight )); _gbfe .FontBBox =_dfg .MakeArrayFromFloats ([]float64 {_gecbd *float64 (_agebb .Xmin ),_gecbd *float64 (_agebb .Ymin ),_gecbd *float64 (_agebb .Xmax ),_gecbd *float64 (_agebb .Ymax )});_gbfe .ItalicAngle =_dfg .MakeFloat (_agebb .ItalicAngle );_gbfe .MissingWidth =_dfg .MakeFloat (_gecbd *float64 (_agebb .Widths [0])); _acda ,_bfgbc :=_dfg .MakeStream (_fdcf ,_dfg .NewFlateEncoder ());if _bfgbc !=nil {_egb .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0055\u006e\u0061\u0062\u006c\u0065\u0020\u0074o\u0020m\u0061\u006b\u0065\u0020\u0073\u0074\u0072\u0065\u0061\u006d\u003a\u0020\u0025\u0076",_bfgbc ); return nil ,_bfgbc ;};_acda .PdfObjectDictionary .Set ("\u004ce\u006e\u0067\u0074\u0068\u0031",_dfg .MakeInteger (int64 (len (_fdcf ))));_gbfe .FontFile2 =_acda ;if _agebb .Bold {_gbfe .StemV =_dfg .MakeInteger (120);}else {_gbfe .StemV =_dfg .MakeInteger (70); };_baef :=_cacg ;if _agebb .IsFixedPitch {_baef |=_dbacd ;};if _agebb .ItalicAngle !=0{_baef |=_dfdb ;};_gbfe .Flags =_dfg .MakeInteger (int64 (_baef ));_abbd ._cebfd =_gbfe ;_bbbec :=&PdfFont {_fab :_abbd };return _bbbec ,nil ;}; // PdfColorspaceSpecialIndexed is an indexed color space is a lookup table, where the input element // is an index to the lookup table and the output is a color defined in the lookup table in the Base // colorspace. // [/Indexed base hival lookup] type PdfColorspaceSpecialIndexed struct{Base PdfColorspace ;HiVal int ;Lookup _dfg .PdfObject ;_gcee []byte ;_dda *_dfg .PdfIndirectObject ;}; // AddPages adds pages to be appended to the end of the source PDF. func (_ecce *PdfAppender )AddPages (pages ...*PdfPage ){for _ ,_efeb :=range pages {_efeb =_efeb .Duplicate ();_gccaa (_efeb );_ecce ._egfc =append (_ecce ._egfc ,_efeb );};};func (_feedf *PdfReader )loadPerms ()(*Permissions ,error ){if _eebff :=_feedf ._fbfgb .Get ("\u0050\u0065\u0072m\u0073"); _eebff !=nil {if _egdf ,_eadd :=_dfg .GetDict (_eebff );_eadd {_aeega :=_egdf .Get ("\u0044\u006f\u0063\u004d\u0044\u0050");if _aeega ==nil {return nil ,nil ;};if _becea ,_dfbcac :=_dfg .GetIndirect (_aeega );_dfbcac {_cbfcb ,_gccbg :=_feedf .newPdfSignatureFromIndirect (_becea ); if _gccbg !=nil {return nil ,_gccbg ;};return NewPermissions (_cbfcb ),nil ;};return nil ,_d .Errorf ("i\u006ev\u0061\u006c\u0069\u0064\u0020\u0044\u006f\u0063M\u0044\u0050\u0020\u0065nt\u0072\u0079");};return nil ,_d .Errorf ("\u0069\u006e\u0076\u0061li\u0064\u0020\u0050\u0065\u0072\u006d\u0073\u0020\u0065\u006e\u0074\u0072\u0079"); };return nil ,nil ;};func _eedcc (_ebbae _dfg .PdfObject ){_egb .Log .Debug ("\u006f\u0062\u006a\u003a\u0020\u0025\u0054\u0020\u0025\u0073",_ebbae ,_ebbae .String ());if _bdbbge ,_babde :=_ebbae .(*_dfg .PdfObjectStream );_babde {_geaef ,_efbdde :=_dfg .DecodeStream (_bdbbge ); if _efbdde !=nil {_egb .Log .Debug ("\u0045r\u0072\u006f\u0072\u003a\u0020\u0025v",_efbdde );return ;};_egb .Log .Debug ("D\u0065\u0063\u006f\u0064\u0065\u0064\u003a\u0020\u0025\u0073",_geaef );}else if _geagg ,_ddeae :=_ebbae .(*_dfg .PdfIndirectObject ); _ddeae {_egb .Log .Debug ("\u0025\u0054\u0020%\u0076",_geagg .PdfObject ,_geagg .PdfObject );_egb .Log .Debug ("\u0025\u0073",_geagg .PdfObject .String ());};};const (BorderStyleSolid BorderStyle =iota ;BorderStyleDashed BorderStyle =iota ;BorderStyleBeveled BorderStyle =iota ; BorderStyleInset BorderStyle =iota ;BorderStyleUnderline BorderStyle =iota ;); // Reset sets the multi font encoder to its initial state. func (_fbgaf *MultipleFontEncoder )Reset (){_fbgaf .CurrentFont =_fbgaf ._ceede [0]}; // SetXObjectFormByName adds the provided XObjectForm to the page resources. // The added XObjectForm is identified by the specified name. func (_geddd *PdfPageResources )SetXObjectFormByName (keyName _dfg .PdfObjectName ,xform *XObjectForm )error {_gcbd :=xform .ToPdfObject ().(*_dfg .PdfObjectStream );_gbcce :=_geddd .SetXObjectByName (keyName ,_gcbd );return _gbcce ;}; // SetForms sets the Acroform for a PDF file. func (_ffegf *PdfWriter )SetForms (form *PdfAcroForm )error {_ffegf ._abcfe =form ;return nil }; // NewPdfAnnotationText returns a new text annotation. func NewPdfAnnotationText ()*PdfAnnotationText {_aca :=NewPdfAnnotation ();_fbg :=&PdfAnnotationText {};_fbg .PdfAnnotation =_aca ;_fbg .PdfAnnotationMarkup =&PdfAnnotationMarkup {};_aca .SetContext (_fbg );return _fbg ;};func (_fcbd *PdfReader )newPdfActionSoundFromDict (_bdba *_dfg .PdfObjectDictionary )(*PdfActionSound ,error ){return &PdfActionSound {Sound :_bdba .Get ("\u0053\u006f\u0075n\u0064"),Volume :_bdba .Get ("\u0056\u006f\u006c\u0075\u006d\u0065"),Synchronous :_bdba .Get ("S\u0079\u006e\u0063\u0068\u0072\u006f\u006e\u006f\u0075\u0073"),Repeat :_bdba .Get ("\u0052\u0065\u0070\u0065\u0061\u0074"),Mix :_bdba .Get ("\u004d\u0069\u0078")},nil ; }; // PdfAnnotationMarkup represents additional fields for mark-up annotations. // (Section 12.5.6.2 p. 399). type PdfAnnotationMarkup struct{T _dfg .PdfObject ;Popup *PdfAnnotationPopup ;CA _dfg .PdfObject ;RC _dfg .PdfObject ;CreationDate _dfg .PdfObject ;IRT _dfg .PdfObject ;Subj _dfg .PdfObject ;RT _dfg .PdfObject ;IT _dfg .PdfObject ;ExData _dfg .PdfObject ; }; // IsDisplayDocTitle returns the value of the displayDocTitle flag. func (_beefa *ViewerPreferences )IsDisplayDocTitle ()bool {if _beefa ._dagge ==nil {return false ;};return *_beefa ._dagge ;}; // NewPdfAppenderWithOpts creates a new Pdf appender from a Pdf reader with options. func NewPdfAppenderWithOpts (reader *PdfReader ,opts *ReaderOpts ,encryptOptions *EncryptOptions )(*PdfAppender ,error ){_deg :=&PdfAppender {_ggag :reader ._cggac ,Reader :reader ,_cggd :reader ._agbcd ,_bbf :reader ._fcecf };_afdc ,_eebae :=_deg ._ggag .Seek (0,_edg .SeekEnd ); if _eebae !=nil {return nil ,_eebae ;};_deg ._bgdc =_afdc ;if _ ,_eebae =_deg ._ggag .Seek (0,_edg .SeekStart );_eebae !=nil {return nil ,_eebae ;};_deg ._eege ,_eebae =NewPdfReaderWithOpts (_deg ._ggag ,opts );if _eebae !=nil {return nil ,_eebae ;};for _ ,_eabc :=range _deg .Reader .GetObjectNums (){if _deg ._edab < _eabc {_deg ._edab =_eabc ; };};_deg ._bbcb =_deg ._cggd .GetXrefTable ();_deg ._gcf =_deg ._cggd .GetXrefOffset ();_deg ._egfc =append (_deg ._egfc ,_deg ._eege .PageList ...);_deg ._dadd =make (map[_dfg .PdfObject ]struct{});_deg ._effe =make (map[_dfg .PdfObject ]int64 );_deg ._gadd =make (map[_dfg .PdfObject ]struct{}); _deg ._ebfe =_deg ._eege .AcroForm ;_deg ._caagc =_deg ._eege .DSS ;if opts !=nil {_deg ._bfb =opts .Password ;};if encryptOptions !=nil {_deg ._gefb =encryptOptions ;};return _deg ,nil ;}; // GetRevision returns the specific version of the PdfReader for the current Pdf document func (_ebce *PdfReader )GetRevision (revisionNumber int )(*PdfReader ,error ){_fbadg :=_ebce ._agbcd .GetRevisionNumber ();if revisionNumber < 0||revisionNumber > _fbadg {return nil ,_bd .New ("w\u0072\u006f\u006e\u0067 r\u0065v\u0069\u0073\u0069\u006f\u006e \u006e\u0075\u006d\u0062\u0065\u0072"); };if revisionNumber ==_fbadg {return _ebce ,nil ;};if _ebce ._eaff [revisionNumber ]!=nil {return _ebce ._eaff [revisionNumber ],nil ;};_agcdc :=_ebce ;for _caefaf :=_fbadg -1;_caefaf >=revisionNumber ;_caefaf --{_eefdd ,_fagce :=_agcdc .GetPreviousRevision (); if _fagce !=nil {return nil ,_fagce ;};_ebce ._eaff [_caefaf ]=_eefdd ;_agcdc =_eefdd ;};return _agcdc ,nil ;};func _bdfaa (_gdgcb _dfg .PdfObject )(*PdfColorspaceCalRGB ,error ){_dabdf :=NewPdfColorspaceCalRGB ();if _gdae ,_edbbd :=_gdgcb .(*_dfg .PdfIndirectObject ); _edbbd {_dabdf ._fbag =_gdae ;};_gdgcb =_dfg .TraceToDirectObject (_gdgcb );_fbab ,_cfad :=_gdgcb .(*_dfg .PdfObjectArray );if !_cfad {return nil ,_d .Errorf ("\u0074\u0079\u0070\u0065\u0020\u0065\u0072\u0072\u006f\u0072");};if _fbab .Len ()!=2{return nil ,_d .Errorf ("\u0069n\u0076\u0061\u006c\u0069d\u0020\u0043\u0061\u006c\u0052G\u0042 \u0063o\u006c\u006f\u0072\u0073\u0070\u0061\u0063e"); };_gdgcb =_dfg .TraceToDirectObject (_fbab .Get (0));_addf ,_cfad :=_gdgcb .(*_dfg .PdfObjectName );if !_cfad {return nil ,_d .Errorf ("\u0043\u0061l\u0052\u0047\u0042\u0020\u006e\u0061\u006d\u0065\u0020\u006e\u006f\u0074\u0020\u0061\u0020\u004e\u0061\u006d\u0065\u0020\u006f\u0062je\u0063\u0074"); };if *_addf !="\u0043\u0061\u006c\u0052\u0047\u0042"{return nil ,_d .Errorf ("\u006e\u006f\u0074 a\u0020\u0043\u0061\u006c\u0052\u0047\u0042\u0020\u0063\u006f\u006c\u006f\u0072\u0073\u0070\u0061\u0063\u0065");};_gdgcb =_dfg .TraceToDirectObject (_fbab .Get (1)); _ebece ,_cfad :=_gdgcb .(*_dfg .PdfObjectDictionary );if !_cfad {return nil ,_d .Errorf ("\u0043\u0061l\u0052\u0047\u0042\u0020\u006e\u0061\u006d\u0065\u0020\u006e\u006f\u0074\u0020\u0061\u0020\u004e\u0061\u006d\u0065\u0020\u006f\u0062je\u0063\u0074"); };_gdgcb =_ebece .Get ("\u0057\u0068\u0069\u0074\u0065\u0050\u006f\u0069\u006e\u0074");_gdgcb =_dfg .TraceToDirectObject (_gdgcb );_gcda ,_cfad :=_gdgcb .(*_dfg .PdfObjectArray );if !_cfad {return nil ,_d .Errorf ("\u0043\u0061\u006c\u0052\u0047\u0042\u003a\u0020\u0049\u006e\u0076a\u006c\u0069\u0064\u0020\u0057\u0068\u0069\u0074\u0065\u0050o\u0069\u006e\u0074"); };if _gcda .Len ()!=3{return nil ,_d .Errorf ("\u0043\u0061\u006c\u0052\u0047\u0042\u003a\u0020\u0049\u006e\u0076\u0061\u006c\u0069\u0064 \u0057h\u0069\u0074\u0065\u0050\u006f\u0069\u006e\u0074\u0020\u0061\u0072\u0072\u0061\u0079");};_dbgae ,_gadb :=_gcda .GetAsFloat64Slice (); if _gadb !=nil {return nil ,_gadb ;};_dabdf .WhitePoint =_dbgae ;_gdgcb =_ebece .Get ("\u0042\u006c\u0061\u0063\u006b\u0050\u006f\u0069\u006e\u0074");if _gdgcb !=nil {_gdgcb =_dfg .TraceToDirectObject (_gdgcb );_bfdc ,_bagbg :=_gdgcb .(*_dfg .PdfObjectArray ); if !_bagbg {return nil ,_d .Errorf ("\u0043\u0061\u006c\u0052\u0047\u0042\u003a\u0020\u0049\u006e\u0076a\u006c\u0069\u0064\u0020\u0042\u006c\u0061\u0063\u006b\u0050o\u0069\u006e\u0074");};if _bfdc .Len ()!=3{return nil ,_d .Errorf ("\u0043\u0061\u006c\u0052\u0047\u0042\u003a\u0020\u0049\u006e\u0076\u0061\u006c\u0069\u0064 \u0042l\u0061\u0063\u006b\u0050\u006f\u0069\u006e\u0074\u0020\u0061\u0072\u0072\u0061\u0079"); };_cdbg ,_dae :=_bfdc .GetAsFloat64Slice ();if _dae !=nil {return nil ,_dae ;};_dabdf .BlackPoint =_cdbg ;};_gdgcb =_ebece .Get ("\u0047\u0061\u006dm\u0061");if _gdgcb !=nil {_gdgcb =_dfg .TraceToDirectObject (_gdgcb );_aaff ,_abae :=_gdgcb .(*_dfg .PdfObjectArray ); if !_abae {return nil ,_d .Errorf ("C\u0061\u006c\u0052\u0047B:\u0020I\u006e\u0076\u0061\u006c\u0069d\u0020\u0047\u0061\u006d\u006d\u0061");};if _aaff .Len ()!=3{return nil ,_d .Errorf ("C\u0061\u006c\u0052\u0047\u0042\u003a \u0049\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0047a\u006d\u006d\u0061 \u0061r\u0072\u0061\u0079"); };_bbfb ,_fadee :=_aaff .GetAsFloat64Slice ();if _fadee !=nil {return nil ,_fadee ;};_dabdf .Gamma =_bbfb ;};_gdgcb =_ebece .Get ("\u004d\u0061\u0074\u0072\u0069\u0078");if _gdgcb !=nil {_gdgcb =_dfg .TraceToDirectObject (_gdgcb );_gdaae ,_afac :=_gdgcb .(*_dfg .PdfObjectArray ); if !_afac {return nil ,_d .Errorf ("\u0043\u0061\u006c\u0052GB\u003a\u0020\u0049\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u004d\u0061\u0074\u0072i\u0078");};if _gdaae .Len ()!=9{_egb .Log .Error ("\u004d\u0061t\u0072\u0069\u0078 \u0061\u0072\u0072\u0061\u0079\u003a\u0020\u0025\u0073",_gdaae .String ()); return nil ,_d .Errorf ("\u0043\u0061\u006c\u0052G\u0042\u003a\u0020\u0049\u006e\u0076\u0061\u006c\u0069\u0064 \u004da\u0074\u0072\u0069\u0078\u0020\u0061\u0072r\u0061\u0079");};_aeba ,_abaee :=_gdaae .GetAsFloat64Slice ();if _abaee !=nil {return nil ,_abaee ; };_dabdf .Matrix =_aeba ;};return _dabdf ,nil ;}; // GetShadingByName gets the shading specified by keyName. Returns nil if not existing. // The bool flag indicated whether it was found or not. func (_bacda *PdfPageResources )GetShadingByName (keyName _dfg .PdfObjectName )(*PdfShading ,bool ){if _bacda .Shading ==nil {return nil ,false ;};_efgaf ,_dabfg :=_dfg .TraceToDirectObject (_bacda .Shading ).(*_dfg .PdfObjectDictionary );if !_dabfg {_egb .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0049\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0053\u0068\u0061d\u0069\u006e\u0067\u0020\u0065\u006e\u0074r\u0079\u0020\u002d\u0020\u006e\u006f\u0074\u0020\u0061\u0020\u0064i\u0063\u0074\u0020\u0028\u0067\u006f\u0074\u0020\u0025\u0054\u0029",_bacda .Shading ); return nil ,false ;};if _acbb :=_efgaf .Get (keyName );_acbb !=nil {_ggeag ,_bgadg :=_debbd (_acbb );if _bgadg !=nil {_egb .Log .Debug ("\u0045\u0052R\u004f\u0052\u003a\u0020f\u0061\u0069l\u0065\u0064\u0020\u0074\u006f\u0020\u006c\u006fa\u0064\u0020\u0070\u0064\u0066\u0020\u0073\u0068\u0061\u0064\u0069\u006eg\u003a\u0020\u0025\u0076",_bgadg ); return nil ,false ;};return _ggeag ,true ;};return nil ,false ;};func _afbab (_aeccf *_dfg .PdfObjectDictionary ,_gfab *fontCommon )(*pdfFontType0 ,error ){_ccbgd ,_dfbcd :=_dfg .GetArray (_aeccf .Get ("\u0044e\u0073c\u0065\u006e\u0064\u0061\u006e\u0074\u0046\u006f\u006e\u0074\u0073")); if !_dfbcd {_egb .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0049n\u0076\u0061\u006cid\u0020\u0044\u0065\u0073\u0063\u0065n\u0064\u0061\u006e\u0074\u0046\u006f\u006e\u0074\u0073\u0020\u002d\u0020\u006e\u006f\u0074 \u0061\u006e\u0020\u0061\u0072\u0072\u0061\u0079 \u0025\u0073",_gfab ); return nil ,_dfg .ErrRangeError ;};if _ccbgd .Len ()!=1{_egb .Log .Debug ("\u0045\u0052R\u004f\u0052\u003a\u0020\u0041\u0072\u0072\u0061\u0079\u0020\u006c\u0065\u006e\u0067\u0074\u0068\u0020\u0021\u003d\u0020\u0031\u0020(%\u0064\u0029",_ccbgd .Len ()); return nil ,_dfg .ErrRangeError ;};_gacf ,_afbgcg :=_gfaec (_ccbgd .Get (0),false );if _afbgcg !=nil {_egb .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0046a\u0069\u006c\u0065d \u006c\u006f\u0061\u0064\u0069\u006eg\u0020\u0064\u0065\u0073\u0063\u0065\u006e\u0064\u0061\u006e\u0074\u0020\u0066\u006f\u006et\u003a\u0020\u0065\u0072\u0072\u003d\u0025\u0076 \u0025\u0073",_afbgcg ,_gfab ); return nil ,_afbgcg ;};_fbdff :=_aeccf .Get ("\u0045\u006e\u0063\u006f\u0064\u0069\u006e\u0067");_gafe :="";_babc :=_dbdc (_gfab );_babc .DescendantFont =_gacf ;switch _aaage :=_fbdff .(type ){case *_dfg .PdfObjectName :_gafe ,_dfbcd =_dfg .GetNameVal (_fbdff ); if _dfbcd {if _gafe =="\u0049\u0064\u0065\u006e\u0074\u0069\u0074\u0079\u002d\u0048"||_gafe =="\u0049\u0064\u0065\u006e\u0074\u0069\u0074\u0079\u002d\u0056"{_babc ._gbaf =_ff .NewIdentityTextEncoder (_gafe );}else if _efg .IsPredefinedCMap (_gafe ){_babc ._dfec ,_afbgcg =_efg .LoadPredefinedCMap (_gafe ); if _afbgcg !=nil {_egb .Log .Debug ("\u0057\u0041\u0052\u004e\u003a\u0020\u0063o\u0075\u006c\u0064 \u006e\u006f\u0074\u0020l\u006f\u0061\u0064\u0020\u0070\u0072\u0065\u0064\u0065\u0066\u0069\u006e\u0065\u0064\u0020\u0043\u004d\u0061\u0070\u0020\u0025\u0073\u003a\u0020\u0025\u0076",_gafe ,_afbgcg ); };}else {_egb .Log .Debug ("\u0055\u006e\u0068\u0061\u006e\u0064\u006c\u0065\u0064\u0020\u0063\u006da\u0070\u0020\u0025\u0071",_gafe );};};case *_dfg .PdfObjectStream :if _babc ._eaaga ==nil {_bcbc ,_ffec :=_efg .NewCIDSystemInfo (_aaage .PdfObjectDictionary .Get ("\u0043\u0049\u0044\u0053\u0079\u0073\u0074\u0065\u006d\u0049\u006e\u0066\u006f")); if _ffec !=nil {_egb .Log .Debug ("\u0055\u006e\u0061b\u006c\u0065\u0020\u0074o\u0020\u0067\u0065\u0074\u0020\u0043\u0049D\u0053\u0079\u0073\u0074\u0065\u006d\u0049\u006e\u0066\u006f\u003a\u0020\u0025\u0076",_ffec );};_ggedd :=_d .Sprintf ("\u0025\u0073\u002d\u0025\u0073\u002d\u0055\u0043\u0053\u0032",_bcbc .Registry ,_bcbc .Ordering ); if _efg .IsPredefinedCMap (_ggedd ){_babc ._dfec ,_ffec =_efg .LoadPredefinedCMap (_ggedd );if _ffec !=nil {_egb .Log .Debug ("\u0057\u0041\u0052\u004e\u003a\u0020\u0063o\u0075\u006c\u0064 \u006e\u006f\u0074\u0020l\u006f\u0061\u0064\u0020\u0070\u0072\u0065\u0064\u0065\u0066\u0069\u006e\u0065\u0064\u0020\u0043\u004d\u0061\u0070\u0020\u0025\u0073\u003a\u0020\u0025\u0076",_ggedd ,_ffec ); };}else {_ggedd =_aaage .PdfObjectDictionary .Get ("\u0043\u004d\u0061\u0070\u004e\u0061\u006d\u0065").String ();_defdf ,_gdeee :=_dfg .DecodeStream (_aaage );if _gdeee !=nil {_egb .Log .Debug ("U\u006e\u0061\u0062\u006c\u0065\u0020t\u006f\u0020\u0064\u0065\u0063\u006f\u0064\u0065\u0020s\u0074\u0072\u0065a\u006d:\u0020\u0025\u0076",_gdeee ); return _babc ,_gdeee ;};if _daace :=_ggedd =="\u004f\u006ee\u0042\u0079\u0074e\u0049\u0064\u0065\u006e\u0074\u0069\u0074\u0079\u0048"||_ggedd =="\u004f\u006ee\u0042\u0079\u0074e\u0049\u0064\u0065\u006e\u0074\u0069\u0074\u0079\u0056";_daace {_babc ._dfec ,_gdeee =_efg .LoadCmapFromData (_defdf ,_daace ); if _gdeee !=nil {_egb .Log .Debug ("\u0055\u006e\u0061\u0062\u006ce\u0020\u0074\u006f\u0020\u006c\u006f\u0061\u0064\u0020\u0043\u004d\u0061\u0070 \u0066\u0072\u006f\u006d\u0020\u0073\u0074\u0072\u0065\u0061\u006d\u003a\u0020\u0025\u0076\u0020\u002d\u002d\u0020\u0025\u0076",_gdeee ,string (_defdf )); return _babc ,_gdeee ;};_eaeb :=make (map[_efg .CharCode ]rune ,256);for _ebga :=0x00;_ebga <=0xFF;_ebga ++{_eaeb [_efg .CharCode (_ebga )]=rune (_ebga );};_babc ._bgdcbc =_efg .NewToUnicodeCMap (_eaeb );};};};};if _abfg :=_gacf .baseFields ()._bgdcbc ; _abfg !=nil {if _eaeee :=_abfg .Name ();_eaeee =="\u0041d\u006fb\u0065\u002d\u0043\u004e\u0053\u0031\u002d\u0055\u0043\u0053\u0032"||_eaeee =="\u0041\u0064\u006f\u0062\u0065\u002d\u0047\u0042\u0031-\u0055\u0043\u0053\u0032"||_eaeee =="\u0041\u0064\u006f\u0062\u0065\u002d\u004a\u0061\u0070\u0061\u006e\u0031-\u0055\u0043\u0053\u0032"||_eaeee =="\u0041\u0064\u006f\u0062\u0065\u002d\u004b\u006f\u0072\u0065\u0061\u0031-\u0055\u0043\u0053\u0032"{_babc ._gbaf =_ff .NewCMapEncoder (_gafe ,_babc ._dfec ,_abfg ); };};return _babc ,nil ;}; // ImageToRGB converts Lab colorspace image to RGB and returns the result. func (_dbfc *PdfColorspaceLab )ImageToRGB (img Image )(Image ,error ){_dbeb :=func (_cefdb float64 )float64 {if _cefdb >=6.0/29{return _cefdb *_cefdb *_cefdb ;};return 108.0/841*(_cefdb -4.0/29.0);};_eabd :=img ._begcc ;if len (_eabd )!=6{_egb .Log .Trace ("\u0049\u006d\u0061\u0067\u0065\u0020\u002d\u0020\u004c\u0061\u0062\u0020\u0044e\u0063\u006f\u0064\u0065\u0020\u0072\u0061\u006e\u0067e\u0020\u0021\u003d\u0020\u0036\u002e\u002e\u002e\u0020\u0075\u0073\u0065\u0020\u005b0\u0020\u0031\u0030\u0030\u0020\u0061\u006d\u0069\u006e\u0020\u0061\u006d\u0061\u0078\u0020\u0062\u006d\u0069\u006e\u0020\u0062\u006d\u0061\u0078\u005d\u0020\u0064\u0065\u0066\u0061u\u006c\u0074\u0020\u0064\u0065\u0063\u006f\u0064\u0065 \u0061\u0072r\u0061\u0079"); _eabd =_dbfc .DecodeArray ();};_ddbe :=_efe .NewReader (img .getBase ());_edgbg :=_ef .NewImageBase (int (img .Width ),int (img .Height ),int (img .BitsPerComponent ),3,nil ,img ._baeef ,img ._begcc );_faab :=_efe .NewWriter (_edgbg );_cddgc :=_df .Pow (2,float64 (img .BitsPerComponent ))-1; _gdbf :=make ([]uint32 ,3);var (_bged error ;Ls ,As ,Bs ,L ,M ,N ,X ,Y ,Z ,_eebg ,_eadbd ,_dbdbe float64 ;);for {_bged =_ddbe .ReadSamples (_gdbf );if _bged ==_edg .EOF {break ;}else if _bged !=nil {return img ,_bged ;};Ls =float64 (_gdbf [0])/_cddgc ; As =float64 (_gdbf [1])/_cddgc ;Bs =float64 (_gdbf [2])/_cddgc ;Ls =_ef .LinearInterpolate (Ls ,0.0,1.0,_eabd [0],_eabd [1]);As =_ef .LinearInterpolate (As ,0.0,1.0,_eabd [2],_eabd [3]);Bs =_ef .LinearInterpolate (Bs ,0.0,1.0,_eabd [4],_eabd [5]);L =(Ls +16)/116+As /500; M =(Ls +16)/116;N =(Ls +16)/116-Bs /200;X =_dbfc .WhitePoint [0]*_dbeb (L );Y =_dbfc .WhitePoint [1]*_dbeb (M );Z =_dbfc .WhitePoint [2]*_dbeb (N );_eebg =3.240479*X +-1.537150*Y +-0.498535*Z ;_eadbd =-0.969256*X +1.875992*Y +0.041556*Z ;_dbdbe =0.055648*X +-0.204043*Y +1.057311*Z ; _eebg =_df .Min (_df .Max (_eebg ,0),1.0);_eadbd =_df .Min (_df .Max (_eadbd ,0),1.0);_dbdbe =_df .Min (_df .Max (_dbdbe ,0),1.0);_gdbf [0]=uint32 (_eebg *_cddgc );_gdbf [1]=uint32 (_eadbd *_cddgc );_gdbf [2]=uint32 (_dbdbe *_cddgc );if _bged =_faab .WriteSamples (_gdbf ); _bged !=nil {return img ,_bged ;};};return _deba (&_edgbg ),nil ;}; // DecodeArray returns the range of color component values in DeviceGray colorspace. func (_bddg *PdfColorspaceDeviceGray )DecodeArray ()[]float64 {return []float64 {0,1.0}}; // PdfAnnotationText represents Text annotations. // (Section 12.5.6.4 p. 402). type PdfAnnotationText struct{*PdfAnnotation ;*PdfAnnotationMarkup ;Open _dfg .PdfObject ;Name _dfg .PdfObject ;State _dfg .PdfObject ;StateModel _dfg .PdfObject ;}; // NewPdfOutline returns an initialized PdfOutline. func NewPdfOutline ()*PdfOutline {_ecebf :=&PdfOutline {_gcdeg :_dfg .MakeIndirectObject (_dfg .MakeDict ())};_ecebf ._cface =_ecebf ;return _ecebf ;}; // GetContainingPdfObject implements interface PdfModel. func (_baddd *PdfSignature )GetContainingPdfObject ()_dfg .PdfObject {return _baddd ._fdeb }; // NewOutline returns a new outline instance. func NewOutline ()*Outline {return &Outline {}};func (_bbba *PdfWriter )seekByName (_cfgab _dfg .PdfObject ,_cdccbc []string ,_dcbfa string )([]_dfg .PdfObject ,error ){_egb .Log .Trace ("\u0053\u0065\u0065\u006b\u0020\u0062\u0079\u0020\u006e\u0061\u006d\u0065.\u002e\u0020\u0025\u0054",_cfgab ); var _begcg []_dfg .PdfObject ;if _cfgdg ,_cdbdcg :=_cfgab .(*_dfg .PdfIndirectObject );_cdbdcg {return _bbba .seekByName (_cfgdg .PdfObject ,_cdccbc ,_dcbfa );};if _bcffb ,_dggg :=_cfgab .(*_dfg .PdfObjectStream );_dggg {return _bbba .seekByName (_bcffb .PdfObjectDictionary ,_cdccbc ,_dcbfa ); };if _eebge ,_fdfeg :=_cfgab .(*_dfg .PdfObjectDictionary );_fdfeg {_egb .Log .Trace ("\u0044\u0069\u0063\u0074");for _ ,_cgccgd :=range _eebge .Keys (){_aegfe :=_eebge .Get (_cgccgd );if string (_cgccgd )==_dcbfa {_begcg =append (_begcg ,_aegfe );};for _ ,_cfgec :=range _cdccbc {if string (_cgccgd )==_cfgec {_egb .Log .Trace ("\u0046\u006f\u006c\u006c\u006f\u0077\u0020\u006b\u0065\u0079\u0020\u0025\u0073",_cfgec ); _afbaf ,_bcfgb :=_bbba .seekByName (_aegfe ,_cdccbc ,_dcbfa );if _bcfgb !=nil {return _begcg ,_bcfgb ;};_begcg =append (_begcg ,_afbaf ...);break ;};};};return _begcg ,nil ;};return _begcg ,nil ;}; // NewPdfActionThread returns a new "thread" action. func NewPdfActionThread ()*PdfActionThread {_ad :=NewPdfAction ();_ce :=&PdfActionThread {};_ce .PdfAction =_ad ;_ad .SetContext (_ce );return _ce ;};func (_cggg *pdfFontType3 )getFontDescriptor ()*PdfFontDescriptor {return _cggg ._cebfd };func _fagb (_cde _dfg .PdfObject )(*PdfBorderStyle ,error ){_aaec :=&PdfBorderStyle {}; _aaec ._gcac =_cde ;var _bbd *_dfg .PdfObjectDictionary ;_cde =_dfg .TraceToDirectObject (_cde );_bbd ,_efde :=_cde .(*_dfg .PdfObjectDictionary );if !_efde {return nil ,_bd .New ("\u0074\u0079\u0070\u0065\u0020\u0063\u0068\u0065\u0063\u006b");};if _ggdg :=_bbd .Get ("\u0054\u0079\u0070\u0065"); _ggdg !=nil {_febcg ,_bdbgb :=_ggdg .(*_dfg .PdfObjectName );if !_bdbgb {_egb .Log .Debug ("I\u006e\u0063\u006f\u006d\u0070\u0061\u0074\u0069\u0062i\u006c\u0069\u0074\u0079\u0020\u0077\u0069th\u0020\u0054\u0079\u0070e\u0020\u006e\u006f\u0074\u0020\u0061\u0020\u006e\u0061me\u0020\u006fb\u006a\u0065\u0063\u0074\u003a\u0020\u0025\u0054",_ggdg ); }else {if *_febcg !="\u0042\u006f\u0072\u0064\u0065\u0072"{_egb .Log .Debug ("W\u0061\u0072\u006e\u0069\u006e\u0067,\u0020\u0054\u0079\u0070\u0065\u0020\u0021\u003d\u0020B\u006f\u0072\u0064e\u0072:\u0020\u0025\u0073",*_febcg );};};};if _dabe :=_bbd .Get ("\u0057"); _dabe !=nil {_gagg ,_daa :=_dfg .GetNumberAsFloat (_dabe );if _daa !=nil {_egb .Log .Debug ("\u0045\u0072\u0072\u006fr \u0072\u0065\u0074\u0072\u0069\u0065\u0076\u0069\u006e\u0067\u0020\u0057\u003a\u0020%\u0076",_daa );return nil ,_daa ;};_aaec .W =&_gagg ; };if _agde :=_bbd .Get ("\u0053");_agde !=nil {_aebf ,_adg :=_agde .(*_dfg .PdfObjectName );if !_adg {return nil ,_bd .New ("\u0062\u006f\u0072\u0064\u0065\u0072\u0020\u0053\u0020\u006e\u006ft\u0020\u0061\u0020\u006e\u0061\u006d\u0065\u0020\u006f\u0062j\u0065\u0063\u0074"); };var _edbbe BorderStyle ;switch *_aebf {case "\u0053":_edbbe =BorderStyleSolid ;case "\u0044":_edbbe =BorderStyleDashed ;case "\u0042":_edbbe =BorderStyleBeveled ;case "\u0049":_edbbe =BorderStyleInset ;case "\u0055":_edbbe =BorderStyleUnderline ;default:_egb .Log .Debug ("I\u006e\u0076\u0061\u006cid\u0020s\u0074\u0079\u006c\u0065\u0020n\u0061\u006d\u0065\u0020\u0025\u0073",*_aebf ); return nil ,_bd .New ("\u0073\u0074\u0079\u006ce \u0074\u0079\u0070\u0065\u0020\u0072\u0061\u006e\u0067\u0065\u0020\u0063\u0068\u0065c\u006b");};_aaec .S =&_edbbe ;};if _adea :=_bbd .Get ("\u0044");_adea !=nil {_gbaad ,_cfefe :=_adea .(*_dfg .PdfObjectArray ); if !_cfefe {_egb .Log .Debug ("\u0042\u006f\u0072\u0064\u0065\u0072\u0020\u0044\u0020\u0064a\u0073\u0068\u0020\u006e\u006f\u0074\u0020a\u006e\u0020\u0061\u0072\u0072\u0061\u0079\u003a\u0020\u0025\u0054",_adea );return nil ,_bd .New ("\u0062o\u0072\u0064\u0065\u0072 \u0044\u0020\u0074\u0079\u0070e\u0020c\u0068e\u0063\u006b\u0020\u0065\u0072\u0072\u006fr"); };_bcgb ,_cegdc :=_gbaad .ToIntegerArray ();if _cegdc !=nil {_egb .Log .Debug ("\u0042\u006f\u0072\u0064\u0065\u0072\u0020\u0044 \u0050\u0072\u006fbl\u0065\u006d\u0020\u0063\u006f\u006ev\u0065\u0072\u0074\u0069\u006e\u0067\u0020\u0074\u006f\u0020\u0069\u006e\u0074\u0065\u0067e\u0072\u0020\u0061\u0072\u0072\u0061\u0079\u003a \u0025\u0076",_cegdc ); return nil ,_cegdc ;};_aaec .D =&_bcgb ;};return _aaec ,nil ;}; // GetCustomInfo returns a custom info value for the specified name. func (_cabc *PdfInfo )GetCustomInfo (name string )*_dfg .PdfObjectString {var _dffbf *_dfg .PdfObjectString ;if _cabc ._gdaaeb ==nil {return _dffbf ;};if _bacad ,_edfa :=_cabc ._gdaaeb .Get (*_dfg .MakeName (name )).(*_dfg .PdfObjectString );_edfa {_dffbf =_bacad ; };return _dffbf ;}; // PdfColorspace interface defines the common methods of a PDF colorspace. // The colorspace defines the data storage format for each color and color representation. // // Device based colorspace, specified by name // - /DeviceGray // - /DeviceRGB // - /DeviceCMYK // // CIE based colorspace specified by [name, dictionary] // - [/CalGray dict] // - [/CalRGB dict] // - [/Lab dict] // - [/ICCBased dict] // // Special colorspaces // - /Pattern // - /Indexed // - /Separation // - /DeviceN // // Work is in progress to support all colorspaces. At the moment ICCBased color spaces fall back to the alternate // colorspace which works OK in most cases. For full color support, will need fully featured ICC support. type PdfColorspace interface{ // String returns the PdfColorspace's name. String ()string ; // ImageToRGB converts an Image in a given PdfColorspace to an RGB image. ImageToRGB (Image )(Image ,error ); // ColorToRGB converts a single color in a given PdfColorspace to an RGB color. ColorToRGB (_ddga PdfColor )(PdfColor ,error ); // GetNumComponents returns the number of components in the PdfColorspace. GetNumComponents ()int ; // ToPdfObject returns a PdfObject representation of the PdfColorspace. ToPdfObject ()_dfg .PdfObject ; // ColorFromPdfObjects returns a PdfColor in the given PdfColorspace from an array of PdfObject where each // PdfObject represents a numeric value. ColorFromPdfObjects (_bbge []_dfg .PdfObject )(PdfColor ,error ); // ColorFromFloats returns a new PdfColor based on input color components for a given PdfColorspace. ColorFromFloats (_eecd []float64 )(PdfColor ,error ); // DecodeArray returns the Decode array for the PdfColorSpace, i.e. the range of each component. DecodeArray ()[]float64 ;}; // SetColorspaceByName adds the provided colorspace to the page resources. func (_abbea *PdfPageResources )SetColorspaceByName (keyName _dfg .PdfObjectName ,cs PdfColorspace )error {_deadga ,_dbfca :=_abbea .GetColorspaces ();if _dbfca !=nil {_egb .Log .Debug ("\u0045\u0052R\u004f\u0052\u0020\u0067\u0065\u0074\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006c\u006f\u0072\u0073\u0070\u0072\u0061\u0063\u0065: \u0025\u0076",_dbfca ); return _dbfca ;};if _deadga ==nil {_deadga =NewPdfPageResourcesColorspaces ();_abbea .SetColorSpace (_deadga );};_deadga .Set (keyName ,cs );return nil ;}; // Height returns the height of `rect`. func (_gcbag *PdfRectangle )Height ()float64 {return _df .Abs (_gcbag .Ury -_gcbag .Lly )}; // PdfActionSubmitForm represents a submitForm action. type PdfActionSubmitForm struct{*PdfAction ;F *PdfFilespec ;Fields _dfg .PdfObject ;Flags _dfg .PdfObject ;};var _ pdfFont =(*pdfFontType3 )(nil );func (_dfgbf *pdfFontSimple )getFontEncoding ()(_cega string ,_cacf map[_ff .CharCode ]_ff .GlyphName ,_baaga error ){_cega ="\u0053\u0074a\u006e\u0064\u0061r\u0064\u0045\u006e\u0063\u006f\u0064\u0069\u006e\u0067"; if _bcbda ,_cgab :=_acaaf [_dfgbf ._dbcbc ];_cgab {_cega =_bcbda ;}else if _dfgbf .fontFlags ()&_dfefc !=0{for _edfaad ,_acffe :=range _acaaf {if _af .Contains (_dfgbf ._dbcbc ,_edfaad ){_cega =_acffe ;break ;};};};if _dfgbf .Encoding ==nil {return _cega ,nil ,nil ; };switch _faee :=_dfgbf .Encoding .(type ){case *_dfg .PdfObjectName :return string (*_faee ),nil ,nil ;case *_dfg .PdfObjectDictionary :_fgcag ,_cefee :=_dfg .GetName (_faee .Get ("\u0042\u0061\u0073e\u0045\u006e\u0063\u006f\u0064\u0069\u006e\u0067")); if _cefee {_cega =_fgcag .String ();};if _egggb :=_faee .Get ("D\u0069\u0066\u0066\u0065\u0072\u0065\u006e\u0063\u0065\u0073");_egggb !=nil {_egcf ,_gbdd :=_dfg .GetArray (_egggb );if !_gbdd {_egb .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0042a\u0064\u0020\u0066on\u0074\u0020\u0065\u006e\u0063\u006fd\u0069\u006e\u0067\u0020\u0064\u0069\u0063\u0074\u003d\u0025\u002b\u0076\u0020\u0044\u0069f\u0066\u0065\u0072\u0065\u006e\u0063\u0065\u0073=\u0025\u0054",_faee ,_faee .Get ("D\u0069\u0066\u0066\u0065\u0072\u0065\u006e\u0063\u0065\u0073")); return "",nil ,_dfg .ErrTypeError ;};_cacf ,_baaga =_ff .FromFontDifferences (_egcf );};return _cega ,_cacf ,_baaga ;default:_egb .Log .Debug ("\u0045\u0052\u0052O\u0052\u003a\u0020\u0045\u006e\u0063\u006f\u0064\u0069\u006e\u0067\u0020\u006e\u006f\u0074\u0020\u0061\u0020\u006e\u0061\u006d\u0065\u0020\u006f\u0072\u0020\u0064\u0069\u0063t\u0020\u0028\u0025\u0054\u0029\u0020\u0025\u0073",_dfgbf .Encoding ,_dfgbf .Encoding ); return "",nil ,_dfg .ErrTypeError ;};}; // HasPatternByName checks whether a pattern object is defined by the specified keyName. func (_gbcd *PdfPageResources )HasPatternByName (keyName _dfg .PdfObjectName )bool {_ ,_aafgg :=_gbcd .GetPatternByName (keyName );return _aafgg ;}; // GetOutlines returns a high-level Outline object, based on the outline tree // of the reader. func (_dbcaf *PdfReader )GetOutlines ()(*Outline ,error ){if _dbcaf ==nil {return nil ,_bd .New ("\u0063\u0061n\u006e\u006f\u0074\u0020c\u0072\u0065a\u0074\u0065\u0020\u006f\u0075\u0074\u006c\u0069n\u0065\u0020\u0066\u0072\u006f\u006d\u0020\u006e\u0069\u006c\u0020\u0072e\u0061\u0064\u0065\u0072"); };_dabdff :=_dbcaf .GetOutlineTree ();if _dabdff ==nil {return nil ,_bd .New ("\u0074\u0068\u0065\u0020\u0073\u0070\u0065\u0063\u0069\u0066\u0069\u0065\u0064\u0020\u0072\u0065\u0061\u0064e\u0072\u0020\u0064\u006f\u0065\u0073\u0020n\u006f\u0074\u0020\u0068\u0061\u0076\u0065\u0020\u0061\u006e\u0020o\u0075\u0074\u006c\u0069\u006e\u0065\u0020\u0074\u0072\u0065\u0065"); };var _eadbdf func (_fdgcb *PdfOutlineTreeNode ,_gdcga *[]*OutlineItem );_eadbdf =func (_efdbb *PdfOutlineTreeNode ,_ggfbb *[]*OutlineItem ){if _efdbb ==nil {return ;};if _efdbb ._cface ==nil {_egb .Log .Debug ("\u0045\u0052RO\u0052\u003a\u0020m\u0069\u0073\u0073\u0069ng \u006fut\u006c\u0069\u006e\u0065\u0020\u0065\u006etr\u0079\u0020\u0063\u006f\u006e\u0074\u0065x\u0074"); return ;};var _ffadb *OutlineItem ;if _acaee ,_gcgfb :=_efdbb ._cface .(*PdfOutlineItem );_gcgfb {_gded :=_acaee .Dest ;if (_gded ==nil ||_dfg .IsNullObject (_gded ))&&_acaee .A !=nil {if _aegb ,_fgffe :=_dfg .GetDict (_acaee .A );_fgffe {if _fafga ,_aebacg :=_dfg .GetArray (_aegb .Get ("\u0044")); _aebacg {_gded =_fafga ;}else {_eaeec ,_gcffd :=_dfg .GetString (_aegb .Get ("\u0044"));if !_gcffd {return ;};_gbdeg ,_gcffd :=_dbcaf ._fbfgb .Get ("\u004e\u0061\u006de\u0073").(*_dfg .PdfObjectReference );if !_gcffd {return ;};_dcbbe ,_aebbg :=_dbcaf ._agbcd .LookupByReference (*_gbdeg ); if _aebbg !=nil {_egb .Log .Debug ("\u0045\u0052\u0052O\u0052\u003a\u0020\u0046\u0061\u0069\u006c\u0065\u0064\u0020\u0074\u006f\u0020\u0072\u0065\u0061\u0064\u0020\u006e\u0061\u006d\u0065\u0073\u0020\u0072\u0065\u0066\u0065\u0072e\u006e\u0063\u0065\u0020\u0028\u0025\u0073\u0029",_aebbg .Error ()); return ;};_cffga ,_gcffd :=_dcbbe .(*_dfg .PdfIndirectObject );if !_gcffd {return ;};_aadgg :=map[_dfg .PdfObject ]struct{}{};_aebbg =_dbcaf .buildNameNodes (_cffga ,_aadgg );if _aebbg !=nil {_egb .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0046\u0061\u0069\u006c\u0065\u0064\u0020\u0074\u006f\u0020\u0062\u0075\u0069\u006c\u0064\u0020\u006ea\u006d\u0065\u0020\u006e\u006fd\u0065\u0073 \u0028\u0025\u0073\u0029",_aebbg .Error ()); return ;};for _acfda :=range _aadgg {_degg ,_bddaa :=_dfg .GetDict (_acfda );if !_bddaa {continue ;};_cccdb ,_bddaa :=_dfg .GetArray (_degg .Get ("\u004e\u0061\u006de\u0073"));if !_bddaa {continue ;};for _adgdgfc ,_bdef :=range _cccdb .Elements (){switch _bdef .(type ){case *_dfg .PdfObjectString :if _bdef .String ()==_eaeec .String (){if _cfba :=_cccdb .Get (_adgdgfc +1); _cfba !=nil {if _dcad ,_adefa :=_dfg .GetDict (_cfba );_adefa {_gded =_dcad .Get ("\u0044");break ;};};};};};};};};};var _agbbe OutlineDest ;if _gded !=nil &&!_dfg .IsNullObject (_gded ){if _efffb ,_gbgbg :=_cgbf (_gded ,_dbcaf );_gbgbg ==nil {_agbbe =*_efffb ; }else {_egb .Log .Debug ("\u0057\u0041\u0052\u004e\u003a\u0020\u0063o\u0075\u006c\u0064 \u006e\u006f\u0074\u0020p\u0061\u0072\u0073\u0065\u0020\u006f\u0075\u0074\u006c\u0069\u006e\u0065\u0020\u0064\u0065\u0073\u0074\u0020\u0028\u0025\u0076\u0029\u003a\u0020\u0025\u0076",_gded ,_gbgbg ); };};_ffadb =NewOutlineItem (_acaee .Title .Decoded (),_agbbe );*_ggfbb =append (*_ggfbb ,_ffadb );if _acaee .Next !=nil {_eadbdf (_acaee .Next ,_ggfbb );};};if _efdbb .First !=nil {if _ffadb !=nil {_ggfbb =&_ffadb .Entries ;};_eadbdf (_efdbb .First ,_ggfbb ); };};_bffa :=NewOutline ();_eadbdf (_dabdff ,&_bffa .Entries );return _bffa ,nil ;};func _adgdg (_aedbg _dfg .PdfObject )*Names {_agbb :=_ffad ();_fcda :=_dfg .TraceToDirectObject (_aedbg ).(*_dfg .PdfObjectDictionary );if _aeffg :=_fcda .Get ("\u0044\u0065\u0073t\u0073"); _aeffg !=nil {_agbb .Dests =_dfg .TraceToDirectObject (_aeffg ).(*_dfg .PdfObjectDictionary );};if _bfcgg :=_fcda .Get ("\u0041\u0050");_bfcgg !=nil {_agbb .AP =_dfg .TraceToDirectObject (_bfcgg ).(*_dfg .PdfObjectDictionary );};if _bcef :=_fcda .Get ("\u004a\u0061\u0076\u0061\u0053\u0063\u0072\u0069\u0070\u0074"); _bcef !=nil {_agbb .JavaScript =_dfg .TraceToDirectObject (_bcef ).(*_dfg .PdfObjectDictionary );};if _efcd :=_fcda .Get ("\u0050\u0061\u0067e\u0073");_efcd !=nil {_agbb .Pages =_dfg .TraceToDirectObject (_efcd ).(*_dfg .PdfObjectDictionary );};if _acbg :=_fcda .Get ("\u0054e\u006d\u0070\u006c\u0061\u0074\u0065s"); _acbg !=nil {_agbb .Templates =_dfg .TraceToDirectObject (_acbg ).(*_dfg .PdfObjectDictionary );};if _cbab :=_fcda .Get ("\u0049\u0044\u0053");_cbab !=nil {_agbb .IDS =_dfg .TraceToDirectObject (_cbab ).(*_dfg .PdfObjectDictionary );};if _cdac :=_fcda .Get ("\u0055\u0052\u004c\u0053"); _cdac !=nil {_agbb .URLS =_dfg .TraceToDirectObject (_cdac ).(*_dfg .PdfObjectDictionary );};if _acba :=_fcda .Get ("\u0045\u006d\u0062\u0065\u0064\u0064\u0065\u0064\u0046\u0069\u006c\u0065\u0073");_acba !=nil {_agbb .EmbeddedFiles =_dfg .TraceToDirectObject (_acba ).(*_dfg .PdfObjectDictionary ); };if _ggcab :=_fcda .Get ("\u0041\u006c\u0074\u0065rn\u0061\u0074\u0065\u0050\u0072\u0065\u0073\u0065\u006e\u0074\u0061\u0074\u0069\u006fn\u0073");_ggcab !=nil {_agbb .AlternatePresentations =_dfg .TraceToDirectObject (_ggcab ).(*_dfg .PdfObjectDictionary ); };if _caede :=_fcda .Get ("\u0052\u0065\u006e\u0064\u0069\u0074\u0069\u006f\u006e\u0073");_caede !=nil {_agbb .Renditions =_dfg .TraceToDirectObject (_caede ).(*_dfg .PdfObjectDictionary );};return _agbb ;}; // ColorFromPdfObjects returns a new PdfColor based on input color components. The input PdfObjects should // be numeric. func (_acgb *PdfColorspaceDeviceN )ColorFromPdfObjects (objects []_dfg .PdfObject )(PdfColor ,error ){if len (objects )!=_acgb .GetNumComponents (){return nil ,_bd .New ("r\u0061\u006e\u0067\u0065\u0020\u0063\u0068\u0065\u0063\u006b");};_bdbc ,_gbcg :=_dfg .GetNumbersAsFloat (objects ); if _gbcg !=nil {return nil ,_gbcg ;};return _acgb .ColorFromFloats (_bdbc );};func (_gacc PdfFont )actualFont ()pdfFont {if _gacc ._fab ==nil {_egb .Log .Debug ("\u0045\u0052\u0052O\u0052\u003a\u0020\u0061\u0063\u0074\u0075\u0061\u006c\u0046\u006f\u006e\u0074\u002e\u0020\u0063\u006f\u006e\u0074\u0065\u0078\u0074\u0020\u0069\u0073\u0020\u006e\u0069\u006c.\u0020\u0066\u006f\u006e\u0074\u003d\u0025\u0073",_gacc ); };return _gacc ._fab ;};func _dffdg (_cceee map[_bf .GID ]int ,_dbaeg uint16 )*_dfg .PdfObjectArray {_adbc :=&_dfg .PdfObjectArray {};_bgdd :=_bf .GID (_dbaeg );for _efbb :=_bf .GID (0);_efbb < _bgdd ;{_dedba ,_fdbab :=_cceee [_efbb ];if !_fdbab {_efbb ++; continue ;};_dgbcc :=_efbb ;for _cfcb :=_dgbcc +1;_cfcb < _bgdd ;_cfcb ++{if _cbeb ,_fecf :=_cceee [_cfcb ];!_fecf ||_dedba !=_cbeb {break ;};_dgbcc =_cfcb ;};_adbc .Append (_dfg .MakeInteger (int64 (_efbb )));_adbc .Append (_dfg .MakeInteger (int64 (_dgbcc ))); _adbc .Append (_dfg .MakeInteger (int64 (_dedba )));_efbb =_dgbcc +1;};return _adbc ;}; // PdfColor interface represents a generic color in PDF. type PdfColor interface{}; // NewPdfActionLaunch returns a new "launch" action. func NewPdfActionLaunch ()*PdfActionLaunch {_dac :=NewPdfAction ();_afa :=&PdfActionLaunch {};_afa .PdfAction =_dac ;_dac .SetContext (_afa );return _afa ;};func (_abbef *PdfAcroForm )filteredFields (_fddef FieldFilterFunc ,_bfefd bool )[]*PdfField {if _abbef ==nil {return nil ; };return _bfdb (_abbef .Fields ,_fddef ,_bfefd );}; // NewPdfColorspaceLab returns a new Lab colorspace object. func NewPdfColorspaceLab ()*PdfColorspaceLab {_dddb :=&PdfColorspaceLab {};_dddb .BlackPoint =[]float64 {0.0,0.0,0.0};_dddb .Range =[]float64 {-100,100,-100,100};return _dddb ;}; // ColorFromPdfObjects returns a new PdfColor based on the input slice of color // component PDF objects. func (_bgcdg *PdfColorspaceICCBased )ColorFromPdfObjects (objects []_dfg .PdfObject )(PdfColor ,error ){if _bgcdg .Alternate ==nil {if _bgcdg .N ==1{_eddf :=NewPdfColorspaceDeviceGray ();return _eddf .ColorFromPdfObjects (objects );}else if _bgcdg .N ==3{_cfbb :=NewPdfColorspaceDeviceRGB (); return _cfbb .ColorFromPdfObjects (objects );}else if _bgcdg .N ==4{_adeae :=NewPdfColorspaceDeviceCMYK ();return _adeae .ColorFromPdfObjects (objects );}else {return nil ,_bd .New ("I\u0043\u0043\u0020\u0042\u0061\u0073\u0065\u0064\u0020\u0063\u006f\u006c\u006f\u0072\u0073\u0070\u0061\u0063e\u0020\u006d\u0069\u0073\u0073\u0069\u006e\u0067\u0020\u0061lt\u0065\u0072\u006ea\u0074i\u0076\u0065"); };};return _bgcdg .Alternate .ColorFromPdfObjects (objects );}; // Clear clears the KValue. func (_fgfg *KValue )Clear (){_fgfg ._badbf =nil ;_fgfg ._gbedc =nil ;_fgfg ._dddge =nil }; // ToPdfObject returns the PDF representation of the function. func (_ffcfe *PdfFunctionType4 )ToPdfObject ()_dfg .PdfObject {_cfddc :=_ffcfe ._gbaed ;if _cfddc ==nil {_ffcfe ._gbaed =&_dfg .PdfObjectStream {};_cfddc =_ffcfe ._gbaed ;};_ffbfba :=_dfg .MakeDict ();_ffbfba .Set ("\u0046\u0075\u006ec\u0074\u0069\u006f\u006e\u0054\u0079\u0070\u0065",_dfg .MakeInteger (4)); _ccdcg :=&_dfg .PdfObjectArray {};for _ ,_gbged :=range _ffcfe .Domain {_ccdcg .Append (_dfg .MakeFloat (_gbged ));};_ffbfba .Set ("\u0044\u006f\u006d\u0061\u0069\u006e",_ccdcg );_ceafc :=&_dfg .PdfObjectArray {};for _ ,_fcedg :=range _ffcfe .Range {_ceafc .Append (_dfg .MakeFloat (_fcedg )); };_ffbfba .Set ("\u0052\u0061\u006eg\u0065",_ceafc );if _ffcfe ._gbgcb ==nil &&_ffcfe .Program !=nil {_ffcfe ._gbgcb =[]byte (_ffcfe .Program .String ());};_ffbfba .Set ("\u004c\u0065\u006e\u0067\u0074\u0068",_dfg .MakeInteger (int64 (len (_ffcfe ._gbgcb )))); _cfddc .Stream =_ffcfe ._gbgcb ;_cfddc .PdfObjectDictionary =_ffbfba ;return _cfddc ;}; // FieldAppearanceGenerator generates appearance stream for a given field. type FieldAppearanceGenerator interface{ContentStreamWrapper ;GenerateAppearanceDict (_befe *PdfAcroForm ,_egdg *PdfField ,_fgage *PdfAnnotationWidget )(*_dfg .PdfObjectDictionary ,error );}; // PdfShadingType6 is a Coons patch mesh. type PdfShadingType6 struct{*PdfShading ;BitsPerCoordinate *_dfg .PdfObjectInteger ;BitsPerComponent *_dfg .PdfObjectInteger ;BitsPerFlag *_dfg .PdfObjectInteger ;Decode *_dfg .PdfObjectArray ;Function []PdfFunction ;}; // Decrypt decrypts the PDF file with a specified password. Also tries to // decrypt with an empty password. Returns true if successful, // false otherwise. func (_dabcc *PdfReader )Decrypt (password []byte )(bool ,error ){_gebbd ,_acbgf :=_dabcc ._agbcd .Decrypt (password );if _acbgf !=nil {return false ,_acbgf ;};if !_gebbd {return false ,nil ;};_acbgf =_dabcc .loadStructure ();if _acbgf !=nil {_egb .Log .Debug ("\u0045\u0052\u0052OR\u003a\u0020\u0046\u0061\u0069\u006c\u0020\u0074\u006f \u006co\u0061d\u0020s\u0074\u0072\u0075\u0063\u0074\u0075\u0072\u0065\u0020\u0028\u0025\u0073\u0029",_acbgf ); return false ,_acbgf ;};return true ,nil ;}; // GetAllContentStreams gets all the content streams for a page as one string. func (_ggfg *PdfPage )GetAllContentStreams ()(string ,error ){_aebe ,_ggceb :=_ggfg .GetContentStreams ();if _ggceb !=nil {return "",_ggceb ;};return _af .Join (_aebe ,"\u0020"),nil ;}; // ToPdfObject returns the PDF representation of the page resources. func (_ggeab *PdfPageResources )ToPdfObject ()_dfg .PdfObject {_fgcee :=_ggeab ._gffaff ;_fgcee .SetIfNotNil ("\u0045x\u0074\u0047\u0053\u0074\u0061\u0074e",_ggeab .ExtGState );if _ggeab ._fgfec !=nil {_ggeab .ColorSpace =_ggeab ._fgfec .ToPdfObject (); };_fgcee .SetIfNotNil ("\u0043\u006f\u006c\u006f\u0072\u0053\u0070\u0061\u0063\u0065",_ggeab .ColorSpace );_fgcee .SetIfNotNil ("\u0050a\u0074\u0074\u0065\u0072\u006e",_ggeab .Pattern );_fgcee .SetIfNotNil ("\u0053h\u0061\u0064\u0069\u006e\u0067",_ggeab .Shading ); _fgcee .SetIfNotNil ("\u0058O\u0062\u006a\u0065\u0063\u0074",_ggeab .XObject );_fgcee .SetIfNotNil ("\u0046\u006f\u006e\u0074",_ggeab .Font );_fgcee .SetIfNotNil ("\u0050r\u006f\u0063\u0053\u0065\u0074",_ggeab .ProcSet );_fgcee .SetIfNotNil ("\u0050\u0072\u006f\u0070\u0065\u0072\u0074\u0069\u0065\u0073",_ggeab .Properties ); return _fgcee ;}; // GetCharMetrics returns the char metrics for character code `code`. func (_bgbb pdfCIDFontType0 )GetCharMetrics (code _ff .CharCode )(_bf .CharMetrics ,bool ){_affae :=_bgbb ._ebfc ;if _afda ,_feea :=_bgbb ._ceda [code ];_feea {_affae =_afda ;};return _bf .CharMetrics {Wx :_affae },true ;};func (_dcfgb *PdfAcroForm )signatureFields ()[]*PdfFieldSignature {var _bggac []*PdfFieldSignature ; for _ ,_cbef :=range _dcfgb .AllFields (){switch _bcbg :=_cbef .GetContext ().(type ){case *PdfFieldSignature :_ccbge :=_bcbg ;_bggac =append (_bggac ,_ccbge );};};return _bggac ;}; // GetNumComponents returns the number of color components (1 for Indexed). func (_gagd *PdfColorspaceSpecialIndexed )GetNumComponents ()int {return 1}; // GetAscent returns the Ascent of the font `descriptor`. func (_fgdc *PdfFontDescriptor )GetAscent ()(float64 ,error ){return _dfg .GetNumberAsFloat (_fgdc .Ascent );}; // ArtifactAttachPosition specifies the position where an artifact is attached to a page. type ArtifactAttachPosition string ; // PdfAnnotationWatermark represents Watermark annotations. // (Section 12.5.6.22). type PdfAnnotationWatermark struct{*PdfAnnotation ;FixedPrint _dfg .PdfObject ;}; // NewPdfColorspaceDeviceRGB returns a new RGB colorspace object. func NewPdfColorspaceDeviceRGB ()*PdfColorspaceDeviceRGB {return &PdfColorspaceDeviceRGB {}}; // PdfColorCalRGB represents a color in the Colorimetric CIE RGB colorspace. // A, B, C components // Each component is defined in the range 0.0 - 1.0 where 1.0 is the primary intensity. type PdfColorCalRGB [3]float64 ; // GenerateRandomID generates a random ID for the K dictionary object. func (_fadgg *KDict )GenerateRandomID ()string {_ccceac ,_cbedd :=_gdb .NewUUID ();if _cbedd !=nil {_egb .Log .Debug ("\u0045r\u0072\u006f\u0072\u0020g\u0065\u006e\u0065\u0072\u0061t\u0069n\u0067 \u0055\u0055\u0049\u0044\u003a\u0020\u0025v",_cbedd );}; if _ccceac !=_gdb .Nil {_bfafb :=_ccceac .String ();_fadgg .ID =_dfg .MakeString (_bfafb );return _bfafb ;};return "";}; // SetAction sets the PDF action for the annotation link. func (_bbcd *PdfAnnotationLink )SetAction (action *PdfAction ){_bbcd ._gdc =action ;if action ==nil {_bbcd .A =nil ;};}; // ToPdfObject converts PdfAcroForm to a PdfObject, i.e. an indirect object containing the // AcroForm dictionary. func (_ecbf *PdfAcroForm )ToPdfObject ()_dfg .PdfObject {_gbcgc :=_ecbf ._gddd ;_ddff :=_gbcgc .PdfObject .(*_dfg .PdfObjectDictionary );if _ecbf .Fields !=nil {_adbca :=_dfg .PdfObjectArray {};for _ ,_dfbaeg :=range *_ecbf .Fields {_egac :=_dfbaeg .GetContext (); if _egac !=nil {_adbca .Append (_egac .ToPdfObject ());}else {_adbca .Append (_dfbaeg .ToPdfObject ());};};_ddff .Set ("\u0046\u0069\u0065\u006c\u0064\u0073",&_adbca );};if _ecbf .NeedAppearances !=nil {_ddff .Set ("\u004ee\u0065d\u0041\u0070\u0070\u0065\u0061\u0072\u0061\u006e\u0063\u0065\u0073",_ecbf .NeedAppearances ); }else {if _fffea :=_ddff .Get ("\u004ee\u0065d\u0041\u0070\u0070\u0065\u0061\u0072\u0061\u006e\u0063\u0065\u0073");_fffea !=nil {_ddff .Remove ("\u004ee\u0065d\u0041\u0070\u0070\u0065\u0061\u0072\u0061\u006e\u0063\u0065\u0073");};};if _ecbf .SigFlags !=nil {_ddff .Set ("\u0053\u0069\u0067\u0046\u006c\u0061\u0067\u0073",_ecbf .SigFlags ); };if _ecbf .CO !=nil {_ddff .Set ("\u0043\u004f",_ecbf .CO );};if _ecbf .DR !=nil {_ddff .Set ("\u0044\u0052",_ecbf .DR .ToPdfObject ());};if _ecbf .DA !=nil {_ddff .Set ("\u0044\u0041",_ecbf .DA );};if _ecbf .Q !=nil {_ddff .Set ("\u0051",_ecbf .Q );}; if _ecbf .XFA !=nil {_ddff .Set ("\u0058\u0046\u0041",_ecbf .XFA );};if _ecbf .ADBEEchoSign !=nil {_ddff .Set ("\u0041\u0044\u0042\u0045\u005f\u0045\u0063\u0068\u006f\u0053\u0069\u0067\u006e",_ecbf .ADBEEchoSign );};return _gbcgc ;}; // FlattenFieldsWithOpts flattens the AcroForm fields of the page using the // provided field appearance generator and the specified options. If no options // are specified, all form fields are flattened for the page. // If a filter function is provided using the opts parameter, only the filtered // fields are flattened. Otherwise, all form fields are flattened. func (_bgecd *PdfPage )FlattenFieldsWithOpts (appgen FieldAppearanceGenerator ,opts *FieldFlattenOpts )error {_aafg :=map[*PdfAnnotation ]bool {};_cdadc ,_gbdff :=_bgecd .GetAnnotations ();if _gbdff !=nil {return _gbdff ;};_daeeb :=false ;for _ ,_ddcbc :=range _cdadc {if opts .AnnotFilterFunc !=nil {_aafg [_ddcbc ]=opts .AnnotFilterFunc (_ddcbc ); }else {_aafg [_ddcbc ]=true ;};if _aafg [_ddcbc ]{_daeeb =true ;};};if !_daeeb {return nil ;};return _bgecd .flattenFieldsWithOpts (appgen ,opts ,_aafg );}; // String returns the name of the colorspace (DeviceN). func (_efad *PdfColorspaceDeviceN )String ()string {return "\u0044e\u0076\u0069\u0063\u0065\u004e"}; // NewPdfColorDeviceRGB returns a new PdfColorDeviceRGB based on the r,g,b component values. func NewPdfColorDeviceRGB (r ,g ,b float64 )*PdfColorDeviceRGB {_gbf :=PdfColorDeviceRGB {r ,g ,b };return &_gbf ;}; // GetAction returns the PDF action for the annotation link. func (_cffc *PdfAnnotationLink )GetAction ()(*PdfAction ,error ){if _cffc ._gdc !=nil {return _cffc ._gdc ,nil ;};if _cffc .A ==nil {return nil ,nil ;};if _cffc ._ebdec ==nil {return nil ,nil ;};_eeac ,_bab :=_cffc ._ebdec .loadAction (_cffc .A );if _bab !=nil {return nil ,_bab ; };_cffc ._gdc =_eeac ;return _cffc ._gdc ,nil ;};func (_cda *PdfReader )newPdfAnnotationCircleFromDict (_fecb *_dfg .PdfObjectDictionary )(*PdfAnnotationCircle ,error ){_gccb :=PdfAnnotationCircle {};_bcg ,_egaa :=_cda .newPdfAnnotationMarkupFromDict (_fecb ); if _egaa !=nil {return nil ,_egaa ;};_gccb .PdfAnnotationMarkup =_bcg ;_gccb .BS =_fecb .Get ("\u0042\u0053");_gccb .IC =_fecb .Get ("\u0049\u0043");_gccb .BE =_fecb .Get ("\u0042\u0045");_gccb .RD =_fecb .Get ("\u0052\u0044");return &_gccb ,nil ;}; // PdfActionGoTo3DView represents a GoTo3DView action. type PdfActionGoTo3DView struct{*PdfAction ;TA _dfg .PdfObject ;V _dfg .PdfObject ;}; // FieldFlattenOpts defines a set of options which can be used to configure // the field flattening process. type FieldFlattenOpts struct{ // FilterFunc allows filtering the form fields used in the flattening // process. If the filter function returns true, the field is flattened, // otherwise it is skipped. // If a non-terminal field is discarded, all of its children (the fields // present in the Kids array) are discarded as well. // Non-terminal fields are kept in the AcroForm if one or more of their // child fields have not been selected for flattening. // If a filter function is not provided, all form fields are flattened. FilterFunc FieldFilterFunc ; // AnnotFilterFunc allows filtering the annotations in the flattening // process. If the filter function returns true, the annotation is flattened, // otherwise it is skipped. AnnotFilterFunc AnnotFilterFunc ;}; // NewPermissions returns a new permissions object. func NewPermissions (docMdp *PdfSignature )*Permissions {_bcfgfa :=Permissions {};_bcfgfa .DocMDP =docMdp ;_gegbe :=_dfg .MakeDict ();_gegbe .Set ("\u0044\u006f\u0063\u004d\u0044\u0050",docMdp .ToPdfObject ());_bcfgfa ._gbdee =_gegbe ;return &_bcfgfa ; };func (_geag fontCommon )fontFlags ()int {if _geag ._cebfd ==nil {return 0;};return _geag ._cebfd ._dffgf ;}; // ArtifactSubtype represents the subtype of an artifact in a PDF document. type ArtifactSubtype string ; // Image interface is a basic representation of an image used in PDF. // The colorspace is not specified, but must be known when handling the image. type Image struct{Width int64 ;Height int64 ;BitsPerComponent int64 ;ColorComponents int ;Data []byte ;_baeef []byte ;_begcc []float64 ;}; // IDTree represents the ID tree dictionary where the format of the content // is using Name Trees as described in chapter 7.9.6. type IDTree struct{ // Limits shall be an array of two strings, that shall specify the (lexically) least and greatest keys included in the Names array. Limits *_dfg .PdfObjectArray ; // Names shall be an array of the form // // [ key1 value1 key2 value2 … keyn valuen] // // where each keyi shall be a string and the corresponding valuei shall be the object // associated with that key. The keys shall be sorted in lexical order, as described below. Names *_dfg .PdfObjectArray ; // Kids Shall be an array of indirect references to the immediate children of this node. Kids []*IDTree ;};func (_acad *Artifact )GenerateMap ()map[string ]_dfg .PdfObject {_ffda :=make (map[string ]_dfg .PdfObject );if _acad .Type !=ArtifactTypeNone {_ffda ["\u0054\u0079\u0070\u0065"]=_dfg .MakeName (string (_acad .Type ));};if _acad .BBox !=nil {_ffda ["\u0042\u0042\u006f\u0078"]=_dfg .MakeArrayFromFloats ([]float64 {_acad .BBox .Llx ,_acad .BBox .Lly ,_acad .BBox .Urx ,_acad .BBox .Ury }); };if len (_acad .AttachPositions )> 0{var _afbgc []_dfg .PdfObject ;for _ ,_gagb :=range _acad .AttachPositions {_afbgc =append (_afbgc ,_dfg .MakeName (string (_gagb )));};_ffda ["\u0041\u0074\u0074\u0061\u0063\u0068"]=_dfg .MakeArray (_afbgc ...);};if _acad .Subtype !=""{_ffda ["\u0053u\u0062\u0074\u0079\u0070\u0065"]=_dfg .MakeName (_acad .Subtype ); };return _ffda ;}; // ToPdfObject implements interface PdfModel. func (_gbaa *PdfAnnotationCaret )ToPdfObject ()_dfg .PdfObject {_gbaa .PdfAnnotation .ToPdfObject ();_dcca :=_gbaa ._afae ;_aggf :=_dcca .PdfObject .(*_dfg .PdfObjectDictionary );_gbaa .appendToPdfDictionary (_aggf );_aggf .SetIfNotNil ("\u0053u\u0062\u0074\u0079\u0070\u0065",_dfg .MakeName ("\u0043\u0061\u0072e\u0074")); _aggf .SetIfNotNil ("\u0052\u0044",_gbaa .RD );_aggf .SetIfNotNil ("\u0053\u0079",_gbaa .Sy );return _dcca ;}; // ToPdfObject implements interface PdfModel. func (_fdcb *PdfAnnotationProjection )ToPdfObject ()_dfg .PdfObject {_fdcb .PdfAnnotation .ToPdfObject ();_fbee :=_fdcb ._afae ;_gggf :=_fbee .PdfObject .(*_dfg .PdfObjectDictionary );_fdcb .appendToPdfDictionary (_gggf );return _fbee ;}; // IsCID returns true if the underlying font is CID. func (_fdgbc *PdfFont )IsCID ()bool {return _fdgbc .baseFields ().isCIDFont ()}; // Clear clears flag fl from the flag and returns the resulting flag. func (_ddddf FieldFlag )Clear (fl FieldFlag )FieldFlag {return FieldFlag (_ddddf .Mask ()&^fl .Mask ())}; // ColorFromFloats returns a new PdfColor based on the input slice of color // components. The slice should contain a single element between 0 and 1. func (_bcgg *PdfColorspaceDeviceGray )ColorFromFloats (vals []float64 )(PdfColor ,error ){if len (vals )!=1{return nil ,_bd .New ("r\u0061\u006e\u0067\u0065\u0020\u0063\u0068\u0065\u0063\u006b");};_efcea :=vals [0];if _efcea < 0.0||_efcea > 1.0{_egb .Log .Debug ("\u0049\u006eco\u006d\u0070\u0061t\u0069\u0062\u0069\u006city\u003a R\u0061\u006e\u0067\u0065\u0020\u006f\u0075ts\u0069\u0064\u0065\u0020\u005b\u0030\u002c1\u005d"); };if _efcea < 0.0{_efcea =0.0;}else if _efcea > 1.0{_efcea =1.0;};return NewPdfColorDeviceGray (_efcea ),nil ;}; // Val returns the color value. func (_fdfa *PdfColorDeviceGray )Val ()float64 {return float64 (*_fdfa )}; // IsHideToolbar returns the value of the hideToolbar flag. func (_fbeeg *ViewerPreferences )IsHideToolbar ()bool {if _fbeeg ._dcdcg ==nil {return false ;};return *_fbeeg ._dcdcg ;};func (_dabeb *PdfWriter )updateObjectNumbers (){_dgeb :=_dabeb .ObjNumOffset ;_dgdga :=0;for _ ,_bdbda :=range _dabeb ._abcef {_eedbe :=int64 (_dgdga +1+_dgeb ); _abbcfb :=true ;if _dabeb ._cddgg {if _ddacb ,_fgaece :=_dabeb ._dacf [_bdbda ];_fgaece {_eedbe =_ddacb ;_abbcfb =false ;};};switch _egcg :=_bdbda .(type ){case *_dfg .PdfIndirectObject :_egcg .ObjectNumber =_eedbe ;_egcg .GenerationNumber =0;case *_dfg .PdfObjectStream :_egcg .ObjectNumber =_eedbe ; _egcg .GenerationNumber =0;case *_dfg .PdfObjectStreams :_egcg .ObjectNumber =_eedbe ;_egcg .GenerationNumber =0;case *_dfg .PdfObjectReference :_egcg .ObjectNumber =_eedbe ;_egcg .GenerationNumber =0;case *_dfg .PdfObjectDictionary ,*_dfg .PdfObjectString :default:_egb .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a \u0055\u006e\u006b\u006e\u006f\u0077\u006e\u0020\u0074\u0079\u0070\u0065\u0020%\u0054\u0020\u002d\u0020\u0073\u006b\u0069p\u0070\u0069\u006e\u0067",_egcg ); continue ;};if _abbcfb {_dgdga ++;};};_ccabb :=func (_gbefd _dfg .PdfObject )int64 {switch _dcecee :=_gbefd .(type ){case *_dfg .PdfIndirectObject :return _dcecee .ObjectNumber ;case *_dfg .PdfObjectStream :return _dcecee .ObjectNumber ;case *_dfg .PdfObjectStreams :return _dcecee .ObjectNumber ; case *_dfg .PdfObjectReference :return _dcecee .ObjectNumber ;};return 0;};_ed .SliceStable (_dabeb ._abcef ,func (_degdg ,_accfc int )bool {return _ccabb (_dabeb ._abcef [_degdg ])< _ccabb (_dabeb ._abcef [_accfc ])});};func _bafgc ()string {_ddab :="\u0051\u0057\u0045\u0052\u0054\u0059\u0055\u0049\u004f\u0050\u0041S\u0044\u0046\u0047\u0048\u004a\u004b\u004c\u005a\u0058\u0043V\u0042\u004e\u004d"; var _acfa _cca .Buffer ;for _fabe :=0;_fabe < 6;_fabe ++{_acfa .WriteRune (rune (_ddab [_eg .Intn (len (_ddab ))]));};return _acfa .String ();}; // GetCapHeight returns the CapHeight of the font `descriptor`. func (_eega *PdfFontDescriptor )GetCapHeight ()(float64 ,error ){return _dfg .GetNumberAsFloat (_eega .CapHeight );}; // ToPdfObject implements interface PdfModel. func (_cggf *PdfAnnotationWidget )ToPdfObject ()_dfg .PdfObject {_cggf .PdfAnnotation .ToPdfObject ();_gace :=_cggf ._afae ;_bbgd :=_gace .PdfObject .(*_dfg .PdfObjectDictionary );if _cggf ._fbde {return _gace ;};_cggf ._fbde =true ;_bbgd .SetIfNotNil ("\u0053u\u0062\u0074\u0079\u0070\u0065",_dfg .MakeName ("\u0057\u0069\u0064\u0067\u0065\u0074")); _bbgd .SetIfNotNil ("\u0048",_cggf .H );_bbgd .SetIfNotNil ("\u004d\u004b",_cggf .MK );_bbgd .SetIfNotNil ("\u0041",_cggf .A );_bbgd .SetIfNotNil ("\u0041\u0041",_cggf .AA );_bbgd .SetIfNotNil ("\u0042\u0053",_cggf .BS );_cbbc :=_cggf .Parent ;if _cggf ._bcad !=nil {if _cggf ._bcad ._caaa ==_cggf ._afae {_cggf ._bcad .ToPdfObject (); };_cbbc =_cggf ._bcad .GetContainingPdfObject ();};if _cbbc !=_gace {_bbgd .SetIfNotNil ("\u0050\u0061\u0072\u0065\u006e\u0074",_cbbc );};_cggf ._fbde =false ;return _gace ;}; // PdfOutlineTreeNode contains common fields used by the outline and outline // item objects. type PdfOutlineTreeNode struct{_cface interface{};First *PdfOutlineTreeNode ;Last *PdfOutlineTreeNode ;}; // SetRefObject sets the reference object for the KValue. func (_faeac *KValue )SetRefObject (refObject _dfg .PdfObject ){_faeac .Clear ();_faeac ._gbedc =refObject ;}; // BorderEffect represents a border effect (Table 167 p. 395). type BorderEffect int ; // AcroFormNeedsRepair returns true if the document contains widget annotations // linked to fields which are not referenced in the AcroForm. The AcroForm can // be repaired using the RepairAcroForm method of the reader. func (_dagaa *PdfReader )AcroFormNeedsRepair ()(bool ,error ){var _fdcdb []*PdfField ;if _dagaa .AcroForm !=nil {_fdcdb =_dagaa .AcroForm .AllFields ();};_gccfg :=make (map[*PdfField ]struct{},len (_fdcdb ));for _ ,_fgde :=range _fdcdb {_gccfg [_fgde ]=struct{}{}; };for _ ,_ecfcg :=range _dagaa .PageList {_aeacb ,_fabee :=_ecfcg .GetAnnotations ();if _fabee !=nil {return false ,_fabee ;};for _ ,_agdbf :=range _aeacb {_ecec ,_aedc :=_agdbf .GetContext ().(*PdfAnnotationWidget );if !_aedc {continue ;};_fdfdf :=_ecec .Field (); if _fdfdf ==nil {return true ,nil ;};if _ ,_dgfgg :=_gccfg [_fdfdf ];!_dgfgg {return true ,nil ;};};};return false ,nil ;}; // Compress is yet to be implemented. // Should be able to compress in terms of JPEG quality parameter, // and DPI threshold (need to know bounding area dimensions). func (_bdffdb DefaultImageHandler )Compress (input *Image ,quality int64 )(*Image ,error ){return input ,nil ;}; // SetColorSpace sets `r` colorspace object to `colorspace`. func (_gefbe *PdfPageResources )SetColorSpace (colorspace *PdfPageResourcesColorspaces ){_gefbe ._fgfec =colorspace ;}; // NewPdfColorspaceICCBased returns a new ICCBased colorspace object. func NewPdfColorspaceICCBased (N int )(*PdfColorspaceICCBased ,error ){_acgc :=&PdfColorspaceICCBased {};if N !=1&&N !=3&&N !=4{return nil ,_d .Errorf ("\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u004e\u0020\u0028\u0031/\u0033\u002f\u0034\u0029"); };_acgc .N =N ;return _acgc ,nil ;}; // GetExtGState gets the ExtGState specified by keyName. Returns a bool // indicating whether it was found or not. func (_aefad *PdfPageResources )GetExtGState (keyName _dfg .PdfObjectName )(_dfg .PdfObject ,bool ){if _aefad .ExtGState ==nil {return nil ,false ;};_aaafe ,_febaeb :=_dfg .TraceToDirectObject (_aefad .ExtGState ).(*_dfg .PdfObjectDictionary );if !_febaeb {_egb .Log .Debug ("\u0045\u0052R\u004f\u0052\u003a\u0020\u0049n\u0076\u0061\u006c\u0069\u0064 \u0045\u0078\u0074\u0047\u0053\u0074\u0061\u0074\u0065\u0020\u0065\u006e\u0074\u0072\u0079\u0020\u002d\u0020\u006e\u006f\u0074\u0020\u0061\u0020\u0064\u0069\u0063\u0074\u0020\u0028\u0067\u006f\u0074\u0020\u0025\u0054\u0029",_aefad .ExtGState ); return nil ,false ;};if _gdba :=_aaafe .Get (keyName );_gdba !=nil {return _gdba ,true ;};return nil ,false ;}; // String returns a string representation of the field. func (_agab *PdfField )String ()string {if _ggagd ,_fgedd :=_agab .ToPdfObject ().(*_dfg .PdfIndirectObject );_fgedd {return _d .Sprintf ("\u0025\u0054\u003a\u0020\u0025\u0073",_agab ._agcfe ,_ggagd .PdfObject .String ());};return "";}; // Direction represents the predominant reading order for text. type Direction string ;var _dbcab =_gd .MustCompile ("\u005b\\\u006e\u005c\u0072\u005d\u002b"); // SetPageLabels sets the PageLabels entry in the PDF catalog. // See section 12.4.2 "Page Labels" (p. 382 PDF32000_2008). func (_ddcbcf *PdfWriter )SetPageLabels (pageLabels _dfg .PdfObject )error {if pageLabels ==nil {return nil ;};_egb .Log .Trace ("\u0053\u0065t\u0074\u0069\u006e\u0067\u0020\u0063\u0061\u0074\u0061\u006c\u006f\u0067\u0020\u0050\u0061\u0067\u0065\u004c\u0061\u0062\u0065\u006cs.\u002e\u002e"); _ddcbcf ._acgcc .Set ("\u0050\u0061\u0067\u0065\u004c\u0061\u0062\u0065\u006c\u0073",pageLabels );return _ddcbcf .addObjects (pageLabels );}; // Evaluate runs the function on the passed in slice and returns the results. func (_eefa *PdfFunctionType3 )Evaluate (x []float64 )([]float64 ,error ){if len (x )!=1{_egb .Log .Error ("\u004f\u006e\u006c\u0079 o\u006e\u0065\u0020\u0069\u006e\u0070\u0075\u0074\u0020\u0061\u006c\u006c\u006f\u0077e\u0064");return nil ,_bd .New ("r\u0061\u006e\u0067\u0065\u0020\u0063\u0068\u0065\u0063\u006b"); };return nil ,_bd .New ("\u006e\u006f\u0074\u0020im\u0070\u006c\u0065\u006d\u0065\u006e\u0074\u0065\u0064\u0020\u0079\u0065\u0074");};var _gbffc =map[string ]struct{}{"\u0054\u0069\u0074l\u0065":{},"\u0041\u0075\u0074\u0068\u006f\u0072":{},"\u0053u\u0062\u006a\u0065\u0063\u0074":{},"\u004b\u0065\u0079\u0077\u006f\u0072\u0064\u0073":{},"\u0043r\u0065\u0061\u0074\u006f\u0072":{},"\u0050\u0072\u006f\u0064\u0075\u0063\u0065\u0072":{},"\u0054r\u0061\u0070\u0070\u0065\u0064":{},"\u0043\u0072\u0065a\u0074\u0069\u006f\u006e\u0044\u0061\u0074\u0065":{},"\u004do\u0064\u0044\u0061\u0074\u0065":{}}; // ToInteger convert to an integer format. func (_bfde *PdfColorCalGray )ToInteger (bits int )uint32 {_bgga :=_df .Pow (2,float64 (bits ))-1;return uint32 (_bgga *_bfde .Val ());}; // ToPdfObject returns the PDF representation of the colorspace. func (_fbgc *PdfColorspaceDeviceGray )ToPdfObject ()_dfg .PdfObject {return _dfg .MakeName ("\u0044\u0065\u0076\u0069\u0063\u0065\u0047\u0072\u0061\u0079");}; // StandardApplier is the interface that performs optimization of the whole PDF document. // As a result an input document is being changed by the optimizer. // The writer than takes back all it's parts and overwrites it. // NOTE: This implementation is in experimental development state. // // Keep in mind that it might change in the subsequent minor versions. type StandardApplier interface{ApplyStandard (_dfcagg *_beg .Document )error ;};func (_ggfad *PdfAcroForm )fill (_cgdg FieldValueProvider ,_badf FieldAppearanceGenerator )error {if _ggfad ==nil {return nil ;};_egacd ,_eacf :=_cgdg .FieldValues ();if _eacf !=nil {return _eacf ; };for _ ,_fbdfe :=range _ggfad .AllFields (){_ddeeb :=_fbdfe .PartialName ();_gcea ,_ebdg :=_egacd [_ddeeb ];if !_ebdg {if _dbdeg ,_aaba :=_fbdfe .FullName ();_aaba ==nil {_gcea ,_ebdg =_egacd [_dbdeg ];};};if !_ebdg {_egb .Log .Debug ("\u0057\u0041\u0052\u004e\u003a\u0020f\u006f\u0072\u006d \u0066\u0069\u0065l\u0064\u0020\u0025\u0073\u0020\u006e\u006f\u0074\u0020\u0066o\u0075\u006e\u0064\u0020\u0069n \u0074\u0068\u0065\u0020\u0070\u0072\u006f\u0076\u0069\u0064\u0065\u0072\u002e\u0020\u0053\u006b\u0069\u0070\u0070\u0069\u006e\u0067\u002e",_ddeeb ); continue ;};if _afcgd :=_eaade (_fbdfe ,_gcea );_afcgd !=nil {return _afcgd ;};if _badf ==nil {continue ;};for _ ,_ggade :=range _fbdfe .Annotations {_ddgg ,_cefage :=_badf .GenerateAppearanceDict (_ggfad ,_fbdfe ,_ggade );if _cefage !=nil {return _cefage ; };_ggade .AP =_ddgg ;_ggade .ToPdfObject ();};};return nil ;};func _aeegd (_fegf *_dfg .PdfObjectDictionary )bool {for _ ,_effag :=range _fegf .Keys (){if _ ,_egdba :=_gefaf [_effag .String ()];_egdba {return true ;};};return false ;};func (_fcbf *PdfWriter )makeOffSetReference (_fedfb int64 ){_ddbcg :=_d .Sprintf ("\u0073\u0074\u0061\u0072\u0074\u0078\u0072\u0065\u0066\u000a\u0025\u0064\u000a",_fedfb ); _fcbf .writeString (_ddbcg );_fcbf .writeString ("\u0025\u0025\u0045\u004f\u0046\u000a");}; // ToPdfObject implements interface PdfModel. func (_affe *PdfAnnotationStamp )ToPdfObject ()_dfg .PdfObject {_affe .PdfAnnotation .ToPdfObject ();_efbe :=_affe ._afae ;_dafa :=_efbe .PdfObject .(*_dfg .PdfObjectDictionary );_affe .appendToPdfDictionary (_dafa );_dafa .SetIfNotNil ("\u0053u\u0062\u0074\u0079\u0070\u0065",_dfg .MakeName ("\u0053\u0074\u0061m\u0070")); _dafa .SetIfNotNil ("\u004e\u0061\u006d\u0065",_affe .Name );return _efbe ;};func (_fddg *PdfReader )newPdfAnnotationSoundFromDict (_fage *_dfg .PdfObjectDictionary )(*PdfAnnotationSound ,error ){_efce :=PdfAnnotationSound {};_bddb ,_ceec :=_fddg .newPdfAnnotationMarkupFromDict (_fage ); if _ceec !=nil {return nil ,_ceec ;};_efce .PdfAnnotationMarkup =_bddb ;_efce .Name =_fage .Get ("\u004e\u0061\u006d\u0065");_efce .Sound =_fage .Get ("\u0053\u006f\u0075n\u0064");return &_efce ,nil ;}; // NewPdfColorPatternType3 returns an empty color shading pattern type 3 (Radial). func NewPdfColorPatternType3 ()*PdfColorPatternType3 {_cdbe :=&PdfColorPatternType3 {};return _cdbe }; // PdfColorspaceDeviceGray represents a grayscale colorspace. type PdfColorspaceDeviceGray struct{}; // ToPdfObject returns the PDF representation of the shading dictionary. func (_cceed *PdfShadingType2 )ToPdfObject ()_dfg .PdfObject {_cceed .PdfShading .ToPdfObject ();_eafbf ,_fgee :=_cceed .getShadingDict ();if _fgee !=nil {_egb .Log .Error ("\u0055\u006ea\u0062\u006c\u0065\u0020\u0074\u006f\u0020\u0061\u0063\u0063\u0065\u0073\u0073\u0020\u0073\u0068\u0061\u0064\u0069\u006e\u0067\u0020di\u0063\u0074"); return nil ;};if _eafbf ==nil {_egb .Log .Error ("\u0053\u0068\u0061\u0064in\u0067\u0020\u0064\u0069\u0063\u0074\u0020\u0069\u0073\u0020\u006e\u0069\u006c");return nil ;};if _cceed .Coords !=nil {_eafbf .Set ("\u0043\u006f\u006f\u0072\u0064\u0073",_cceed .Coords ); };if _cceed .Domain !=nil {_eafbf .Set ("\u0044\u006f\u006d\u0061\u0069\u006e",_cceed .Domain );};if _cceed .Function !=nil {if len (_cceed .Function )==1{_eafbf .Set ("\u0046\u0075\u006e\u0063\u0074\u0069\u006f\u006e",_cceed .Function [0].ToPdfObject ()); }else {_fcecff :=_dfg .MakeArray ();for _ ,_gbcade :=range _cceed .Function {_fcecff .Append (_gbcade .ToPdfObject ());};_eafbf .Set ("\u0046\u0075\u006e\u0063\u0074\u0069\u006f\u006e",_fcecff );};};if _cceed .Extend !=nil {_eafbf .Set ("\u0045\u0078\u0074\u0065\u006e\u0064",_cceed .Extend ); };return _cceed ._gdfdg ;}; // NewViewerPreferences returns a new ViewerPreferences object with // default empty values. func NewViewerPreferences ()*ViewerPreferences {return &ViewerPreferences {}};var _ pdfFont =(*pdfCIDFontType0 )(nil ); // C returns the value of the C component of the color. func (_baa *PdfColorCalRGB )C ()float64 {return _baa [2]}; // GetNumComponents returns the number of color components of the colorspace device. // Returns 3 for a Lab device. func (_ggdd *PdfColorspaceLab )GetNumComponents ()int {return 3}; // NewPdfColorPatternType2 returns an empty color shading pattern type 2 (Axial). func NewPdfColorPatternType2 ()*PdfColorPatternType2 {_dceeg :=&PdfColorPatternType2 {};return _dceeg ;}; // ToPdfOutlineItem returns a low level PdfOutlineItem object, // based on the current instance. func (_bgadf *OutlineItem )ToPdfOutlineItem ()(*PdfOutlineItem ,int64 ){_bebec :=NewPdfOutlineItem ();_bebec .Title =_dfg .MakeEncodedString (_bgadf .Title ,true );_bebec .Dest =_bgadf .Dest .ToPdfObject ();var _eaefd []*PdfOutlineItem ;var _bfeb int64 ; var _ddfca *PdfOutlineItem ;for _ ,_faeag :=range _bgadf .Entries {_gfbaa ,_dfbac :=_faeag .ToPdfOutlineItem ();_gfbaa .Parent =&_bebec .PdfOutlineTreeNode ;if _ddfca !=nil {_ddfca .Next =&_gfbaa .PdfOutlineTreeNode ;_gfbaa .Prev =&_ddfca .PdfOutlineTreeNode ; };_eaefd =append (_eaefd ,_gfbaa );_bfeb +=_dfbac ;_ddfca =_gfbaa ;};_fgaed :=len (_eaefd );_bfeb +=int64 (_fgaed );if _fgaed > 0{_bebec .First =&_eaefd [0].PdfOutlineTreeNode ;_bebec .Last =&_eaefd [_fgaed -1].PdfOutlineTreeNode ;_bebec .Count =&_bfeb ; };return _bebec ,_bfeb ;}; // AddPage adds a page to the PDF file. The new page should be an indirect object. func (_cgdag *PdfWriter )AddPage (page *PdfPage )error {const _fcca ="\u006d\u006f\u0064el\u003a\u0050\u0064\u0066\u0057\u0072\u0069\u0074\u0065\u0072\u002e\u0041\u0064\u0064\u0050\u0061\u0067\u0065";_geed :=_gccaa (page );_egb .Log .Trace ("\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"); _egb .Log .Trace ("\u0041p\u0070\u0065\u006e\u0064i\u006e\u0067\u0020\u0074\u006f \u0070a\u0067e\u0020\u006c\u0069\u0073\u0074\u0020\u0025T",_geed );_ccdgb ,_bcabg :=_dfg .GetIndirect (_geed );if !_bcabg {return _bd .New ("\u0070\u0061\u0067\u0065\u0020\u0073h\u006f\u0075\u006c\u0064\u0020\u0062\u0065\u0020\u0061\u006e\u0020\u0069\u006ed\u0069\u0072\u0065\u0063\u0074\u0020\u006fb\u006a\u0065\u0063\u0074"); };_egb .Log .Trace ("\u0025\u0073",_ccdgb );_egb .Log .Trace ("\u0025\u0073",_ccdgb .PdfObject );_dbecb ,_bcabg :=_dfg .GetDict (_ccdgb .PdfObject );if !_bcabg {return _bd .New ("\u0070\u0061\u0067e \u006f\u0062\u006a\u0065\u0063\u0074\u0020\u0073\u0068o\u0075l\u0064 \u0062e\u0020\u0061\u0020\u0064\u0069\u0063\u0074\u0069\u006f\u006e\u0061\u0072\u0079"); };_dffc ,_bcabg :=_dfg .GetName (_dbecb .Get ("\u0054\u0079\u0070\u0065"));if !_bcabg {return _d .Errorf ("\u0070\u0061\u0067\u0065\u0020\u0073\u0068\u006f\u0075\u006c\u0064\u0020\u0068\u0061\u0076\u0065\u0020\u0061\u0020\u0054y\u0070\u0065\u0020\u006b\u0065\u0079\u0020\u0077\u0069t\u0068\u0020\u0061\u0020\u0076\u0061\u006c\u0075\u0065\u0020\u006f\u0066\u0020t\u0079\u0070\u0065\u0020\u006e\u0061m\u0065\u0020\u0028%\u0054\u0029",_dbecb .Get ("\u0054\u0079\u0070\u0065")); };if _dffc .String ()!="\u0050\u0061\u0067\u0065"{return _bd .New ("\u0066\u0069e\u006c\u0064\u0020\u0054\u0079\u0070\u0065\u0020\u0021\u003d\u0020\u0050\u0061\u0067\u0065\u0020\u0028\u0052\u0065\u0071\u0075\u0069re\u0064\u0029");};_dgecg :=[]_dfg .PdfObjectName {"\u0052e\u0073\u006f\u0075\u0072\u0063\u0065s","\u004d\u0065\u0064\u0069\u0061\u0042\u006f\u0078","\u0043r\u006f\u0070\u0042\u006f\u0078","\u0052\u006f\u0074\u0061\u0074\u0065"}; _gbfee ,_aadef :=_dfg .GetIndirect (_dbecb .Get ("\u0050\u0061\u0072\u0065\u006e\u0074"));_egb .Log .Trace ("P\u0061g\u0065\u0020\u0050\u0061\u0072\u0065\u006e\u0074:\u0020\u0025\u0054\u0020(%\u0076\u0029",_dbecb .Get ("\u0050\u0061\u0072\u0065\u006e\u0074"),_aadef ); for _aadef {_egb .Log .Trace ("\u0050a\u0067e\u0020\u0050\u0061\u0072\u0065\u006e\u0074\u003a\u0020\u0025\u0054",_gbfee );_efcc ,_geafg :=_dfg .GetDict (_gbfee .PdfObject );if !_geafg {return _bd .New ("i\u006e\u0076\u0061\u006cid\u0020P\u0061\u0072\u0065\u006e\u0074 \u006f\u0062\u006a\u0065\u0063\u0074"); };for _ ,_dbadc :=range _dgecg {_egb .Log .Trace ("\u0046\u0069\u0065\u006c\u0064\u0020\u0025\u0073",_dbadc );if _dbecb .Get (_dbadc )!=nil {_egb .Log .Trace ("\u002d \u0070a\u0067\u0065\u0020\u0068\u0061s\u0020\u0061l\u0072\u0065\u0061\u0064\u0079");continue ; };if _aafdg :=_efcc .Get (_dbadc );_aafdg !=nil {_egb .Log .Trace ("\u0049\u006e\u0068\u0065ri\u0074\u0069\u006e\u0067\u0020\u0066\u0069\u0065\u006c\u0064\u0020\u0025\u0073",_dbadc );_dbecb .Set (_dbadc ,_aafdg );};};_gbfee ,_aadef =_dfg .GetIndirect (_efcc .Get ("\u0050\u0061\u0072\u0065\u006e\u0074")); _egb .Log .Trace ("\u004ee\u0078t\u0020\u0070\u0061\u0072\u0065\u006e\u0074\u003a\u0020\u0025\u0054",_efcc .Get ("\u0050\u0061\u0072\u0065\u006e\u0074"));};_egb .Log .Trace ("\u0054\u0072\u0061\u0076\u0065\u0072\u0073\u0061\u006c \u0064\u006f\u006e\u0065"); _dbecb .Set ("\u0050\u0061\u0072\u0065\u006e\u0074",_cgdag ._gdcdb );_ccdgb .PdfObject =_dbecb ;_abbbd ,_bcabg :=_dfg .GetDict (_cgdag ._gdcdb .PdfObject );if !_bcabg {return _bd .New ("\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0050\u0061g\u0065\u0073\u0020\u006f\u0062\u006a\u0020(\u006e\u006f\u0074\u0020\u0061\u0020\u0064\u0069\u0063\u0074\u0029"); };_feaab ,_bcabg :=_dfg .GetArray (_abbbd .Get ("\u004b\u0069\u0064\u0073"));if !_bcabg {return _bd .New ("\u0069\u006ev\u0061\u006c\u0069\u0064 \u0050\u0061g\u0065\u0073\u0020\u004b\u0069\u0064\u0073\u0020o\u0062\u006a\u0020\u0028\u006e\u006f\u0074\u0020\u0061\u006e\u0020\u0061r\u0072\u0061\u0079\u0029"); };_feaab .Append (_ccdgb );_cgdag ._cbcacc [_dbecb ]=struct{}{};_cgdag ._cbccc =append (_cgdag ._cbccc ,_ccdgb );_gggaf ,_bcabg :=_dfg .GetInt (_abbbd .Get ("\u0043\u006f\u0075n\u0074"));if !_bcabg {return _bd .New ("\u0069\u006e\u0076\u0061\u006c\u0069\u0064 \u0050\u0061\u0067e\u0073\u0020\u0043\u006fu\u006e\u0074\u0020\u006f\u0062\u006a\u0065\u0063\u0074\u0020\u0028\u006e\u006f\u0074\u0020\u0061\u006e\u0020\u0069\u006e\u0074\u0065\u0067\u0065\u0072\u0029"); };*_gggaf =*_gggaf +1;if page ._ggcgd ==nil {_bffe :=_gb .Track (_cgdag ._afacc ,_fcca ,_cgdag ._bdadb );if _bffe !=nil {return _bffe ;};}else {_gddaac :=_gb .Track (page ._ggcgd ._befaf ,_fcca ,page ._ggcgd ._aefda );if _gddaac !=nil {return _gddaac ; };};_cgdag .addObject (_ccdgb );_eabeb :=_cgdag .addObjects (_dbecb );if _eabeb !=nil {return _eabeb ;};return nil ;}; // GetNumComponents returns the number of color components (1 for Separation). func (_cgcc *PdfColorspaceSpecialSeparation )GetNumComponents ()int {return 1}; // AppendContentStream adds content stream by string. Appends to the last // contentstream instance if many. func (_gbbcd *PdfPage )AppendContentStream (contentStr string )error {_ddfda ,_dgcb :=_gbbcd .GetContentStreams ();if _dgcb !=nil {return _dgcb ;};if len (_ddfda )==0{_ddfda =[]string {contentStr };return _gbbcd .SetContentStreams (_ddfda ,_dfg .NewFlateEncoder ()); };var _gfgea _cca .Buffer ;_gfgea .WriteString (_ddfda [len (_ddfda )-1]);_gfgea .WriteString ("\u000a");_gfgea .WriteString (contentStr );_ddfda [len (_ddfda )-1]=_gfgea .String ();return _gbbcd .SetContentStreams (_ddfda ,_dfg .NewFlateEncoder ());}; // PdfSignatureReference represents a PDF signature reference dictionary and is used for signing via form signature fields. // (Section 12.8.1, Table 253 - Entries in a signature reference dictionary p. 469 in PDF32000_2008). type PdfSignatureReference struct{_bacgc *_dfg .PdfObjectDictionary ;Type *_dfg .PdfObjectName ;TransformMethod *_dfg .PdfObjectName ;TransformParams _dfg .PdfObject ;Data _dfg .PdfObject ;DigestMethod *_dfg .PdfObjectName ;}; // GetParamsDict returns *core.PdfObjectDictionary with a set of basic image parameters. func (_gddca *Image )GetParamsDict ()*_dfg .PdfObjectDictionary {_cegef :=_dfg .MakeDict ();_cegef .Set ("\u0057\u0069\u0064t\u0068",_dfg .MakeInteger (_gddca .Width ));_cegef .Set ("\u0048\u0065\u0069\u0067\u0068\u0074",_dfg .MakeInteger (_gddca .Height )); _cegef .Set ("\u0043o\u006co\u0072\u0043\u006f\u006d\u0070\u006f\u006e\u0065\u006e\u0074\u0073",_dfg .MakeInteger (int64 (_gddca .ColorComponents )));_cegef .Set ("\u0042\u0069t\u0073\u0050\u0065r\u0043\u006f\u006d\u0070\u006f\u006e\u0065\u006e\u0074",_dfg .MakeInteger (_gddca .BitsPerComponent )); return _cegef ;}; // ToPdfObject implements interface PdfModel. func (_faa *PdfActionLaunch )ToPdfObject ()_dfg .PdfObject {_faa .PdfAction .ToPdfObject ();_afb :=_faa ._fe ;_fga :=_afb .PdfObject .(*_dfg .PdfObjectDictionary );_fga .SetIfNotNil ("\u0053",_dfg .MakeName (string (ActionTypeLaunch )));if _faa .F !=nil {_fga .Set ("\u0046",_faa .F .ToPdfObject ()); };_fga .SetIfNotNil ("\u0057\u0069\u006e",_faa .Win );_fga .SetIfNotNil ("\u004d\u0061\u0063",_faa .Mac );_fga .SetIfNotNil ("\u0055\u006e\u0069\u0078",_faa .Unix );_fga .SetIfNotNil ("\u004ee\u0077\u0057\u0069\u006e\u0064\u006fw",_faa .NewWindow );return _afb ; };func _bfegf ()string {return _egb .Version }; // NewOutlineDest returns a new outline destination which can be used // with outline items. func NewOutlineDest (page int64 ,x ,y float64 )OutlineDest {return OutlineDest {Page :page ,Mode :"\u0058\u0059\u005a",X :x ,Y :y };}; // PageProcessCallback callback function used in page loading // that could be used to modify the page content. // // If an error is returned, the `ToWriter` process would fail. // // This callback, if defined, will take precedence over `PageCallback` callback. type PageProcessCallback func (_becc int ,_ccgdf *PdfPage )error ;func (_bdaeb *PdfSignature )extractChainFromPKCS7 ()([]*_de .Certificate ,error ){_acgg ,_dbcdb :=_ec .Parse (_bdaeb .Contents .Bytes ());if _dbcdb !=nil {return nil ,_dbcdb ;};return _acgg .Certificates ,nil ; }; // A returns the value of the A component of the color. func (_dagf *PdfColorCalRGB )A ()float64 {return _dagf [0]}; // ToPdfObject converts the font to a PDF representation. func (_eged *pdfFontType0 )ToPdfObject ()_dfg .PdfObject {if _eged ._gfcf ==nil {_eged ._gfcf =&_dfg .PdfIndirectObject {};};_egcb :=_eged .baseFields ().asPdfObjectDictionary ("\u0054\u0079\u0070e\u0030");_eged ._gfcf .PdfObject =_egcb ;if _eged .Encoding !=nil {_egcb .Set ("\u0045\u006e\u0063\u006f\u0064\u0069\u006e\u0067",_eged .Encoding ); }else if _eged ._gbaf !=nil {_egcb .Set ("\u0045\u006e\u0063\u006f\u0064\u0069\u006e\u0067",_eged ._gbaf .ToPdfObject ());};if _eged .DescendantFont !=nil {_egcb .Set ("\u0044e\u0073c\u0065\u006e\u0064\u0061\u006e\u0074\u0046\u006f\u006e\u0074\u0073",_dfg .MakeArray (_eged .DescendantFont .ToPdfObject ())); };return _eged ._gfcf ;};type fontFile struct{_agcb string ;_adfbf string ;_adbgd _ff .SimpleEncoder ;}; // IsSimple returns true if `font` is a simple font. func (_cfcdf *PdfFont )IsSimple ()bool {_ ,_eaee :=_cfcdf ._fab .(*pdfFontSimple );return _eaee }; // Set applies flag fl to the flag's bitmask and returns the combined flag. func (_dbeag FieldFlag )Set (fl FieldFlag )FieldFlag {return FieldFlag (_dbeag .Mask ()|fl .Mask ())};var (ArtifactSubtypeHeader ArtifactSubtype ="\u0048\u0065\u0061\u0064\u0065\u0072";ArtifactSubtypeFooter ArtifactSubtype ="\u0046\u006f\u006f\u0074\u0065\u0072"; ArtifactSubtypeWatermark ArtifactSubtype ="\u0057a\u0074\u0065\u0072\u006d\u0061\u0072k";);func (_gbae *PdfColorspaceSpecialPattern )String ()string {return "\u0050a\u0074\u0074\u0065\u0072\u006e";}; // SetContentStreams sets the content streams based on a string array. Will make // 1 object stream for each string and reference from the page Contents. // Each stream will be encoded using the encoding specified by the StreamEncoder, // if empty, will use identity encoding (raw data). func (_cbfea *PdfPage )SetContentStreams (cStreams []string ,encoder _dfg .StreamEncoder )error {if len (cStreams )==0{_cbfea .Contents =nil ;return nil ;};if encoder ==nil {encoder =_dfg .NewRawEncoder ();};var _beabf []*_dfg .PdfObjectStream ;for _ ,_efaaa :=range cStreams {_gddeb :=&_dfg .PdfObjectStream {}; _faede :=encoder .MakeStreamDict ();_fdca ,_cedae :=encoder .EncodeBytes ([]byte (_efaaa ));if _cedae !=nil {return _cedae ;};_faede .Set ("\u004c\u0065\u006e\u0067\u0074\u0068",_dfg .MakeInteger (int64 (len (_fdca ))));_gddeb .PdfObjectDictionary =_faede ; _gddeb .Stream =_fdca ;_beabf =append (_beabf ,_gddeb );};if len (_beabf )==1{_cbfea .Contents =_beabf [0];}else {_fgcgd :=_dfg .MakeArray ();for _ ,_ceefa :=range _beabf {_fgcgd .Append (_ceefa );};_cbfea .Contents =_fgcgd ;};return nil ;}; // PdfActionJavaScript represents a javaScript action. type PdfActionJavaScript struct{*PdfAction ;JS _dfg .PdfObject ;}; // NewPdfActionRendition returns a new "rendition" action. func NewPdfActionRendition ()*PdfActionRendition {_cdg :=NewPdfAction ();_ccba :=&PdfActionRendition {};_ccba .PdfAction =_cdg ;_cdg .SetContext (_ccba );return _ccba ;}; // WriteToFile writes the output PDF to file. func (_bfaaf *PdfWriter )WriteToFile (outputFilePath string )error {_beaea ,_gadcd :=_ga .Create (outputFilePath );if _gadcd !=nil {return _gadcd ;};defer _beaea .Close ();return _bfaaf .Write (_beaea );}; // GetContext returns the PdfField context which is the more specific field data type, e.g. PdfFieldButton // for a button field. func (_bbcc *PdfField )GetContext ()PdfModel {return _bbcc ._agcfe }; // ToPdfObject returns an indirect object containing the signature field dictionary. func (_cebde *PdfFieldSignature )ToPdfObject ()_dfg .PdfObject {if _cebde .PdfAnnotationWidget !=nil {_cebde .PdfAnnotationWidget .ToPdfObject ();};_cebde .PdfField .ToPdfObject ();_cdcfe :=_cebde ._caaa ;_fgbd :=_cdcfe .PdfObject .(*_dfg .PdfObjectDictionary ); _fgbd .SetIfNotNil ("\u0046\u0054",_dfg .MakeName ("\u0053\u0069\u0067"));_fgbd .SetIfNotNil ("\u004c\u006f\u0063\u006b",_cebde .Lock );_fgbd .SetIfNotNil ("\u0053\u0056",_cebde .SV );if _cebde .V !=nil {_fgbd .SetIfNotNil ("\u0056",_cebde .V .ToPdfObject ()); };return _cdcfe ;}; // 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 (_dgbace *PdfReader )CheckAccessRights (password []byte )(bool ,_fc .Permissions ,error ){return _dgbace ._agbcd .CheckAccessRights (password );}; // SetDSS sets the DSS dictionary (ETSI TS 102 778-4 V1.1.1) of the current // document revision. func (_debd *PdfAppender )SetDSS (dss *DSS ){if dss !=nil {_debd .updateObjectsDeep (dss .ToPdfObject (),nil );};_debd ._caagc =dss ;}; // GetFontByName gets the font specified by keyName. Returns the PdfObject which // the entry refers to. Returns a bool value indicating whether or not the entry was found. func (_beabd *PdfPageResources )GetFontByName (keyName _dfg .PdfObjectName )(_dfg .PdfObject ,bool ){if _beabd .Font ==nil {return nil ,false ;};_gbeb ,_edecb :=_dfg .TraceToDirectObject (_beabd .Font ).(*_dfg .PdfObjectDictionary );if !_edecb {_egb .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0046\u006f\u006e\u0074\u0020\u006e\u006f\u0074\u0020\u0061\u0020\u0064\u0069\u0063\u0074\u0069\u006fn\u0061\u0072\u0079\u0021\u0020(\u0067\u006ft\u0020\u0025\u0054\u0029",_dfg .TraceToDirectObject (_beabd .Font )); return nil ,false ;};if _fgbcd :=_gbeb .Get (keyName );_fgbcd !=nil {return _fgbcd ,true ;};return nil ,false ;}; // SetHideWindowUI sets the value of the hideWindowUI flag. func (_ddgbe *ViewerPreferences )SetHideWindowUI (hideWindowUI bool ){_ddgbe ._dgbgf =&hideWindowUI }; // NonFullScreenPageMode represents the document’s page mode when exiting // full-screen mode. type NonFullScreenPageMode string ;func _ggadd (_abca *_dfg .PdfObjectDictionary )(*PdfFieldChoice ,error ){_faggd :=&PdfFieldChoice {};_faggd .Opt ,_ =_dfg .GetArray (_abca .Get ("\u004f\u0070\u0074"));_faggd .TI ,_ =_dfg .GetInt (_abca .Get ("\u0054\u0049")); _faggd .I ,_ =_dfg .GetArray (_abca .Get ("\u0049"));return _faggd ,nil ;}; // ColorFromFloats returns a new PdfColor based on the input slice of color // components. The slice should contain three elements representing the // L (range 0-100), A (range -100-100) and B (range -100-100) components of // the color. func (_cccea *PdfColorspaceLab )ColorFromFloats (vals []float64 )(PdfColor ,error ){if len (vals )!=3{return nil ,_bd .New ("r\u0061\u006e\u0067\u0065\u0020\u0063\u0068\u0065\u0063\u006b");};_dfbf :=vals [0];if _dfbf < 0.0||_dfbf > 100.0{_egb .Log .Debug ("\u004c\u0020\u006f\u0075\u0074\u0020\u006f\u0066\u0020\u0072\u0061\u006e\u0067e\u0020\u0028\u0067\u006f\u0074\u0020%\u0076\u0020\u0073\u0068\u006f\u0075\u006c\u0064\u0020\u0062\u0065\u0020\u0030-\u0031\u0030\u0030\u0029",_dfbf ); return nil ,ErrColorOutOfRange ;};_gcba :=vals [1];_fcbg :=float64 (-100);_egbe :=float64 (100);if len (_cccea .Range )> 1{_fcbg =_cccea .Range [0];_egbe =_cccea .Range [1];};if _gcba < _fcbg ||_gcba > _egbe {_egb .Log .Debug ("\u0041\u0020\u006f\u0075\u0074\u0020\u006f\u0066\u0020\u0072\u0061\u006e\u0067e\u0020\u0028\u0067\u006f\u0074\u0020%\u0076\u003b\u0020\u0072\u0061\u006e\u0067\u0065\u0020\u0025\u0076\u0020\u0074o\u0020\u0025\u0076\u0029",_gcba ,_fcbg ,_egbe ); return nil ,ErrColorOutOfRange ;};_gabac :=vals [2];_fged :=float64 (-100);_fecd :=float64 (100);if len (_cccea .Range )> 3{_fged =_cccea .Range [2];_fecd =_cccea .Range [3];};if _gabac < _fged ||_gabac > _fecd {_egb .Log .Debug ("\u0062\u0020\u006f\u0075\u0074\u0020\u006f\u0066\u0020\u0072\u0061\u006e\u0067e\u0020\u0028\u0067\u006f\u0074\u0020%\u0076\u003b\u0020\u0072\u0061\u006e\u0067\u0065\u0020\u0025\u0076\u0020\u0074o\u0020\u0025\u0076\u0029",_gabac ,_fged ,_fecd ); return nil ,ErrColorOutOfRange ;};_agca :=NewPdfColorLab (_dfbf ,_gcba ,_gabac );return _agca ,nil ;};type pdfFont interface{_bf .Font ; // ToPdfObject returns a PDF representation of the font and implements interface Model. ToPdfObject ()_dfg .PdfObject ;getFontDescriptor ()*PdfFontDescriptor ;baseFields ()*fontCommon ;};func (_aae *PdfReader )newPdfActionGoTo3DViewFromDict (_eca *_dfg .PdfObjectDictionary )(*PdfActionGoTo3DView ,error ){return &PdfActionGoTo3DView {TA :_eca .Get ("\u0054\u0041"),V :_eca .Get ("\u0056")},nil ; };var _acaaf =map[string ]string {"\u0053\u0079\u006d\u0062\u006f\u006c":"\u0053\u0079\u006d\u0062\u006f\u006c\u0045\u006e\u0063o\u0064\u0069\u006e\u0067","\u005a\u0061\u0070f\u0044\u0069\u006e\u0067\u0062\u0061\u0074\u0073":"Z\u0061p\u0066\u0044\u0069\u006e\u0067\u0062\u0061\u0074s\u0045\u006e\u0063\u006fdi\u006e\u0067"}; // PdfColorspaceDeviceN represents a DeviceN color space. DeviceN color spaces are similar to Separation color // spaces, except they can contain an arbitrary number of color components. /* Format: [/DeviceN names alternateSpace tintTransform] or: [/DeviceN names alternateSpace tintTransform attributes] */ type PdfColorspaceDeviceN struct{ColorantNames *_dfg .PdfObjectArray ;AlternateSpace PdfColorspace ;TintTransform PdfFunction ;Attributes *PdfColorspaceDeviceNAttributes ;_fbae *_dfg .PdfIndirectObject ;}; // SetPage directly sets the page object. func (_agcge *KDict )SetPage (page *_dfg .PdfIndirectObject ){_agcge .Pg =page }; // SetCenterWindow sets the value of the centerWindow flag. func (_dfbce *ViewerPreferences )SetCenterWindow (centerWindow bool ){_dfbce ._ebdgb =¢erWindow }; // Add appends an outline item as a child of the current outline item. func (_bgdfe *OutlineItem )Add (item *OutlineItem ){_bgdfe .Entries =append (_bgdfe .Entries ,item )}; // GetXHeight returns the XHeight of the font `descriptor`. func (_beaf *PdfFontDescriptor )GetXHeight ()(float64 ,error ){return _dfg .GetNumberAsFloat (_beaf .XHeight );};func (_fbege *PdfWriter )writeXRefStreams (_gagge int ,_gebbdd int64 )error {_fgccc :=_gagge +1;_fbege ._effg [_fgccc ]=crossReference {Type :1,ObjectNumber :_fgccc ,Offset :_gebbdd }; _cbgff :=_cca .NewBuffer (nil );_faggc :=_dfg .MakeArray ();for _dffaf :=0;_dffaf <=_gagge ;{for ;_dffaf <=_gagge ;_dffaf ++{_cbcg ,_bfgafg :=_fbege ._effg [_dffaf ];if _bfgafg &&(!_fbege ._cddgg ||_fbege ._cddgg &&(_cbcg .Type ==1&&_cbcg .Offset >=_fbege ._fgedaa ||_cbcg .Type ==0)){break ; };};var _dddbe int ;for _dddbe =_dffaf +1;_dddbe <=_gagge ;_dddbe ++{_bcgaf ,_gbced :=_fbege ._effg [_dddbe ];if _gbced &&(!_fbege ._cddgg ||_fbege ._cddgg &&(_bcgaf .Type ==1&&_bcgaf .Offset > _fbege ._fgedaa )){continue ;};break ;};_faggc .Append (_dfg .MakeInteger (int64 (_dffaf )),_dfg .MakeInteger (int64 (_dddbe -_dffaf ))); for _adcb :=_dffaf ;_adcb < _dddbe ;_adcb ++{_ecbee :=_fbege ._effg [_adcb ];switch _ecbee .Type {case 0:_bg .Write (_cbgff ,_bg .BigEndian ,byte (0));_bg .Write (_cbgff ,_bg .BigEndian ,uint32 (0));_bg .Write (_cbgff ,_bg .BigEndian ,uint16 (0xFFFF)); case 1:_bg .Write (_cbgff ,_bg .BigEndian ,byte (1));_bg .Write (_cbgff ,_bg .BigEndian ,uint32 (_ecbee .Offset ));_bg .Write (_cbgff ,_bg .BigEndian ,uint16 (_ecbee .Generation ));case 2:_bg .Write (_cbgff ,_bg .BigEndian ,byte (2));_bg .Write (_cbgff ,_bg .BigEndian ,uint32 (_ecbee .ObjectNumber )); _bg .Write (_cbgff ,_bg .BigEndian ,uint16 (_ecbee .Index ));};};_dffaf =_dddbe +1;};_dbefb ,_faba :=_dfg .MakeStream (_cbgff .Bytes (),_dfg .NewFlateEncoder ());if _faba !=nil {return _faba ;};_dbefb .ObjectNumber =int64 (_fgccc );_dbefb .PdfObjectDictionary .Set ("\u0054\u0079\u0070\u0065",_dfg .MakeName ("\u0058\u0052\u0065\u0066")); _dbefb .PdfObjectDictionary .Set ("\u0057",_dfg .MakeArray (_dfg .MakeInteger (1),_dfg .MakeInteger (4),_dfg .MakeInteger (2)));_dbefb .PdfObjectDictionary .Set ("\u0049\u006e\u0064e\u0078",_faggc );_dbefb .PdfObjectDictionary .Set ("\u0053\u0069\u007a\u0065",_dfg .MakeInteger (int64 (_fgccc ))); _dbefb .PdfObjectDictionary .Set ("\u0049\u006e\u0066\u006f",_fbege ._acace );_dbefb .PdfObjectDictionary .Set ("\u0052\u006f\u006f\u0074",_fbege ._cbfagb );if _fbege ._cddgg &&_fbege ._baeag > 0{_dbefb .PdfObjectDictionary .Set ("\u0050\u0072\u0065\u0076",_dfg .MakeInteger (_fbege ._baeag )); };if _fbege ._gbdfc !=nil {_dbefb .Set ("\u0045n\u0063\u0072\u0079\u0070\u0074",_fbege ._bbbecb );};if _fbege ._beccf ==nil &&_fbege ._baeaee !=""&&_fbege ._dbddd !=""{_fbege ._beccf =_dfg .MakeArray (_dfg .MakeHexString (_fbege ._baeaee ),_dfg .MakeHexString (_fbege ._dbddd )); };if _fbege ._beccf !=nil {_egb .Log .Trace ("\u0049d\u0073\u003a\u0020\u0025\u0073",_fbege ._beccf );_dbefb .Set ("\u0049\u0044",_fbege ._beccf );};_fbege .writeObject (int (_dbefb .ObjectNumber ),_dbefb );return nil ;}; // PdfSignature represents a PDF signature dictionary and is used for signing via form signature fields. // (Section 12.8, Table 252 - Entries in a signature dictionary p. 475 in PDF32000_2008). type PdfSignature struct{Handler SignatureHandler ;_fdeb *_dfg .PdfIndirectObject ; // Type: Sig/DocTimeStamp Type *_dfg .PdfObjectName ;Filter *_dfg .PdfObjectName ;SubFilter *_dfg .PdfObjectName ;Contents *_dfg .PdfObjectString ;Cert _dfg .PdfObject ;ByteRange *_dfg .PdfObjectArray ;Reference *_dfg .PdfObjectArray ;Changes *_dfg .PdfObjectArray ;Name *_dfg .PdfObjectString ; M *_dfg .PdfObjectString ;Location *_dfg .PdfObjectString ;Reason *_dfg .PdfObjectString ;ContactInfo *_dfg .PdfObjectString ;R *_dfg .PdfObjectInteger ;V *_dfg .PdfObjectInteger ;PropBuild *_dfg .PdfObjectDictionary ;PropAuthTime *_dfg .PdfObjectInteger ; PropAuthType *_dfg .PdfObjectName ;}; // ColorFromPdfObjects loads the color from PDF objects. // The first objects (if present) represent the color in underlying colorspace. The last one represents // the name of the pattern. func (_fagd *PdfColorspaceSpecialPattern )ColorFromPdfObjects (objects []_dfg .PdfObject )(PdfColor ,error ){if len (objects )< 1{return nil ,_bd .New ("\u0069\u006e\u0076\u0061l\u0069\u0064\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020o\u0066 \u0070\u0061\u0072\u0061\u006d\u0065\u0074e\u0072\u0073"); };_fgfe :=&PdfColorPattern {};_bgde ,_gbdeb :=objects [len (objects )-1].(*_dfg .PdfObjectName );if !_gbdeb {_egb .Log .Debug ("\u0050\u0061\u0074\u0074\u0065\u0072\u006e\u0020\u006e\u0061\u006d\u0065\u0020\u006e\u006ft\u0020a\u0020\u006e\u0061\u006d\u0065\u0020\u0028\u0067\u006f\u0074\u0020\u0025\u0054\u0029",objects [len (objects )-1]); return nil ,ErrTypeCheck ;};_fgfe .PatternName =*_bgde ;if len (objects )> 1{_bbeb :=objects [0:len (objects )-1];if _fagd .UnderlyingCS ==nil {_egb .Log .Debug ("P\u0061\u0074t\u0065\u0072\u006e\u0020\u0063\u006f\u006c\u006f\u0072\u0020\u0077\u0069\u0074\u0068\u0020\u0064\u0065\u0066\u0069\u006ee\u0064\u0020\u0063\u006f\u006c\u006f\u0072\u0020\u0063\u006f\u006d\u0070\u006f\u006e\u0065\u006et\u0073\u0020\u0062\u0075\u0074\u0020\u0075\u006e\u0064\u0065\u0072\u006c\u0079i\u006e\u0067\u0020\u0063\u0073\u0020\u006d\u0069\u0073\u0073\u0069n\u0067"); return nil ,_bd .New ("\u0075n\u0064\u0065\u0072\u006cy\u0069\u006e\u0067\u0020\u0043S\u0020n\u006ft\u0020\u0064\u0065\u0066\u0069\u006e\u0065d");};_bbfc ,_bgdgd :=_fagd .UnderlyingCS .ColorFromPdfObjects (_bbeb );if _bgdgd !=nil {_egb .Log .Debug ("\u0045\u0052R\u004f\u0052\u003a\u0020\u0055n\u0061\u0062\u006c\u0065\u0020t\u006f\u0020\u0063\u006f\u006e\u0076\u0065\u0072\u0074\u0020\u0063\u006f\u006c\u006f\u0072\u0020\u0076\u0069\u0061\u0020\u0075\u006e\u0064\u0065\u0072\u006c\u0079\u0069\u006e\u0067\u0020\u0063\u0073\u003a\u0020\u0025\u0076",_bgdgd ); return nil ,_bgdgd ;};_fgfe .Color =_bbfc ;};return _fgfe ,nil ;};func (_bgfaa fontCommon )isCIDFont ()bool {if _bgfaa ._gdab ==""{_egb .Log .Debug ("\u0045\u0052\u0052\u004f\u0052:\u0020\u0069\u0073\u0043\u0049\u0044\u0046\u006f\u006e\u0074\u002e\u0020\u0063o\u006e\u0074\u0065\u0078\u0074\u0020\u0069\u0073\u0020\u006e\u0069\u006c\u002e\u0020\u0066\u006f\u006e\u0074\u003d\u0025\u0073",_bgfaa ); };_gfge :=false ;switch _bgfaa ._gdab {case "\u0054\u0079\u0070e\u0030","\u0043\u0049\u0044F\u006f\u006e\u0074\u0054\u0079\u0070\u0065\u0030","\u0043\u0049\u0044F\u006f\u006e\u0074\u0054\u0079\u0070\u0065\u0032":_gfge =true ;};_egb .Log .Trace ("i\u0073\u0043\u0049\u0044\u0046\u006fn\u0074\u003a\u0020\u0069\u0073\u0043\u0049\u0044\u003d%\u0074\u0020\u0066o\u006et\u003d\u0025\u0073",_gfge ,_bgfaa ); return _gfge ;};func _dbdc (_caggg *fontCommon )*pdfFontType0 {return &pdfFontType0 {fontCommon :*_caggg }};func (_egdda *PdfWriter )writeOutlines ()error {if _egdda ._fdged ==nil {return nil ;};_egb .Log .Trace ("\u004f\u0075t\u006c\u0069\u006ee\u0054\u0072\u0065\u0065\u003a\u0020\u0025\u002b\u0076",_egdda ._fdged ); _bdcba :=_egdda ._fdged .ToPdfObject ();_egb .Log .Trace ("\u004fu\u0074\u006c\u0069\u006e\u0065\u0073\u003a\u0020\u0025\u002b\u0076 \u0028\u0025\u0054\u002c\u0020\u0070\u003a\u0025\u0070\u0029",_bdcba ,_bdcba ,_bdcba );_egdda ._acgcc .Set ("\u004f\u0075\u0074\u006c\u0069\u006e\u0065\u0073",_bdcba ); _ddaeg :=_egdda .addObjects (_bdcba );if _ddaeg !=nil {return _ddaeg ;};return nil ;}; // Enable LTV enables the specified signature. The signing certificate // chain is extracted from the signature dictionary. Optionally, additional // certificates can be specified through the `extraCerts` parameter. // The LTV client attempts to build the certificate chain up to a trusted root // by downloading any missing certificates. func (_ggeb *LTV )Enable (sig *PdfSignature ,extraCerts []*_de .Certificate )error {if _eacfa :=_ggeb .validateSig (sig );_eacfa !=nil {return _eacfa ;};_gecd ,_dgccb :=_ggeb .generateVRIKey (sig );if _dgccb !=nil {return _dgccb ;};if _ ,_bcaaa :=_ggeb ._gaggb .VRI [_gecd ]; _bcaaa &&_ggeb .SkipExisting {return nil ;};_ccga ,_dgccb :=sig .GetCerts ();if _dgccb !=nil {return _dgccb ;};return _ggeb .enable (_ccga ,extraCerts ,_gecd );}; // ToPdfObject implements interface PdfModel. func (_gcg *PdfActionMovie )ToPdfObject ()_dfg .PdfObject {_gcg .PdfAction .ToPdfObject ();_decg :=_gcg ._fe ;_gge :=_decg .PdfObject .(*_dfg .PdfObjectDictionary );_gge .SetIfNotNil ("\u0053",_dfg .MakeName (string (ActionTypeMovie )));_gge .SetIfNotNil ("\u0041\u006e\u006e\u006f\u0074\u0061\u0074\u0069\u006f\u006e",_gcg .Annotation ); _gge .SetIfNotNil ("\u0054",_gcg .T );_gge .SetIfNotNil ("\u004fp\u0065\u0072\u0061\u0074\u0069\u006fn",_gcg .Operation );return _decg ;}; // GenerateKDict generates K Dictionary based on existing Annotation type. func (_ffg *PdfAnnotation )GenerateKDict ()*KDict {if _ffg ==nil {return nil ;};_gcc :=NewKDictionary ();_gcc .S =_dfg .MakeName (string (StructureTypeAnnot ));_gcc .AddRefChild (_ffg ._afae );return _gcc ;};func (_edgb *PdfColorspaceDeviceGray )String ()string {return "\u0044\u0065\u0076\u0069\u0063\u0065\u0047\u0072\u0061\u0079"; };func _dfce (_gcega *_dfg .PdfIndirectObject ,_dbea *_dfg .PdfObjectDictionary )(*DSS ,error ){if _gcega ==nil {_gcega =_dfg .MakeIndirectObject (nil );};_gcega .PdfObject =_dfg .MakeDict ();_abgf :=map[string ]*VRI {};if _gaddb ,_deea :=_dfg .GetDict (_dbea .Get ("\u0056\u0052\u0049")); _deea {for _ ,_bdfg :=range _gaddb .Keys (){if _gffea ,_abce :=_dfg .GetDict (_gaddb .Get (_bdfg ));_abce {_abgf [_af .ToUpper (_bdfg .String ())]=_gccdg (_gffea );};};};return &DSS {Certs :_fccef (_dbea .Get ("\u0043\u0065\u0072t\u0073")),OCSPs :_fccef (_dbea .Get ("\u004f\u0043\u0053P\u0073")),CRLs :_fccef (_dbea .Get ("\u0043\u0052\u004c\u0073")),VRI :_abgf ,_beab :_gcega },nil ; }; // ToPdfObject implements interface PdfModel. func (_gdgc *PdfAnnotationLink )ToPdfObject ()_dfg .PdfObject {_gdgc .PdfAnnotation .ToPdfObject ();_begb :=_gdgc ._afae ;_ecca :=_begb .PdfObject .(*_dfg .PdfObjectDictionary );_ecca .SetIfNotNil ("\u0053u\u0062\u0074\u0079\u0070\u0065",_dfg .MakeName ("\u004c\u0069\u006e\u006b")); if _gdgc ._gdc !=nil &&_gdgc ._gdc ._bdb !=nil {_ecca .Set ("\u0041",_gdgc ._gdc ._bdb .ToPdfObject ());}else if _gdgc .A !=nil {_ecca .Set ("\u0041",_gdgc .A );};_ecca .SetIfNotNil ("\u0044\u0065\u0073\u0074",_gdgc .Dest );_ecca .SetIfNotNil ("\u0048",_gdgc .H ); _ecca .SetIfNotNil ("\u0050\u0041",_gdgc .PA );_ecca .SetIfNotNil ("\u0051\u0075\u0061\u0064\u0050\u006f\u0069\u006e\u0074\u0073",_gdgc .QuadPoints );_ecca .SetIfNotNil ("\u0042\u0053",_gdgc .BS );return _begb ;}; // PdfColorspaceLab is a L*, a*, b* 3 component colorspace. type PdfColorspaceLab struct{WhitePoint []float64 ;BlackPoint []float64 ;Range []float64 ;_abbf *_dfg .PdfIndirectObject ;}; // GetContentStreamWithEncoder returns the pattern cell's content stream and its encoder func (_bcgbg *PdfTilingPattern )GetContentStreamWithEncoder ()([]byte ,_dfg .StreamEncoder ,error ){_adbdgf ,_edebf :=_bcgbg ._adcec .(*_dfg .PdfObjectStream );if !_edebf {_egb .Log .Debug ("\u0054\u0069l\u0069\u006e\u0067\u0020\u0070\u0061\u0074\u0074\u0065\u0072\u006e\u0020\u0063\u006f\u006e\u0074\u0061\u0069\u006e\u0065\u0072\u0020\u006e\u006f\u0074\u0020\u0061\u0020\u0073\u0074\u0072\u0065\u0061\u006d\u0020\u0028\u0067\u006f\u0074\u0020\u0025\u0054\u0029",_bcgbg ._adcec ); return nil ,nil ,_dfg .ErrTypeError ;};_abegc ,_bcfc :=_dfg .DecodeStream (_adbdgf );if _bcfc !=nil {_egb .Log .Debug ("\u0046\u0061\u0069l\u0065\u0064\u0020\u0064e\u0063\u006f\u0064\u0069\u006e\u0067\u0020s\u0074\u0072\u0065\u0061\u006d\u002c\u0020\u0065\u0072\u0072\u003a\u0020\u0025\u0076",_bcfc ); return nil ,nil ,_bcfc ;};_gdege ,_bcfc :=_dfg .NewEncoderFromStream (_adbdgf );if _bcfc !=nil {_egb .Log .Debug ("F\u0061\u0069\u006c\u0065\u0064\u0020f\u0069\u006e\u0064\u0069\u006e\u0067 \u0064\u0065\u0063\u006f\u0064\u0069\u006eg\u0020\u0065\u006e\u0063\u006f\u0064\u0065\u0072\u003a\u0020%\u0076",_bcfc ); return nil ,nil ,_bcfc ;};return _abegc ,_gdege ,nil ;}; // Duplex represents the paper handling option that shall be used when printing // the file from the print dialog. type Duplex string ; // NewPdfPageResourcesFromDict creates and returns a new PdfPageResources object // from the input dictionary. func NewPdfPageResourcesFromDict (dict *_dfg .PdfObjectDictionary )(*PdfPageResources ,error ){_degbg :=NewPdfPageResources ();if _accd :=dict .Get ("\u0045x\u0074\u0047\u0053\u0074\u0061\u0074e");_accd !=nil {_degbg .ExtGState =_accd ;};if _ecdff :=dict .Get ("\u0043\u006f\u006c\u006f\u0072\u0053\u0070\u0061\u0063\u0065"); _ecdff !=nil &&!_dfg .IsNullObject (_ecdff ){_degbg .ColorSpace =_ecdff ;};if _gcgfd :=dict .Get ("\u0050a\u0074\u0074\u0065\u0072\u006e");_gcgfd !=nil {_degbg .Pattern =_gcgfd ;};if _acdf :=dict .Get ("\u0053h\u0061\u0064\u0069\u006e\u0067");_acdf !=nil {_degbg .Shading =_acdf ; };if _efcdf :=dict .Get ("\u0058O\u0062\u006a\u0065\u0063\u0074");_efcdf !=nil {_degbg .XObject =_efcdf ;};if _ffgec :=_dfg .ResolveReference (dict .Get ("\u0046\u006f\u006e\u0074"));_ffgec !=nil {_degbg .Font =_ffgec ;};if _egbb :=dict .Get ("\u0050r\u006f\u0063\u0053\u0065\u0074"); _egbb !=nil {_degbg .ProcSet =_egbb ;};if _aagfe :=dict .Get ("\u0050\u0072\u006f\u0070\u0065\u0072\u0074\u0069\u0065\u0073");_aagfe !=nil {_degbg .Properties =_aagfe ;};return _degbg ,nil ;};func (_gddcg *PdfPage )getParentResources ()(*PdfPageResources ,error ){_afad :=_gddcg .Parent ; for _afad !=nil {_gegdf ,_baafb :=_dfg .GetDict (_afad );if !_baafb {_egb .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0069\u006e\u0076\u0061l\u0069\u0064\u0020\u0070\u0061\u0072\u0065\u006e\u0074\u0020n\u006f\u0064\u0065");return nil ,_bd .New ("i\u006e\u0076\u0061\u006cid\u0020p\u0061\u0072\u0065\u006e\u0074 \u006f\u0062\u006a\u0065\u0063\u0074"); };if _bgbde :=_gegdf .Get ("\u0052e\u0073\u006f\u0075\u0072\u0063\u0065s");_bgbde !=nil {_efcae ,_afccd :=_dfg .GetDict (_bgbde );if !_afccd {return nil ,_bd .New ("i\u006e\u0076\u0061\u006cid\u0020r\u0065\u0073\u006f\u0075\u0072c\u0065\u0020\u0064\u0069\u0063\u0074"); };_gaac ,_gegfc :=NewPdfPageResourcesFromDict (_efcae );if _gegfc !=nil {return nil ,_gegfc ;};return _gaac ,nil ;};_afad =_gegdf .Get ("\u0050\u0061\u0072\u0065\u006e\u0074");};return nil ,nil ;};func (_afaf *PdfReader )newPdfAnnotationLineFromDict (_bbe *_dfg .PdfObjectDictionary )(*PdfAnnotationLine ,error ){_gbdc :=PdfAnnotationLine {}; _gegce ,_dcdd :=_afaf .newPdfAnnotationMarkupFromDict (_bbe );if _dcdd !=nil {return nil ,_dcdd ;};_gbdc .PdfAnnotationMarkup =_gegce ;_gbdc .L =_bbe .Get ("\u004c");_gbdc .BS =_bbe .Get ("\u0042\u0053");_gbdc .LE =_bbe .Get ("\u004c\u0045");_gbdc .IC =_bbe .Get ("\u0049\u0043"); _gbdc .LL =_bbe .Get ("\u004c\u004c");_gbdc .LLE =_bbe .Get ("\u004c\u004c\u0045");_gbdc .Cap =_bbe .Get ("\u0043\u0061\u0070");_gbdc .IT =_bbe .Get ("\u0049\u0054");_gbdc .LLO =_bbe .Get ("\u004c\u004c\u004f");_gbdc .CP =_bbe .Get ("\u0043\u0050");_gbdc .Measure =_bbe .Get ("\u004de\u0061\u0073\u0075\u0072\u0065"); _gbdc .CO =_bbe .Get ("\u0043\u004f");return &_gbdc ,nil ;}; // Encoder iterates through the list of fonts and returns a working encoder func (_cfced *MultipleFontEncoder )Encoder (rn rune )(_ff .TextEncoder ,bool ){_cdec :=_cfced .CurrentFont ;_baeaa :=_cdec .Encoder ();_ ,_gabgb :=_baeaa .RuneToCharcode (rn );for _dfcc :=1;_dfcc < len (_cfced ._ceede )&&!_gabgb ;_dfcc ++{_cdec =_cfced ._ceede [_dfcc ]; _baeaa =_cdec .Encoder ();_ ,_gabgb =_baeaa .RuneToCharcode (rn );_cfced .CurrentFont =_cdec ;};return _baeaa ,_gabgb ;}; // NewPdfInfoFromObject creates a new PdfInfo from the input core.PdfObject. func NewPdfInfoFromObject (obj _dfg .PdfObject )(*PdfInfo ,error ){var _bfbeg PdfInfo ;_bgdcb ,_gaeg :=obj .(*_dfg .PdfObjectDictionary );if !_gaeg {return nil ,_d .Errorf ("i\u006e\u0076\u0061\u006c\u0069\u0064 \u0070\u0064\u0066\u0020\u006f\u0062\u006a\u0065\u0063t\u0020\u0074\u0079p\u0065:\u0020\u0025\u0054",obj ); };for _ ,_ddgaf :=range _bgdcb .Keys (){switch _ddgaf {case "\u0054\u0069\u0074l\u0065":_bfbeg .Title ,_ =_dfg .GetString (_bgdcb .Get ("\u0054\u0069\u0074l\u0065"));case "\u0041\u0075\u0074\u0068\u006f\u0072":_bfbeg .Author ,_ =_dfg .GetString (_bgdcb .Get ("\u0041\u0075\u0074\u0068\u006f\u0072")); case "\u0053u\u0062\u006a\u0065\u0063\u0074":_bfbeg .Subject ,_ =_dfg .GetString (_bgdcb .Get ("\u0053u\u0062\u006a\u0065\u0063\u0074"));case "\u004b\u0065\u0079\u0077\u006f\u0072\u0064\u0073":_bfbeg .Keywords ,_ =_dfg .GetString (_bgdcb .Get ("\u004b\u0065\u0079\u0077\u006f\u0072\u0064\u0073")); case "\u0043r\u0065\u0061\u0074\u006f\u0072":_bfbeg .Creator ,_ =_dfg .GetString (_bgdcb .Get ("\u0043r\u0065\u0061\u0074\u006f\u0072"));case "\u0050\u0072\u006f\u0064\u0075\u0063\u0065\u0072":_bfbeg .Producer ,_ =_dfg .GetString (_bgdcb .Get ("\u0050\u0072\u006f\u0064\u0075\u0063\u0065\u0072")); case "\u0054r\u0061\u0070\u0070\u0065\u0064":_bfbeg .Trapped ,_ =_dfg .GetName (_bgdcb .Get ("\u0054r\u0061\u0070\u0070\u0065\u0064"));case "\u0043\u0072\u0065a\u0074\u0069\u006f\u006e\u0044\u0061\u0074\u0065":if _cecgd ,_edadc :=_dfg .GetString (_bgdcb .Get ("\u0043\u0072\u0065a\u0074\u0069\u006f\u006e\u0044\u0061\u0074\u0065")); _edadc &&_cecgd .String ()!=""{_efabga ,_bbgg :=NewPdfDate (_cecgd .String ());if _bbgg !=nil {return nil ,_d .Errorf ("\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0043\u0072e\u0061\u0074\u0069\u006f\u006e\u0044\u0061t\u0065\u0020\u0066\u0069\u0065\u006c\u0064\u003a\u0020\u0025\u0077",_bbgg ); };_bfbeg .CreationDate =&_efabga ;};case "\u004do\u0064\u0044\u0061\u0074\u0065":if _gade ,_eeabg :=_dfg .GetString (_bgdcb .Get ("\u004do\u0064\u0044\u0061\u0074\u0065"));_eeabg &&_gade .String ()!=""{_ffbg ,_cdaa :=NewPdfDate (_gade .String ());if _cdaa !=nil {return nil ,_d .Errorf ("\u0069n\u0076\u0061\u006c\u0069d\u0020\u004d\u006f\u0064\u0044a\u0074e\u0020f\u0069\u0065\u006c\u0064\u003a\u0020\u0025w",_cdaa ); };_bfbeg .ModifiedDate =&_ffbg ;};default:_fgaag ,_ :=_dfg .GetString (_bgdcb .Get (_ddgaf ));if _bfbeg ._gdaaeb ==nil {_bfbeg ._gdaaeb =_dfg .MakeDict ();};_bfbeg ._gdaaeb .Set (_ddgaf ,_fgaag );};};return &_bfbeg ,nil ;}; // GetObjectNums returns the object numbers of the PDF objects in the file // Numbered objects are either indirect objects or stream objects. // e.g. objNums := pdfReader.GetObjectNums() // The underlying objects can then be accessed with // pdfReader.GetIndirectObjectByNumber(objNums[0]) for the first available object. func (_cbcaee *PdfReader )GetObjectNums ()[]int {return _cbcaee ._agbcd .GetObjectNums ()}; // ToPdfObject implements interface PdfModel. func (_cfg *PdfActionGoTo3DView )ToPdfObject ()_dfg .PdfObject {_cfg .PdfAction .ToPdfObject ();_eddc :=_cfg ._fe ;_eeab :=_eddc .PdfObject .(*_dfg .PdfObjectDictionary );_eeab .SetIfNotNil ("\u0053",_dfg .MakeName (string (ActionTypeGoTo3DView )));_eeab .SetIfNotNil ("\u0054\u0041",_cfg .TA ); _eeab .SetIfNotNil ("\u0056",_cfg .V );return _eddc ;}; // GetAttachedFiles retrieves all the attached files info and content. func (_adgga *PdfReader )GetAttachedFiles ()([]*EmbeddedFile ,error ){_bdefg :=[]*EmbeddedFile {};_cabec ,_agggc :=_adgga .GetNameDictionary ();if _agggc !=nil {return nil ,_agggc ;};if _cabec ==nil {return _bdefg ,nil ;};_gaeeg :=_adgdg (_cabec );if _gaeeg .EmbeddedFiles ==nil {return nil ,nil ; };_ggadf :=_gaeeg .EmbeddedFiles .Get ("\u004e\u0061\u006de\u0073");_acfac ,_feggc :=_ggadf .(*_dfg .PdfObjectArray );if !_feggc {return nil ,_bd .New ("\u0049\u006e\u0076\u0061li\u0064\u0020\u004e\u0061\u006d\u0065\u0073\u0020\u0061\u0072\u0072\u0061\u0079"); };for _gega :=1;_gega < len (_acfac .Elements ());_gega +=2{if _gega %2!=0{_afbc :=_acfac .Get (_gega );_bdgdb ,_gfcbe :=NewPdfFilespecFromObj (_afbc );if _gfcbe !=nil {return nil ,_gfcbe ;};_dccac ,_gfcbe :=NewEmbeddedFileFromObject (_bdgdb .EF );if _gfcbe !=nil {return nil ,_gfcbe ; };_dadcg ,_fgddg :=_bdgdb .F .(*_dfg .PdfObjectString );if _fgddg {_dccac .Name =_dadcg .Str ();};_dccac .Description =string (_bdgdb .Desc .Write ());_dccac .Relationship =RelationshipUnspecified ;if _bdgdb .AFRelationship !=nil {switch string (_bdgdb .AFRelationship .Write ()){case "\u0053\u006f\u0075\u0072\u0063\u0065":_dccac .Relationship =RelationshipSource ; case "\u0044\u0061\u0074\u0061":_dccac .Relationship =RelationshipData ;case "A\u006c\u0074\u0065\u0072\u006e\u0061\u0074\u0069\u0076\u0065":_dccac .Relationship =RelationshipAlternative ;case "\u0053\u0075\u0070\u0070\u006c\u0065\u006d\u0065\u006e\u0074":_dccac .Relationship =RelationshipSupplement ; default:_dccac .Relationship =RelationshipUnspecified ;};};_bdefg =append (_bdefg ,_dccac );};};return _bdefg ,nil ;}; // NewPdfActionResetForm returns a new "reset form" action. func NewPdfActionResetForm ()*PdfActionResetForm {_ada :=NewPdfAction ();_ab :=&PdfActionResetForm {};_ab .PdfAction =_ada ;_ada .SetContext (_ab );return _ab ;}; // Evaluate runs the function on the passed in slice and returns the results. func (_fgddd *PdfFunctionType2 )Evaluate (x []float64 )([]float64 ,error ){if len (x )!=1{_egb .Log .Error ("\u004f\u006e\u006c\u0079 o\u006e\u0065\u0020\u0069\u006e\u0070\u0075\u0074\u0020\u0061\u006c\u006c\u006f\u0077e\u0064");return nil ,_bd .New ("r\u0061\u006e\u0067\u0065\u0020\u0063\u0068\u0065\u0063\u006b"); };_aefd :=[]float64 {0.0};if _fgddd .C0 !=nil {_aefd =_fgddd .C0 ;};_adbdg :=[]float64 {1.0};if _fgddd .C1 !=nil {_adbdg =_fgddd .C1 ;};var _edeff []float64 ;for _egba :=0;_egba < len (_aefd );_egba ++{_bbged :=_aefd [_egba ]+_df .Pow (x [0],_fgddd .N )*(_adbdg [_egba ]-_aefd [_egba ]); _edeff =append (_edeff ,_bbged );};return _edeff ,nil ;}; // Encoder returns the font's text encoder. func (_ebab pdfFontType3 )Encoder ()_ff .TextEncoder {return _ebab ._bafca }; // PdfColorPatternType2 represents a color shading pattern type 2 (Axial). type PdfColorPatternType2 struct{Color PdfColor ;PatternName _dfg .PdfObjectName ;};func (_eda *PdfReader )newPdfActionFromIndirectObject (_db *_dfg .PdfIndirectObject )(*PdfAction ,error ){_gaed ,_cfee :=_db .PdfObject .(*_dfg .PdfObjectDictionary );if !_cfee {return nil ,_d .Errorf ("\u0061\u0063\u0074\u0069\u006f\u006e\u0020\u0069\u006e\u0064\u0069\u0072\u0065\u0063\u0074\u0020\u006f\u0062j\u0065\u0063\u0074\u0020\u006e\u006f\u0074 \u0063\u006f\u006e\u0074\u0061\u0069\u006e\u0069\u006e\u0067\u0020a\u0020\u0064\u0069\u0063\u0074\u0069\u006f\u006e\u0061\u0072\u0079"); };if model :=_eda ._acaed .GetModelFromPrimitive (_gaed );model !=nil {_aecf ,_gged :=model .(*PdfAction );if !_gged {return nil ,_d .Errorf ("\u0063\u0061c\u0068\u0065\u0064\u0020\u006d\u006f\u0064\u0065\u006c\u0020\u006e\u006f\u0074\u0020\u0061\u0020\u0050\u0044\u0046\u0020\u0061\u0063ti\u006f\u006e"); };return _aecf ,nil ;};_ba :=&PdfAction {};_ba ._fe =_db ;_eda ._acaed .Register (_gaed ,_ba );if _daf :=_gaed .Get ("\u0054\u0079\u0070\u0065");_daf !=nil {_dcf ,_dce :=_daf .(*_dfg .PdfObjectName );if !_dce {_egb .Log .Trace ("\u0049\u006e\u0063\u006f\u006d\u0070\u0061\u0074\u0069\u0062\u0069\u006c\u0069\u0074\u0079\u0021\u0020\u0049\u006e\u0076a\u006c\u0069\u0064\u0020\u0074\u0079\u0070\u0065\u0020\u006f\u0066\u0020\u0054\u0079\u0070\u0065\u0020\u0028\u0025\u0054\u0029\u0020\u002d\u0020\u0073\u0068\u006f\u0075\u006c\u0064 \u0062\u0065\u0020\u004e\u0061m\u0065",_daf ); }else {if *_dcf !="\u0041\u0063\u0074\u0069\u006f\u006e"{_egb .Log .Trace ("\u0055\u006e\u0073u\u0073\u0070\u0065\u0063t\u0065\u0064\u0020\u0054\u0079\u0070\u0065 \u0021\u003d\u0020\u0041\u0063\u0074\u0069\u006f\u006e\u0020\u0028\u0025\u0073\u0029",*_dcf ); };_ba .Type =_dcf ;};};if _dg :=_gaed .Get ("\u004e\u0065\u0078\u0074");_dg !=nil {_ba .Next =_dg ;};if _bfc :=_gaed .Get ("\u0053");_bfc !=nil {_ba .S =_bfc ;};_efcb ,_fcac :=_ba .S .(*_dfg .PdfObjectName );if !_fcac {_egb .Log .Debug ("\u0045\u0052\u0052\u004f\u0052:\u0020\u0049\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0053\u0020\u006f\u0062j\u0065\u0063\u0074\u0020\u0074\u0079\u0070\u0065\u0020\u0021\u003d\u0020\u006e\u0061\u006d\u0065\u0020\u0028\u0025\u0054\u0029",_ba .S ); return nil ,_d .Errorf ("\u0069\u006e\u0076al\u0069\u0064\u0020\u0053\u0020\u006f\u0062\u006a\u0065c\u0074 \u0074y\u0070e\u0020\u0021\u003d\u0020\u006e\u0061\u006d\u0065\u0020\u0028\u0025\u0054\u0029",_ba .S );};_bcae :=PdfActionType (_efcb .String ()); switch _bcae {case ActionTypeGoTo :_aac ,_aaca :=_eda .newPdfActionGotoFromDict (_gaed );if _aaca !=nil {return nil ,_aaca ;};_aac .PdfAction =_ba ;_ba ._bdb =_aac ;return _ba ,nil ;case ActionTypeGoToR :_gbd ,_bdg :=_eda .newPdfActionGotoRFromDict (_gaed ); if _bdg !=nil {return nil ,_bdg ;};_gbd .PdfAction =_ba ;_ba ._bdb =_gbd ;return _ba ,nil ;case ActionTypeGoToE :_dbg ,_bgc :=_eda .newPdfActionGotoEFromDict (_gaed );if _bgc !=nil {return nil ,_bgc ;};_dbg .PdfAction =_ba ;_ba ._bdb =_dbg ;return _ba ,nil ; case ActionTypeLaunch :_ccg ,_aab :=_eda .newPdfActionLaunchFromDict (_gaed );if _aab !=nil {return nil ,_aab ;};_ccg .PdfAction =_ba ;_ba ._bdb =_ccg ;return _ba ,nil ;case ActionTypeThread :_aeg ,_dfa :=_eda .newPdfActionThreadFromDict (_gaed );if _dfa !=nil {return nil ,_dfa ; };_aeg .PdfAction =_ba ;_ba ._bdb =_aeg ;return _ba ,nil ;case ActionTypeURI :_afbg ,_fbd :=_eda .newPdfActionURIFromDict (_gaed );if _fbd !=nil {return nil ,_fbd ;};_afbg .PdfAction =_ba ;_ba ._bdb =_afbg ;return _ba ,nil ;case ActionTypeSound :_ega ,_ggea :=_eda .newPdfActionSoundFromDict (_gaed ); if _ggea !=nil {return nil ,_ggea ;};_ega .PdfAction =_ba ;_ba ._bdb =_ega ;return _ba ,nil ;case ActionTypeMovie :_gdbc ,_fbc :=_eda .newPdfActionMovieFromDict (_gaed );if _fbc !=nil {return nil ,_fbc ;};_gdbc .PdfAction =_ba ;_ba ._bdb =_gdbc ;return _ba ,nil ; case ActionTypeHide :_cff ,_begd :=_eda .newPdfActionHideFromDict (_gaed );if _begd !=nil {return nil ,_begd ;};_cff .PdfAction =_ba ;_ba ._bdb =_cff ;return _ba ,nil ;case ActionTypeNamed :_gaf ,_bfa :=_eda .newPdfActionNamedFromDict (_gaed );if _bfa !=nil {return nil ,_bfa ; };_gaf .PdfAction =_ba ;_ba ._bdb =_gaf ;return _ba ,nil ;case ActionTypeSubmitForm :_gebe ,_ccbc :=_eda .newPdfActionSubmitFormFromDict (_gaed );if _ccbc !=nil {return nil ,_ccbc ;};_gebe .PdfAction =_ba ;_ba ._bdb =_gebe ;return _ba ,nil ;case ActionTypeResetForm :_cdfg ,_ceb :=_eda .newPdfActionResetFormFromDict (_gaed ); if _ceb !=nil {return nil ,_ceb ;};_cdfg .PdfAction =_ba ;_ba ._bdb =_cdfg ;return _ba ,nil ;case ActionTypeImportData :_gfa ,_gbac :=_eda .newPdfActionImportDataFromDict (_gaed );if _gbac !=nil {return nil ,_gbac ;};_gfa .PdfAction =_ba ;_ba ._bdb =_gfa ; return _ba ,nil ;case ActionTypeSetOCGState :_bed ,_gfe :=_eda .newPdfActionSetOCGStateFromDict (_gaed );if _gfe !=nil {return nil ,_gfe ;};_bed .PdfAction =_ba ;_ba ._bdb =_bed ;return _ba ,nil ;case ActionTypeRendition :_adf ,_aea :=_eda .newPdfActionRenditionFromDict (_gaed ); if _aea !=nil {return nil ,_aea ;};_adf .PdfAction =_ba ;_ba ._bdb =_adf ;return _ba ,nil ;case ActionTypeTrans :_fcf ,_abd :=_eda .newPdfActionTransFromDict (_gaed );if _abd !=nil {return nil ,_abd ;};_fcf .PdfAction =_ba ;_ba ._bdb =_fcf ;return _ba ,nil ; case ActionTypeGoTo3DView :_afbf ,_aegg :=_eda .newPdfActionGoTo3DViewFromDict (_gaed );if _aegg !=nil {return nil ,_aegg ;};_afbf .PdfAction =_ba ;_ba ._bdb =_afbf ;return _ba ,nil ;case ActionTypeJavaScript :_dcg ,_cce :=_eda .newPdfActionJavaScriptFromDict (_gaed ); if _cce !=nil {return nil ,_cce ;};_dcg .PdfAction =_ba ;_ba ._bdb =_dcg ;return _ba ,nil ;};_egb .Log .Debug ("\u0045\u0052\u0052OR\u003a\u0020\u0049\u0067\u006e\u006f\u0072\u0069\u006eg\u0020u\u006ek\u006eo\u0077\u006e\u0020\u0061\u0063\u0074\u0069\u006f\u006e\u003a\u0020\u0025\u0073",_bcae ); return nil ,nil ;}; // Direction returns the value of the direction. func (_cbbdg *ViewerPreferences )Direction ()Direction {return _cbbdg ._afddc }; // NewPdfActionSound returns a new "sound" action. func NewPdfActionSound ()*PdfActionSound {_ca :=NewPdfAction ();_dec :=&PdfActionSound {};_dec .PdfAction =_ca ;_ca .SetContext (_dec );return _dec ;}; // GetCatalogMetadata gets the catalog defined XMP Metadata. func (_bdbdc *PdfReader )GetCatalogMetadata ()(_dfg .PdfObject ,bool ){if _bdbdc ._fbfgb ==nil {return nil ,false ;};_ccacb :=_bdbdc ._fbfgb .Get ("\u004d\u0065\u0074\u0061\u0064\u0061\u0074\u0061");return _ccacb ,_ccacb !=nil ;}; // ToPdfObject implements interface PdfModel. func (_feee *Permissions )ToPdfObject ()_dfg .PdfObject {return _feee ._gbdee };type pdfFontType3 struct{fontCommon ;_agfgb *_dfg .PdfIndirectObject ; // These fields are specific to Type 3 fonts. CharProcs _dfg .PdfObject ;Encoding _dfg .PdfObject ;FontBBox _dfg .PdfObject ;FontMatrix _dfg .PdfObject ;FirstChar _dfg .PdfObject ;LastChar _dfg .PdfObject ;Widths _dfg .PdfObject ;Resources _dfg .PdfObject ;_efgcd map[_ff .CharCode ]float64 ;_bafca _ff .TextEncoder ; };func (_fdcgd *PdfReader )buildPageList (_gdgcg *_dfg .PdfIndirectObject ,_faabfe *_dfg .PdfIndirectObject ,_efaeg map[_dfg .PdfObject ]struct{})error {if _gdgcg ==nil {return nil ;};if _ ,_gcfg :=_efaeg [_gdgcg ];_gcfg {_egb .Log .Debug ("\u0043\u0079\u0063l\u0069\u0063\u0020\u0072e\u0063\u0075\u0072\u0073\u0069\u006f\u006e,\u0020\u0073\u006b\u0069\u0070\u0070\u0069\u006e\u0067\u0020\u0028\u0025\u0076\u0029",_gdgcg .ObjectNumber ); return nil ;};_efaeg [_gdgcg ]=struct{}{};_bfag ,_facdb :=_gdgcg .PdfObject .(*_dfg .PdfObjectDictionary );if !_facdb {return _bd .New ("n\u006f\u0064\u0065\u0020no\u0074 \u0061\u0020\u0064\u0069\u0063t\u0069\u006f\u006e\u0061\u0072\u0079");};_aagga ,_facdb :=(*_bfag ).Get ("\u0054\u0079\u0070\u0065").(*_dfg .PdfObjectName ); if !_facdb {if _bfag .Get ("\u004b\u0069\u0064\u0073")==nil {return _bd .New ("\u006e\u006f\u0064\u0065 \u006d\u0069\u0073\u0073\u0069\u006e\u0067\u0020\u0054\u0079p\u0065 \u0028\u0052\u0065\u0071\u0075\u0069\u0072e\u0064\u0029");};_egb .Log .Debug ("ER\u0052\u004fR\u003a\u0020\u006e\u006f\u0064\u0065\u0020\u006d\u0069s\u0073\u0069\u006e\u0067\u0020\u0054\u0079\u0070\u0065\u002c\u0020\u0062\u0075\u0074\u0020\u0068\u0061\u0073\u0020\u004b\u0069\u0064\u0073\u002e\u0020\u0041\u0073\u0073u\u006di\u006e\u0067\u0020\u0050\u0061\u0067\u0065\u0073 \u006eo\u0064\u0065."); _aagga =_dfg .MakeName ("\u0050\u0061\u0067e\u0073");_bfag .Set ("\u0054\u0079\u0070\u0065",_aagga );};_egb .Log .Trace ("\u0062\u0075\u0069\u006c\u0064\u0050a\u0067\u0065\u004c\u0069\u0073\u0074\u0020\u006e\u006f\u0064\u0065\u0020\u0074y\u0070\u0065\u003a\u0020\u0025\u0073\u0020(\u0025\u002b\u0076\u0029",*_aagga ,_gdgcg ); if *_aagga =="\u0050\u0061\u0067\u0065"{_gcae ,_ggdaf :=_fdcgd .newPdfPageFromDict (_bfag );if _ggdaf !=nil {return _ggdaf ;};_gcae .setContainer (_gdgcg );if _faabfe !=nil {_bfag .Set ("\u0050\u0061\u0072\u0065\u006e\u0074",_faabfe );};_fdcgd ._ggbf =append (_fdcgd ._ggbf ,_gdgcg ); _fdcgd .PageList =append (_fdcgd .PageList ,_gcae );return nil ;};if *_aagga !="\u0050\u0061\u0067e\u0073"{if _fdcgd ._agbcd .Opts !=nil &&_fdcgd ._agbcd .Opts .RelaxedMode {_egb .Log .Warning ("\u0057\u0061\u0072\u006e\u0069\u006e\u0067\u003a\u0020\u0054\u0061\u0062\u006c\u0065\u0020\u006f\u0066 \u0063\u006f\u006e\u0074\u0065\u006e\u0074\u0020\u0063\u006fn\u0074\u0061\u0069\u006e\u0069\u006e\u0067\u0020\u006e\u006f\u006e\u0020\u0050\u0061\u0067\u0065\u002f\u0050a\u0067\u0065\u0073\u0020\u006f\u0062j\u0065\u0063t\u0021\u0020(\u0025s\u0029",_aagga ); return nil ;};_egb .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0054\u0061\u0062\u006c\u0065\u0020\u006f\u0066\u0020\u0063\u006fnt\u0065n\u0074\u0020\u0063\u006f\u006e\u0074\u0061\u0069\u006e\u0069\u006e\u0067 \u006e\u006f\u006e\u0020\u0050\u0061\u0067\u0065\u002f\u0050\u0061\u0067\u0065\u0073\u0020\u006f\u0062j\u0065\u0063\u0074\u0021\u0020\u0028\u0025\u0073\u0029",_aagga ); return _bd .New ("\u0074\u0061\u0062\u006c\u0065\u0020o\u0066\u0020\u0063\u006f\u006e\u0074\u0065\u006e\u0074\u0020\u0063\u006f\u006e\u0074\u0061\u0069\u006e\u0069\u006e\u0067 \u006e\u006f\u006e\u0020\u0050\u0061\u0067\u0065\u002f\u0050\u0061\u0067\u0065\u0073 \u006fb\u006a\u0065\u0063\u0074"); };if _faabfe !=nil {_bfag .Set ("\u0050\u0061\u0072\u0065\u006e\u0074",_faabfe );};if !_fdcgd ._bafba {_bebgc :=_fdcgd .traverseObjectData (_gdgcg );if _bebgc !=nil {return _bebgc ;};};_gaee ,_gefc :=_fdcgd ._agbcd .Resolve (_bfag .Get ("\u004b\u0069\u0064\u0073")); if _gefc !=nil {_egb .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a \u0046\u0061\u0069\u006c\u0065\u0064\u0020\u006c\u006f\u0061\u0064\u0069\u006eg\u0020\u004b\u0069\u0064\u0073\u0020\u006fb\u006a\u0065\u0063\u0074");return _gefc ;};var _agaad *_dfg .PdfObjectArray ; _agaad ,_facdb =_gaee .(*_dfg .PdfObjectArray );if !_facdb {_cgggg ,_bcdcc :=_gaee .(*_dfg .PdfIndirectObject );if !_bcdcc {return _bd .New ("\u0069\u006e\u0076\u0061li\u0064\u0020\u004b\u0069\u0064\u0073\u0020\u006f\u0062\u006a\u0065\u0063\u0074");};_agaad ,_facdb =_cgggg .PdfObject .(*_dfg .PdfObjectArray ); if !_facdb {return _bd .New ("\u0069\u006e\u0076\u0061l\u0069\u0064\u0020\u004b\u0069\u0064\u0073\u0020\u0069\u006ed\u0069r\u0065\u0063\u0074\u0020\u006f\u0062\u006ae\u0063\u0074");};};_egb .Log .Trace ("\u004b\u0069\u0064\u0073\u003a\u0020\u0025\u0073",_agaad ); for _bfcfdb ,_gdegg :=range _agaad .Elements (){_afff ,_bbce :=_dfg .GetIndirect (_gdegg );if !_bbce {_egb .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0050\u0061\u0067\u0065\u0020\u006e\u006f\u0074\u0020\u0069\u006e\u0064\u0069\u0072\u0065\u0063\u0074 \u006f\u0062\u006a\u0065\u0063t\u0020\u002d \u0028\u0025\u0073\u0029",_afff ); return _bd .New ("\u0070a\u0067\u0065\u0020\u006e\u006f\u0074\u0020\u0069\u006e\u0064\u0069r\u0065\u0063\u0074\u0020\u006f\u0062\u006a\u0065\u0063\u0074");};_agaad .Set (_bfcfdb ,_afff );_gefc =_fdcgd .buildPageList (_afff ,_gdgcg ,_efaeg );if _gefc !=nil {return _gefc ; };};return nil ;}; // ToPdfObject converts the PdfFont object to its PDF representation. func (_agefb *PdfFont )ToPdfObject ()_dfg .PdfObject {if _agefb ._fab ==nil {_egb .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0066\u006f\u006e\u0074 \u0063\u006f\u006e\u0074\u0065\u0078\u0074\u0020\u0069\u0073 \u006e\u0069\u006c");return _dfg .MakeNull (); };return _agefb ._fab .ToPdfObject ();};type pdfFontType0 struct{fontCommon ;_gfcf *_dfg .PdfIndirectObject ;_gbaf _ff .TextEncoder ;Encoding _dfg .PdfObject ;DescendantFont *PdfFont ;_dfec *_efg .CMap ;};func (_gfdga *PdfReader )loadOutlines ()(*PdfOutlineTreeNode ,error ){if _gfdga ._agbcd .GetCrypter ()!=nil &&!_gfdga ._agbcd .IsAuthenticated (){return nil ,_d .Errorf ("\u0066\u0069\u006ce\u0020\u006e\u0065\u0065d\u0020\u0074\u006f\u0020\u0062\u0065\u0020d\u0065\u0063\u0072\u0079\u0070\u0074\u0065\u0064\u0020\u0066\u0069\u0072\u0073\u0074"); };_dfeb :=_gfdga ._fbfgb ;_ccbb :=_dfeb .Get ("\u004f\u0075\u0074\u006c\u0069\u006e\u0065\u0073");if _ccbb ==nil {return nil ,nil ;};_egb .Log .Trace ("\u002d\u0048\u0061\u0073\u0020\u006f\u0075\u0074\u006c\u0069\u006e\u0065\u0073");_gbcge :=_dfg .ResolveReference (_ccbb ); _egb .Log .Trace ("\u004f\u0075t\u006c\u0069\u006ee\u0020\u0072\u006f\u006f\u0074\u003a\u0020\u0025\u0076",_gbcge );if _bgagd :=_dfg .IsNullObject (_gbcge );_bgagd {_egb .Log .Trace ("\u004f\u0075\u0074li\u006e\u0065\u0020\u0072\u006f\u006f\u0074\u0020\u0069s\u0020n\u0075l\u006c \u002d\u0020\u006e\u006f\u0020\u006f\u0075\u0074\u006c\u0069\u006e\u0065\u0073"); return nil ,nil ;};_fabbd ,_cgdcc :=_gbcge .(*_dfg .PdfIndirectObject );if !_cgdcc {if _ ,_gegef :=_dfg .GetDict (_gbcge );!_gegef {_egb .Log .Debug ("\u0049\u006e\u0076a\u006c\u0069\u0064\u0020o\u0075\u0074\u006c\u0069\u006e\u0065\u0020r\u006f\u006f\u0074\u0020\u002d\u0020\u0073\u006b\u0069\u0070\u0070\u0069\u006e\u0067"); return nil ,nil ;};_egb .Log .Debug ("\u004f\u0075t\u006c\u0069\u006e\u0065\u0020r\u006f\u006f\u0074\u0020\u0069s\u0020\u0061\u0020\u0064\u0069\u0063\u0074\u002e\u0020\u0053\u0068\u006f\u0075\u006c\u0064\u0020\u0062\u0065\u0020\u0061\u006e\u0020\u0069\u006e\u0064\u0069\u0072\u0065\u0063\u0074\u0020\u006f\u0062\u006a\u0065\u0063\u0074"); _fabbd =_dfg .MakeIndirectObject (_gbcge );};_gfegg ,_cgdcc :=_fabbd .PdfObject .(*_dfg .PdfObjectDictionary );if !_cgdcc {return nil ,_bd .New ("\u006f\u0075\u0074\u006c\u0069n\u0065\u0020\u0069\u006e\u0064\u0069\u0072\u0065\u0063\u0074\u0020\u006f\u0062j\u0065\u0063\u0074\u0020\u0073\u0068\u006f\u0075\u006c\u0064\u0020\u0063\u006f\u006e\u0074\u0061\u0069\u006e\u0020\u0061\u0020\u0064\u0069\u0063\u0074\u0069\u006f\u006e\u0061\u0072y"); };_egb .Log .Trace ("O\u0075\u0074\u006c\u0069ne\u0020r\u006f\u006f\u0074\u0020\u0064i\u0063\u0074\u003a\u0020\u0025\u0076",_gfegg );_adgdgf ,_ ,_dccba :=_gfdga .buildOutlineTree (_fabbd ,nil ,nil ,nil );if _dccba !=nil {return nil ,_dccba ;};_egb .Log .Trace ("\u0052\u0065\u0073\u0075\u006c\u0074\u0069\u006e\u0067\u0020\u006fu\u0074\u006c\u0069\u006e\u0065\u0020\u0074\u0072\u0065\u0065:\u0020\u0025\u0076",_adgdgf ); return _adgdgf ,nil ;}; // Write outputs the object as it is to be written to file. func (_gcebe *pdfSignDictionary )Write ()[]byte {_gcebe ._ffbffd =0;_gcebe ._ceffa =0;_gcebe ._fdfed =0;_gcebe ._gcdg =0;_cbdc :=_cca .NewBuffer (nil );_cbdc .WriteString ("\u003c\u003c");for _ ,_fbabc :=range _gcebe .Keys (){_aecgga :=_gcebe .Get (_fbabc ); switch _fbabc {case "\u0042y\u0074\u0065\u0052\u0061\u006e\u0067e":_cbdc .Write (_fbabc .Write ());_cbdc .WriteString ("\u0020");_gcebe ._fdfed =_cbdc .Len ();_cbdc .Write (_aecgga .Write ());_cbdc .WriteString ("\u0020");_gcebe ._gcdg =_cbdc .Len ()-1; case "\u0043\u006f\u006e\u0074\u0065\u006e\u0074\u0073":_cbdc .Write (_fbabc .Write ());_cbdc .WriteString ("\u0020");_gcebe ._ffbffd =_cbdc .Len ();_cbdc .Write (_aecgga .Write ());_cbdc .WriteString ("\u0020");_gcebe ._ceffa =_cbdc .Len ()-1;default:_cbdc .Write (_fbabc .Write ()); _cbdc .WriteString ("\u0020");_cbdc .Write (_aecgga .Write ());};};_cbdc .WriteString ("\u003e\u003e");return _cbdc .Bytes ();}; // ToPdfObject recursively builds the Outline tree PDF object. func (_adgbb *PdfOutline )ToPdfObject ()_dfg .PdfObject {_dafbg :=_adgbb ._gcdeg ;_ddffc :=_dafbg .PdfObject .(*_dfg .PdfObjectDictionary );_ddffc .Set ("\u0054\u0079\u0070\u0065",_dfg .MakeName ("\u004f\u0075\u0074\u006c\u0069\u006e\u0065\u0073"));if _adgbb .First !=nil {_ddffc .Set ("\u0046\u0069\u0072s\u0074",_adgbb .First .ToPdfObject ()); };if _adgbb .Last !=nil {_ddffc .Set ("\u004c\u0061\u0073\u0074",_adgbb .Last .GetContext ().GetContainingPdfObject ());};if _adgbb .Parent !=nil {_ddffc .Set ("\u0050\u0061\u0072\u0065\u006e\u0074",_adgbb .Parent .GetContext ().GetContainingPdfObject ()); };if _adgbb .Count !=nil {_ddffc .Set ("\u0043\u006f\u0075n\u0074",_dfg .MakeInteger (*_adgbb .Count ));};return _dafbg ;}; // ReplacePage replaces the original page to a new page. func (_fbeec *PdfAppender )ReplacePage (pageNum int ,page *PdfPage ){_cgfc :=pageNum -1;for _gegb :=range _fbeec ._egfc {if _gegb ==_cgfc {_gegf :=page .Duplicate ();_gccaa (_gegf );_fbeec ._egfc [_gegb ]=_gegf ;};};}; // PdfAnnotationFreeText represents FreeText annotations. // (Section 12.5.6.6). type PdfAnnotationFreeText struct{*PdfAnnotation ;*PdfAnnotationMarkup ;DA _dfg .PdfObject ;Q _dfg .PdfObject ;RC _dfg .PdfObject ;DS _dfg .PdfObject ;CL _dfg .PdfObject ;IT _dfg .PdfObject ;BE _dfg .PdfObject ;RD _dfg .PdfObject ;BS _dfg .PdfObject ;LE _dfg .PdfObject ; }; // ToPdfObject implements interface PdfModel. func (_fdd *PdfActionThread )ToPdfObject ()_dfg .PdfObject {_fdd .PdfAction .ToPdfObject ();_cdd :=_fdd ._fe ;_eeag :=_cdd .PdfObject .(*_dfg .PdfObjectDictionary );_eeag .SetIfNotNil ("\u0053",_dfg .MakeName (string (ActionTypeThread )));if _fdd .F !=nil {_eeag .Set ("\u0046",_fdd .F .ToPdfObject ()); };_eeag .SetIfNotNil ("\u0044",_fdd .D );_eeag .SetIfNotNil ("\u0042",_fdd .B );return _cdd ;};func (_gdcab *PdfReader )buildNameNodes (_ebbde *_dfg .PdfIndirectObject ,_cgbca map[_dfg .PdfObject ]struct{})error {if _ebbde ==nil {return nil ;};if _ ,_bcdfc :=_cgbca [_ebbde ]; _bcdfc {_egb .Log .Debug ("\u0043\u0079\u0063l\u0069\u0063\u0020\u0072e\u0063\u0075\u0072\u0073\u0069\u006f\u006e,\u0020\u0073\u006b\u0069\u0070\u0070\u0069\u006e\u0067\u0020\u0028\u0025\u0076\u0029",_ebbde .ObjectNumber );return nil ;};_cgbca [_ebbde ]=struct{}{}; _ccbfcd ,_bcgdc :=_ebbde .PdfObject .(*_dfg .PdfObjectDictionary );if !_bcgdc {return _bd .New ("n\u006f\u0064\u0065\u0020no\u0074 \u0061\u0020\u0064\u0069\u0063t\u0069\u006f\u006e\u0061\u0072\u0079");};if _eeafa ,_cfaff :=_dfg .GetDict (_ccbfcd .Get ("\u0044\u0065\u0073t\u0073")); _cfaff {_fbgae ,_acbaf :=_dfg .GetArray (_eeafa .Get ("\u004b\u0069\u0064\u0073"));if !_acbaf {return _bd .New ("\u0049n\u0076\u0061\u006c\u0069d\u0020\u004b\u0069\u0064\u0073 \u0061r\u0072a\u0079\u0020\u006f\u0062\u006a\u0065\u0063t");};_egb .Log .Trace ("\u004b\u0069\u0064\u0073\u003a\u0020\u0025\u0073",_fbgae ); for _cgfbd ,_fafff :=range _fbgae .Elements (){_gdacf ,_eabaa :=_dfg .GetIndirect (_fafff );if !_eabaa {_egb .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0063\u0068\u0069\u006c\u0064\u0020n\u006f\u0074\u0020\u0069\u006e\u0064i\u0072\u0065\u0063\u0074\u0020\u006f\u0062\u006a\u0065\u0063\u0074\u0020\u002d \u0028\u0025\u0073\u0029",_gdacf ); return _bd .New ("\u0063h\u0069\u006c\u0064\u0020n\u006f\u0074\u0020\u0069\u006ed\u0069r\u0065c\u0074\u0020\u006f\u0062\u006a\u0065\u0063t");};_fbgae .Set (_cgfbd ,_gdacf );_gbcab :=_gdcab .buildNameNodes (_gdacf ,_cgbca );if _gbcab !=nil {return _gbcab ; };};};if _gfca ,_dedce :=_dfg .GetDict (_ccbfcd );_dedce {if !_dfg .IsNullObject (_gfca .Get ("\u004b\u0069\u0064\u0073")){if _ffefa ,_ddda :=_dfg .GetArray (_gfca .Get ("\u004b\u0069\u0064\u0073"));_ddda {for _ggccc ,_efdbd :=range _ffefa .Elements (){if _bdabg ,_edce :=_dfg .GetIndirect (_efdbd ); _edce {_ffefa .Set (_ggccc ,_bdabg );_cbfag :=_gdcab .buildNameNodes (_bdabg ,_cgbca );if _cbfag !=nil {return _cbfag ;};};};};};};return nil ;};func (_gdff *PdfReader )newPdfAnnotationWatermarkFromDict (_bcbb *_dfg .PdfObjectDictionary )(*PdfAnnotationWatermark ,error ){_fgc :=PdfAnnotationWatermark {}; _fgc .FixedPrint =_bcbb .Get ("\u0046\u0069\u0078\u0065\u0064\u0050\u0072\u0069\u006e\u0074");return &_fgc ,nil ;}; // Initialize initializes the PdfSignature. func (_abccec *PdfSignature )Initialize ()error {if _abccec .Handler ==nil {return _bd .New ("\u0073\u0069\u0067n\u0061\u0074\u0075\u0072e\u0020\u0068\u0061\u006e\u0064\u006c\u0065r\u0020\u0063\u0061\u006e\u006e\u006f\u0074\u0020\u0062\u0065\u0020\u006e\u0069\u006c"); };return _abccec .Handler .InitSignature (_abccec );}; // NewStructTreeRoot creates a new structure tree root dictionary. func NewStructTreeRoot ()*StructTreeRoot {return &StructTreeRoot {K :[]*KDict {},RoleMap :_dfg .MakeDict (),ParentTreeNextKey :0};}; // PdfAnnotationRichMedia represents Rich Media annotations. type PdfAnnotationRichMedia struct{*PdfAnnotation ;RichMediaSettings _dfg .PdfObject ;RichMediaContent _dfg .PdfObject ;}; // LTV represents an LTV (Long-Term Validation) client. It is used to LTV // enable signatures by adding validation and revocation data (certificate, // OCSP and CRL information) to the DSS dictionary of a PDF document. // // LTV is added through the DSS by: // - Adding certificates, OCSP and CRL information in the global scope of the // DSS. The global data is used for validating any of the signatures present // in the document. // - Adding certificates, OCSP and CRL information for a single signature, // through an entry in the VRI dictionary of the DSS. The added data is used // for validating that particular signature only. This is the recommended // method for adding validation data for a signature. However, this is not // possible in the same revision the signature is applied. Validation data // for a signature is added based on the Contents entry of the signature, // which is known only after the revision is written. Even if the Contents // are known (e.g. when signing externally), updating the DSS at that point // would invalidate the calculated signature. As a result, if adding LTV // in the same revision is a requirement, use the first method. // See LTV.EnableChain. // // The client applies both methods, when possible. // // If `LTV.SkipExisting` is set to true (the default), validations are // not added for signatures which are already present in the VRI entry of the // document's DSS dictionary. type LTV struct{ // CertClient is the client used to retrieve certificates. CertClient *_dfd .CertClient ; // OCSPClient is the client used to retrieve OCSP validation information. OCSPClient *_dfd .OCSPClient ; // CRLClient is the client used to retrieve CRL validation information. CRLClient *_dfd .CRLClient ; // SkipExisting specifies whether existing signature validations // should be skipped. SkipExisting bool ;_adcg *PdfAppender ;_gaggb *DSS ;};func (_dfaag fontCommon )asPdfObjectDictionary (_befea string )*_dfg .PdfObjectDictionary {if _befea !=""&&_dfaag ._gdab !=""&&_befea !=_dfaag ._gdab {_egb .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0061\u0073\u0050\u0064\u0066\u004f\u0062\u006a\u0065\u0063\u0074\u0044\u0069c\u0074\u0069\u006f\u006e\u0061\u0072\u0079\u002e\u0020O\u0076\u0065\u0072\u0072\u0069\u0064\u0069\u006e\u0067\u0020\u0073\u0075\u0062t\u0079\u0070\u0065\u0020\u0074\u006f \u0025\u0023\u0071 \u0025\u0073",_befea ,_dfaag ); }else if _befea ==""&&_dfaag ._gdab ==""{_egb .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0061s\u0050\u0064\u0066Ob\u006a\u0065\u0063\u0074\u0044\u0069c\u0074\u0069\u006f\u006e\u0061\u0072\u0079\u0020\u006e\u006f\u0020\u0073\u0075\u0062\u0074y\u0070\u0065\u002e\u0020\u0066\u006f\u006e\u0074=\u0025\u0073",_dfaag ); }else if _dfaag ._gdab ==""{_dfaag ._gdab =_befea ;};_adaa :=_dfg .MakeDict ();_adaa .Set ("\u0054\u0079\u0070\u0065",_dfg .MakeName ("\u0046\u006f\u006e\u0074"));_adaa .Set ("\u0042\u0061\u0073\u0065\u0046\u006f\u006e\u0074",_dfg .MakeName (_dfaag ._dbcbc )); _adaa .Set ("\u0053u\u0062\u0074\u0079\u0070\u0065",_dfg .MakeName (_dfaag ._gdab ));if _dfaag ._cebfd !=nil {_adaa .Set ("\u0046\u006f\u006e\u0074\u0044\u0065\u0073\u0063\u0072i\u0070\u0074\u006f\u0072",_dfaag ._cebfd .ToPdfObject ());};if _dfaag ._eaaga !=nil {_adaa .Set ("\u0054o\u0055\u006e\u0069\u0063\u006f\u0064e",_dfaag ._eaaga ); }else if _dfaag ._bgdcbc !=nil {_gcdfc ,_dbab :=_dfaag ._bgdcbc .Stream ();if _dbab !=nil {_egb .Log .Debug ("\u0057\u0041\u0052\u004e\u003a\u0020\u0063\u006f\u0075\u006c\u0064\u0020\u006eo\u0074\u0020\u0067\u0065\u0074\u0020C\u004d\u0061\u0070\u0020\u0073\u0074\u0072\u0065\u0061\u006d\u002e\u0020\u0065r\u0072\u003d\u0025\u0076",_dbab ); }else {_adaa .Set ("\u0054o\u0055\u006e\u0069\u0063\u006f\u0064e",_gcdfc );};};return _adaa ;}; // PageBoundary represents the name of the page boundary representing // the visible area. type PageBoundary string ;func (_afcgc *PdfReader )newPdfAnnotationFreeTextFromDict (_cfff *_dfg .PdfObjectDictionary )(*PdfAnnotationFreeText ,error ){_gege :=PdfAnnotationFreeText {};_gafc ,_ecea :=_afcgc .newPdfAnnotationMarkupFromDict (_cfff );if _ecea !=nil {return nil ,_ecea ; };_gege .PdfAnnotationMarkup =_gafc ;_gege .DA =_cfff .Get ("\u0044\u0041");_gege .Q =_cfff .Get ("\u0051");_gege .RC =_cfff .Get ("\u0052\u0043");_gege .DS =_cfff .Get ("\u0044\u0053");_gege .CL =_cfff .Get ("\u0043\u004c");_gege .IT =_cfff .Get ("\u0049\u0054"); _gege .BE =_cfff .Get ("\u0042\u0045");_gege .RD =_cfff .Get ("\u0052\u0044");_gege .BS =_cfff .Get ("\u0042\u0053");_gege .LE =_cfff .Get ("\u004c\u0045");return &_gege ,nil ;};func (_ccea *PdfReader )newPdfAnnotationLinkFromDict (_bacc *_dfg .PdfObjectDictionary )(*PdfAnnotationLink ,error ){_cbca :=PdfAnnotationLink {}; _cbca .A =_bacc .Get ("\u0041");_cbca .Dest =_bacc .Get ("\u0044\u0065\u0073\u0074");_cbca .H =_bacc .Get ("\u0048");_cbca .PA =_bacc .Get ("\u0050\u0041");_cbca .QuadPoints =_bacc .Get ("\u0051\u0075\u0061\u0064\u0050\u006f\u0069\u006e\u0074\u0073");_cbca .BS =_bacc .Get ("\u0042\u0053"); return &_cbca ,nil ;};func (_dcc *PdfReader )newPdfActionGotoRFromDict (_feb *_dfg .PdfObjectDictionary )(*PdfActionGoToR ,error ){_dd ,_dabd :=_dbga (_feb .Get ("\u0046"));if _dabd !=nil {return nil ,_dabd ;};return &PdfActionGoToR {D :_feb .Get ("\u0044"),NewWindow :_feb .Get ("\u004ee\u0077\u0057\u0069\u006e\u0064\u006fw"),F :_dd },nil ; }; // GetFontDescriptor returns the font descriptor for `font`. func (_cgga PdfFont )GetFontDescriptor ()(*PdfFontDescriptor ,error ){return _cgga ._fab .getFontDescriptor (),nil ;}; // PdfRectangle is a definition of a rectangle. type PdfRectangle struct{Llx float64 ;Lly float64 ;Urx float64 ;Ury float64 ;}; // PdfActionSound represents a sound action. type PdfActionSound struct{*PdfAction ;Sound _dfg .PdfObject ;Volume _dfg .PdfObject ;Synchronous _dfg .PdfObject ;Repeat _dfg .PdfObject ;Mix _dfg .PdfObject ;}; // ToPdfObject returns a stream object. func (_abeab *XObjectForm )ToPdfObject ()_dfg .PdfObject {_bbeae :=_abeab ._baced ;_dgcdf :=_bbeae .PdfObjectDictionary ;if _abeab .Filter !=nil {_dgcdf =_abeab .Filter .MakeStreamDict ();_bbeae .PdfObjectDictionary =_dgcdf ;};_dgcdf .Set ("\u0054\u0079\u0070\u0065",_dfg .MakeName ("\u0058O\u0062\u006a\u0065\u0063\u0074")); _dgcdf .Set ("\u0053u\u0062\u0074\u0079\u0070\u0065",_dfg .MakeName ("\u0046\u006f\u0072\u006d"));_dgcdf .SetIfNotNil ("\u0046\u006f\u0072\u006d\u0054\u0079\u0070\u0065",_abeab .FormType );_dgcdf .SetIfNotNil ("\u0042\u0042\u006f\u0078",_abeab .BBox ); _dgcdf .SetIfNotNil ("\u004d\u0061\u0074\u0072\u0069\u0078",_abeab .Matrix );if _abeab .Resources !=nil {_dgcdf .SetIfNotNil ("\u0052e\u0073\u006f\u0075\u0072\u0063\u0065s",_abeab .Resources .ToPdfObject ());};_dgcdf .SetIfNotNil ("\u0047\u0072\u006fu\u0070",_abeab .Group ); _dgcdf .SetIfNotNil ("\u0052\u0065\u0066",_abeab .Ref );_dgcdf .SetIfNotNil ("\u004d\u0065\u0074\u0061\u0044\u0061\u0074\u0061",_abeab .MetaData );_dgcdf .SetIfNotNil ("\u0050i\u0065\u0063\u0065\u0049\u006e\u0066o",_abeab .PieceInfo );_dgcdf .SetIfNotNil ("\u004c\u0061\u0073t\u004d\u006f\u0064\u0069\u0066\u0069\u0065\u0064",_abeab .LastModified ); _dgcdf .SetIfNotNil ("\u0053\u0074\u0072u\u0063\u0074\u0050\u0061\u0072\u0065\u006e\u0074",_abeab .StructParent );_dgcdf .SetIfNotNil ("\u0053\u0074\u0072\u0075\u0063\u0074\u0050\u0061\u0072\u0065\u006e\u0074\u0073",_abeab .StructParents );_dgcdf .SetIfNotNil ("\u004f\u0050\u0049",_abeab .OPI ); _dgcdf .SetIfNotNil ("\u004f\u0043",_abeab .OC );_dgcdf .SetIfNotNil ("\u004e\u0061\u006d\u0065",_abeab .Name );_dgcdf .Set ("\u004c\u0065\u006e\u0067\u0074\u0068",_dfg .MakeInteger (int64 (len (_abeab .Stream ))));_bbeae .Stream =_abeab .Stream ;return _bbeae ; }; // GetRuneMetrics returns the character metrics for the specified rune. // A bool flag is returned to indicate whether or not the entry was found. func (_gcbce pdfCIDFontType2 )GetRuneMetrics (r rune )(_bf .CharMetrics ,bool ){_cffaf ,_egbee :=_gcbce ._cede [r ];if !_egbee {_bdad ,_dggfa :=_dfg .GetInt (_gcbce .DW );if !_dggfa {return _bf .CharMetrics {},false ;};_cffaf =int (*_bdad );};return _bf .CharMetrics {Wx :float64 (_cffaf )},true ; }; // Evaluate runs the function. Input is [x1 x2 x3]. func (_fdcfc *PdfFunctionType4 )Evaluate (xVec []float64 )([]float64 ,error ){if _fdcfc ._adgdc ==nil {_fdcfc ._adgdc =_cb .NewPSExecutor (_fdcfc .Program );};var _cdgaa []_cb .PSObject ;for _ ,_ecba :=range xVec {_cdgaa =append (_cdgaa ,_cb .MakeReal (_ecba )); };_bfbdea ,_defdg :=_fdcfc ._adgdc .Execute (_cdgaa );if _defdg !=nil {return nil ,_defdg ;};_febae ,_defdg :=_cb .PSObjectArrayToFloat64Array (_bfbdea );if _defdg !=nil {return nil ,_defdg ;};return _febae ,nil ;}; // NewPdfReaderFromFile creates a new PdfReader from the speficied PDF file. // If ReaderOpts is nil it will be set to default value from NewReaderOpts. func NewPdfReaderFromFile (pdfFile string ,opts *ReaderOpts )(*PdfReader ,*_ga .File ,error ){const _ecgcb ="\u006d\u006f\u0064\u0065\u006c\u003a\u004e\u0065\u0077\u0050\u0064f\u0052\u0065\u0061\u0064\u0065\u0072\u0046\u0072\u006f\u006dF\u0069\u006c\u0065"; _cdgfe ,_ebeec :=_ga .Open (pdfFile );if _ebeec !=nil {return nil ,nil ,_ebeec ;};_caefa ,_ebeec :=_dafc (_cdgfe ,opts ,true ,_ecgcb );if _ebeec !=nil {_cdgfe .Close ();return nil ,nil ,_ebeec ;};_caefa ._aefda =pdfFile ;return _caefa ,_cdgfe ,nil ;}; // XObjectForm (Table 95 in 8.10.2). type XObjectForm struct{Filter _dfg .StreamEncoder ;FormType _dfg .PdfObject ;BBox _dfg .PdfObject ;Matrix _dfg .PdfObject ;Resources *PdfPageResources ;Group _dfg .PdfObject ;Ref _dfg .PdfObject ;MetaData _dfg .PdfObject ;PieceInfo _dfg .PdfObject ;LastModified _dfg .PdfObject ; StructParent _dfg .PdfObject ;StructParents _dfg .PdfObject ;OPI _dfg .PdfObject ;OC _dfg .PdfObject ;Name _dfg .PdfObject ; // Stream data. Stream []byte ;_baced *_dfg .PdfObjectStream ;}; // ColorToRGB verifies that the input color is an RGB color. Method exists in // order to satisfy the PdfColorspace interface. func (_dcce *PdfColorspaceDeviceRGB )ColorToRGB (color PdfColor )(PdfColor ,error ){_cdgf ,_eedd :=color .(*PdfColorDeviceRGB );if !_eedd {_egb .Log .Debug ("\u0049\u006e\u0070\u0075\u0074\u0020\u0063\u006f\u006c\u006f\u0072 \u006e\u006f\u0074\u0020\u0064\u0065\u0076\u0069\u0063\u0065 \u0052\u0047\u0042"); return nil ,_bd .New ("\u0074\u0079p\u0065\u0020\u0063h\u0065\u0063\u006b\u0020\u0065\u0072\u0072\u006f\u0072");};return _cdgf ,nil ;};func (_cegd *PdfReader )loadAction (_ebf _dfg .PdfObject )(*PdfAction ,error ){if _egg ,_gag :=_dfg .GetIndirect (_ebf ); _gag {_gfga ,_dbe :=_cegd .newPdfActionFromIndirectObject (_egg );if _dbe !=nil {return nil ,_dbe ;};return _gfga ,nil ;}else if !_dfg .IsNullObject (_ebf ){return nil ,_bd .New ("\u0061\u0063\u0074\u0069\u006fn\u0020\u0073\u0068\u006f\u0075\u006c\u0064\u0020\u0070\u006f\u0069\u006e\u0074 \u0074\u006f\u0020\u0061\u006e\u0020\u0069\u006e\u0064\u0069\u0072\u0065\u0063\u0074\u0020\u006f\u0062\u006a\u0065\u0063\u0074"); };return nil ,nil ;}; // ViewerPreferences represents the viewer preferences of a PDF document. type ViewerPreferences struct{_dcdcg *bool ;_eaded *bool ;_dgbgf *bool ;_abea *bool ;_ebdgb *bool ;_dagge *bool ;_gbbce NonFullScreenPageMode ;_afddc Direction ;_gaeae PageBoundary ;_cfbeg PageBoundary ;_ggbeb PageBoundary ;_cdbee PageBoundary ;_bcdgc PrintScaling ; _adeg Duplex ;_cdgcd *bool ;_gbdfbf []int ;_gefff int ;}; // HasColorspaceByName checks if the colorspace with the specified name exists in the page resources. func (_bcbdag *PdfPageResources )HasColorspaceByName (keyName _dfg .PdfObjectName )bool {_aafde ,_edecg :=_bcbdag .GetColorspaces ();if _edecg !=nil {_egb .Log .Debug ("\u0045\u0052R\u004f\u0052\u0020\u0067\u0065\u0074\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006c\u006f\u0072\u0073\u0070\u0072\u0061\u0063\u0065: \u0025\u0076",_edecg ); return false ;};if _aafde ==nil {return false ;};_ ,_egfa :=_aafde .Colorspaces [string (keyName )];return _egfa ;};func _bgade (_cgag []byte )bool {if len (_cgag )< 4{return true ;};for _fbea :=range _cgag [:4]{_feecb :=rune (_fbea );if !_cf .Is (_cf .ASCII_Hex_Digit ,_feecb )&&!_cf .IsSpace (_feecb ){return true ; };};return false ;};var _ecdba =false ; // NewPdfAnnotationFreeText returns a new free text annotation. func NewPdfAnnotationFreeText ()*PdfAnnotationFreeText {_bcfa :=NewPdfAnnotation ();_ceg :=&PdfAnnotationFreeText {};_ceg .PdfAnnotation =_bcfa ;_ceg .PdfAnnotationMarkup =&PdfAnnotationMarkup {};_bcfa .SetContext (_ceg );return _ceg ;}; // NewPdfSignature creates a new PdfSignature object. func NewPdfSignature (handler SignatureHandler )*PdfSignature {_ddeg :=&PdfSignature {Type :_dfg .MakeName ("\u0053\u0069\u0067"),Handler :handler };_dcdg :=&pdfSignDictionary {PdfObjectDictionary :_dfg .MakeDict (),_adfa :&handler ,_abfbg :_ddeg };_ddeg ._fdeb =_dfg .MakeIndirectObject (_dcdg ); return _ddeg ;}; // GetNumComponents returns the number of color components (3 for Lab). func (_abec *PdfColorLab )GetNumComponents ()int {return 3};var (StructureTypeUnknown StructureType ="";StructureTypeDocument StructureType ="\u0044\u006f\u0063\u0075\u006d\u0065\u006e\u0074";StructureTypePart StructureType ="\u0050\u0061\u0072\u0074"; StructureTypeArticle StructureType ="\u0041\u0072\u0074";StructureTypeSection StructureType ="\u0053\u0065\u0063\u0074";StructureTypeDivision StructureType ="\u0044\u0069\u0076";StructureTypeBlockQuote StructureType ="\u0042\u006c\u006f\u0063\u006b\u0051\u0075\u006f\u0074\u0065"; StructureTypeCaption StructureType ="\u0043a\u0070\u0074\u0069\u006f\u006e";StructureTypeTOC StructureType ="\u0054\u004f\u0043";StructureTypeTOCI StructureType ="\u0054\u004f\u0043\u0049";StructureTypeIndex StructureType ="\u0049\u006e\u0064e\u0078";StructureTypeNonStructural StructureType ="\u004eo\u006e\u0053\u0074\u0072\u0075\u0063t"; StructureTypePrivate StructureType ="\u0050r\u0069\u0076\u0061\u0074\u0065";);func (_fbgbed *PdfWriter )addObject (_fbgfc _dfg .PdfObject )bool {_fgfba :=_fbgbed .hasObject (_fbgfc );if !_fgfba {_ebcde :=_dfg .ResolveReferencesDeep (_fbgfc ,_fbgbed ._faeee ); if _ebcde !=nil {_egb .Log .Debug ("E\u0052R\u004f\u0052\u003a\u0020\u0025\u0076\u0020\u002d \u0073\u006b\u0069\u0070pi\u006e\u0067",_ebcde );};_fbgbed ._abcef =append (_fbgbed ._abcef ,_fbgfc );_fbgbed ._bgbee [_fbgfc ]=struct{}{};return true ;};return false ; }; // AllFields returns a flattened list of all fields in the form. func (_befb *PdfAcroForm )AllFields ()[]*PdfField {if _befb ==nil {return nil ;};var _bfcaa []*PdfField ;if _befb .Fields !=nil {for _ ,_gbaab :=range *_befb .Fields {_bfcaa =append (_bfcaa ,_adbgf (_gbaab )...);};};return _bfcaa ;};func (_egec *PdfColorspaceCalGray )String ()string {return "\u0043a\u006c\u0047\u0072\u0061\u0079"}; // NewPdfColorspaceDeviceCMYK returns a new CMYK32 colorspace object. func NewPdfColorspaceDeviceCMYK ()*PdfColorspaceDeviceCMYK {return &PdfColorspaceDeviceCMYK {}}; // SetImageHandler sets the image handler used by the package. func SetImageHandler (imgHandling ImageHandler ){ImageHandling =imgHandling }; // StdFontName represents name of a standard font. type StdFontName =_bf .StdFontName ; // GetNumComponents returns the number of color components of the colorspace device. // Returns 3 for a CalRGB device. func (_fbgad *PdfColorspaceCalRGB )GetNumComponents ()int {return 3};func (_bec *PdfReader )newPdfActionHideFromDict (_gda *_dfg .PdfObjectDictionary )(*PdfActionHide ,error ){return &PdfActionHide {T :_gda .Get ("\u0054"),H :_gda .Get ("\u0048")},nil ; }; // PdfColorspaceCalRGB stores A, B, C components type PdfColorspaceCalRGB struct{WhitePoint []float64 ;BlackPoint []float64 ;Gamma []float64 ;Matrix []float64 ;_bgcc *_dfg .PdfObjectDictionary ;_fbag *_dfg .PdfIndirectObject ;}; // IsTiling specifies if the pattern is a tiling pattern. func (_beceg *PdfPattern )IsTiling ()bool {return _beceg .PatternType ==1}; // SetXObjectImageByNameLazy adds the provided XObjectImage to the page resources. // The added XObjectImage is identified by the specified name. func (_ccbeg *PdfPageResources )SetXObjectImageByNameLazy (keyName _dfg .PdfObjectName ,ximg *XObjectImage ,lazy bool )error {_adgbc :=ximg .ToPdfObject ().(*_dfg .PdfObjectStream );if lazy {_adgbc .MakeLazy ();};_fcgbe :=_ccbeg .SetXObjectByName (keyName ,_adgbc ); return _fcgbe ;}; // ColorAt returns the color of the image pixel specified by the x and y coordinates. func (_aeac *Image )ColorAt (x ,y int )(_dc .Color ,error ){_egff :=_ef .BytesPerLine (int (_aeac .Width ),int (_aeac .BitsPerComponent ),_aeac .ColorComponents );switch _aeac .ColorComponents {case 1:return _ef .ColorAtGrayscale (x ,y ,int (_aeac .BitsPerComponent ),_egff ,_aeac .Data ,_aeac ._begcc ); case 3:return _ef .ColorAtNRGBA (x ,y ,int (_aeac .Width ),_egff ,int (_aeac .BitsPerComponent ),_aeac .Data ,_aeac ._baeef ,_aeac ._begcc );case 4:return _ef .ColorAtCMYK (x ,y ,int (_aeac .Width ),_aeac .Data ,_aeac ._begcc );};_egb .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0075\u006e\u0073\u0075\u0070\u0070\u006f\u0072\u0074\u0065\u0064 i\u006da\u0067\u0065\u002e\u0020\u0025\u0064\u0020\u0063\u006f\u006d\u0070\u006fn\u0065\u006e\u0074\u0073\u002c\u0020\u0025\u0064\u0020\u0062\u0069\u0074\u0073\u0020\u0070\u0065\u0072 \u0063\u006f\u006d\u0070\u006f\u006e\u0065\u006e\u0074",_aeac .ColorComponents ,_aeac .BitsPerComponent ); return nil ,_bd .New ("\u0075\u006e\u0073\u0075p\u0070\u006f\u0072\u0074\u0065\u0064\u0020\u0069\u006d\u0061g\u0065 \u0063\u006f\u006c\u006f\u0072\u0073\u0070a\u0063\u0065");};func _ecaae (_cggea _dfg .PdfObject )*IDTree {_cggea =_dfg .ResolveReference (_cggea ); _aefff :=_dfg .MakeArray ();_gcdd :=_dfg .MakeArray ();_fccdg :=[]*IDTree {};if _egbg ,_aaaag :=_dfg .GetDict (_cggea );_aaaag {if _fgdda :=_egbg .Get ("\u004e\u0061\u006de\u0073");_fgdda !=nil {_fgdda =_dfg .ResolveReference (_fgdda );if _bcfde ,_cagdg :=_dfg .GetArray (_fgdda ); _cagdg {for _ ,_gfbcff :=range _bcfde .Elements (){_aefff .Append (_gfbcff );};};};if _gfggb :=_egbg .Get ("\u004c\u0069\u006d\u0069\u0074\u0073");_gfggb !=nil {_gfggb =_dfg .ResolveReference (_gfggb );if _fdbdd ,_cgbfa :=_dfg .GetArray (_gfggb );_cgbfa {for _ebeceb :=0; _ebeceb < 2;_ebeceb ++{_gcdd .Append (_fdbdd .Get (_ebeceb ));};};};if _dfgga :=_egbg .Get ("\u004b\u0069\u0064\u0073");_dfgga !=nil {_dfgga =_dfg .ResolveReference (_dfgga );if _gcafee ,_efgb :=_dfg .GetArray (_dfgga );_efgb {for _ ,_gcfc :=range _gcafee .Elements (){_gaafb :=_ecaae (_gcfc ); _fccdg =append (_fccdg ,_gaafb );};};};};_dcae :=&IDTree {Names :_aefff ,Limits :_gcdd };if len (_fccdg )> 0{_dcae .Kids =_fccdg ;};return _dcae ;}; // SetDocInfo set document info. // This will overwrite any globally declared document info. func (_egadc *PdfWriter )SetDocInfo (info *PdfInfo ){_egadc .setDocInfo (info .ToPdfObject ())}; // PrintArea returns the value of the printArea. func (_eeceg *ViewerPreferences )PrintArea ()PageBoundary {return _eeceg ._ggbeb }; // GetContainingPdfObject implements interface PdfModel. func (_aadggb *Permissions )GetContainingPdfObject ()_dfg .PdfObject {return _aadggb ._gbdee }; // PdfAnnotationProjection represents Projection annotations. type PdfAnnotationProjection struct{*PdfAnnotation ;*PdfAnnotationMarkup ;}; // ToPdfObject converts the pdfCIDFontType2 to a PDF representation. func (_bfdcff *pdfCIDFontType2 )ToPdfObject ()_dfg .PdfObject {if _bfdcff ._dfgaa ==nil {_bfdcff ._dfgaa =&_dfg .PdfIndirectObject {};};_fdbe :=_bfdcff .baseFields ().asPdfObjectDictionary ("\u0043\u0049\u0044F\u006f\u006e\u0074\u0054\u0079\u0070\u0065\u0032"); _bfdcff ._dfgaa .PdfObject =_fdbe ;if _bfdcff .CIDSystemInfo !=nil {_fdbe .Set ("\u0043\u0049\u0044\u0053\u0079\u0073\u0074\u0065\u006d\u0049\u006e\u0066\u006f",_bfdcff .CIDSystemInfo );};if _bfdcff .DW !=nil {_fdbe .Set ("\u0044\u0057",_bfdcff .DW );}; if _bfdcff .DW2 !=nil {_fdbe .Set ("\u0044\u0057\u0032",_bfdcff .DW2 );};if _bfdcff .W !=nil {_fdbe .Set ("\u0057",_bfdcff .W );};if _bfdcff .W2 !=nil {_fdbe .Set ("\u0057\u0032",_bfdcff .W2 );};if _bfdcff .CIDToGIDMap !=nil {_fdbe .Set ("C\u0049\u0044\u0054\u006f\u0047\u0049\u0044\u004d\u0061\u0070",_bfdcff .CIDToGIDMap ); };return _bfdcff ._dfgaa ;}; // NewPdfAnnotationTrapNet returns a new trapnet annotation. func NewPdfAnnotationTrapNet ()*PdfAnnotationTrapNet {_cecf :=NewPdfAnnotation ();_bdfa :=&PdfAnnotationTrapNet {};_bdfa .PdfAnnotation =_cecf ;_cecf .SetContext (_bdfa );return _bdfa ;};type modelManager struct{_cddd map[PdfModel ]_dfg .PdfObject ;_gdcgg map[_dfg .PdfObject ]PdfModel ; _febac _b .RWMutex ;_feeaf _b .RWMutex ;}; // AddRefChild adds a child reference object. func (_gaagd *KDict )AddRefChild (kChild _dfg .PdfObject ){_gaagd ._dcgedc =append (_gaagd ._dcgedc ,&KValue {_gbedc :kChild });}; // StringToCharcodeBytes maps the provided string runes to charcode bytes and // it returns the resulting slice of bytes, along with the number of runes // which could not be converted. If the number of misses is 0, all string runes // were successfully converted. func (_cfdda *PdfFont )StringToCharcodeBytes (str string )([]byte ,int ){return _cfdda .RunesToCharcodeBytes ([]rune (str ));};func (_daea *PdfReader )loadStructure ()error {if _daea ._agbcd .GetCrypter ()!=nil &&!_daea ._agbcd .IsAuthenticated (){return _d .Errorf ("\u0066\u0069\u006ce\u0020\u006e\u0065\u0065d\u0020\u0074\u006f\u0020\u0062\u0065\u0020d\u0065\u0063\u0072\u0079\u0070\u0074\u0065\u0064\u0020\u0066\u0069\u0072\u0073\u0074"); };_cedfc :=_daea ._agbcd .GetTrailer ();if _cedfc ==nil {return _d .Errorf ("\u006di\u0073s\u0069\u006e\u0067\u0020\u0074\u0072\u0061\u0069\u006c\u0065\u0072");};_fcdfa ,_beagg :=_cedfc .Get ("\u0052\u006f\u006f\u0074").(*_dfg .PdfObjectReference );if !_beagg {return _d .Errorf ("\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0052\u006f\u006ft\u0020\u0028\u0074\u0072\u0061\u0069\u006c\u0065\u0072\u003a \u0025\u0073\u0029",_cedfc ); };_gecdc ,_afcef :=_daea ._agbcd .LookupByReference (*_fcdfa );if _afcef !=nil {_egb .Log .Debug ("\u0045\u0052R\u004f\u0052\u003a\u0020\u0046\u0061\u0069\u006c\u0065\u0064\u0020\u0074\u006f\u0020\u0072\u0065\u0061\u0064\u0020\u0072\u006f\u006f\u0074\u0020\u0065\u006c\u0065\u006d\u0065\u006e\u0074\u0020\u0063\u0061\u0074\u0061\u006c\u006f\u0067\u003a\u0020\u0025\u0073",_afcef ); return _afcef ;};_faegg ,_beagg :=_gecdc .(*_dfg .PdfIndirectObject );if !_beagg {_egb .Log .Debug ("\u0045\u0052R\u004f\u0052\u003a\u0020\u004d\u0069\u0073\u0073\u0069\u006e\u0067\u0020\u0063\u0061\u0074\u0061\u006c\u006f\u0067\u003a\u0020\u0028\u0072\u006f\u006f\u0074\u0020\u0025\u0071\u0029\u0020\u0028\u0074\u0072\u0061\u0069\u006c\u0065\u0072\u0020\u0025\u0073\u0029",_gecdc ,*_cedfc ); return _bd .New ("\u006di\u0073s\u0069\u006e\u0067\u0020\u0063\u0061\u0074\u0061\u006c\u006f\u0067");};_daeac ,_beagg :=(*_faegg ).PdfObject .(*_dfg .PdfObjectDictionary );if !_beagg {_egb .Log .Debug ("E\u0052\u0052\u004f\u0052\u003a\u0020I\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0063\u0061t\u0061\u006c\u006fg\u0020(\u0025\u0073\u0029",_faegg .PdfObject ); return _bd .New ("\u0069n\u0076a\u006c\u0069\u0064\u0020\u0063\u0061\u0074\u0061\u006c\u006f\u0067");};_egb .Log .Trace ("C\u0061\u0074\u0061\u006c\u006f\u0067\u003a\u0020\u0025\u0073",_daeac );_fdae ,_beagg :=_daeac .Get ("\u0050\u0061\u0067e\u0073").(*_dfg .PdfObjectReference ); if !_beagg {return _bd .New ("\u0070\u0061\u0067\u0065\u0073\u0020\u0069\u006e\u0020\u0063\u0061\u0074\u0061\u006c\u006f\u0067\u0020\u0073\u0068\u006f\u0075\u006c\u0064\u0020b\u0065\u0020\u0061\u0020\u0072e\u0066\u0065r\u0065\u006e\u0063\u0065");};_bfcfc ,_afcef :=_daea ._agbcd .LookupByReference (*_fdae ); if _afcef !=nil {_egb .Log .Debug ("E\u0052\u0052\u004f\u0052\u003a\u0020F\u0061\u0069\u006c\u0065\u0064\u0020\u0074\u006f\u0020r\u0065\u0061\u0064 \u0070a\u0067\u0065\u0073");return _afcef ;};_eedf ,_beagg :=_bfcfc .(*_dfg .PdfIndirectObject );if !_beagg {_egb .Log .Debug ("E\u0052\u0052\u004f\u0052\u003a\u0020P\u0061\u0067\u0065\u0073\u0020\u006f\u0062\u006a\u0065c\u0074\u0020\u0069n\u0076a\u006c\u0069\u0064"); _egb .Log .Debug ("\u006f\u0070\u003a\u0020\u0025\u0070",_eedf );return _bd .New ("p\u0061g\u0065\u0073\u0020\u006f\u0062\u006a\u0065\u0063t\u0020\u0069\u006e\u0076al\u0069\u0064");};_ceafb ,_beagg :=_eedf .PdfObject .(*_dfg .PdfObjectDictionary );if !_beagg {_egb .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0050\u0061\u0067\u0065\u0073\u0020\u006f\u0062j\u0065c\u0074\u0020\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0028\u0025\u0073\u0029",_eedf ); return _bd .New ("p\u0061g\u0065\u0073\u0020\u006f\u0062\u006a\u0065\u0063t\u0020\u0069\u006e\u0076al\u0069\u0064");};_bgcbf ,_beagg :=_dfg .GetInt (_ceafb .Get ("\u0043\u006f\u0075n\u0074"));if !_beagg {_egb .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a \u0050\u0061\u0067\u0065\u0073\u0020\u0063\u006f\u0075\u006e\u0074\u0020\u006fb\u006a\u0065\u0063\u0074\u0020\u0069\u006ev\u0061\u006c\u0069\u0064"); return _bd .New ("\u0070\u0061\u0067\u0065s \u0063\u006f\u0075\u006e\u0074\u0020\u0069\u006e\u0076\u0061\u006c\u0069\u0064");};if _ ,_beagg =_dfg .GetName (_ceafb .Get ("\u0054\u0079\u0070\u0065"));!_beagg {_egb .Log .Debug ("\u0050\u0061\u0067\u0065\u0073\u0020\u0064\u0069\u0063\u0074\u0020T\u0079\u0070\u0065\u0020\u0066\u0069\u0065\u006cd\u0020n\u006f\u0074\u0020\u0073\u0065\u0074\u002e\u0020\u0053\u0065\u0074\u0074\u0069\u006e\u0067\u0020\u0054\u0079p\u0065\u0020\u0074\u006f\u0020\u0050\u0061\u0067\u0065\u0073\u002e"); _ceafb .Set ("\u0054\u0079\u0070\u0065",_dfg .MakeName ("\u0050\u0061\u0067e\u0073"));};if _cbgf ,_eecda :=_dfg .GetInt (_ceafb .Get ("\u0052\u006f\u0074\u0061\u0074\u0065"));_eecda {_aeabf :=int64 (*_cbgf );_daea .Rotate =&_aeabf ;};_daea ._ceff =_fcdfa ; _daea ._fbfgb =_daeac ;_daea ._gfbee =_ceafb ;_daea ._ffdb =_eedf ;_daea ._dfgg =int (*_bgcbf );_daea ._ggbf =[]*_dfg .PdfIndirectObject {};_fddf :=map[_dfg .PdfObject ]struct{}{};_afcef =_daea .buildPageList (_eedf ,nil ,_fddf );if _afcef !=nil {return _afcef ; };_egb .Log .Trace ("\u002d\u002d\u002d");_egb .Log .Trace ("\u0054\u004f\u0043");_egb .Log .Trace ("\u0050\u0061\u0067e\u0073");_egb .Log .Trace ("\u0025\u0064\u003a\u0020\u0025\u0073",len (_daea ._ggbf ),_daea ._ggbf );_daea ._dagg ,_afcef =_daea .loadOutlines (); if _afcef !=nil {_egb .Log .Debug ("E\u0052\u0052\u004f\u0052\u003a\u0020\u0046\u0061\u0069\u006c\u0065\u0064\u0020\u0074\u006f\u0020\u0062\u0075i\u006c\u0064\u0020\u006f\u0075\u0074\u006c\u0069\u006e\u0065 t\u0072\u0065\u0065 \u0028%\u0073\u0029",_afcef ); return _afcef ;};_daea .AcroForm ,_afcef =_daea .loadForms ();if _afcef !=nil {return _afcef ;};_daea .DSS ,_afcef =_daea .loadDSS ();if _afcef !=nil {return _afcef ;};_daea ._efgca ,_afcef =_daea .loadPerms ();if _afcef !=nil {return _afcef ;};return nil ; };func (_dafg *PdfField )inherit (_fdbbe func (*PdfField )bool )(bool ,error ){_ccbdd :=map[*PdfField ]bool {};_gbbc :=false ;_fdgf :=_dafg ;for _fdgf !=nil {if _ ,_ceca :=_ccbdd [_fdgf ];_ceca {return false ,_bd .New ("\u0072\u0065\u0063\u0075rs\u0069\u0076\u0065\u0020\u0074\u0072\u0061\u0076\u0065\u0072\u0073\u0061\u006c"); };_ggad :=_fdbbe (_fdgf );if _ggad {_gbbc =true ;break ;};_ccbdd [_fdgf ]=true ;_fdgf =_fdgf .Parent ;};return _gbbc ,nil ;};func (_fbgb *PdfReader )newPdfAnnotationMarkupFromDict (_ggaa *_dfg .PdfObjectDictionary )(*PdfAnnotationMarkup ,error ){_geee :=&PdfAnnotationMarkup {}; if _aef :=_ggaa .Get ("\u0054");_aef !=nil {_geee .T =_aef ;};if _fbf :=_ggaa .Get ("\u0050\u006f\u0070u\u0070");_fbf !=nil {_dgfg ,_dadg :=_fbf .(*_dfg .PdfIndirectObject );if !_dadg {if _ ,_ddde :=_fbf .(*_dfg .PdfObjectNull );!_ddde {return nil ,_bd .New ("p\u006f\u0070\u0075\u0070\u0020\u0073\u0068\u006f\u0075\u006c\u0064\u0020\u0070\u006f\u0069\u006e\u0074\u0020t\u006f\u0020\u0061\u006e\u0020\u0069\u006e\u0064\u0069\u0072ec\u0074\u0020\u006fb\u006ae\u0063\u0074"); };}else {_bef ,_fbff :=_fbgb .newPdfAnnotationFromIndirectObject (_dgfg );if _fbff !=nil {return nil ,_fbff ;};if _bef !=nil {_fbe ,_fgdg :=_bef ._dga .(*PdfAnnotationPopup );if !_fgdg {return nil ,_bd .New ("\u006f\u0062\u006ae\u0063\u0074\u0020\u006e\u006f\u0074\u0020\u0072\u0065\u0066\u0065\u0072\u0072\u0069\u006e\u0067\u0020\u0074\u006f\u0020\u0061\u0020\u0070\u006f\u0070\u0075\u0070\u0020\u0061n\u006e\u006f\u0074\u0061\u0074\u0069\u006f\u006e"); };_geee .Popup =_fbe ;};};};if _gcde :=_ggaa .Get ("\u0043\u0041");_gcde !=nil {_geee .CA =_gcde ;};if _dag :=_ggaa .Get ("\u0052\u0043");_dag !=nil {_geee .RC =_dag ;};if _bbbb :=_ggaa .Get ("\u0043\u0072\u0065a\u0074\u0069\u006f\u006e\u0044\u0061\u0074\u0065"); _bbbb !=nil {_geee .CreationDate =_bbbb ;};if _febc :=_ggaa .Get ("\u0049\u0052\u0054");_febc !=nil {_geee .IRT =_febc ;};if _dgg :=_ggaa .Get ("\u0053\u0075\u0062\u006a");_dgg !=nil {_geee .Subj =_dgg ;};if _abbc :=_ggaa .Get ("\u0052\u0054");_abbc !=nil {_geee .RT =_abbc ; };if _aacac :=_ggaa .Get ("\u0049\u0054");_aacac !=nil {_geee .IT =_aacac ;};if _bge :=_ggaa .Get ("\u0045\u0078\u0044\u0061\u0074\u0061");_bge !=nil {_geee .ExData =_bge ;};return _geee ,nil ;}; // FieldFlag represents form field flags. Some of the flags can apply to all types of fields whereas other // flags are specific. type FieldFlag uint32 ; // ToPdfObject implements model.PdfModel interface. func (_dgce *PdfOutputIntent )ToPdfObject ()_dfg .PdfObject {if _dgce ._gacff ==nil {_dgce ._gacff =_dfg .MakeDict ();};_bdbfe :=_dgce ._gacff ;if _dgce .Type !=""{_bdbfe .Set ("\u0054\u0079\u0070\u0065",_dfg .MakeName (_dgce .Type ));};_bdbfe .Set ("\u0053",_dfg .MakeName (_dgce .S .String ())); if _dgce .OutputCondition !=""{_bdbfe .Set ("\u004fu\u0074p\u0075\u0074\u0043\u006f\u006e\u0064\u0069\u0074\u0069\u006f\u006e",_dfg .MakeString (_dgce .OutputCondition ));};_bdbfe .Set ("\u004fu\u0074\u0070\u0075\u0074C\u006f\u006e\u0064\u0069\u0074i\u006fn\u0049d\u0065\u006e\u0074\u0069\u0066\u0069\u0065r",_dfg .MakeString (_dgce .OutputConditionIdentifier )); _bdbfe .Set ("\u0052\u0065\u0067i\u0073\u0074\u0072\u0079\u004e\u0061\u006d\u0065",_dfg .MakeString (_dgce .RegistryName ));if _dgce .Info !=""{_bdbfe .Set ("\u0049\u006e\u0066\u006f",_dfg .MakeString (_dgce .Info ));};if len (_dgce .DestOutputProfile )!=0{_edba ,_bdgec :=_dfg .MakeStream (_dgce .DestOutputProfile ,_dfg .NewFlateEncoder ()); if _bdgec !=nil {_egb .Log .Error ("\u004d\u0061\u006b\u0065\u0053\u0074\u0072\u0065\u0061\u006d\u0020\u0044\u0065s\u0074\u004f\u0075\u0074\u0070\u0075t\u0050\u0072\u006f\u0066\u0069\u006c\u0065\u0020\u0066\u0061\u0069\u006c\u0065d\u003a\u0020\u0025\u0076",_bdgec ); };_edba .PdfObjectDictionary .Set ("\u004e",_dfg .MakeInteger (int64 (_dgce .ColorComponents )));_bcdb :=make ([]float64 ,_dgce .ColorComponents *2);for _abbbb :=0;_abbbb < _dgce .ColorComponents *2;_abbbb ++{_edbe :=0.0;if _abbbb %2!=0{_edbe =1.0;};_bcdb [_abbbb ]=_edbe ; };_edba .PdfObjectDictionary .Set ("\u0052\u0061\u006eg\u0065",_dfg .MakeArrayFromFloats (_bcdb ));_bdbfe .Set ("\u0044\u0065\u0073\u0074\u004f\u0075\u0074\u0070\u0075\u0074\u0050\u0072o\u0066\u0069\u006c\u0065",_edba );};return _bdbfe ;}; // ImageToRGB convert 1-component grayscale data to 3-component RGB. func (_acff *PdfColorspaceDeviceGray )ImageToRGB (img Image )(Image ,error ){if img .ColorComponents !=1{return img ,_bd .New ("\u0074\u0068e \u0070\u0072\u006fv\u0069\u0064\u0065\u0064 im\u0061ge\u0020\u0069\u0073\u0020\u006e\u006f\u0074 g\u0072\u0061\u0079\u0020\u0073\u0063\u0061l\u0065"); };_fff ,_fdgc :=_ef .NewImage (int (img .Width ),int (img .Height ),int (img .BitsPerComponent ),img .ColorComponents ,img .Data ,img ._baeef ,img ._begcc );if _fdgc !=nil {return img ,_fdgc ;};_aecgc ,_fdgc :=_ef .NRGBAConverter .Convert (_fff );if _fdgc !=nil {return img ,_fdgc ; };_adda :=_deba (_aecgc .Base ());_egb .Log .Trace ("\u0044\u0065\u0076\u0069\u0063\u0065\u0047\u0072\u0061\u0079\u0020\u002d>\u0020\u0052\u0047\u0042");_egb .Log .Trace ("s\u0061\u006d\u0070\u006c\u0065\u0073\u003a\u0020\u0025\u0076",img .Data );_egb .Log .Trace ("\u0052G\u0042 \u0073\u0061\u006d\u0070\u006c\u0065\u0073\u003a\u0020\u0025\u0076",_adda .Data ); _egb .Log .Trace ("\u0025\u0076\u0020\u002d\u003e\u0020\u0025\u0076",img ,_adda );return _adda ,nil ;}; // SetContext sets the sub pattern (context). Either PdfTilingPattern or PdfShadingPattern. func (_dfaea *PdfPattern )SetContext (ctx PdfModel ){_dfaea ._bfaedb =ctx }; // ToPdfObject converts date to a PDF string object. func (_adgdd *PdfDate )ToPdfObject ()_dfg .PdfObject {_beage :=_d .Sprintf ("\u0044\u003a\u0025\u002e\u0034\u0064\u0025\u002e\u0032\u0064\u0025\u002e\u0032\u0064\u0025\u002e\u0032\u0064\u0025\u002e\u0032\u0064\u0025\u002e2\u0064\u0025\u0063\u0025\u002e2\u0064\u0027%\u002e\u0032\u0064\u0027",_adgdd ._accga ,_adgdd ._fedabd ,_adgdd ._agfc ,_adgdd ._cgae ,_adgdd ._abggb ,_adgdd ._dbddf ,_adgdd ._fedac ,_adgdd ._adgc ,_adgdd ._aaggg ); return _dfg .MakeString (_beage );};func _dfefb (_bdbbg *_dfg .PdfObjectDictionary )(*PdfShadingType7 ,error ){_acdbd :=PdfShadingType7 {};_dfdgff :=_bdbbg .Get ("\u0042\u0069\u0074\u0073\u0050\u0065\u0072\u0043\u006f\u006f\u0072\u0064i\u006e\u0061\u0074\u0065"); if _dfdgff ==nil {_egb .Log .Debug ("\u0052e\u0071\u0075i\u0072\u0065\u0064 \u0061\u0074\u0074\u0072\u0069\u0062\u0075t\u0065\u0020\u006d\u0069\u0073\u0073i\u006e\u0067\u003a\u0020\u0042\u0069\u0074\u0073\u0050\u0065\u0072C\u006f\u006f\u0072\u0064\u0069\u006e\u0061\u0074\u0065"); return nil ,ErrRequiredAttributeMissing ;};_bfecg ,_defeg :=_dfdgff .(*_dfg .PdfObjectInteger );if !_defeg {_egb .Log .Debug ("\u0042\u0069\u0074\u0073\u0050e\u0072\u0043\u006f\u006f\u0072\u0064\u0069\u006e\u0061\u0074\u0065\u0020\u006eo\u0074\u0020\u0061\u006e\u0020\u0069\u006e\u0074\u0065\u0067\u0065\u0072\u0020\u0028\u0067\u006f\u0074\u0020\u0025\u0054\u0029",_dfdgff ); return nil ,_dfg .ErrTypeError ;};_acdbd .BitsPerCoordinate =_bfecg ;_dfdgff =_bdbbg .Get ("\u0042\u0069t\u0073\u0050\u0065r\u0043\u006f\u006d\u0070\u006f\u006e\u0065\u006e\u0074");if _dfdgff ==nil {_egb .Log .Debug ("\u0052e\u0071\u0075i\u0072\u0065\u0064\u0020a\u0074\u0074\u0072i\u0062\u0075\u0074\u0065\u0020\u006d\u0069\u0073\u0073in\u0067\u003a\u0020B\u0069\u0074s\u0050\u0065\u0072\u0043\u006f\u006dp\u006f\u006ee\u006e\u0074"); return nil ,ErrRequiredAttributeMissing ;};_bfecg ,_defeg =_dfdgff .(*_dfg .PdfObjectInteger );if !_defeg {_egb .Log .Debug ("B\u0069\u0074\u0073\u0050\u0065\u0072\u0043\u006f\u006d\u0070\u006f\u006e\u0065\u006e\u0074\u0020\u006e\u006ft\u0020\u0061\u006e\u0020\u0069\u006e\u0074\u0065\u0067\u0065r \u0028\u0067\u006ft\u0020%\u0054\u0029",_dfdgff ); return nil ,_dfg .ErrTypeError ;};_acdbd .BitsPerComponent =_bfecg ;_dfdgff =_bdbbg .Get ("B\u0069\u0074\u0073\u0050\u0065\u0072\u0046\u006c\u0061\u0067");if _dfdgff ==nil {_egb .Log .Debug ("\u0052\u0065\u0071\u0075\u0069\u0072\u0065\u0064\u0020\u0061\u0074\u0074\u0072i\u0062\u0075\u0074\u0065\u0020\u006di\u0073\u0073\u0069\u006e\u0067\u003a\u0020\u0042\u0069\u0074\u0073\u0050\u0065r\u0046\u006c\u0061\u0067"); return nil ,ErrRequiredAttributeMissing ;};_bfecg ,_defeg =_dfdgff .(*_dfg .PdfObjectInteger );if !_defeg {_egb .Log .Debug ("B\u0069\u0074\u0073\u0050\u0065\u0072F\u006c\u0061\u0067\u0020\u006e\u006ft\u0020\u0061\u006e\u0020\u0069\u006e\u0074e\u0067\u0065\u0072\u0020\u0028\u0067\u006f\u0074\u0020\u0025T\u0029",_dfdgff ); return nil ,_dfg .ErrTypeError ;};_acdbd .BitsPerComponent =_bfecg ;_dfdgff =_bdbbg .Get ("\u0044\u0065\u0063\u006f\u0064\u0065");if _dfdgff ==nil {_egb .Log .Debug ("\u0052\u0065\u0071ui\u0072\u0065\u0064\u0020\u0061\u0074\u0074\u0072\u0069b\u0075t\u0065 \u006di\u0073\u0073\u0069\u006e\u0067\u003a\u0020\u0044\u0065\u0063\u006f\u0064\u0065"); return nil ,ErrRequiredAttributeMissing ;};_aaade ,_defeg :=_dfdgff .(*_dfg .PdfObjectArray );if !_defeg {_egb .Log .Debug ("\u0044\u0065\u0063\u006fd\u0065\u0020\u006e\u006f\u0074\u0020\u0061\u006e\u0020\u0061r\u0072a\u0079\u0020\u0028\u0067\u006f\u0074\u0020%\u0054\u0029",_dfdgff ); return nil ,_dfg .ErrTypeError ;};_acdbd .Decode =_aaade ;if _gfgbee :=_bdbbg .Get ("\u0046\u0075\u006e\u0063\u0074\u0069\u006f\u006e");_gfgbee !=nil {_acdbd .Function =[]PdfFunction {};if _afabe ,_dadgd :=_gfgbee .(*_dfg .PdfObjectArray );_dadgd {for _ ,_bcafeb :=range _afabe .Elements (){_acbdb ,_aefga :=_gbada (_bcafeb ); if _aefga !=nil {_egb .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0070\u0061\u0072\u0073\u0069n\u0067\u0020\u0066\u0075\u006e\u0063\u0074\u0069\u006f\u006e:\u0020\u0025\u0076",_aefga );return nil ,_aefga ;};_acdbd .Function =append (_acdbd .Function ,_acbdb ); };}else {_gdeec ,_gcgbb :=_gbada (_gfgbee );if _gcgbb !=nil {_egb .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0070\u0061\u0072\u0073\u0069n\u0067\u0020\u0066\u0075\u006e\u0063\u0074\u0069\u006f\u006e:\u0020\u0025\u0076",_gcgbb );return nil ,_gcgbb ; };_acdbd .Function =append (_acdbd .Function ,_gdeec );};};return &_acdbd ,nil ;}; // AddImageResource adds an image to the XObject resources. func (_dfddgf *PdfPage )AddImageResource (name _dfg .PdfObjectName ,ximg *XObjectImage )error {var _cefbe *_dfg .PdfObjectDictionary ;if _dfddgf .Resources .XObject ==nil {_cefbe =_dfg .MakeDict ();_dfddgf .Resources .XObject =_cefbe ;}else {var _fdadc bool ; _cefbe ,_fdadc =(_dfddgf .Resources .XObject ).(*_dfg .PdfObjectDictionary );if !_fdadc {return _bd .New ("\u0069\u006e\u0076\u0061li\u0064\u0020\u0078\u0072\u0065\u0073\u0020\u0064\u0069\u0063\u0074\u0020\u0074\u0079p\u0065");};};_cefbe .Set (name ,ximg .ToPdfObject ()); return nil ;}; // PdfColorLab represents a color in the L*, a*, b* 3 component colorspace. // Each component is defined in the range 0.0 - 1.0 where 1.0 is the primary intensity. type PdfColorLab [3]float64 ; // GetPageAsIndirectObject returns the page as a dictionary within an PdfIndirectObject. func (_adfgb *PdfPage )GetPageAsIndirectObject ()*_dfg .PdfIndirectObject {return _adfgb ._bdeee }; // RemoveChild removes a specific KValue child from the kChildren slice. func (_beecf *KDict )RemoveChild (kv *KValue )bool {for _gfbag ,_eafca :=range _beecf ._dcgedc {if _eafca ==kv {_beecf ._dcgedc =append (_beecf ._dcgedc [:_gfbag ],_beecf ._dcgedc [_gfbag +1:]...);return true ;};};return false ;}; // PdfFilespec represents a file specification which can either refer to an external or embedded file. type PdfFilespec struct{Type _dfg .PdfObject ;FS _dfg .PdfObject ;F _dfg .PdfObject ;UF _dfg .PdfObject ;DOS _dfg .PdfObject ;Mac _dfg .PdfObject ;Unix _dfg .PdfObject ;ID _dfg .PdfObject ;V _dfg .PdfObject ;EF _dfg .PdfObject ;RF _dfg .PdfObject ;Desc _dfg .PdfObject ; CI _dfg .PdfObject ;AFRelationship _dfg .PdfObject ;_bcadf _dfg .PdfObject ;}; // GetCerts returns the signature certificate chain. func (_ffbba *PdfSignature )GetCerts ()([]*_de .Certificate ,error ){var _agdde []func ()([]*_de .Certificate ,error );switch _gddfa ,_ :=_dfg .GetNameVal (_ffbba .SubFilter );_gddfa {case "\u0061\u0064\u0062\u0065.p\u006b\u0063\u0073\u0037\u002e\u0064\u0065\u0074\u0061\u0063\u0068\u0065\u0064","\u0045\u0054\u0053\u0049.C\u0041\u0064\u0045\u0053\u002e\u0064\u0065\u0074\u0061\u0063\u0068\u0065\u0064":_agdde =append (_agdde ,_ffbba .extractChainFromPKCS7 ,_ffbba .extractChainFromCert ); case "\u0061d\u0062e\u002e\u0078\u0035\u0030\u0039.\u0072\u0073a\u005f\u0073\u0068\u0061\u0031":_agdde =append (_agdde ,_ffbba .extractChainFromCert );case "\u0045\u0054\u0053I\u002e\u0052\u0046\u0043\u0033\u0031\u0036\u0031":_agdde =append (_agdde ,_ffbba .extractChainFromPKCS7 ); default:return nil ,_d .Errorf ("\u0075n\u0073\u0075\u0070\u0070o\u0072\u0074\u0065\u0064\u0020S\u0075b\u0046i\u006c\u0074\u0065\u0072\u003a\u0020\u0025s",_gddfa );};for _ ,_dcegf :=range _agdde {_ecgg ,_ffabc :=_dcegf ();if _ffabc !=nil {return nil ,_ffabc ; };if len (_ecgg )> 0{return _ecgg ,nil ;};};return nil ,ErrSignNoCertificates ;}; // SetEncoder sets the encoding for the underlying font. // TODO(peterwilliams97): Change function signature to SetEncoder(encoder *textencoding.simpleEncoder). // TODO(gunnsth): Makes sense if SetEncoder is removed from the interface fonts.Font as proposed in PR #260. func (_dbee *pdfFontSimple )SetEncoder (encoder _ff .TextEncoder ){_dbee ._febca =encoder }; // SetImage updates XObject Image with new image data. func (_ecedbc *XObjectImage )SetImage (img *Image ,cs PdfColorspace )error {_ecedbc .Filter .UpdateParams (img .GetParamsDict ());_ggcfa ,_cgdab :=_ecedbc .Filter .EncodeBytes (img .Data );if _cgdab !=nil {return _cgdab ;};_ecedbc .Stream =_ggcfa ;_agaefd :=img .Width ; _ecedbc .Width =&_agaefd ;_bggdde :=img .Height ;_ecedbc .Height =&_bggdde ;_eacbd :=img .BitsPerComponent ;_ecedbc .BitsPerComponent =&_eacbd ;if cs ==nil {if img .ColorComponents ==1{_ecedbc .ColorSpace =NewPdfColorspaceDeviceGray ();}else if img .ColorComponents ==3{_ecedbc .ColorSpace =NewPdfColorspaceDeviceRGB (); }else if img .ColorComponents ==4{_ecedbc .ColorSpace =NewPdfColorspaceDeviceCMYK ();}else {return _bd .New ("c\u006fl\u006f\u0072\u0073\u0070\u0061\u0063\u0065\u0020u\u006e\u0064\u0065\u0066in\u0065\u0064");};}else {_ecedbc .ColorSpace =cs ;};return nil ; }; // SetFontByName sets the font specified by keyName to the given object. func (_cgec *PdfPageResources )SetFontByName (keyName _dfg .PdfObjectName ,obj _dfg .PdfObject )error {if _cgec .Font ==nil {_cgec .Font =_dfg .MakeDict ();};_eagab ,_gdedc :=_dfg .TraceToDirectObject (_cgec .Font ).(*_dfg .PdfObjectDictionary );if !_gdedc {_egb .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0046\u006f\u006e\u0074\u0020\u006e\u006f\u0074\u0020\u0061\u0020\u0064\u0069\u0063\u0074\u0069\u006fn\u0061\u0072\u0079\u0021\u0020(\u0067\u006ft\u0020\u0025\u0054\u0029",_dfg .TraceToDirectObject (_cgec .Font )); return _dfg .ErrTypeError ;};_eagab .Set (keyName ,obj );return nil ;}; // IsColored specifies if the pattern is colored. func (_agfad *PdfTilingPattern )IsColored ()bool {if _agfad .PaintType !=nil &&*_agfad .PaintType ==1{return true ;};return false ;};func (_deebb *Image )samplesTrimPadding (_cdgbc []uint32 )[]uint32 {_ceeg :=_deebb .ColorComponents *int (_deebb .Width )*int (_deebb .Height ); if len (_cdgbc )==_ceeg {return _cdgbc ;};_gcff :=make ([]uint32 ,_ceeg );_ceddc :=int (_deebb .Width )*_deebb .ColorComponents ;var _aeaa ,_aecgg ,_afbed ,_fecfg int ;_egbeb :=_ef .BytesPerLine (int (_deebb .Width ),int (_deebb .BitsPerComponent ),_deebb .ColorComponents ); for _aeaa =0;_aeaa < int (_deebb .Height );_aeaa ++{_aecgg =_aeaa *int (_deebb .Width );_afbed =_aeaa *_egbeb ;for _fecfg =0;_fecfg < _ceddc ;_fecfg ++{_gcff [_aecgg +_fecfg ]=_cdgbc [_afbed +_fecfg ];};};return _gcff ;};const (ButtonTypeCheckbox ButtonType =iota ; ButtonTypePush ButtonType =iota ;ButtonTypeRadio ButtonType =iota ;); // ToPdfObject converts the font to a PDF representation. func (_baae *pdfFontType3 )ToPdfObject ()_dfg .PdfObject {if _baae ._agfgb ==nil {_baae ._agfgb =&_dfg .PdfIndirectObject {};};_fafee :=_baae .baseFields ().asPdfObjectDictionary ("\u0054\u0079\u0070e\u0033");_baae ._agfgb .PdfObject =_fafee ;if _baae .FirstChar !=nil {_fafee .Set ("\u0046i\u0072\u0073\u0074\u0043\u0068\u0061r",_baae .FirstChar ); };if _baae .LastChar !=nil {_fafee .Set ("\u004c\u0061\u0073\u0074\u0043\u0068\u0061\u0072",_baae .LastChar );};if _baae .Widths !=nil {_fafee .Set ("\u0057\u0069\u0064\u0074\u0068\u0073",_baae .Widths );};if _baae .Encoding !=nil {_fafee .Set ("\u0045\u006e\u0063\u006f\u0064\u0069\u006e\u0067",_baae .Encoding ); }else if _baae ._bafca !=nil {_ggefa :=_baae ._bafca .ToPdfObject ();if _ggefa !=nil {_fafee .Set ("\u0045\u006e\u0063\u006f\u0064\u0069\u006e\u0067",_ggefa );};};if _baae .FontBBox !=nil {_fafee .Set ("\u0046\u006f\u006e\u0074\u0042\u0042\u006f\u0078",_baae .FontBBox ); };if _baae .FontMatrix !=nil {_fafee .Set ("\u0046\u006f\u006e\u0074\u004d\u0061\u0074\u0069\u0072\u0078",_baae .FontMatrix );};if _baae .CharProcs !=nil {_fafee .Set ("\u0043h\u0061\u0072\u0050\u0072\u006f\u0063s",_baae .CharProcs );};if _baae .Resources !=nil {_fafee .Set ("\u0052e\u0073\u006f\u0075\u0072\u0063\u0065s",_baae .Resources ); };return _baae ._agfgb ;};func _cfafa ()_ge .Time {_dfbaa .Lock ();defer _dfbaa .Unlock ();return _cedee };func _ceead ()_ge .Time {_dfbaa .Lock ();defer _dfbaa .Unlock ();return _agfff }; // ColorToRGB converts a Lab color to an RGB color. func (_fgfd *PdfColorspaceLab )ColorToRGB (color PdfColor )(PdfColor ,error ){_cfbe :=func (_eece float64 )float64 {if _eece >=6.0/29{return _eece *_eece *_eece ;};return 108.0/841*(_eece -4.0/29.0);};_bcda ,_efabc :=color .(*PdfColorLab );if !_efabc {_egb .Log .Debug ("\u0069\u006e\u0070\u0075t \u0063\u006f\u006c\u006f\u0072\u0020\u006e\u006f\u0074\u0020\u006c\u0061\u0062"); return nil ,_bd .New ("\u0074\u0079p\u0065\u0020\u0063h\u0065\u0063\u006b\u0020\u0065\u0072\u0072\u006f\u0072");};LStar :=_bcda .L ();AStar :=_bcda .A ();BStar :=_bcda .B ();L :=(LStar +16)/116+AStar /500;M :=(LStar +16)/116;N :=(LStar +16)/116-BStar /200; X :=_fgfd .WhitePoint [0]*_cfbe (L );Y :=_fgfd .WhitePoint [1]*_cfbe (M );Z :=_fgfd .WhitePoint [2]*_cfbe (N );_dgfa :=3.240479*X +-1.537150*Y +-0.498535*Z ;_adfeb :=-0.969256*X +1.875992*Y +0.041556*Z ;_bcdc :=0.055648*X +-0.204043*Y +1.057311*Z ;_dgfa =_df .Min (_df .Max (_dgfa ,0),1.0); _adfeb =_df .Min (_df .Max (_adfeb ,0),1.0);_bcdc =_df .Min (_df .Max (_bcdc ,0),1.0);return NewPdfColorDeviceRGB (_dgfa ,_adfeb ,_bcdc ),nil ;};func (_cad *PdfReader )newPdfActionRenditionFromDict (_fagg *_dfg .PdfObjectDictionary )(*PdfActionRendition ,error ){return &PdfActionRendition {R :_fagg .Get ("\u0052"),AN :_fagg .Get ("\u0041\u004e"),OP :_fagg .Get ("\u004f\u0050"),JS :_fagg .Get ("\u004a\u0053")},nil ; }; // ImageToRGB converts CalRGB colorspace image to RGB and returns the result. func (_gcce *PdfColorspaceCalRGB )ImageToRGB (img Image )(Image ,error ){_cece :=_efe .NewReader (img .getBase ());_gccd :=_ef .NewImageBase (int (img .Width ),int (img .Height ),int (img .BitsPerComponent ),3,nil ,nil ,nil );_ddbc :=_efe .NewWriter (_gccd ); _cbde :=_df .Pow (2,float64 (img .BitsPerComponent ))-1;_cddfb :=make ([]uint32 ,3);var (_fcad error ;_gdaeg ,_affa ,_fdbb ,_bgca ,_aada ,_cebdf float64 ;);for {_fcad =_cece .ReadSamples (_cddfb );if _fcad ==_edg .EOF {break ;}else if _fcad !=nil {return img ,_fcad ; };_gdaeg =float64 (_cddfb [0])/_cbde ;_affa =float64 (_cddfb [1])/_cbde ;_fdbb =float64 (_cddfb [2])/_cbde ;_bgca =_gcce .Matrix [0]*_df .Pow (_gdaeg ,_gcce .Gamma [0])+_gcce .Matrix [3]*_df .Pow (_affa ,_gcce .Gamma [1])+_gcce .Matrix [6]*_df .Pow (_fdbb ,_gcce .Gamma [2]); _aada =_gcce .Matrix [1]*_df .Pow (_gdaeg ,_gcce .Gamma [0])+_gcce .Matrix [4]*_df .Pow (_affa ,_gcce .Gamma [1])+_gcce .Matrix [7]*_df .Pow (_fdbb ,_gcce .Gamma [2]);_cebdf =_gcce .Matrix [2]*_df .Pow (_gdaeg ,_gcce .Gamma [0])+_gcce .Matrix [5]*_df .Pow (_affa ,_gcce .Gamma [1])+_gcce .Matrix [8]*_df .Pow (_fdbb ,_gcce .Gamma [2]); _gdaeg =3.240479*_bgca +-1.537150*_aada +-0.498535*_cebdf ;_affa =-0.969256*_bgca +1.875992*_aada +0.041556*_cebdf ;_fdbb =0.055648*_bgca +-0.204043*_aada +1.057311*_cebdf ;_gdaeg =_df .Min (_df .Max (_gdaeg ,0),1.0);_affa =_df .Min (_df .Max (_affa ,0),1.0); _fdbb =_df .Min (_df .Max (_fdbb ,0),1.0);_cddfb [0]=uint32 (_gdaeg *_cbde );_cddfb [1]=uint32 (_affa *_cbde );_cddfb [2]=uint32 (_fdbb *_cbde );if _fcad =_ddbc .WriteSamples (_cddfb );_fcad !=nil {return img ,_fcad ;};};return _deba (&_gccd ),nil ;}; // ToPdfObject implements interface PdfModel. func (_gcedb *PdfSignatureReference )ToPdfObject ()_dfg .PdfObject {_fdaffc :=_dfg .MakeDict ();_fdaffc .SetIfNotNil ("\u0054\u0079\u0070\u0065",_gcedb .Type );_fdaffc .SetIfNotNil ("\u0054r\u0061n\u0073\u0066\u006f\u0072\u006d\u004d\u0065\u0074\u0068\u006f\u0064",_gcedb .TransformMethod ); _fdaffc .SetIfNotNil ("\u0054r\u0061n\u0073\u0066\u006f\u0072\u006d\u0050\u0061\u0072\u0061\u006d\u0073",_gcedb .TransformParams );_fdaffc .SetIfNotNil ("\u0044\u0061\u0074\u0061",_gcedb .Data );_fdaffc .SetIfNotNil ("\u0044\u0069\u0067e\u0073\u0074\u004d\u0065\u0074\u0068\u006f\u0064",_gcedb .DigestMethod ); return _fdaffc ;}; // Width returns the width of `rect`. func (_gfddc *PdfRectangle )Width ()float64 {return _df .Abs (_gfddc .Urx -_gfddc .Llx )}; // PdfShadingType1 is a Function-based shading. type PdfShadingType1 struct{*PdfShading ;Domain *_dfg .PdfObjectArray ;Matrix *_dfg .PdfObjectArray ;Function []PdfFunction ;}; // DecodeArray returns the range of color component values in CalGray colorspace. func (_cebd *PdfColorspaceCalGray )DecodeArray ()[]float64 {return []float64 {0.0,1.0}}; // NewPdfAnnotationHighlight returns a new text highlight annotation. func NewPdfAnnotationHighlight ()*PdfAnnotationHighlight {_fda :=NewPdfAnnotation ();_ace :=&PdfAnnotationHighlight {};_ace .PdfAnnotation =_fda ;_ace .PdfAnnotationMarkup =&PdfAnnotationMarkup {};_fda .SetContext (_ace );return _ace ;}; // PdfFunctionType0 uses a sequence of sample values (contained in a stream) to provide an approximation // for functions whose domains and ranges are bounded. The samples are organized as an m-dimensional // table in which each entry has n components type PdfFunctionType0 struct{Domain []float64 ;Range []float64 ;NumInputs int ;NumOutputs int ;Size []int ;BitsPerSample int ;Order int ;Encode []float64 ;Decode []float64 ;_ffdce []byte ;_aabea []uint32 ;_deefg *_dfg .PdfObjectStream ;}; // GetOutlinesFlattened returns a flattened list of tree nodes and titles. // NOTE: for most use cases, it is recommended to use the high-level GetOutlines // method instead, which also provides information regarding the destination // of the outline items. func (_aafeb *PdfReader )GetOutlinesFlattened ()([]*PdfOutlineTreeNode ,[]string ,error ){var _debe []*PdfOutlineTreeNode ;var _ddgcd []string ;var _dfgc func (*PdfOutlineTreeNode ,*[]*PdfOutlineTreeNode ,*[]string ,int );_dfgc =func (_agcfc *PdfOutlineTreeNode ,_ebac *[]*PdfOutlineTreeNode ,_ebae *[]string ,_bdfbe int ){if _agcfc ==nil {return ; };if _agcfc ._cface ==nil {_egb .Log .Debug ("E\u0052\u0052\u004f\u0052\u003a\u0020M\u0069\u0073\u0073\u0069\u006e\u0067\u0020\u006e\u006fd\u0065\u002e\u0063o\u006et\u0065\u0078\u0074");return ;};_gdegf ,_bgbe :=_agcfc ._cface .(*PdfOutlineItem );if _bgbe {*_ebac =append (*_ebac ,&_gdegf .PdfOutlineTreeNode ); _fbce :=_af .Repeat ("\u0020",_bdfbe *2)+_gdegf .Title .Decoded ();*_ebae =append (*_ebae ,_fbce );};if _agcfc .First !=nil {_ecfcb :=_af .Repeat ("\u0020",_bdfbe *2)+"\u002b";*_ebae =append (*_ebae ,_ecfcb );_dfgc (_agcfc .First ,_ebac ,_ebae ,_bdfbe +1); };if _bgbe &&_gdegf .Next !=nil {_dfgc (_gdegf .Next ,_ebac ,_ebae ,_bdfbe );};};_dfgc (_aafeb ._dagg ,&_debe ,&_ddgcd ,0);return _debe ,_ddgcd ,nil ;}; // ToInteger convert to an integer format. func (_ggb *PdfColorLab )ToInteger (bits int )[3]uint32 {_bege :=_df .Pow (2,float64 (bits ))-1;return [3]uint32 {uint32 (_bege *_ggb .L ()),uint32 (_bege *_ggb .A ()),uint32 (_bege *_ggb .B ())};}; // ToPdfObject implements interface PdfModel. func (_caag *PdfAnnotationSound )ToPdfObject ()_dfg .PdfObject {_caag .PdfAnnotation .ToPdfObject ();_gfc :=_caag ._afae ;_agbf :=_gfc .PdfObject .(*_dfg .PdfObjectDictionary );_caag .appendToPdfDictionary (_agbf );_agbf .SetIfNotNil ("\u0053u\u0062\u0074\u0079\u0070\u0065",_dfg .MakeName ("\u0053\u006f\u0075n\u0064")); _agbf .SetIfNotNil ("\u0053\u006f\u0075n\u0064",_caag .Sound );_agbf .SetIfNotNil ("\u004e\u0061\u006d\u0065",_caag .Name );return _gfc ;}; // SignatureHandlerDocMDP extends SignatureHandler with the ValidateWithOpts method for checking the DocMDP policy. type SignatureHandlerDocMDP interface{SignatureHandler ; // ValidateWithOpts validates a PDF signature by checking PdfReader or PdfParser // ValidateWithOpts shall contain Validate call ValidateWithOpts (_adbga *PdfSignature ,_fgfc Hasher ,_accf SignatureHandlerDocMDPParams )(SignatureValidationResult ,error );};func _agdbe ()string {_dfbaa .Lock ();defer _dfbaa .Unlock ();return _eebage }; // SetPrintArea sets the value of the printArea. func (_bcfbb *ViewerPreferences )SetPrintArea (printArea PageBoundary ){_bcfbb ._ggbeb =printArea }; // ColorToRGB only converts color used with uncolored patterns (defined in underlying colorspace). Does not go into the // pattern objects and convert those. If that is desired, needs to be done separately. See for example // grayscale conversion example in unidoc-examples repo. func (_eded *PdfColorspaceSpecialPattern )ColorToRGB (color PdfColor )(PdfColor ,error ){_aagf ,_fegc :=color .(*PdfColorPattern );if !_fegc {_egb .Log .Debug ("\u0043\u006f\u006c\u006f\u0072\u0020\u006e\u006f\u0074\u0020\u0070a\u0074\u0074\u0065\u0072\u006e\u0020\u0028\u0067\u006f\u0074 \u0025\u0054\u0029",color ); return nil ,ErrTypeCheck ;};if _aagf .Color ==nil {return color ,nil ;};if _eded .UnderlyingCS ==nil {return nil ,_bd .New ("\u0075n\u0064\u0065\u0072\u006cy\u0069\u006e\u0067\u0020\u0043S\u0020n\u006ft\u0020\u0064\u0065\u0066\u0069\u006e\u0065d");};return _eded .UnderlyingCS .ColorToRGB (_aagf .Color ); }; // ColorFromFloats returns a new PdfColorDevice based on the input slice of // color components. The slice should contain four elements representing the // cyan, magenta, yellow and key components of the color. The values of the // elements should be between 0 and 1. func (_caec *PdfColorspaceDeviceCMYK )ColorFromFloats (vals []float64 )(PdfColor ,error ){if len (vals )!=4{return nil ,_bd .New ("r\u0061\u006e\u0067\u0065\u0020\u0063\u0068\u0065\u0063\u006b");};_dacaa :=vals [0];if _dacaa < 0.0||_dacaa > 1.0{_egb .Log .Debug ("\u0063\u006f\u006cor\u0020\u006f\u0075\u0074\u0020\u006f\u0066\u0020\u0043\u0053\u0020\u0072\u0061\u006e\u0067\u0065\u003a\u0020",_dacaa ); return nil ,ErrColorOutOfRange ;};_beagc :=vals [1];if _beagc < 0.0||_beagc > 1.0{_egb .Log .Debug ("\u0063\u006f\u006cor\u0020\u006f\u0075\u0074\u0020\u006f\u0066\u0020\u0043\u0053\u0020\u0072\u0061\u006e\u0067\u0065\u003a\u0020",_beagc );return nil ,ErrColorOutOfRange ; };_dddd :=vals [2];if _dddd < 0.0||_dddd > 1.0{_egb .Log .Debug ("\u0063\u006f\u006cor\u0020\u006f\u0075\u0074\u0020\u006f\u0066\u0020\u0043\u0053\u0020\u0072\u0061\u006e\u0067\u0065\u003a\u0020",_dddd );return nil ,ErrColorOutOfRange ;};_gegdc :=vals [3]; if _gegdc < 0.0||_gegdc > 1.0{_egb .Log .Debug ("\u0063\u006f\u006cor\u0020\u006f\u0075\u0074\u0020\u006f\u0066\u0020\u0043\u0053\u0020\u0072\u0061\u006e\u0067\u0065\u003a\u0020",_gegdc );return nil ,ErrColorOutOfRange ;};_fefb :=NewPdfColorDeviceCMYK (_dacaa ,_beagc ,_dddd ,_gegdc ); return _fefb ,nil ;}; // NewDSS returns a new DSS dictionary. func NewDSS ()*DSS {return &DSS {_beab :_dfg .MakeIndirectObject (_dfg .MakeDict ()),VRI :map[string ]*VRI {}};}; // NewPdfColorDeviceCMYK returns a new CMYK32 color. func NewPdfColorDeviceCMYK (c ,m ,y ,k float64 )*PdfColorDeviceCMYK {_ccbf :=PdfColorDeviceCMYK {c ,m ,y ,k };return &_ccbf ;}; // ToPdfObject implements interface PdfModel. func (_fdg *PdfActionRendition )ToPdfObject ()_dfg .PdfObject {_fdg .PdfAction .ToPdfObject ();_bff :=_fdg ._fe ;_aec :=_bff .PdfObject .(*_dfg .PdfObjectDictionary );_aec .SetIfNotNil ("\u0053",_dfg .MakeName (string (ActionTypeRendition )));_aec .SetIfNotNil ("\u0052",_fdg .R ); _aec .SetIfNotNil ("\u0041\u004e",_fdg .AN );_aec .SetIfNotNil ("\u004f\u0050",_fdg .OP );_aec .SetIfNotNil ("\u004a\u0053",_fdg .JS );return _bff ;};func _dafc (_gbcbd _edg .ReadSeeker ,_fbefbd *ReaderOpts ,_ddcd bool ,_bdag string )(*PdfReader ,error ){if _fbefbd ==nil {_fbefbd =NewReaderOpts (); };_cbcac :="";if _caabe ,_edfbf :=_gbcbd .(*_ga .File );_edfbf {_cbcac =_caabe .Name ();};_bbfgd :=*_fbefbd ;_abaad :=&PdfReader {_cggac :_gbcbd ,_fcecf :map[_dfg .PdfObject ]struct{}{},_acaed :_cebfb (),_bafba :_fbefbd .LazyLoad ,_ggda :_fbefbd .ComplianceMode ,_faage :_ddcd ,_abef :&_bbfgd ,_aefda :_cbcac }; _gcfab ,_bbgcc :=_bdaaf ("\u0072");if _bbgcc !=nil {return nil ,_bbgcc ;};_bbgcc =_gb .Track (_gcfab ,_bdag ,_abaad ._aefda );if _bbgcc !=nil {return nil ,_bbgcc ;};_abaad ._befaf =_gcfab ;var _dbedf *_dfg .PdfParser ;if !_abaad ._ggda {if _fbefbd !=nil {_bfcadf :=_dfg .ParserOpts {RelaxedMode :_fbefbd .RelaxedMode }; _dbedf ,_bbgcc =_dfg .NewParserWithOpts (_gbcbd ,_bfcadf );}else {_dbedf ,_bbgcc =_dfg .NewParser (_gbcbd );};}else {_dbedf ,_bbgcc =_dfg .NewCompliancePdfParser (_gbcbd );};if _bbgcc !=nil {return nil ,_bbgcc ;};_abaad ._agbcd =_dbedf ;_acea ,_bbgcc :=_abaad .IsEncrypted (); if _bbgcc !=nil {return nil ,_bbgcc ;};if !_acea {_bbgcc =_abaad .loadStructure ();if _bbgcc !=nil {return nil ,_bbgcc ;};}else if _ddcd {_fccge ,_fbdffe :=_abaad .Decrypt ([]byte (_fbefbd .Password ));if _fbdffe !=nil {return nil ,_fbdffe ;};if !_fccge {return nil ,_bd .New ("\u0055\u006e\u0061\u0062\u006c\u0065\u0020\u0074\u006f \u0064\u0065c\u0072\u0079\u0070\u0074\u0020\u0070\u0061\u0073\u0073w\u006f\u0072\u0064\u0020p\u0072\u006f\u0074\u0065\u0063\u0074\u0065\u0064\u0020\u0066\u0069\u006c\u0065\u0020\u002d\u0020\u006e\u0065\u0065\u0064\u0020\u0074\u006f\u0020\u0073\u0070\u0065\u0063\u0069\u0066y\u0020\u0070\u0061s\u0073\u0020\u0074\u006f\u0020\u0044\u0065\u0063\u0072\u0079\u0070\u0074"); };};_abaad ._cceg =make (map[*PdfReader ]*PdfReader );_abaad ._eaff =make ([]*PdfReader ,_dbedf .GetRevisionNumber ());return _abaad ,nil ;}; // ToJBIG2Image converts current image to the core.JBIG2Image. func (_dcge *Image )ToJBIG2Image ()(*_dfg .JBIG2Image ,error ){_bedab ,_ddec :=_dcge .ToGoImage ();if _ddec !=nil {return nil ,_ddec ;};return _dfg .GoImageToJBIG2 (_bedab ,_dfg .JB2ImageAutoThreshold );}; // ToPdfObject implements interface PdfModel. func (_ecedc *PdfAnnotationText )ToPdfObject ()_dfg .PdfObject {_ecedc .PdfAnnotation .ToPdfObject ();_bfdd :=_ecedc ._afae ;_dddg :=_bfdd .PdfObject .(*_dfg .PdfObjectDictionary );if _ecedc .PdfAnnotationMarkup !=nil {_ecedc .appendToPdfDictionary (_dddg ); };_dddg .SetIfNotNil ("\u0053u\u0062\u0074\u0079\u0070\u0065",_dfg .MakeName ("\u0054\u0065\u0078\u0074"));_dddg .SetIfNotNil ("\u004f\u0070\u0065\u006e",_ecedc .Open );_dddg .SetIfNotNil ("\u004e\u0061\u006d\u0065",_ecedc .Name );_dddg .SetIfNotNil ("\u0053\u0074\u0061t\u0065",_ecedc .State ); _dddg .SetIfNotNil ("\u0053\u0074\u0061\u0074\u0065\u004d\u006f\u0064\u0065\u006c",_ecedc .StateModel );return _bfdd ;}; // CharcodesToUnicode converts the character codes `charcodes` to a slice of runes. // How it works: // 1. Use the ToUnicode CMap if there is one. // 2. Use the underlying font's encoding. func (_egccg *PdfFont )CharcodesToUnicode (charcodes []_ff .CharCode )[]rune {_fddgf ,_ ,_ :=_egccg .CharcodesToUnicodeWithStats (charcodes );return _fddgf ;}; // CharcodeBytesToUnicode converts PDF character codes `data` to a Go unicode string. // // 9.10 Extraction of Text Content (page 292) // The process of finding glyph descriptions in OpenType fonts by a conforming reader shall be the following: // - For Type 1 fonts using “CFF” tables, the process shall be as described in 9.6.6.2, "Encodings // for Type 1 Fonts". // - For TrueType fonts using “glyf” tables, the process shall be as described in 9.6.6.4, // "Encodings for TrueType Fonts". Since this process sometimes produces ambiguous results, // conforming writers, instead of using a simple font, shall use a Type 0 font with an Identity-H // encoding and use the glyph indices as character codes, as described following Table 118. func (_bcedb *PdfFont )CharcodeBytesToUnicode (data []byte )(string ,int ,int ){_ccgff ,_ ,_fbgec :=_bcedb .CharcodesToUnicodeWithStats (_bcedb .BytesToCharcodes (data ));_dfcab :=_ff .ExpandLigatures (_ccgff );return _dfcab ,_ee .RuneCountInString (_dfcab ),_fbgec ; }; // GetPdfInfo returns the PDF info dictionary. func (_bcbgcc *PdfReader )GetPdfInfo ()(*PdfInfo ,error ){_acaag ,_bgcca :=_bcbgcc .GetTrailer ();if _bgcca !=nil {return nil ,_bgcca ;};var _ededa *_dfg .PdfObjectDictionary ;_eeefe :=_acaag .Get ("\u0049\u006e\u0066\u006f");switch _gcffb :=_eeefe .(type ){case *_dfg .PdfObjectReference :_bfgdc :=_gcffb ; _eeefe ,_bgcca =_bcbgcc .GetIndirectObjectByNumber (int (_bfgdc .ObjectNumber ));_eeefe =_dfg .TraceToDirectObject (_eeefe );if _bgcca !=nil {return nil ,_bgcca ;};_ededa ,_ =_eeefe .(*_dfg .PdfObjectDictionary );case *_dfg .PdfObjectDictionary :_ededa =_gcffb ; };if _ededa ==nil {return nil ,_bd .New ("I\u006e\u0066\u006f\u0020\u0064\u0069c\u0074\u0069\u006f\u006e\u0061\u0072\u0079\u0020\u006eo\u0074\u0020\u0070r\u0065s\u0065\u006e\u0074");};_baed ,_bgcca :=NewPdfInfoFromObject (_ededa );if _bgcca !=nil {return nil ,_bgcca ; };return _baed ,nil ;}; // ToPdfObject generates a PdfObject representation of the Names struct. func (_cbda *Names )ToPdfObject ()_dfg .PdfObject {_fdfba :=_cbda ._ggeed ;_ddeca ,_dfcag :=_fdfba .PdfObject .(*_dfg .PdfObjectDictionary );if !_dfcag {_egb .Log .Debug ("\u0049\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u006fb\u006a\u0065\u0063\u0074"); return _fdfba ;};if _cbda .EmbeddedFiles !=nil {_ddeca .Set ("\u0045\u006d\u0062\u0065\u0064\u0064\u0065\u0064\u0046\u0069\u006c\u0065\u0073",_dfg .MakeIndirectObject (_cbda .EmbeddedFiles ));};return _fdfba ;};type fontCommon struct{_dbcbc string ;_gdab string ; _gadbd string ;_eaaga _dfg .PdfObject ;_bgdcbc *_efg .CMap ;_cebfd *PdfFontDescriptor ;_egggc int64 ;}; // AddFont adds a font dictionary to the Font resources. func (_ggcb *PdfPage )AddFont (name _dfg .PdfObjectName ,font _dfg .PdfObject )error {if _ggcb .Resources ==nil {_ggcb .Resources =NewPdfPageResources ();};if _ggcb .Resources .Font ==nil {_ggcb .Resources .Font =_dfg .MakeDict ();};_fddd ,_ecbae :=_dfg .TraceToDirectObject (_ggcb .Resources .Font ).(*_dfg .PdfObjectDictionary ); if !_ecbae {_egb .Log .Debug ("\u0045\u0078\u0070\u0065\u0063\u0074\u0065\u0064 \u0066\u006f\u006et \u0064\u0069\u0063\u0074\u0069\u006fn\u0061\u0072\u0079\u0020\u0069\u0073\u0020\u006e\u006f\u0074\u0020\u0061\u0020\u0064\u0069c\u0074\u0069\u006f\u006e\u0061\u0072\u0079\u003a \u0025\u0076",_dfg .TraceToDirectObject (_ggcb .Resources .Font )); return _bd .New ("\u0074\u0079p\u0065\u0020\u0063h\u0065\u0063\u006b\u0020\u0065\u0072\u0072\u006f\u0072");};_fddd .Set (name ,font );return nil ;}; // AddKDict adds a K dictionary object to the structure tree root. func (_agdfb *StructTreeRoot )AddKDict (k *KDict ){_agdfb .K =append (_agdfb .K ,k )};func (_gagea *PdfReader )loadForms ()(*PdfAcroForm ,error ){if _gagea ._agbcd .GetCrypter ()!=nil &&!_gagea ._agbcd .IsAuthenticated (){return nil ,_d .Errorf ("\u0066\u0069\u006ce\u0020\u006e\u0065\u0065d\u0020\u0074\u006f\u0020\u0062\u0065\u0020d\u0065\u0063\u0072\u0079\u0070\u0074\u0065\u0064\u0020\u0066\u0069\u0072\u0073\u0074"); };_bdefc :=_gagea ._fbfgb ;_fgaec :=_bdefc .Get ("\u0041\u0063\u0072\u006f\u0046\u006f\u0072\u006d");if _fgaec ==nil {return nil ,nil ;};_dccc ,_abggc :=_dfg .GetIndirect (_fgaec );_fgaec =_dfg .TraceToDirectObject (_fgaec );if _dfg .IsNullObject (_fgaec ){_egb .Log .Trace ("\u0041\u0063\u0072of\u006f\u0072\u006d\u0020\u0069\u0073\u0020\u0061\u0020n\u0075l\u006c \u006fb\u006a\u0065\u0063\u0074\u0020\u0028\u0065\u006d\u0070\u0074\u0079\u0029\u000a"); return nil ,nil ;};_gafbe ,_eeacb :=_dfg .GetDict (_fgaec );if !_eeacb {_egb .Log .Debug ("\u0049n\u0076\u0061\u006c\u0069d\u0020\u0041\u0063\u0072\u006fF\u006fr\u006d \u0065\u006e\u0074\u0072\u0079\u0020\u0025T",_fgaec );_egb .Log .Debug ("\u0044\u006f\u0065\u0073 n\u006f\u0074\u0020\u0068\u0061\u0076\u0065\u0020\u0066\u006f\u0072\u006d\u0073"); if _gagea ._abef .RelaxedMode {_egb .Log .Debug ("\u0052\u0065\u006c\u0061\u0078\u0065\u0064\u004d\u006f\u0064\u0065 \u0065\u006e\u0061\u0062\u006c\u0065\u0064\u002e \u0049g\u006e\u006f\u0072\u0069\u006e\u0067\u0020\u0041\u0063\u0072\u006f\u0046\u006f\u0072\u006d\u0020\u006c\u006fa\u0064\u0069\u006e\u0067\u0020\u0065\u0072\u0072\u006f\u0072\u0073"); return nil ,nil ;};return nil ,_d .Errorf ("\u0069n\u0076\u0061\u006c\u0069d\u0020\u0061\u0063\u0072\u006ff\u006fr\u006d \u0065\u006e\u0074\u0072\u0079\u0020\u0025T",_fgaec );};_egb .Log .Trace ("\u0048\u0061\u0073\u0020\u0041\u0063\u0072\u006f\u0020f\u006f\u0072\u006d\u0073"); _egb .Log .Trace ("\u0054\u0072\u0061\u0076\u0065\u0072\u0073\u0065\u0020\u0074\u0068\u0065\u0020\u0041\u0063r\u006ff\u006f\u0072\u006d\u0073\u0020\u0073\u0074\u0072\u0075\u0063\u0074\u0075\u0072\u0065");if !_gagea ._bafba {_deaa :=_gagea .traverseObjectData (_gafbe ); if _deaa !=nil {_egb .Log .Debug ("E\u0052\u0052\u004f\u0052\u003a\u0020\u0055\u006e\u0061\u0062\u006c\u0065\u0020\u0074\u006f\u0020\u0074\u0072a\u0076\u0065\u0072\u0073\u0065\u0020\u0041\u0063\u0072\u006fFo\u0072\u006d\u0073 \u0028%\u0073\u0029",_deaa ); return nil ,_deaa ;};};_edbbf ,_fbedfc :=_gagea .newPdfAcroFormFromDict (_dccc ,_gafbe );if _fbedfc !=nil {return nil ,_fbedfc ;};_edbbf ._ecfa =!_abggc ;return _edbbf ,nil ;}; // PdfFieldChoice represents a choice field which includes scrollable list boxes and combo boxes. type PdfFieldChoice struct{*PdfField ;Opt *_dfg .PdfObjectArray ;TI *_dfg .PdfObjectInteger ;I *_dfg .PdfObjectArray ;}; // NewPdfShadingPatternType3 creates an empty shading pattern type 3 object. func NewPdfShadingPatternType3 ()*PdfShadingPatternType3 {_gcdbb :=&PdfShadingPatternType3 {};_gcdbb .Matrix =_dfg .MakeArrayFromIntegers ([]int {1,0,0,1,0,0});_gcdbb .PdfPattern =&PdfPattern {};_gcdbb .PdfPattern .PatternType =int64 (*_dfg .MakeInteger (2)); _gcdbb .PdfPattern ._bfaedb =_gcdbb ;_gcdbb .PdfPattern ._adcec =_dfg .MakeIndirectObject (_dfg .MakeDict ());return _gcdbb ;};var (ArtifactTypeNone ArtifactType ="";ArtifactTypePagination ArtifactType ="\u0050\u0061\u0067\u0069\u006e\u0061\u0074\u0069\u006f\u006e"; ArtifactTypeLayout ArtifactType ="\u004c\u0061\u0079\u006f\u0075\u0074";ArtifactTypePage ArtifactType ="\u0050\u0061\u0067\u0065";ArtifactTypeBackground ArtifactType ="\u0042\u0061\u0063\u006b\u0067\u0072\u006f\u0075\u006e\u0064";);func (_gdbb *PdfColorspaceDeviceCMYK )String ()string {return "\u0044\u0065\u0076\u0069\u0063\u0065\u0043\u004d\u0059\u004b"; }; // SetShadingByName sets a shading resource specified by keyName. func (_eeed *PdfPageResources )SetShadingByName (keyName _dfg .PdfObjectName ,shadingObj _dfg .PdfObject )error {if _eeed .Shading ==nil {_eeed .Shading =_dfg .MakeDict ();};_aecfb ,_gdabf :=_dfg .GetDict (_eeed .Shading );if !_gdabf {return _dfg .ErrTypeError ; };_aecfb .Set (keyName ,shadingObj );return nil ;}; // NewPdfColorDeviceGray returns a new grayscale color based on an input grayscale float value in range [0-1]. func NewPdfColorDeviceGray (grayVal float64 )*PdfColorDeviceGray {_ccgf :=PdfColorDeviceGray (grayVal );return &_ccgf ;}; // ConvertToBinary converts current image into binary (bi-level) format. // Binary images are composed of single bits per pixel (only black or white). // If provided image has more color components, then it would be converted into binary image using // histogram auto threshold function. func (_decc *Image )ConvertToBinary ()error {if _decc .ColorComponents ==1&&_decc .BitsPerComponent ==1{return nil ;};_afbfg ,_cfgdf :=_decc .ToGoImage ();if _cfgdf !=nil {return _cfgdf ;};_ecbe ,_cfgdf :=_ef .MonochromeConverter .Convert (_afbfg );if _cfgdf !=nil {return _cfgdf ; };_decc .Data =_ecbe .Base ().Data ;_decc ._baeef ,_cfgdf =_ef .ScaleAlphaToMonochrome (_decc ._baeef ,int (_decc .Width ),int (_decc .Height ));if _cfgdf !=nil {return _cfgdf ;};_decc .BitsPerComponent =1;_decc .ColorComponents =1;_decc ._begcc =nil ; return nil ;}; // Items returns all children outline items. func (_fffa *Outline )Items ()[]*OutlineItem {return _fffa .Entries }; // GetContentStreams returns the content stream as an array of strings. func (_gfaecb *PdfPage )GetContentStreams ()([]string ,error ){_gdgaf :=_gfaecb .GetContentStreamObjs ();var _abcbf []string ;for _ ,_ggfb :=range _gdgaf {_fccg ,_eggcf :=_bgbfb (_ggfb );if _eggcf !=nil {return nil ,_eggcf ;};_abcbf =append (_abcbf ,_fccg ); };return _abcbf ,nil ;}; // PdfActionRendition represents a Rendition action. type PdfActionRendition struct{*PdfAction ;R _dfg .PdfObject ;AN _dfg .PdfObject ;OP _dfg .PdfObject ;JS _dfg .PdfObject ;}; // PdfAnnotationWidget represents Widget annotations. // Note: Widget annotations are used to display form fields. // (Section 12.5.6.19). type PdfAnnotationWidget struct{*PdfAnnotation ;H _dfg .PdfObject ;MK _dfg .PdfObject ;A _dfg .PdfObject ;AA _dfg .PdfObject ;BS _dfg .PdfObject ;Parent _dfg .PdfObject ;_bcad *PdfField ;_fbde bool ;}; // ToPdfObject implements interface PdfModel. func (_fcc *PdfActionGoToR )ToPdfObject ()_dfg .PdfObject {_fcc .PdfAction .ToPdfObject ();_aaf :=_fcc ._fe ;_eb :=_aaf .PdfObject .(*_dfg .PdfObjectDictionary );_eb .SetIfNotNil ("\u0053",_dfg .MakeName (string (ActionTypeGoToR )));if _fcc .F !=nil {_eb .Set ("\u0046",_fcc .F .ToPdfObject ()); };_eb .SetIfNotNil ("\u0044",_fcc .D );_eb .SetIfNotNil ("\u004ee\u0077\u0057\u0069\u006e\u0064\u006fw",_fcc .NewWindow );return _aaf ;};func (_effb *PdfReader )newPdfAnnotationSquigglyFromDict (_bbg *_dfg .PdfObjectDictionary )(*PdfAnnotationSquiggly ,error ){_bae :=PdfAnnotationSquiggly {}; _feeb ,_gccf :=_effb .newPdfAnnotationMarkupFromDict (_bbg );if _gccf !=nil {return nil ,_gccf ;};_bae .PdfAnnotationMarkup =_feeb ;_bae .QuadPoints =_bbg .Get ("\u0051\u0075\u0061\u0064\u0050\u006f\u0069\u006e\u0074\u0073");return &_bae ,nil ;}; // GetNumComponents returns the number of color components (3 for CalRGB). func (_dfbca *PdfColorCalRGB )GetNumComponents ()int {return 3};func _dggd (_ccgced *fontCommon )*pdfFontSimple {return &pdfFontSimple {fontCommon :*_ccgced }};func (_begda *PdfReader )loadDSS ()(*DSS ,error ){if _begda ._agbcd .GetCrypter ()!=nil &&!_begda ._agbcd .IsAuthenticated (){return nil ,_d .Errorf ("\u0066\u0069\u006ce\u0020\u006e\u0065\u0065d\u0020\u0074\u006f\u0020\u0062\u0065\u0020d\u0065\u0063\u0072\u0079\u0070\u0074\u0065\u0064\u0020\u0066\u0069\u0072\u0073\u0074"); };_ffcfd :=_begda ._fbfgb .Get ("\u0044\u0053\u0053");if _ffcfd ==nil {return nil ,nil ;};_gedd ,_ :=_dfg .GetIndirect (_ffcfd );_ffcfd =_dfg .TraceToDirectObject (_ffcfd );switch _ceba :=_ffcfd .(type ){case *_dfg .PdfObjectNull :return nil ,nil ;case *_dfg .PdfObjectDictionary :return _dfce (_gedd ,_ceba ); };return nil ,_d .Errorf ("i\u006ev\u0061\u006c\u0069\u0064\u0020\u0044\u0053\u0053 \u0065\u006e\u0074\u0072y \u0025\u0054",_ffcfd );};func _gfaec (_cagf _dfg .PdfObject ,_agcc bool )(*PdfFont ,error ){_daed ,_eddbe ,_cacef :=_ffed (_cagf );if _daed !=nil {_gceee (_daed ); };if _cacef !=nil {if _cacef ==ErrType1CFontNotSupported {_bfaaa ,_gbbdg :=_faff (_daed ,_eddbe ,nil );if _gbbdg !=nil {_egb .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0057h\u0069\u006c\u0065 l\u006f\u0061\u0064\u0069\u006e\u0067 \u0073\u0069\u006d\u0070\u006c\u0065\u0020\u0066\u006f\u006e\u0074\u003a\u0020\u0066\u006fn\u0074\u003d\u0025\u0073\u0020\u0065\u0072\u0072=\u0025\u0076",_eddbe ,_gbbdg ); return nil ,_cacef ;};return &PdfFont {_fab :_bfaaa },_cacef ;};return nil ,_cacef ;};_deec :=&PdfFont {};switch _eddbe ._gdab {case "\u0054\u0079\u0070e\u0030":if !_agcc {_egb .Log .Debug ("\u0045\u0052\u0052\u004f\u0052:\u0020\u004c\u006f\u0061\u0064\u0069\u006e\u0067\u0020\u0074\u0079\u0070\u00650\u0020\u006e\u006f\u0074\u0020\u0061\u006c\u006c\u006f\u0077\u0065\u0064\u002e\u0020\u0066\u006f\u006e\u0074\u003d\u0025\u0073",_eddbe ); return nil ,_bd .New ("\u0063\u0079\u0063\u006cic\u0061\u006c\u0020\u0074\u0079\u0070\u0065\u0030\u0020\u006c\u006f\u0061\u0064\u0069n\u0067");};_fabga ,_bbgeb :=_afbab (_daed ,_eddbe );if _bbgeb !=nil {_egb .Log .Debug ("E\u0052\u0052\u004f\u0052\u003a\u0020\u0057\u0068\u0069l\u0065\u0020\u006c\u006f\u0061\u0064\u0069ng\u0020\u0054\u0079\u0070e\u0030\u0020\u0066\u006f\u006e\u0074\u002e\u0020\u0066on\u0074\u003d%\u0073\u0020\u0065\u0072\u0072\u003d\u0025\u0076",_eddbe ,_bbgeb ); return nil ,_bbgeb ;};_deec ._fab =_fabga ;case "\u0054\u0079\u0070e\u0031","\u004dM\u0054\u0079\u0070\u0065\u0031","\u0054\u0072\u0075\u0065\u0054\u0079\u0070\u0065":var _bdac *pdfFontSimple ;_eabdg ,_bfadg :=_bf .NewStdFontByName (_bf .StdFontName (_eddbe ._dbcbc )); if _bfadg {_cdea :=_agafd (_eabdg );_deec ._fab =&_cdea ;_abbfa :=_dfg .TraceToDirectObject (_cdea .ToPdfObject ());_ebgea ,_eefbe ,_bafb :=_ffed (_abbfa );if _bafb !=nil {_egb .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0042\u0061\u0064\u0020\u0053\u0074a\u006e\u0064\u0061\u0072\u0064\u00314\u000a\u0009\u0066\u006f\u006e\u0074\u003d\u0025\u0073\u000a\u0009\u0073\u0074d\u003d\u0025\u002b\u0076",_eddbe ,_cdea ); return nil ,_bafb ;};for _ ,_bgeff :=range _daed .Keys (){_ebgea .Set (_bgeff ,_daed .Get (_bgeff ));};_bdac ,_bafb =_faff (_ebgea ,_eefbe ,_cdea ._eabff );if _bafb !=nil {_egb .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0042\u0061\u0064\u0020\u0053\u0074a\u006e\u0064\u0061\u0072\u0064\u00314\u000a\u0009\u0066\u006f\u006e\u0074\u003d\u0025\u0073\u000a\u0009\u0073\u0074d\u003d\u0025\u002b\u0076",_eddbe ,_cdea ); return nil ,_bafb ;};_bdac ._aefba =_cdea ._aefba ;_bdac ._eecea =_cdea ._eecea ;if _bdac ._gdegd ==nil {_bdac ._gdegd =_cdea ._gdegd ;};}else {_bdac ,_cacef =_faff (_daed ,_eddbe ,nil );if _cacef !=nil {_egb .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0057h\u0069\u006c\u0065 l\u006f\u0061\u0064\u0069\u006e\u0067 \u0073\u0069\u006d\u0070\u006c\u0065\u0020\u0066\u006f\u006e\u0074\u003a\u0020\u0066\u006fn\u0074\u003d\u0025\u0073\u0020\u0065\u0072\u0072=\u0025\u0076",_eddbe ,_cacef ); return nil ,_cacef ;};};_cacef =_bdac .addEncoding ();if _cacef !=nil {return nil ,_cacef ;};if _bfadg {_bdac .updateStandard14Font ();};if _bfadg &&_bdac ._febca ==nil &&_bdac ._eabff ==nil {_egb .Log .Error ("\u0073\u0069\u006d\u0070\u006c\u0065\u0066\u006f\u006e\u0074\u003d\u0025\u0073",_bdac ); _egb .Log .Error ("\u0066n\u0074\u003d\u0025\u002b\u0076",_eabdg );};if len (_bdac ._aefba )==0{_egb .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a \u004e\u006f\u0020\u0077\u0069d\u0074h\u0073.\u0020\u0066\u006f\u006e\u0074\u003d\u0025s",_bdac );};_deec ._fab =_bdac ; case "\u0054\u0079\u0070e\u0033":_dfff ,_fegdd :=_acfab (_daed ,_eddbe );if _fegdd !=nil {_egb .Log .Debug ("E\u0052\u0052\u004f\u0052\u003a\u0020W\u0068\u0069\u006c\u0065\u0020\u006co\u0061\u0064\u0069\u006e\u0067\u0020\u0074y\u0070\u0065\u0033\u0020\u0066\u006f\u006e\u0074\u003a\u0020%\u0076",_fegdd ); return nil ,_fegdd ;};_deec ._fab =_dfff ;case "\u0043\u0049\u0044F\u006f\u006e\u0074\u0054\u0079\u0070\u0065\u0030":_dcecg ,_abdf :=_agdb (_daed ,_eddbe );if _abdf !=nil {_egb .Log .Debug ("\u0045R\u0052\u004fR\u003a\u0020\u0057\u0068i\u006c\u0065\u0020l\u006f\u0061\u0064\u0069\u006e\u0067\u0020\u0063\u0069d \u0066\u006f\u006et\u0020\u0074y\u0070\u0065\u0030\u0020\u0066\u006fn\u0074\u003a \u0025\u0076",_abdf ); return nil ,_abdf ;};_deec ._fab =_dcecg ;case "\u0043\u0049\u0044F\u006f\u006e\u0074\u0054\u0079\u0070\u0065\u0032":_bafg ,_bbdag :=_aecff (_daed ,_eddbe );if _bbdag !=nil {_egb .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a \u0057\u0068\u0069l\u0065\u0020\u006co\u0061\u0064\u0069\u006e\u0067\u0020\u0063\u0069\u0064\u0020f\u006f\u006e\u0074\u0020\u0074yp\u0065\u0032\u0020\u0066\u006f\u006e\u0074\u002e\u0020\u0066\u006f\u006e\u0074\u003d\u0025\u0073\u0020\u0065\u0072\u0072\u003d\u0025\u0076",_eddbe ,_bbdag ); return nil ,_bbdag ;};_deec ._fab =_bafg ;default:_egb .Log .Debug ("\u0045\u0052R\u004f\u0052\u003a\u0020U\u006e\u0073u\u0070\u0070\u006f\u0072\u0074\u0065\u0064\u0020f\u006f\u006e\u0074\u0020\u0074\u0079\u0070\u0065\u003a\u0020\u0066\u006fn\u0074\u003d\u0025\u0073",_eddbe ); return nil ,_d .Errorf ("\u0075\u006e\u0073\u0075\u0070\u0070\u006f\u0072\u0074\u0065d\u0020\u0066\u006f\u006e\u0074\u0020\u0074y\u0070\u0065\u003a\u0020\u0066\u006f\u006e\u0074\u003d\u0025\u0073",_eddbe );};return _deec ,nil ;}; // GetNumComponents returns the number of color components. func (_dggf *PdfColorspaceICCBased )GetNumComponents ()int {return _dggf .N };func (_degfd *PdfWriter )checkPendingObjects (){for _gdefb ,_fegfc :=range _degfd ._fgebdb {if !_degfd .hasObject (_gdefb ){_egb .Log .Debug ("\u0057\u0041\u0052\u004e\u0020\u0050\u0065n\u0064\u0069\u006eg\u0020\u006f\u0062j\u0065\u0063t\u0020\u0025\u002b\u0076\u0020\u0025T\u0020(%\u0070\u0029\u0020\u006e\u0065\u0076\u0065\u0072\u0020\u0061\u0064\u0064\u0065\u0064\u0020\u0066\u006f\u0072\u0020\u0077\u0072\u0069\u0074\u0069\u006e\u0067",_gdefb ,_gdefb ,_gdefb ); for _ ,_adbfb :=range _fegfc {for _ ,_dfgaac :=range _adbfb .Keys (){_ededc :=_adbfb .Get (_dfgaac );if _ededc ==_gdefb {_egb .Log .Debug ("\u0050e\u006e\u0064i\u006e\u0067\u0020\u006fb\u006a\u0065\u0063t\u0020\u0066\u006f\u0075\u006e\u0064\u0021\u0020\u0061nd\u0020\u0072\u0065p\u006c\u0061c\u0065\u0064\u0020\u0077\u0069\u0074h\u0020\u006eu\u006c\u006c"); _adbfb .Set (_dfgaac ,_dfg .MakeNull ());break ;};};};};};}; // GetXObjectFormByName returns the XObjectForm with the specified name from the // page resources, if it exists. func (_fgagb *PdfPageResources )GetXObjectFormByName (keyName _dfg .PdfObjectName )(*XObjectForm ,error ){_bgae ,_fded :=_fgagb .GetXObjectByName (keyName );if _bgae ==nil {return nil ,nil ;};if _fded !=XObjectTypeForm {return nil ,_bd .New ("\u006e\u006f\u0074\u0020\u0061\u0020\u0066\u006f\u0072\u006d"); };_deceg ,_bdfaad :=NewXObjectFormFromStream (_bgae );if _bdfaad !=nil {return nil ,_bdfaad ;};return _deceg ,nil ;}; // ToPdfObject converts the pdfCIDFontType0 to a PDF representation. func (_edcb *pdfCIDFontType0 )ToPdfObject ()_dfg .PdfObject {return _dfg .MakeNull ()}; // PdfAnnotationStamp represents Stamp annotations. // (Section 12.5.6.12). type PdfAnnotationStamp struct{*PdfAnnotation ;*PdfAnnotationMarkup ;Name _dfg .PdfObject ;}; // NewPdfAnnotationCircle returns a new circle annotation. func NewPdfAnnotationCircle ()*PdfAnnotationCircle {_gdd :=NewPdfAnnotation ();_gaab :=&PdfAnnotationCircle {};_gaab .PdfAnnotation =_gdd ;_gaab .PdfAnnotationMarkup =&PdfAnnotationMarkup {};_gdd .SetContext (_gaab );return _gaab ;}; // IsPush returns true if the button field represents a push button, false otherwise. func (_bacfa *PdfFieldButton )IsPush ()bool {return _bacfa .GetType ()==ButtonTypePush }; // ToPdfObject implements interface PdfModel. func (_eefda *PdfSignature )ToPdfObject ()_dfg .PdfObject {_bedc :=_eefda ._fdeb ;var _ggdgg *_dfg .PdfObjectDictionary ;if _ggaad ,_gccbd :=_bedc .PdfObject .(*pdfSignDictionary );_gccbd {_ggdgg =_ggaad .PdfObjectDictionary ;}else {_ggdgg =_bedc .PdfObject .(*_dfg .PdfObjectDictionary ); };_ggdgg .SetIfNotNil ("\u0054\u0079\u0070\u0065",_eefda .Type );_ggdgg .SetIfNotNil ("\u0046\u0069\u006c\u0074\u0065\u0072",_eefda .Filter );_ggdgg .SetIfNotNil ("\u0053u\u0062\u0046\u0069\u006c\u0074\u0065r",_eefda .SubFilter );_ggdgg .SetIfNotNil ("\u0042y\u0074\u0065\u0052\u0061\u006e\u0067e",_eefda .ByteRange ); _ggdgg .SetIfNotNil ("\u0043\u006f\u006e\u0074\u0065\u006e\u0074\u0073",_eefda .Contents );_ggdgg .SetIfNotNil ("\u0043\u0065\u0072\u0074",_eefda .Cert );_ggdgg .SetIfNotNil ("\u004e\u0061\u006d\u0065",_eefda .Name );_ggdgg .SetIfNotNil ("\u0052\u0065\u0061\u0073\u006f\u006e",_eefda .Reason ); _ggdgg .SetIfNotNil ("\u004d",_eefda .M );_ggdgg .SetIfNotNil ("\u0052e\u0066\u0065\u0072\u0065\u006e\u0063e",_eefda .Reference );_ggdgg .SetIfNotNil ("\u0043h\u0061\u006e\u0067\u0065\u0073",_eefda .Changes );_ggdgg .SetIfNotNil ("C\u006f\u006e\u0074\u0061\u0063\u0074\u0049\u006e\u0066\u006f",_eefda .ContactInfo ); _ggdgg .SetIfNotNil ("\u004c\u006f\u0063\u0061\u0074\u0069\u006f\u006e",_eefda .Location );return _bedc ;};func (_cbce *pdfFontSimple )getFontDescriptor ()*PdfFontDescriptor {if _fcfca :=_cbce ._cebfd ;_fcfca !=nil {return _fcfca ;};return _cbce ._gdegd ; }; // GetPreviousRevision returns the previous revision of PdfReader for the Pdf document func (_fcaa *PdfReader )GetPreviousRevision ()(*PdfReader ,error ){if _fcaa ._agbcd .GetRevisionNumber ()==0{return nil ,_bd .New ("\u0070\u0072e\u0076\u0069\u006f\u0075\u0073\u0020\u0076\u0065\u0072\u0073\u0069\u006f\u006e\u0020\u0069\u0073\u0020\u006e\u006f\u0074\u0020\u0065xi\u0073\u0074"); };if _gfgf ,_cbee :=_fcaa ._cceg [_fcaa ];_cbee {return _gfgf ,nil ;};_bgcab ,_eefcf :=_fcaa ._agbcd .GetPreviousRevisionReadSeeker ();if _eefcf !=nil {return nil ,_eefcf ;};_dbdgf ,_eefcf :=_dafc (_bgcab ,_fcaa ._abef ,_fcaa ._faage ,"\u006do\u0064\u0065\u006c\u003aG\u0065\u0074\u0050\u0072\u0065v\u0069o\u0075s\u0052\u0065\u0076\u0069\u0073\u0069\u006fn"); if _eefcf !=nil {return nil ,_eefcf ;};_fcaa ._eaff [_fcaa ._agbcd .GetRevisionNumber ()-1]=_dbdgf ;_fcaa ._cceg [_fcaa ]=_dbdgf ;_dbdgf ._cceg =_fcaa ._cceg ;return _dbdgf ,nil ;}; // PdfAnnotationPrinterMark represents PrinterMark annotations. // (Section 12.5.6.20). type PdfAnnotationPrinterMark struct{*PdfAnnotation ;MN _dfg .PdfObject ;}; // ToPdfObject implements interface PdfModel. func (_bcf *PdfActionImportData )ToPdfObject ()_dfg .PdfObject {_bcf .PdfAction .ToPdfObject ();_ade :=_bcf ._fe ;_bdf :=_ade .PdfObject .(*_dfg .PdfObjectDictionary );_bdf .SetIfNotNil ("\u0053",_dfg .MakeName (string (ActionTypeImportData )));if _bcf .F !=nil {_bdf .Set ("\u0046",_bcf .F .ToPdfObject ()); };return _ade ;}; // GetPage returns the PdfPage model for the specified page number. func (_ffea *PdfReader )GetPage (pageNumber int )(*PdfPage ,error ){if _ffea ._agbcd .GetCrypter ()!=nil &&!_ffea ._agbcd .IsAuthenticated (){return nil ,_d .Errorf ("\u0066\u0069\u006c\u0065\u0020\u006e\u0065\u0065\u0064\u0073\u0020\u0074\u006f\u0020\u0062e\u0020d\u0065\u0063\u0072\u0079\u0070\u0074\u0065\u0064\u0020\u0066\u0069\u0072\u0073\u0074"); };if len (_ffea ._ggbf )< pageNumber {return nil ,_bd .New ("\u0069\u006e\u0076a\u006c\u0069\u0064\u0020\u0070\u0061\u0067\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020\u0028\u0070\u0061\u0067\u0065\u0020\u0063\u006f\u0075\u006e\u0074\u0020\u0074o\u006f\u0020\u0073\u0068\u006f\u0072\u0074\u0029"); };_bedec :=pageNumber -1;if _bedec < 0{return nil ,_d .Errorf ("\u0070\u0061\u0067\u0065\u0020\u006e\u0075\u006d\u0062\u0065r\u0069\u006e\u0067\u0020\u006d\u0075\u0073t\u0020\u0073\u0074\u0061\u0072\u0074\u0020\u0061\u0074\u0020\u0031");};_edbec :=_ffea .PageList [_bedec ]; return _edbec ,nil ;};func _bacbd (_gdcdf _dfg .PdfObject )(*PdfColorspaceLab ,error ){_gbfg :=NewPdfColorspaceLab ();if _aebd ,_dgbe :=_gdcdf .(*_dfg .PdfIndirectObject );_dgbe {_gbfg ._abbf =_aebd ;};_gdcdf =_dfg .TraceToDirectObject (_gdcdf );_gfeb ,_dbbg :=_gdcdf .(*_dfg .PdfObjectArray ); if !_dbbg {return nil ,_d .Errorf ("\u0074\u0079\u0070\u0065\u0020\u0065\u0072\u0072\u006f\u0072");};if _gfeb .Len ()!=2{return nil ,_d .Errorf ("\u0069n\u0076\u0061\u006c\u0069d\u0020\u0043\u0061\u006c\u0052G\u0042 \u0063o\u006c\u006f\u0072\u0073\u0070\u0061\u0063e"); };_gdcdf =_dfg .TraceToDirectObject (_gfeb .Get (0));_fbcb ,_dbbg :=_gdcdf .(*_dfg .PdfObjectName );if !_dbbg {return nil ,_d .Errorf ("\u006c\u0061\u0062\u0020\u006e\u0061\u006d\u0065\u0020\u006e\u006ft\u0020\u0061\u0020\u004e\u0061\u006d\u0065\u0020\u006f\u0062j\u0065\u0063\u0074"); };if *_fbcb !="\u004c\u0061\u0062"{return nil ,_d .Errorf ("n\u006ft\u0020\u0061\u0020\u004c\u0061\u0062\u0020\u0063o\u006c\u006f\u0072\u0073pa\u0063\u0065");};_gdcdf =_dfg .TraceToDirectObject (_gfeb .Get (1));_gedf ,_dbbg :=_gdcdf .(*_dfg .PdfObjectDictionary ); if !_dbbg {return nil ,_d .Errorf ("c\u006f\u006c\u006f\u0072\u0073\u0070\u0061\u0063\u0065\u0020\u0064\u0069\u0063\u0074\u0069\u006f\u006e\u0061r\u0079\u0020\u006d\u0069\u0073\u0073\u0069\u006e\u0067\u0020or\u0020\u0069\u006ev\u0061l\u0069\u0064");};_gdcdf =_gedf .Get ("\u0057\u0068\u0069\u0074\u0065\u0050\u006f\u0069\u006e\u0074"); _gdcdf =_dfg .TraceToDirectObject (_gdcdf );_caea ,_dbbg :=_gdcdf .(*_dfg .PdfObjectArray );if !_dbbg {return nil ,_d .Errorf ("\u006c\u0061\u0062\u0020In\u0076\u0061\u006c\u0069\u0064\u0020\u0057\u0068\u0069\u0074\u0065\u0050\u006f\u0069n\u0074");};if _caea .Len ()!=3{return nil ,_d .Errorf ("\u006c\u0061b\u003a\u0020\u0049\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0057\u0068\u0069\u0074\u0065\u0050\u006f\u0069\u006e\u0074\u0020\u0061rr\u0061\u0079"); };_ceee ,_dage :=_caea .GetAsFloat64Slice ();if _dage !=nil {return nil ,_dage ;};_gbfg .WhitePoint =_ceee ;_gdcdf =_gedf .Get ("\u0042\u006c\u0061\u0063\u006b\u0050\u006f\u0069\u006e\u0074");if _gdcdf !=nil {_gdcdf =_dfg .TraceToDirectObject (_gdcdf ); _daaf ,_cccgg :=_gdcdf .(*_dfg .PdfObjectArray );if !_cccgg {return nil ,_d .Errorf ("\u006c\u0061\u0062: \u0049\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0042\u006c\u0061\u0063\u006b\u0050\u006f\u0069\u006e\u0074");};if _daaf .Len ()!=3{return nil ,_d .Errorf ("\u006c\u0061b\u003a\u0020\u0049\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0042\u006c\u0061\u0063\u006b\u0050\u006f\u0069\u006e\u0074\u0020\u0061rr\u0061\u0079"); };_bbde ,_caagcb :=_daaf .GetAsFloat64Slice ();if _caagcb !=nil {return nil ,_caagcb ;};_gbfg .BlackPoint =_bbde ;};_gdcdf =_gedf .Get ("\u0052\u0061\u006eg\u0065");if _gdcdf !=nil {_gdcdf =_dfg .TraceToDirectObject (_gdcdf );_edfd ,_bbdf :=_gdcdf .(*_dfg .PdfObjectArray ); if !_bbdf {_egb .Log .Error ("\u0052\u0061n\u0067\u0065\u0020t\u0079\u0070\u0065\u0020\u0065\u0072\u0072\u006f\u0072");return nil ,_d .Errorf ("\u006ca\u0062:\u0020\u0054\u0079\u0070\u0065\u0020\u0065\u0072\u0072\u006f\u0072");};if _edfd .Len ()!=4{_egb .Log .Error ("\u0052\u0061\u006e\u0067\u0065\u0020\u0072\u0061\u006e\u0067\u0065\u0020e\u0072\u0072\u006f\u0072"); return nil ,_d .Errorf ("\u006c\u0061b\u003a\u0020\u0052a\u006e\u0067\u0065\u0020\u0065\u0072\u0072\u006f\u0072");};_dbdd ,_ggbd :=_edfd .GetAsFloat64Slice ();if _ggbd !=nil {return nil ,_ggbd ;};_gbfg .Range =_dbdd ;};return _gbfg ,nil ;}; // NewPdfAnnotationStamp returns a new stamp annotation. func NewPdfAnnotationStamp ()*PdfAnnotationStamp {_fgg :=NewPdfAnnotation ();_bgda :=&PdfAnnotationStamp {};_bgda .PdfAnnotation =_fgg ;_bgda .PdfAnnotationMarkup =&PdfAnnotationMarkup {};_fgg .SetContext (_bgda );return _bgda ;}; // GetCharMetrics returns the char metrics for character code `code`. func (_fccb pdfFontType3 )GetCharMetrics (code _ff .CharCode )(_bf .CharMetrics ,bool ){if _adef ,_gaaf :=_fccb ._efgcd [code ];_gaaf {return _bf .CharMetrics {Wx :_adef },true ;};if _bf .IsStdFont (_bf .StdFontName (_fccb ._dbcbc )){return _bf .CharMetrics {Wx :250},true ; };return _bf .CharMetrics {},false ;};func (_bbcgf *PdfReader )newPdfSignatureFromIndirect (_daadc *_dfg .PdfIndirectObject )(*PdfSignature ,error ){_dadab ,_eecca :=_daadc .PdfObject .(*_dfg .PdfObjectDictionary );if !_eecca {_egb .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0053\u0069\u0067\u006e\u0061\u0074\u0075\u0072e\u0020\u0063\u006f\u006e\u0074\u0061\u0069\u006e\u0065\u0072\u0020\u006e\u006ft\u0020\u0063\u006f\u006e\u0074\u0061\u0069\u006e\u0069\u006e\u0067\u0020a \u0064\u0069\u0063\u0074\u0069\u006f\u006e\u0061\u0072\u0079"); return nil ,ErrTypeCheck ;};if _bddge ,_gbdb :=_bbcgf ._acaed .GetModelFromPrimitive (_daadc ).(*PdfSignature );_gbdb {return _bddge ,nil ;};_agfbb :=&PdfSignature {};_agfbb ._fdeb =_daadc ;_agfbb .Type ,_ =_dfg .GetName (_dadab .Get ("\u0054\u0079\u0070\u0065")); _agfbb .Filter ,_eecca =_dfg .GetName (_dadab .Get ("\u0046\u0069\u006c\u0074\u0065\u0072"));if !_eecca {_egb .Log .Error ("\u0045\u0052R\u004f\u0052\u003a\u0020\u0053i\u0067\u006e\u0061\u0074\u0075r\u0065\u0020\u0046\u0069\u006c\u0074\u0065\u0072\u0020\u0061\u0074\u0074\u0072\u0069\u0062\u0075\u0074\u0065\u0020\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u006f\u0072\u0020\u006d\u0069\u0073\u0073\u0069\u006e\u0067"); return nil ,ErrInvalidAttribute ;};_agfbb .SubFilter ,_ =_dfg .GetName (_dadab .Get ("\u0053u\u0062\u0046\u0069\u006c\u0074\u0065r"));_agfbb .Contents ,_eecca =_dfg .GetString (_dadab .Get ("\u0043\u006f\u006e\u0074\u0065\u006e\u0074\u0073"));if !_eecca {_egb .Log .Error ("\u0045\u0052\u0052\u004f\u0052\u003a \u0053\u0069\u0067\u006e\u0061\u0074\u0075\u0072\u0065\u0020\u0063\u006f\u006et\u0065\u006e\u0074\u0073\u0020\u006d\u0069s\u0073\u0069\u006e\u0067"); return nil ,ErrInvalidAttribute ;};if _egbbe ,_eeaca :=_dfg .GetArray (_dadab .Get ("\u0052e\u0066\u0065\u0072\u0065\u006e\u0063e"));_eeaca {_agfbb .Reference =_dfg .MakeArray ();for _ ,_cgfde :=range _egbbe .Elements (){_dfddge ,_ddcdd :=_dfg .GetDict (_cgfde ); if !_ddcdd {_egb .Log .Error ("\u0045\u0052R\u004f\u0052\u003a\u0020R\u0065\u0066e\u0072\u0065\u006e\u0063\u0065\u0020\u0063\u006fn\u0074\u0065\u006e\u0074\u0073\u0020\u0069\u006e\u0076\u0061\u006c\u0069d\u0061\u0074\u0065\u0064");return nil ,ErrInvalidAttribute ; };_deeba ,_cdfgg :=_bbcgf .newPdfSignatureReferenceFromDict (_dfddge );if _cdfgg !=nil {return nil ,_cdfgg ;};_agfbb .Reference .Append (_deeba .ToPdfObject ());};};_agfbb .Cert =_dadab .Get ("\u0043\u0065\u0072\u0074");_agfbb .ByteRange ,_ =_dfg .GetArray (_dadab .Get ("\u0042y\u0074\u0065\u0052\u0061\u006e\u0067e")); _agfbb .Changes ,_ =_dfg .GetArray (_dadab .Get ("\u0043h\u0061\u006e\u0067\u0065\u0073"));_agfbb .Name ,_ =_dfg .GetString (_dadab .Get ("\u004e\u0061\u006d\u0065"));_agfbb .M ,_ =_dfg .GetString (_dadab .Get ("\u004d"));_agfbb .Location ,_ =_dfg .GetString (_dadab .Get ("\u004c\u006f\u0063\u0061\u0074\u0069\u006f\u006e")); _agfbb .Reason ,_ =_dfg .GetString (_dadab .Get ("\u0052\u0065\u0061\u0073\u006f\u006e"));_agfbb .ContactInfo ,_ =_dfg .GetString (_dadab .Get ("C\u006f\u006e\u0074\u0061\u0063\u0074\u0049\u006e\u0066\u006f"));_agfbb .R ,_ =_dfg .GetInt (_dadab .Get ("\u0052")); _agfbb .V ,_ =_dfg .GetInt (_dadab .Get ("\u0056"));_agfbb .PropBuild ,_ =_dfg .GetDict (_dadab .Get ("\u0050\u0072\u006f\u0070\u005f\u0042\u0075\u0069\u006c\u0064"));_agfbb .PropAuthTime ,_ =_dfg .GetInt (_dadab .Get ("\u0050\u0072\u006f\u0070\u005f\u0041\u0075\u0074\u0068\u0054\u0069\u006d\u0065")); _agfbb .PropAuthType ,_ =_dfg .GetName (_dadab .Get ("\u0050\u0072\u006f\u0070\u005f\u0041\u0075\u0074\u0068\u0054\u0079\u0070\u0065"));_bbcgf ._acaed .Register (_daadc ,_agfbb );return _agfbb ,nil ;}; // ToPdfObject return the CalGray colorspace as a PDF object (name dictionary). func (_gfac *PdfColorspaceCalGray )ToPdfObject ()_dfg .PdfObject {_dcgdg :=&_dfg .PdfObjectArray {};_dcgdg .Append (_dfg .MakeName ("\u0043a\u006c\u0047\u0072\u0061\u0079"));_bcecg :=_dfg .MakeDict ();if _gfac .WhitePoint !=nil {_bcecg .Set ("\u0057\u0068\u0069\u0074\u0065\u0050\u006f\u0069\u006e\u0074",_dfg .MakeArray (_dfg .MakeFloat (_gfac .WhitePoint [0]),_dfg .MakeFloat (_gfac .WhitePoint [1]),_dfg .MakeFloat (_gfac .WhitePoint [2]))); }else {_egb .Log .Error ("\u0043\u0061\u006c\u0047\u0072\u0061\u0079\u003a\u0020\u004d\u0069\u0073\u0073\u0069\u006e\u0067\u0020\u0057\u0068\u0069\u0074\u0065\u0050\u006fi\u006e\u0074\u0020\u0028\u0052e\u0071\u0075i\u0072\u0065\u0064\u0029");};if _gfac .BlackPoint !=nil {_bcecg .Set ("\u0042\u006c\u0061\u0063\u006b\u0050\u006f\u0069\u006e\u0074",_dfg .MakeArray (_dfg .MakeFloat (_gfac .BlackPoint [0]),_dfg .MakeFloat (_gfac .BlackPoint [1]),_dfg .MakeFloat (_gfac .BlackPoint [2]))); };_bcecg .Set ("\u0047\u0061\u006dm\u0061",_dfg .MakeFloat (_gfac .Gamma ));_dcgdg .Append (_bcecg );if _gfac ._efge !=nil {_gfac ._efge .PdfObject =_dcgdg ;return _gfac ._efge ;};return _dcgdg ;}; // GetColorspaceByName returns the colorspace with the specified name from the page resources. func (_gfgfg *PdfPageResources )GetColorspaceByName (keyName _dfg .PdfObjectName )(PdfColorspace ,bool ){_agdea ,_adbfc :=_gfgfg .GetColorspaces ();if _adbfc !=nil {_egb .Log .Debug ("\u0045\u0052R\u004f\u0052\u0020\u0067\u0065\u0074\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006c\u006f\u0072\u0073\u0070\u0072\u0061\u0063\u0065: \u0025\u0076",_adbfc ); return nil ,false ;};if _agdea ==nil {return nil ,false ;};_defad ,_gcggg :=_agdea .Colorspaces [string (keyName )];if !_gcggg {return nil ,false ;};return _defad ,true ;}; // FlattenFields flattens the form fields and annotations for the PDF loaded in `pdf` and makes // non-editable. // Looks up all widget annotations corresponding to form fields and flattens them by drawing the content // through the content stream rather than annotations. // References to flattened annotations will be removed from Page Annots array. For fields the AcroForm entry // will be emptied. // When `allannots` is true, all annotations will be flattened. Keep false if want to keep non-form related // annotations intact. // When `appgen` is not nil, it will be used to generate appearance streams for the field annotations. func (_fcgc *PdfReader )FlattenFields (allannots bool ,appgen FieldAppearanceGenerator )error {return _fcgc .flattenFieldsWithOpts (allannots ,appgen ,nil );}; // SetNamedDestinations sets the Dests entry in the PDF catalog. // See section 12.3.2.3 "Named Destinations" (p. 367 PDF32000_2008). func (_aacdd *PdfWriter )SetNamedDestinations (dests _dfg .PdfObject )error {if dests ==nil {return nil ;};_egb .Log .Trace ("\u0053e\u0074\u0074\u0069\u006e\u0067\u0020\u0063\u0061\u0074\u0061\u006co\u0067\u0020\u0044\u0065\u0073\u0074\u0073\u002e\u002e\u002e"); _aacdd ._acgcc .Set ("\u0044\u0065\u0073t\u0073",dests );return _aacdd .addObjects (dests );}; // SetTabOrder sets the tab order for the page. func (_bgfc *PdfPage )SetTabOrder (order TabOrderType ){_bgfc .Tabs =_dfg .MakeName (string (order ))}; // GetNumComponents returns the number of color components (4 for CMYK32). func (_dfgbd *PdfColorDeviceCMYK )GetNumComponents ()int {return 4}; // Write writes out the PDF. func (_abdbde *PdfWriter )Write (writer _edg .Writer )error {_egb .Log .Trace ("\u0057r\u0069\u0074\u0065\u0028\u0029");if _badff ,_affdc :=writer .(*_ga .File );_affdc {_abdbde .SetFileName (_badff .Name ());};_adac :=_abdbde .checkLicense ();if _adac !=nil {return _adac ; };if _adac =_abdbde .writeOutlines ();_adac !=nil {return _adac ;};if _adac =_abdbde .writeAcroFormFields ();_adac !=nil {return _adac ;};if _adac =_abdbde .writeNamesDictionary ();_adac !=nil {return _adac ;};_abdbde .checkPendingObjects ();if _adac =_abdbde .writeOutputIntents (); _adac !=nil {return _adac ;};_abdbde .setCatalogVersion ();_abdbde .copyObjects ();if _adac =_abdbde .optimize ();_adac !=nil {return _adac ;};if _adac =_abdbde .optimizeDocument ();_adac !=nil {return _adac ;};var _eaebfe _g .Hash ;if _abdbde ._faacaa {_eaebfe =_cd .New (); writer =_edg .MultiWriter (_eaebfe ,writer );};_abdbde .setWriter (writer );_gbgac :=_abdbde .checkCrossReferenceStream ();_cdade ,_gbgac :=_abdbde .mapObjectStreams (_gbgac );_abdbde .adjustXRefAffectedVersion (_gbgac );_abdbde .writeDocumentVersion (); _abdbde .updateObjectNumbers ();_abdbde .writeObjects ();if _adac =_abdbde .writeObjectsInStreams (_cdade );_adac !=nil {return _adac ;};_gabeg :=_abdbde ._cffge ;var _cbgdc int ;for _aadd :=range _abdbde ._effg {if _aadd > _cbgdc {_cbgdc =_aadd ;};};if _abdbde ._faacaa {if _adac =_abdbde .setHashIDs (_eaebfe ); _adac !=nil {return _adac ;};};if _gbgac {if _adac =_abdbde .writeXRefStreams (_cbgdc ,_gabeg );_adac !=nil {return _adac ;};}else {_abdbde .writeTrailer (_cbgdc );};_abdbde .makeOffSetReference (_gabeg );if _adac =_abdbde .flushWriter ();_adac !=nil {return _adac ; };return nil ;}; // AlphaMapFunc represents a alpha mapping function: byte -> byte. Can be used for // thresholding the alpha channel, i.e. setting all alpha values below threshold to transparent. type AlphaMapFunc func (_dafdc byte )byte ; // NewPdfFontFromTTFFile loads a TTF font file and returns a PdfFont type // that can be used in text styling functions. // Uses a WinAnsiTextEncoder and loads only character codes 32-255. // NOTE: For composite fonts such as used in symbolic languages, use NewCompositePdfFontFromTTFFile. func NewPdfFontFromTTFFile (filePath string )(*PdfFont ,error ){_afcf ,_eaba :=_ga .Open (filePath );if _eaba !=nil {_egb .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0072\u0065\u0061\u0064\u0069\u006e\u0067\u0020T\u0054F\u0020\u0066\u006f\u006e\u0074\u0020\u0066\u0069\u006c\u0065\u003a\u0020\u0025\u0076",_eaba ); return nil ,_eaba ;};defer _afcf .Close ();return NewPdfFontFromTTF (_afcf );}; // ToOutlineTree returns a low level PdfOutlineTreeNode object, based on // the current instance. func (_cabgb *Outline )ToOutlineTree ()*PdfOutlineTreeNode {return &_cabgb .ToPdfOutline ().PdfOutlineTreeNode ;}; // NumCopies returns the value of the numCopies. func (_ddfecg *ViewerPreferences )NumCopies ()int {return _ddfecg ._gefff }; // ViewClip returns the value of the viewClip. func (_ffdfa *ViewerPreferences )ViewClip ()PageBoundary {return _ffdfa ._cfbeg };func _afbgd ()string {_dfbaa .Lock ();defer _dfbaa .Unlock ();return _bdbaed }; // VRI represents a Validation-Related Information dictionary. // The VRI dictionary contains validation data in the form of // certificates, OCSP and CRL information, for a single signature. // See ETSI TS 102 778-4 V1.1.1 for more information. type VRI struct{Cert []*_dfg .PdfObjectStream ;OCSP []*_dfg .PdfObjectStream ;CRL []*_dfg .PdfObjectStream ;TU *_dfg .PdfObjectString ;TS *_dfg .PdfObjectString ;}; // GetContainingPdfObject implements model.PdfModel interface. func (_fceda *PdfOutputIntent )GetContainingPdfObject ()_dfg .PdfObject {return _fceda ._gacff };func _faff (_fcfcb *_dfg .PdfObjectDictionary ,_acaa *fontCommon ,_fbcg _ff .TextEncoder )(*pdfFontSimple ,error ){_facf :=_dggd (_acaa );_facf ._eabff =_fbcg ; if _fbcg ==nil {_eafa :=_fcfcb .Get ("\u0046i\u0072\u0073\u0074\u0043\u0068\u0061r");if _eafa ==nil {_eafa =_dfg .MakeInteger (0);};_facf .FirstChar =_eafa ;_ccff ,_ecdca :=_dfg .GetIntVal (_eafa );if !_ecdca {_egb .Log .Debug ("\u0045\u0052\u0052OR\u003a\u0020\u0049\u006e\u0076\u0061\u006c\u0069\u0064 \u0046i\u0072s\u0074C\u0068\u0061\u0072\u0020\u0074\u0079\u0070\u0065\u0020\u0028\u0025\u0054\u0029",_eafa ); return nil ,_dfg .ErrTypeError ;};_cecc :=_ff .CharCode (_ccff );_eafa =_fcfcb .Get ("\u004c\u0061\u0073\u0074\u0043\u0068\u0061\u0072");if _eafa ==nil {_eafa =_dfg .MakeInteger (255);};_facf .LastChar =_eafa ;_ccff ,_ecdca =_dfg .GetIntVal (_eafa );if !_ecdca {_egb .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a \u0049\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u004c\u0061\u0073\u0074\u0043h\u0061\u0072\u0020\u0074\u0079\u0070\u0065 \u0028\u0025\u0054\u0029",_eafa ); return nil ,_dfg .ErrTypeError ;};_fbefb :=_ff .CharCode (_ccff );_facf ._aefba =make (map[_ff .CharCode ]float64 );_eafa =_fcfcb .Get ("\u0057\u0069\u0064\u0074\u0068\u0073");if _eafa !=nil {_facf .Widths =_eafa ;_bfbeb ,_dgfgb :=_dfg .GetArray (_eafa ); if !_dgfgb {_egb .Log .Debug ("\u0045\u0052R\u004f\u0052\u003a\u0020W\u0069\u0064t\u0068\u0073\u0020\u0061\u0074\u0074\u0072\u0069b\u0075\u0074\u0065\u0020\u0021\u003d\u0020\u0061\u0072\u0072\u0061\u0079 \u0028\u0025\u0054\u0029",_eafa );return nil ,_dfg .ErrTypeError ; };_fdga ,_bdab :=_bfbeb .ToFloat64Array ();if _bdab !=nil {_egb .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a \u0063\u006f\u006e\u0076\u0065\u0072\u0074\u0069\u006e\u0067\u0020\u0077\u0069d\u0074\u0068\u0073\u0020\u0074\u006f\u0020a\u0072\u0072\u0061\u0079"); return nil ,_bdab ;};if len (_fdga )!=int (_fbefb -_cecc +1){_egb .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0049\u006e\u0076\u0061\u006c\u0069d\u0020\u0077\u0069\u0064\u0074\u0068s\u0020\u006c\u0065\u006e\u0067\u0074\u0068\u0020\u0021\u003d\u0020\u0025\u0064 \u0028\u0025\u0064\u0029",_fbefb -_cecc +1,len (_fdga )); return nil ,_dfg .ErrRangeError ;};for _ggfa ,_bgcf :=range _fdga {_facf ._aefba [_cecc +_ff .CharCode (_ggfa )]=_bgcf ;};};};_facf .Encoding =_dfg .TraceToDirectObject (_fcfcb .Get ("\u0045\u006e\u0063\u006f\u0064\u0069\u006e\u0067"));return _facf ,nil ; };func (_adgb *PdfAppender )addNewObject (_abf _dfg .PdfObject ){if _ ,_bedbb :=_adgb ._dadd [_abf ];!_bedbb {_adgb ._fbfcg =append (_adgb ._fbfcg ,_abf );_adgb ._dadd [_abf ]=struct{}{};};}; // SetReason sets the `Reason` field of the signature. func (_ffdcg *PdfSignature )SetReason (reason string ){_ffdcg .Reason =_dfg .MakeEncodedString (reason ,true );}; // GetPageDict converts the Page to a PDF object dictionary. func (_cfcdb *PdfPage )GetPageDict ()*_dfg .PdfObjectDictionary {_dceae :=_cfcdb ._daae ;_dceae .Clear ();_dceae .Set ("\u0054\u0079\u0070\u0065",_dfg .MakeName ("\u0050\u0061\u0067\u0065"));_dceae .Set ("\u0050\u0061\u0072\u0065\u006e\u0074",_cfcdb .Parent ); if _cfcdb .LastModified !=nil {_dceae .Set ("\u004c\u0061\u0073t\u004d\u006f\u0064\u0069\u0066\u0069\u0065\u0064",_cfcdb .LastModified .ToPdfObject ());};if _cfcdb .Resources !=nil {_dceae .Set ("\u0052e\u0073\u006f\u0075\u0072\u0063\u0065s",_cfcdb .Resources .ToPdfObject ()); };if _cfcdb .CropBox !=nil {_dceae .Set ("\u0043r\u006f\u0070\u0042\u006f\u0078",_cfcdb .CropBox .ToPdfObject ());};if _cfcdb .MediaBox !=nil {_dceae .Set ("\u004d\u0065\u0064\u0069\u0061\u0042\u006f\u0078",_cfcdb .MediaBox .ToPdfObject ());};if _cfcdb .BleedBox !=nil {_dceae .Set ("\u0042\u006c\u0065\u0065\u0064\u0042\u006f\u0078",_cfcdb .BleedBox .ToPdfObject ()); };if _cfcdb .TrimBox !=nil {_dceae .Set ("\u0054r\u0069\u006d\u0042\u006f\u0078",_cfcdb .TrimBox .ToPdfObject ());};if _cfcdb .ArtBox !=nil {_dceae .Set ("\u0041\u0072\u0074\u0042\u006f\u0078",_cfcdb .ArtBox .ToPdfObject ());};_dceae .SetIfNotNil ("\u0042\u006f\u0078C\u006f\u006c\u006f\u0072\u0049\u006e\u0066\u006f",_cfcdb .BoxColorInfo ); _dceae .SetIfNotNil ("\u0043\u006f\u006e\u0074\u0065\u006e\u0074\u0073",_cfcdb .Contents );if _cfcdb .Rotate !=nil {_dceae .Set ("\u0052\u006f\u0074\u0061\u0074\u0065",_dfg .MakeInteger (*_cfcdb .Rotate ));};_dceae .SetIfNotNil ("\u0047\u0072\u006fu\u0070",_cfcdb .Group ); _dceae .SetIfNotNil ("\u0054\u0068\u0075m\u0062",_cfcdb .Thumb );_dceae .SetIfNotNil ("\u0042",_cfcdb .B );_dceae .SetIfNotNil ("\u0044\u0075\u0072",_cfcdb .Dur );_dceae .SetIfNotNil ("\u0054\u0072\u0061n\u0073",_cfcdb .Trans );_dceae .SetIfNotNil ("\u0041\u0041",_cfcdb .AA ); _dceae .SetIfNotNil ("\u004d\u0065\u0074\u0061\u0064\u0061\u0074\u0061",_cfcdb .Metadata );_dceae .SetIfNotNil ("\u0050i\u0065\u0063\u0065\u0049\u006e\u0066o",_cfcdb .PieceInfo );_dceae .SetIfNotNil ("\u0053\u0074\u0072\u0075\u0063\u0074\u0050\u0061\u0072\u0065\u006e\u0074\u0073",_cfcdb .StructParents ); _dceae .SetIfNotNil ("\u0049\u0044",_cfcdb .ID );_dceae .SetIfNotNil ("\u0050\u005a",_cfcdb .PZ );_dceae .SetIfNotNil ("\u0053\u0065\u0070\u0061\u0072\u0061\u0074\u0069\u006fn\u0049\u006e\u0066\u006f",_cfcdb .SeparationInfo );_dceae .SetIfNotNil ("\u0054\u0061\u0062\u0073",_cfcdb .Tabs ); _dceae .SetIfNotNil ("T\u0065m\u0070\u006c\u0061\u0074\u0065\u0049\u006e\u0073t\u0061\u006e\u0074\u0069at\u0065\u0064",_cfcdb .TemplateInstantiated );_dceae .SetIfNotNil ("\u0050r\u0065\u0073\u0053\u0074\u0065\u0070s",_cfcdb .PresSteps );_dceae .SetIfNotNil ("\u0055\u0073\u0065\u0072\u0055\u006e\u0069\u0074",_cfcdb .UserUnit ); _dceae .SetIfNotNil ("\u0056\u0050",_cfcdb .VP );if _cfcdb ._dbec !=nil {_eeef :=_dfg .MakeArray ();for _ ,_bbcgc :=range _cfcdb ._dbec {if _cbddfc :=_bbcgc .GetContext ();_cbddfc !=nil {_eeef .Append (_cbddfc .ToPdfObject ());}else {_eeef .Append (_bbcgc .ToPdfObject ()); };};if _eeef .Len ()> 0{_dceae .Set ("\u0041\u006e\u006e\u006f\u0074\u0073",_eeef );};}else if _cfcdb .Annots !=nil {_dceae .SetIfNotNil ("\u0041\u006e\u006e\u006f\u0074\u0073",_cfcdb .Annots );};return _dceae ;}; // DecodeArray returns the component range values for the DeviceN colorspace. // [0 1.0 0 1.0 ...] for each color component. func (_eaaa *PdfColorspaceDeviceN )DecodeArray ()[]float64 {var _fffb []float64 ;for _gadf :=0;_gadf < _eaaa .GetNumComponents ();_gadf ++{_fffb =append (_fffb ,0.0,1.0);};return _fffb ;};func (_geg *PdfReader )newPdfActionLaunchFromDict (_fee *_dfg .PdfObjectDictionary )(*PdfActionLaunch ,error ){_cfgg ,_acg :=_dbga (_fee .Get ("\u0046")); if _acg !=nil {return nil ,_acg ;};return &PdfActionLaunch {Win :_fee .Get ("\u0057\u0069\u006e"),Mac :_fee .Get ("\u004d\u0061\u0063"),Unix :_fee .Get ("\u0055\u006e\u0069\u0078"),NewWindow :_fee .Get ("\u004ee\u0077\u0057\u0069\u006e\u0064\u006fw"),F :_cfgg },nil ; }; // Add appends a top level outline item to the outline. func (_caeab *Outline )Add (item *OutlineItem ){_caeab .Entries =append (_caeab .Entries ,item )}; // GetXObjectByName returns the XObject with the specified keyName and the object type. func (_cbfcf *PdfPageResources )GetXObjectByName (keyName _dfg .PdfObjectName )(*_dfg .PdfObjectStream ,XObjectType ){if _cbfcf .XObject ==nil {return nil ,XObjectTypeUndefined ;};_bebfd ,_aeaab :=_dfg .TraceToDirectObject (_cbfcf .XObject ).(*_dfg .PdfObjectDictionary ); if !_aeaab {_egb .Log .Debug ("\u0045\u0052\u0052\u004f\u0052:\u0020\u0058\u004f\u0062\u006a\u0065\u0063\u0074\u0020\u006e\u006f\u0074\u0020a\u0020\u0064\u0069\u0063\u0074\u0069\u006f\u006e\u0061\u0072\u0079\u0021\u0020\u0028\u0067\u006f\u0074\u0020\u0025\u0054\u0029",_dfg .TraceToDirectObject (_cbfcf .XObject )); return nil ,XObjectTypeUndefined ;};if _eeeb :=_bebfd .Get (keyName );_eeeb !=nil {_fbaa ,_aagfc :=_dfg .GetStream (_eeeb );if !_aagfc {_egb .Log .Debug ("X\u004f\u0062\u006a\u0065\u0063\u0074 \u006e\u006f\u0074\u0020\u0070\u006fi\u006e\u0074\u0069\u006e\u0067\u0020\u0074o\u0020\u0061\u0020\u0073\u0074\u0072\u0065\u0061\u006d\u0020%\u0054",_eeeb ); return nil ,XObjectTypeUndefined ;};_edbae :=_fbaa .PdfObjectDictionary ;_bgcbd ,_aagfc :=_dfg .TraceToDirectObject (_edbae .Get ("\u0053u\u0062\u0074\u0079\u0070\u0065")).(*_dfg .PdfObjectName );if !_aagfc {_egb .Log .Debug ("\u0058\u004fbj\u0065\u0063\u0074 \u0053\u0075\u0062\u0074ype\u0020no\u0074\u0020\u0061\u0020\u004e\u0061\u006de,\u0020\u0064\u0069\u0063\u0074\u003a\u0020%\u0073",_edbae .String ()); return nil ,XObjectTypeUndefined ;};if *_bgcbd =="\u0049\u006d\u0061g\u0065"{return _fbaa ,XObjectTypeImage ;}else if *_bgcbd =="\u0046\u006f\u0072\u006d"{return _fbaa ,XObjectTypeForm ;}else if *_bgcbd =="\u0050\u0053"{return _fbaa ,XObjectTypePS ;}else {_egb .Log .Debug ("\u0058\u004f\u0062\u006a\u0065\u0063\u0074\u0020\u0053\u0075b\u0074\u0079\u0070\u0065\u0020\u006e\u006ft\u0020\u006b\u006e\u006f\u0077\u006e\u0020\u0028\u0025\u0073\u0029",*_bgcbd ); return nil ,XObjectTypeUndefined ;};}else {return nil ,XObjectTypeUndefined ;};}; // PdfAnnotationLine represents Line annotations. // (Section 12.5.6.7). type PdfAnnotationLine struct{*PdfAnnotation ;*PdfAnnotationMarkup ;L _dfg .PdfObject ;BS _dfg .PdfObject ;LE _dfg .PdfObject ;IC _dfg .PdfObject ;LL _dfg .PdfObject ;LLE _dfg .PdfObject ;Cap _dfg .PdfObject ;IT _dfg .PdfObject ;LLO _dfg .PdfObject ;CP _dfg .PdfObject ; Measure _dfg .PdfObject ;CO _dfg .PdfObject ;};func (_ecda *PdfWriter )setDocumentIDs (_ecagc ,_bddc string ){_ecda ._beccf =_dfg .MakeArray (_dfg .MakeHexString (_ecagc ),_dfg .MakeHexString (_bddc ));};func (_fbgadg *DSS )add (_ddaf *[]*_dfg .PdfObjectStream ,_fffcd map[string ]*_dfg .PdfObjectStream ,_eebaed [][]byte )([]*_dfg .PdfObjectStream ,error ){_faadc :=make ([]*_dfg .PdfObjectStream ,0,len (_eebaed )); for _ ,_aaeba :=range _eebaed {_bfae ,_agad :=_fcabf (_aaeba );if _agad !=nil {return nil ,_agad ;};_cebg ,_ccaca :=_fffcd [string (_bfae )];if !_ccaca {_cebg ,_agad =_dfg .MakeStream (_aaeba ,_dfg .NewRawEncoder ());if _agad !=nil {return nil ,_agad ; };_fffcd [string (_bfae )]=_cebg ;*_ddaf =append (*_ddaf ,_cebg );};_faadc =append (_faadc ,_cebg );};return _faadc ,nil ;}; // SetContext sets the sub action (context). func (_bca *PdfAction )SetContext (ctx PdfModel ){_bca ._bdb =ctx }; // IsHideMenubar returns the value of the hideMenubar flag. func (_dbcabg *ViewerPreferences )IsHideMenubar ()bool {if _dbcabg ._eaded ==nil {return false ;};return *_dbcabg ._eaded ;};func (_cedaa *PdfWriter )AttachFile (file *EmbeddedFile )error {_ebaag :=_cedaa ._baeae ;if _ebaag ==nil {_ebaag =_ffad ();};_dacfg :=_ebaag .addEmbeddedFile (file ); if _dacfg !=nil {return _dacfg ;};_cedaa ._baeae =_ebaag ;return nil ;}; // GetNameDictionary returns the Names entry in the PDF catalog. // See section 7.7.4 "Name Dictionary" (p. 80 PDF32000_2008). func (_dbbggg *PdfReader )GetNameDictionary ()(_dfg .PdfObject ,error ){_eaeag :=_dfg .ResolveReference (_dbbggg ._fbfgb .Get ("\u004e\u0061\u006de\u0073"));if _eaeag ==nil {return nil ,nil ;};if !_dbbggg ._bafba {_ffgcec :=_dbbggg .traverseObjectData (_eaeag ); if _ffgcec !=nil {return nil ,_ffgcec ;};};return _eaeag ,nil ;}; // Encoder returns the font's text encoder. func (_bcac pdfCIDFontType0 )Encoder ()_ff .TextEncoder {return _bcac ._eebeb }; // GetDocMDPPermission returns the DocMDP level of the restrictions func (_gbbbc *PdfSignature )GetDocMDPPermission ()(_bba .DocMDPPermission ,bool ){for _ ,_fcaba :=range _gbbbc .Reference .Elements (){if _bddac ,_gdccf :=_dfg .GetDict (_fcaba );_gdccf {if _gfgbg ,_cgfdf :=_dfg .GetNameVal (_bddac .Get ("\u0054r\u0061n\u0073\u0066\u006f\u0072\u006d\u004d\u0065\u0074\u0068\u006f\u0064")); _cgfdf &&_gfgbg =="\u0044\u006f\u0063\u004d\u0044\u0050"{if _cecgf ,_bbcbee :=_dfg .GetDict (_bddac .Get ("\u0054r\u0061n\u0073\u0066\u006f\u0072\u006d\u0050\u0061\u0072\u0061\u006d\u0073"));_bbcbee {if P ,_adeagf :=_dfg .GetIntVal (_cecgf .Get ("\u0050")); _adeagf {return _bba .DocMDPPermission (P ),true ;};};};};};return 0,false ;}; // GetContainingPdfObject implements interface PdfModel. func (_adgd *PdfFilespec )GetContainingPdfObject ()_dfg .PdfObject {return _adgd ._bcadf };func _beeb (_aebb _dfg .PdfObject )(*PdfPattern ,error ){_ddea :=&PdfPattern {};var _bcafc *_dfg .PdfObjectDictionary ;if _cdeca ,_bfgbb :=_dfg .GetIndirect (_aebb ); _bfgbb {_ddea ._adcec =_cdeca ;_egfbf ,_eebb :=_cdeca .PdfObject .(*_dfg .PdfObjectDictionary );if !_eebb {_egb .Log .Debug ("\u0050\u0061\u0074\u0074\u0065\u0072\u006e\u0020\u0069\u006e\u0064\u0069\u0072\u0065\u0063\u0074\u0020\u006f\u0062\u006ae\u0063\u0074\u0020\u006e\u006f\u0074\u0020\u0063\u006fn\u0074\u0061\u0069\u006e\u0069\u006e\u0067\u0020\u0064\u0069\u0063\u0074\u0069o\u006e\u0061\u0072\u0079\u0020\u0028g\u006f\u0074\u0020%\u0054\u0029",_cdeca .PdfObject ); return nil ,_dfg .ErrTypeError ;};_bcafc =_egfbf ;}else if _cceaf ,_gabd :=_dfg .GetStream (_aebb );_gabd {_ddea ._adcec =_cceaf ;_bcafc =_cceaf .PdfObjectDictionary ;}else {_egb .Log .Debug ("\u0050a\u0074\u0074e\u0072\u006e\u0020\u006eo\u0074\u0020\u0061n\u0020\u0069\u006e\u0064\u0069\u0072\u0065\u0063\u0074 o\u0062\u006a\u0065c\u0074\u0020o\u0072\u0020\u0073\u0074\u0072\u0065a\u006d\u002e \u0025\u0054",_aebb ); return nil ,_dfg .ErrTypeError ;};_ebbgb :=_bcafc .Get ("P\u0061\u0074\u0074\u0065\u0072\u006e\u0054\u0079\u0070\u0065");if _ebbgb ==nil {_egb .Log .Debug ("\u0050\u0064\u0066\u0020\u0050\u0061\u0074\u0074\u0065\u0072\u006e\u0020\u006e\u006f\u0074\u0020\u0063\u006f\u006e\u0074\u0061\u0069\u006e\u0069n\u0067\u0020\u0050\u0061\u0074t\u0065\u0072n\u0054\u0079\u0070\u0065"); return nil ,ErrRequiredAttributeMissing ;};_fecfc ,_faadce :=_ebbgb .(*_dfg .PdfObjectInteger );if !_faadce {_egb .Log .Debug ("\u0050\u0061tt\u0065\u0072\u006e \u0074\u0079\u0070\u0065 no\u0074 a\u006e\u0020\u0069\u006e\u0074\u0065\u0067er\u0020\u0028\u0067\u006f\u0074\u0020\u0025T\u0029",_ebbgb ); return nil ,_dfg .ErrTypeError ;};if *_fecfc !=1&&*_fecfc !=2{_egb .Log .Debug ("\u0050\u0061\u0074\u0074e\u0072\u006e\u0020\u0074\u0079\u0070\u0065\u0020\u0021\u003d \u0031/\u0032\u0020\u0028\u0067\u006f\u0074\u0020%\u0064\u0029",*_fecfc );return nil ,_dfg .ErrRangeError ; };_ddea .PatternType =int64 (*_fecfc );switch *_fecfc {case 1:_bafcg ,_eaebf :=_afca (_bcafc );if _eaebf !=nil {return nil ,_eaebf ;};_bafcg .PdfPattern =_ddea ;_ddea ._bfaedb =_bafcg ;return _ddea ,nil ;case 2:_bcecc ,_ffbeg :=_cfbc (_bcafc );if _ffbeg !=nil {return nil ,_ffbeg ; };_bcecc .PdfPattern =_ddea ;_ddea ._bfaedb =_bcecc ;return _ddea ,nil ;};return nil ,_bd .New ("\u0075n\u006bn\u006f\u0077\u006e\u0020\u0070\u0061\u0074\u0074\u0065\u0072\u006e");}; // Mask returns the uin32 bitmask for the specific flag. func (_eeea FieldFlag )Mask ()uint32 {return uint32 (_eeea )};func (_abgd *PdfAcroForm )fillImageWithAppearance (_fafgd FieldImageProvider ,_cfbeb FieldAppearanceGenerator )error {if _abgd ==nil {return nil ;};_egfcf ,_geaga :=_fafgd .FieldImageValues (); if _geaga !=nil {return _geaga ;};for _ ,_bdbd :=range _abgd .AllFields (){_deac :=_bdbd .PartialName ();_ebdgc ,_afccg :=_egfcf [_deac ];if !_afccg {if _abee ,_ecgce :=_bdbd .FullName ();_ecgce ==nil {_ebdgc ,_afccg =_egfcf [_abee ];};};if !_afccg {_egb .Log .Debug ("\u0057\u0041\u0052\u004e\u003a\u0020f\u006f\u0072\u006d \u0066\u0069\u0065l\u0064\u0020\u0025\u0073\u0020\u006e\u006f\u0074\u0020\u0066o\u0075\u006e\u0064\u0020\u0069n \u0074\u0068\u0065\u0020\u0070\u0072\u006f\u0076\u0069\u0064\u0065\u0072\u002e\u0020\u0053\u006b\u0069\u0070\u0070\u0069\u006e\u0067\u002e",_deac ); continue ;};switch _eccbf :=_bdbd .GetContext ().(type ){case *PdfFieldButton :if _eccbf .IsPush (){_eccbf .SetFillImage (_ebdgc );};};if _cfbeb ==nil {continue ;};for _ ,_dfddg :=range _bdbd .Annotations {_efdaf ,_fagea :=_cfbeb .GenerateAppearanceDict (_abgd ,_bdbd ,_dfddg ); if _fagea !=nil {return _fagea ;};_dfddg .AP =_efdaf ;_dfddg .ToPdfObject ();};};return nil ;}; // ToPdfObject implements interface PdfModel. func (_fccc *PdfActionSound )ToPdfObject ()_dfg .PdfObject {_fccc .PdfAction .ToPdfObject ();_gef :=_fccc ._fe ;_bgd :=_gef .PdfObject .(*_dfg .PdfObjectDictionary );_bgd .SetIfNotNil ("\u0053",_dfg .MakeName (string (ActionTypeSound )));_bgd .SetIfNotNil ("\u0053\u006f\u0075n\u0064",_fccc .Sound ); _bgd .SetIfNotNil ("\u0056\u006f\u006c\u0075\u006d\u0065",_fccc .Volume );_bgd .SetIfNotNil ("S\u0079\u006e\u0063\u0068\u0072\u006f\u006e\u006f\u0075\u0073",_fccc .Synchronous );_bgd .SetIfNotNil ("\u0052\u0065\u0070\u0065\u0061\u0074",_fccc .Repeat ); _bgd .SetIfNotNil ("\u004d\u0069\u0078",_fccc .Mix );return _gef ;}; // NewXObjectFormFromStream builds the Form XObject from a stream object. // TODO: Should this be exposed? Consider different access points. func NewXObjectFormFromStream (stream *_dfg .PdfObjectStream )(*XObjectForm ,error ){_dedge :=&XObjectForm {};_dedge ._baced =stream ;_begcga :=*(stream .PdfObjectDictionary );_cgecf ,_cbbda :=_dfg .NewEncoderFromStream (stream );if _cbbda !=nil {return nil ,_cbbda ; };_dedge .Filter =_cgecf ;if _bdaea :=_begcga .Get ("\u0053u\u0062\u0074\u0079\u0070\u0065");_bdaea !=nil {_dfecf ,_dbgada :=_bdaea .(*_dfg .PdfObjectName );if !_dbgada {return nil ,_bd .New ("\u0074\u0079\u0070\u0065\u0020\u0065\u0072\u0072\u006f\u0072"); };if *_dfecf !="\u0046\u006f\u0072\u006d"{_egb .Log .Debug ("I\u006ev\u0061\u006c\u0069\u0064\u0020\u0066\u006f\u0072m\u0020\u0073\u0075\u0062ty\u0070\u0065");return nil ,_bd .New ("i\u006ev\u0061\u006c\u0069\u0064\u0020\u0066\u006f\u0072m\u0020\u0073\u0075\u0062ty\u0070\u0065"); };};if _gabea :=_begcga .Get ("\u0046\u006f\u0072\u006d\u0054\u0079\u0070\u0065");_gabea !=nil {_dedge .FormType =_gabea ;};if _bfbcg :=_begcga .Get ("\u0042\u0042\u006f\u0078");_bfbcg !=nil {_dedge .BBox =_bfbcg ;};if _bfgbacg :=_begcga .Get ("\u004d\u0061\u0074\u0072\u0069\u0078"); _bfgbacg !=nil {_dedge .Matrix =_bfgbacg ;};if _fdceaf :=_begcga .Get ("\u0052e\u0073\u006f\u0075\u0072\u0063\u0065s");_fdceaf !=nil {_fdceaf =_dfg .TraceToDirectObject (_fdceaf );_ecde ,_cfbcc :=_fdceaf .(*_dfg .PdfObjectDictionary );if !_cfbcc {_egb .Log .Debug ("\u0049\u006e\u0076\u0061\u006ci\u0064\u0020\u0058\u004f\u0062j\u0065c\u0074\u0020\u0046\u006f\u0072\u006d\u0020\u0052\u0065\u0073\u006f\u0075\u0072\u0063\u0065\u0073\u0020\u006f\u0062j\u0065\u0063\u0074\u002c\u0020\u0070\u006f\u0069\u006e\u0074\u0069\u006e\u0067\u0020\u0074\u006f\u0020\u006e\u006f\u006e\u002d\u0064\u0069\u0063t\u0069\u006f\u006e\u0061\u0072\u0079"); return nil ,_dfg .ErrTypeError ;};_cagbf ,_aefed :=NewPdfPageResourcesFromDict (_ecde );if _aefed !=nil {_egb .Log .Debug ("\u0046\u0061i\u006c\u0065\u0064\u0020\u0067\u0065\u0074\u0074\u0069\u006e\u0067\u0020\u0066\u006f\u0072\u006d\u0020\u0072\u0065\u0073\u006f\u0075rc\u0065\u0073"); return nil ,_aefed ;};_dedge .Resources =_cagbf ;_egb .Log .Trace ("\u0046\u006f\u0072\u006d r\u0065\u0073\u006f\u0075\u0072\u0063\u0065\u0073\u003a\u0020\u0025\u0023\u0076",_dedge .Resources );};_dedge .Group =_begcga .Get ("\u0047\u0072\u006fu\u0070"); _dedge .Ref =_begcga .Get ("\u0052\u0065\u0066");_dedge .MetaData =_begcga .Get ("\u004d\u0065\u0074\u0061\u0044\u0061\u0074\u0061");_dedge .PieceInfo =_begcga .Get ("\u0050i\u0065\u0063\u0065\u0049\u006e\u0066o");_dedge .LastModified =_begcga .Get ("\u004c\u0061\u0073t\u004d\u006f\u0064\u0069\u0066\u0069\u0065\u0064"); _dedge .StructParent =_begcga .Get ("\u0053\u0074\u0072u\u0063\u0074\u0050\u0061\u0072\u0065\u006e\u0074");_dedge .StructParents =_begcga .Get ("\u0053\u0074\u0072\u0075\u0063\u0074\u0050\u0061\u0072\u0065\u006e\u0074\u0073");_dedge .OPI =_begcga .Get ("\u004f\u0050\u0049"); _dedge .OC =_begcga .Get ("\u004f\u0043");_dedge .Name =_begcga .Get ("\u004e\u0061\u006d\u0065");_dedge .Stream =stream .Stream ;return _dedge ,nil ;};func (_ddagc *PdfWriter )setDocInfo (_dbdad _dfg .PdfObject ){if _ddagc .hasObject (_ddagc ._acace ){delete (_ddagc ._bgbee ,_ddagc ._acace ); delete (_ddagc ._faeee ,_ddagc ._acace );for _aggbg ,_cdbff :=range _ddagc ._abcef {if _cdbff ==_ddagc ._acace {copy (_ddagc ._abcef [_aggbg :],_ddagc ._abcef [_aggbg +1:]);_ddagc ._abcef [len (_ddagc ._abcef )-1]=nil ;_ddagc ._abcef =_ddagc ._abcef [:len (_ddagc ._abcef )-1]; break ;};};};_bebfda :=_dfg .PdfIndirectObject {};_bebfda .PdfObject =_dbdad ;_ddagc ._acace =&_bebfda ;_ddagc .addObject (&_bebfda );}; // Artifact represents a PDF artifact, which is a non-visual element // that provides additional information about the document structure or content. type Artifact struct{ // Type of the artifact. Type ArtifactType ; // BBox of the artifact. // // Optional; required for background artifacts. // // An array of four numbers in default user space units giving the coordinates // of the left, bottom, right, and top edges, respectively, of the artifact’s // bounding box (the rectangle that completely encloses its visible extent). BBox *PdfRectangle ; // Attached positions for the artifact. // // Optional; pagination and full-page background artifacts only) // // An array of name objects containing one to four of the names Top, Bottom, Left, and // Right, specifying the edges of the page, if any, to which the artifact is // logically attached. Page edges shall be defined by the page’s crop box. // The ordering of names within the array is immaterial. Including both Left and Right or both Top and Bottom // indicates a full-width or full-height artifact, respectively. // // Use of this entry for background artifacts shall be limited to full-page artifacts. // Background artifacts that are not full-page take their dimensions from their parent structural element. AttachPositions []ArtifactAttachPosition ; // Subtype of the artifact, if applicable. // // The subtype of the artifact. This entry should appear // only when the Type entry has a value of Pagination. // // Several standard values are defined in `model.ArtifactSubtype` type. // // Additional values may be specified for this entry. Subtype string ;}; // PageFromIndirectObject returns the PdfPage and page number for a given indirect object. func (_gfcdf *PdfReader )PageFromIndirectObject (ind *_dfg .PdfIndirectObject )(*PdfPage ,int ,error ){if len (_gfcdf .PageList )!=len (_gfcdf ._ggbf ){return nil ,0,_bd .New ("\u0070\u0061\u0067\u0065\u0020\u006c\u0069\u0073\u0074\u0020\u0069\u006ev\u0061\u006c\u0069\u0064"); };for _eceeb ,_bcbbc :=range _gfcdf ._ggbf {if _bcbbc ==ind {return _gfcdf .PageList [_eceeb ],_eceeb +1,nil ;};};return nil ,0,_bd .New ("\u0070\u0061\u0067\u0065\u0020\u006e\u006f\u0074\u0020f\u006f\u0075\u006e\u0064");};func (_gcgf *PdfColorspaceCalRGB )String ()string {return "\u0043\u0061\u006c\u0052\u0047\u0042"}; // FieldImageProvider provides fields images for specified fields. type FieldImageProvider interface{FieldImageValues ()(map[string ]*Image ,error );}; // PdfAnnotation represents an annotation in PDF (section 12.5 p. 389). type PdfAnnotation struct{_dga PdfModel ;Rect _dfg .PdfObject ;Contents _dfg .PdfObject ;P _dfg .PdfObject ;NM _dfg .PdfObject ;M _dfg .PdfObject ;F _dfg .PdfObject ;AP _dfg .PdfObject ;AS _dfg .PdfObject ;Border _dfg .PdfObject ;C _dfg .PdfObject ;StructParent _dfg .PdfObject ; OC _dfg .PdfObject ;_afae *_dfg .PdfIndirectObject ;}; // GetContainingPdfObject implements interface PdfModel. func (_dgd *PdfAnnotation )GetContainingPdfObject ()_dfg .PdfObject {return _dgd ._afae }; // CopyFrom copies all the fields from another PdfAnnotation func (_cee *PdfAnnotation )CopyFrom (another *PdfAnnotation ){if another ==nil {return ;};_cee .Rect =another .Rect ;_cee .Contents =another .Contents ;_cee .P =another .P ;_cee .NM =another .NM ;_cee .M =another .M ;_cee .F =another .F ;_cee .AP =another .AP ; _cee .AS =another .AS ;_cee .Border =another .Border ;_cee .C =another .C ;_cee .StructParent =another .StructParent ;_cee .OC =another .OC ;}; // ToPdfObject implements interface PdfModel. func (_gae *PdfActionURI )ToPdfObject ()_dfg .PdfObject {_gae .PdfAction .ToPdfObject ();_cdfc :=_gae ._fe ;_eegd :=_cdfc .PdfObject .(*_dfg .PdfObjectDictionary );_eegd .SetIfNotNil ("\u0053",_dfg .MakeName (string (ActionTypeURI )));_eegd .SetIfNotNil ("\u0055\u0052\u0049",_gae .URI ); _eegd .SetIfNotNil ("\u0049\u0073\u004da\u0070",_gae .IsMap );return _cdfc ;}; // PdfActionGoToR represents a GoToR action. type PdfActionGoToR struct{*PdfAction ;F *PdfFilespec ;D _dfg .PdfObject ;NewWindow _dfg .PdfObject ;}; // SetDocInfo sets the document /Info metadata. // This will overwrite any globally declared document info. func (_afba *PdfAppender )SetDocInfo (info *PdfInfo ){_afba ._ccf =info }; // NewPdfAnnotationSquare returns a new square annotation. func NewPdfAnnotationSquare ()*PdfAnnotationSquare {_bfd :=NewPdfAnnotation ();_fdb :=&PdfAnnotationSquare {};_fdb .PdfAnnotation =_bfd ;_fdb .PdfAnnotationMarkup =&PdfAnnotationMarkup {};_bfd .SetContext (_fdb );return _fdb ;}; // NewPdfPage returns a new PDF page. func NewPdfPage ()*PdfPage {_cdbcb :=PdfPage {};_cdbcb ._daae =_dfg .MakeDict ();_cdbcb .Resources =NewPdfPageResources ();_eccgd :=_dfg .PdfIndirectObject {};_eccgd .PdfObject =_cdbcb ._daae ;_cdbcb ._bdeee =&_eccgd ;_cdbcb ._fagbf =*_cdbcb ._daae ;return &_cdbcb ; }; // Encoder returns the font's text encoder. func (_acec pdfCIDFontType2 )Encoder ()_ff .TextEncoder {return _acec ._fbfb }; // NewPdfActionMovie returns a new "movie" action. func NewPdfActionMovie ()*PdfActionMovie {_fca :=NewPdfAction ();_gfg :=&PdfActionMovie {};_gfg .PdfAction =_fca ;_fca .SetContext (_gfg );return _gfg ;}; // ImageHandler interface implements common image loading and processing tasks. // Implementing as an interface allows for the possibility to use non-standard libraries for faster // loading and processing of images. type ImageHandler interface{ // Read any image type and load into a new Image object. Read (_gece _edg .Reader )(*Image ,error ); // NewImageFromGoImage loads a NRGBA32 unidoc Image from a standard Go image structure. NewImageFromGoImage (_dbce _gf .Image )(*Image ,error ); // NewGrayImageFromGoImage loads a grayscale unidoc Image from a standard Go image structure. NewGrayImageFromGoImage (_cgebe _gf .Image )(*Image ,error ); // Compress an image. Compress (_bfaed *Image ,_dcdcc int64 )(*Image ,error );}; // ColorToRGB converts a CalGray color to an RGB color. func (_bgfa *PdfColorspaceCalGray )ColorToRGB (color PdfColor )(PdfColor ,error ){_ebge ,_ddgf :=color .(*PdfColorCalGray );if !_ddgf {_egb .Log .Debug ("\u0049n\u0070\u0075\u0074\u0020\u0063\u006f\u006c\u006f\u0072\u0020\u006eo\u0074\u0020\u0063\u0061\u006c\u0020\u0067\u0072\u0061\u0079"); return nil ,_bd .New ("\u0074\u0079p\u0065\u0020\u0063h\u0065\u0063\u006b\u0020\u0065\u0072\u0072\u006f\u0072");};ANorm :=_ebge .Val ();X :=_bgfa .WhitePoint [0]*_df .Pow (ANorm ,_bgfa .Gamma );Y :=_bgfa .WhitePoint [1]*_df .Pow (ANorm ,_bgfa .Gamma ); Z :=_bgfa .WhitePoint [2]*_df .Pow (ANorm ,_bgfa .Gamma );_fdad :=3.240479*X +-1.537150*Y +-0.498535*Z ;_adbg :=-0.969256*X +1.875992*Y +0.041556*Z ;_cbgd :=0.055648*X +-0.204043*Y +1.057311*Z ;_fdad =_df .Min (_df .Max (_fdad ,0),1.0);_adbg =_df .Min (_df .Max (_adbg ,0),1.0); _cbgd =_df .Min (_df .Max (_cbgd ,0),1.0);return NewPdfColorDeviceRGB (_fdad ,_adbg ,_cbgd ),nil ;};func _ceeeg ()string {_dfbaa .Lock ();defer _dfbaa .Unlock ();return _gabfe }; // Field returns the parent form field of the widget annotation, if one exists. // NOTE: the method returns nil if the parent form field has not been parsed. func (_dad *PdfAnnotationWidget )Field ()*PdfField {return _dad ._bcad };func (_ffdcf *PdfWriter )setWriter (_bdaddc _edg .Writer ){_ffdcf ._cffge =_ffdcf ._fcacd ;_ffdcf ._bfdbg =_c .NewWriter (_bdaddc );}; // PdfAnnotationScreen represents Screen annotations. // (Section 12.5.6.18). type PdfAnnotationScreen struct{*PdfAnnotation ;T _dfg .PdfObject ;MK _dfg .PdfObject ;A _dfg .PdfObject ;AA _dfg .PdfObject ;}; // ToPdfObject returns the PDF representation of the shading dictionary. func (_bdgfe *PdfShadingType6 )ToPdfObject ()_dfg .PdfObject {_bdgfe .PdfShading .ToPdfObject ();_dgdf ,_ddcabb :=_bdgfe .getShadingDict ();if _ddcabb !=nil {_egb .Log .Error ("\u0055\u006ea\u0062\u006c\u0065\u0020\u0074\u006f\u0020\u0061\u0063\u0063\u0065\u0073\u0073\u0020\u0073\u0068\u0061\u0064\u0069\u006e\u0067\u0020di\u0063\u0074"); return nil ;};if _bdgfe .BitsPerCoordinate !=nil {_dgdf .Set ("\u0042\u0069\u0074\u0073\u0050\u0065\u0072\u0043\u006f\u006f\u0072\u0064i\u006e\u0061\u0074\u0065",_bdgfe .BitsPerCoordinate );};if _bdgfe .BitsPerComponent !=nil {_dgdf .Set ("\u0042\u0069t\u0073\u0050\u0065r\u0043\u006f\u006d\u0070\u006f\u006e\u0065\u006e\u0074",_bdgfe .BitsPerComponent ); };if _bdgfe .BitsPerFlag !=nil {_dgdf .Set ("B\u0069\u0074\u0073\u0050\u0065\u0072\u0046\u006c\u0061\u0067",_bdgfe .BitsPerFlag );};if _bdgfe .Decode !=nil {_dgdf .Set ("\u0044\u0065\u0063\u006f\u0064\u0065",_bdgfe .Decode );};if _bdgfe .Function !=nil {if len (_bdgfe .Function )==1{_dgdf .Set ("\u0046\u0075\u006e\u0063\u0074\u0069\u006f\u006e",_bdgfe .Function [0].ToPdfObject ()); }else {_ebbb :=_dfg .MakeArray ();for _ ,_gbfgd :=range _bdgfe .Function {_ebbb .Append (_gbfgd .ToPdfObject ());};_dgdf .Set ("\u0046\u0075\u006e\u0063\u0074\u0069\u006f\u006e",_ebbb );};};return _bdgfe ._gdfdg ;};func (_bdbee *PdfWriter )getPdfVersion ()string {return _d .Sprintf ("\u0025\u0064\u002e%\u0064",_bdbee ._cfbcb .Major ,_bdbee ._cfbcb .Minor ); }; // GetRefObject returns the reference object of the KValue. func (_eeecf *KValue )GetRefObject ()_dfg .PdfObject {return _eeecf ._gbedc };func _abbg (_degb _dfg .PdfObject )(*PdfColorspaceCalGray ,error ){_begdb :=NewPdfColorspaceCalGray ();if _bgac ,_dacae :=_degb .(*_dfg .PdfIndirectObject );_dacae {_begdb ._efge =_bgac ; };_degb =_dfg .TraceToDirectObject (_degb );_edda ,_bagb :=_degb .(*_dfg .PdfObjectArray );if !_bagb {return nil ,_d .Errorf ("\u0074\u0079\u0070\u0065\u0020\u0065\u0072\u0072\u006f\u0072");};if _edda .Len ()!=2{return nil ,_d .Errorf ("\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0043\u0061\u006cG\u0072\u0061\u0079\u0020\u0063\u006f\u006c\u006f\u0072\u0073p\u0061\u0063\u0065"); };_degb =_dfg .TraceToDirectObject (_edda .Get (0));_dacad ,_bagb :=_degb .(*_dfg .PdfObjectName );if !_bagb {return nil ,_d .Errorf ("\u0043\u0061\u006c\u0047\u0072\u0061\u0079\u0020\u006e\u0061m\u0065\u0020\u006e\u006f\u0074\u0020\u0061 \u004e\u0061\u006d\u0065\u0020\u006f\u0062\u006a\u0065\u0063\u0074"); };if *_dacad !="\u0043a\u006c\u0047\u0072\u0061\u0079"{return nil ,_d .Errorf ("\u006eo\u0074\u0020\u0061\u0020\u0043\u0061\u006c\u0047\u0072\u0061\u0079 \u0063\u006f\u006c\u006f\u0072\u0073\u0070\u0061\u0063\u0065");};_degb =_dfg .TraceToDirectObject (_edda .Get (1)); _gffe ,_bagb :=_degb .(*_dfg .PdfObjectDictionary );if !_bagb {return nil ,_d .Errorf ("\u0043\u0061lG\u0072\u0061\u0079 \u0064\u0069\u0063\u0074 no\u0074 a\u0020\u0044\u0069\u0063\u0074\u0069\u006fna\u0072\u0079\u0020\u006f\u0062\u006a\u0065c\u0074"); };_degb =_gffe .Get ("\u0057\u0068\u0069\u0074\u0065\u0050\u006f\u0069\u006e\u0074");_degb =_dfg .TraceToDirectObject (_degb );_abac ,_bagb :=_degb .(*_dfg .PdfObjectArray );if !_bagb {return nil ,_d .Errorf ("C\u0061\u006c\u0047\u0072\u0061\u0079:\u0020\u0049\u006e\u0076\u0061\u006c\u0069\u0064\u0020W\u0068\u0069\u0074e\u0050o\u0069\u006e\u0074"); };if _abac .Len ()!=3{return nil ,_d .Errorf ("\u0043\u0061\u006c\u0047\u0072\u0061y\u003a\u0020\u0049\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0057\u0068\u0069t\u0065\u0050\u006f\u0069\u006e\u0074\u0020a\u0072\u0072\u0061\u0079");};_ebgc ,_fcgb :=_abac .GetAsFloat64Slice (); if _fcgb !=nil {return nil ,_fcgb ;};_begdb .WhitePoint =_ebgc ;_degb =_gffe .Get ("\u0042\u006c\u0061\u0063\u006b\u0050\u006f\u0069\u006e\u0074");if _degb !=nil {_degb =_dfg .TraceToDirectObject (_degb );_bad ,_fccee :=_degb .(*_dfg .PdfObjectArray ); if !_fccee {return nil ,_d .Errorf ("C\u0061\u006c\u0047\u0072\u0061\u0079:\u0020\u0049\u006e\u0076\u0061\u006c\u0069\u0064\u0020B\u006c\u0061\u0063k\u0050o\u0069\u006e\u0074");};if _bad .Len ()!=3{return nil ,_d .Errorf ("\u0043\u0061\u006c\u0047\u0072\u0061y\u003a\u0020\u0049\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0042\u006c\u0061c\u006b\u0050\u006f\u0069\u006e\u0074\u0020a\u0072\u0072\u0061\u0079"); };_cbbe ,_aggd :=_bad .GetAsFloat64Slice ();if _aggd !=nil {return nil ,_aggd ;};_begdb .BlackPoint =_cbbe ;};_degb =_gffe .Get ("\u0047\u0061\u006dm\u0061");if _degb !=nil {_degb =_dfg .TraceToDirectObject (_degb );_bbeg ,_afgg :=_dfg .GetNumberAsFloat (_degb ); if _afgg !=nil {return nil ,_d .Errorf ("C\u0061\u006c\u0047\u0072\u0061\u0079:\u0020\u0067\u0061\u006d\u006d\u0061\u0020\u006e\u006ft\u0020\u0061\u0020n\u0075m\u0062\u0065\u0072");};_begdb .Gamma =_bbeg ;};return _begdb ,nil ;}; // NewPdfAcroForm returns a new PdfAcroForm with an initialized container (indirect object). func NewPdfAcroForm ()*PdfAcroForm {return &PdfAcroForm {Fields :&[]*PdfField {},_gddd :_dfg .MakeIndirectObject (_dfg .MakeDict ())};};func _fbedee (_ebacg *XObjectImage )error {if _ebacg .SMask ==nil {return nil ;};_bgeac ,_dgdaa :=_ebacg .SMask .(*_dfg .PdfObjectStream ); if !_dgdaa {_egb .Log .Debug ("\u0053\u004da\u0073\u006b\u0020\u0069\u0073\u0020\u006e\u006f\u0074\u0020\u002a\u0050\u0064\u0066\u004f\u0062\u006a\u0065\u0063\u0074\u0053\u0074re\u0061\u006d");return _dfg .ErrTypeError ;};_bdgfge :=_bgeac .PdfObjectDictionary ; _bgfd :=_bdgfge .Get ("\u004d\u0061\u0074t\u0065");if _bgfd ==nil {return nil ;};_gceed ,_dfebfe :=_gcacc (_bgfd .(*_dfg .PdfObjectArray ));if _dfebfe !=nil {return _dfebfe ;};_dggaf :=_dfg .MakeArrayFromFloats ([]float64 {_gceed });_bdgfge .SetIfNotNil ("\u004d\u0061\u0074t\u0065",_dggaf ); return nil ;}; // GetPerms returns the Permissions dictionary func (_eaffg *PdfReader )GetPerms ()*Permissions {return _eaffg ._efgca }; // Has checks if flag fl is set in flag and returns true if so, false otherwise. func (_acfed FieldFlag )Has (fl FieldFlag )bool {return (_acfed .Mask ()&fl .Mask ())> 0}; // IsHideWindowUI returns the value of the hideWindowUI flag. func (_ccefa *ViewerPreferences )IsHideWindowUI ()bool {if _ccefa ._dgbgf ==nil {return false ;};return *_ccefa ._dgbgf ;};func (_dadgb *PdfFont )baseFields ()*fontCommon {if _dadgb ._fab ==nil {_egb .Log .Debug ("\u0045\u0052\u0052OR\u003a\u0020\u0062\u0061\u0073\u0065\u0046\u0069\u0065l\u0064s\u002e \u0063o\u006e\u0074\u0065\u0078\u0074\u0020\u0069\u0073\u0020\u006e\u0069\u006c\u002e"); return nil ;};return _dadgb ._fab .baseFields ();}; // NewLTV returns a new LTV client. func NewLTV (appender *PdfAppender )(*LTV ,error ){_dbed :=appender .Reader .DSS ;if _dbed ==nil {_dbed =NewDSS ();};if _bdfbf :=_dbed .GenerateHashMaps ();_bdfbf !=nil {return nil ,_bdfbf ;};return <V {CertClient :_dfd .NewCertClient (),OCSPClient :_dfd .NewOCSPClient (),CRLClient :_dfd .NewCRLClient (),SkipExisting :true ,_adcg :appender ,_gaggb :_dbed },nil ; }; // IsEncrypted returns true if the PDF file is encrypted. func (_agegf *PdfReader )IsEncrypted ()(bool ,error ){return _agegf ._agbcd .IsEncrypted ()}; // PageCallback callback function used in page loading // that could be used to modify the page content. // // Deprecated: will be removed in v4. Use PageProcessCallback instead. type PageCallback func (_ddafd int ,_cdfd *PdfPage );func (_ecbc *LTV )getCRLs (_gcbced []*_de .Certificate )([][]byte ,error ){_bfbg :=make ([][]byte ,0,len (_gcbced ));for _ ,_decec :=range _gcbced {for _ ,_edfda :=range _decec .CRLDistributionPoints {if _ecbc .CertClient .IsCA (_decec ){continue ; };_cacbd ,_cacdg :=_ecbc .CRLClient .MakeRequest (_edfda ,_decec );if _cacdg !=nil {_egb .Log .Debug ("W\u0041\u0052\u004e\u003a\u0020\u0043R\u004c\u0020\u0072\u0065\u0071\u0075\u0065\u0073\u0074 \u0065\u0072\u0072o\u0072:\u0020\u0025\u0076",_cacdg );continue ; };_bfbg =append (_bfbg ,_cacbd );};};return _bfbg ,nil ;}; // NewPdfFieldSignature returns an initialized signature field. func NewPdfFieldSignature (signature *PdfSignature )*PdfFieldSignature {_dbacg :=&PdfFieldSignature {};_dbacg .PdfField =NewPdfField ();_dbacg .SetContext (_dbacg );_dbacg .PdfAnnotationWidget =NewPdfAnnotationWidget ();_dbacg .PdfAnnotationWidget .SetContext (_dbacg ); _dbacg .PdfAnnotationWidget ._afae =_dbacg ._caaa ;_dbacg .T =_dfg .MakeString ("");_dbacg .F =_dfg .MakeInteger (132);_dbacg .V =signature ;return _dbacg ;}; // AddKChild adds a child K dictionary object. func (_aebbf *KDict )AddKChild (kChild *KDict ){_aebbf ._dcgedc =append (_aebbf ._dcgedc ,&KValue {_badbf :kChild });}; // Normalize swaps (Llx,Urx) if Urx < Llx, and (Lly,Ury) if Ury < Lly. func (_fefa *PdfRectangle )Normalize (){if _fefa .Llx > _fefa .Urx {_fefa .Llx ,_fefa .Urx =_fefa .Urx ,_fefa .Llx ;};if _fefa .Lly > _fefa .Ury {_fefa .Lly ,_fefa .Ury =_fefa .Ury ,_fefa .Lly ;};};func _gagdd (_fgcfdf *_dfg .PdfObjectDictionary )(*PdfShadingType4 ,error ){_fdcge :=PdfShadingType4 {}; _dcded :=_fgcfdf .Get ("\u0042\u0069\u0074\u0073\u0050\u0065\u0072\u0043\u006f\u006f\u0072\u0064i\u006e\u0061\u0074\u0065");if _dcded ==nil {_egb .Log .Debug ("\u0052e\u0071\u0075i\u0072\u0065\u0064 \u0061\u0074\u0074\u0072\u0069\u0062\u0075t\u0065\u0020\u006d\u0069\u0073\u0073i\u006e\u0067\u003a\u0020\u0042\u0069\u0074\u0073\u0050\u0065\u0072C\u006f\u006f\u0072\u0064\u0069\u006e\u0061\u0074\u0065"); return nil ,ErrRequiredAttributeMissing ;};_feebgc ,_bgcag :=_dcded .(*_dfg .PdfObjectInteger );if !_bgcag {_egb .Log .Debug ("\u0042\u0069\u0074\u0073\u0050e\u0072\u0043\u006f\u006f\u0072\u0064\u0069\u006e\u0061\u0074\u0065\u0020\u006eo\u0074\u0020\u0061\u006e\u0020\u0069\u006e\u0074\u0065\u0067\u0065\u0072\u0020\u0028\u0067\u006f\u0074\u0020\u0025\u0054\u0029",_dcded ); return nil ,_dfg .ErrTypeError ;};_fdcge .BitsPerCoordinate =_feebgc ;_dcded =_fgcfdf .Get ("\u0042\u0069t\u0073\u0050\u0065r\u0043\u006f\u006d\u0070\u006f\u006e\u0065\u006e\u0074");if _dcded ==nil {_egb .Log .Debug ("\u0052e\u0071\u0075i\u0072\u0065\u0064\u0020a\u0074\u0074\u0072i\u0062\u0075\u0074\u0065\u0020\u006d\u0069\u0073\u0073in\u0067\u003a\u0020B\u0069\u0074s\u0050\u0065\u0072\u0043\u006f\u006dp\u006f\u006ee\u006e\u0074"); return nil ,ErrRequiredAttributeMissing ;};_feebgc ,_bgcag =_dcded .(*_dfg .PdfObjectInteger );if !_bgcag {_egb .Log .Debug ("B\u0069\u0074\u0073\u0050\u0065\u0072\u0043\u006f\u006d\u0070\u006f\u006e\u0065\u006e\u0074\u0020\u006e\u006ft\u0020\u0061\u006e\u0020\u0069\u006e\u0074\u0065\u0067\u0065r \u0028\u0067\u006ft\u0020%\u0054\u0029",_dcded ); return nil ,_dfg .ErrTypeError ;};_fdcge .BitsPerComponent =_feebgc ;_dcded =_fgcfdf .Get ("B\u0069\u0074\u0073\u0050\u0065\u0072\u0046\u006c\u0061\u0067");if _dcded ==nil {_egb .Log .Debug ("\u0052\u0065\u0071\u0075\u0069\u0072\u0065\u0064\u0020\u0061\u0074\u0074\u0072i\u0062\u0075\u0074\u0065\u0020\u006di\u0073\u0073\u0069\u006e\u0067\u003a\u0020\u0042\u0069\u0074\u0073\u0050\u0065r\u0046\u006c\u0061\u0067"); return nil ,ErrRequiredAttributeMissing ;};_feebgc ,_bgcag =_dcded .(*_dfg .PdfObjectInteger );if !_bgcag {_egb .Log .Debug ("B\u0069\u0074\u0073\u0050\u0065\u0072F\u006c\u0061\u0067\u0020\u006e\u006ft\u0020\u0061\u006e\u0020\u0069\u006e\u0074e\u0067\u0065\u0072\u0020\u0028\u0067\u006f\u0074\u0020\u0025T\u0029",_dcded ); return nil ,_dfg .ErrTypeError ;};_fdcge .BitsPerComponent =_feebgc ;_dcded =_fgcfdf .Get ("\u0044\u0065\u0063\u006f\u0064\u0065");if _dcded ==nil {_egb .Log .Debug ("\u0052\u0065\u0071ui\u0072\u0065\u0064\u0020\u0061\u0074\u0074\u0072\u0069b\u0075t\u0065 \u006di\u0073\u0073\u0069\u006e\u0067\u003a\u0020\u0044\u0065\u0063\u006f\u0064\u0065"); return nil ,ErrRequiredAttributeMissing ;};_egda ,_bgcag :=_dcded .(*_dfg .PdfObjectArray );if !_bgcag {_egb .Log .Debug ("\u0044\u0065\u0063\u006fd\u0065\u0020\u006e\u006f\u0074\u0020\u0061\u006e\u0020\u0061r\u0072a\u0079\u0020\u0028\u0067\u006f\u0074\u0020%\u0054\u0029",_dcded ); return nil ,_dfg .ErrTypeError ;};_fdcge .Decode =_egda ;_dcded =_fgcfdf .Get ("\u0046\u0075\u006e\u0063\u0074\u0069\u006f\u006e");if _dcded ==nil {_egb .Log .Debug ("\u0052\u0065q\u0075\u0069\u0072\u0065d\u0020\u0061t\u0074\u0072\u0069\u0062\u0075\u0074\u0065\u0020m\u0069\u0073\u0073\u0069\u006e\u0067\u003a\u0020\u0020\u0046\u0075\u006ec\u0074\u0069\u006f\u006e"); return nil ,ErrRequiredAttributeMissing ;};_fdcge .Function =[]PdfFunction {};if _fead ,_gaff :=_dcded .(*_dfg .PdfObjectArray );_gaff {for _ ,_eacff :=range _fead .Elements (){_adfebg ,_fada :=_gbada (_eacff );if _fada !=nil {_egb .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0070\u0061\u0072\u0073\u0069n\u0067\u0020\u0066\u0075\u006e\u0063\u0074\u0069\u006f\u006e:\u0020\u0025\u0076",_fada ); return nil ,_fada ;};_fdcge .Function =append (_fdcge .Function ,_adfebg );};}else {_ggbfg ,_accdg :=_gbada (_dcded );if _accdg !=nil {_egb .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0070\u0061\u0072\u0073\u0069n\u0067\u0020\u0066\u0075\u006e\u0063\u0074\u0069\u006f\u006e:\u0020\u0025\u0076",_accdg ); return nil ,_accdg ;};_fdcge .Function =append (_fdcge .Function ,_ggbfg );};return &_fdcge ,nil ;}; // ToPdfObject implements interface PdfModel. func (_decf *PdfFilespec )ToPdfObject ()_dfg .PdfObject {_cfcg :=_decf .getDict ();_cfcg .Clear ();_cfcg .Set ("\u0054\u0079\u0070\u0065",_dfg .MakeName ("\u0046\u0069\u006c\u0065\u0073\u0070\u0065\u0063"));_cfcg .SetIfNotNil ("\u0046\u0053",_decf .FS ); _cfcg .SetIfNotNil ("\u0046",_decf .F );_cfcg .SetIfNotNil ("\u0055\u0046",_decf .UF );_cfcg .SetIfNotNil ("\u0044\u004f\u0053",_decf .DOS );_cfcg .SetIfNotNil ("\u004d\u0061\u0063",_decf .Mac );_cfcg .SetIfNotNil ("\u0055\u006e\u0069\u0078",_decf .Unix ); _cfcg .SetIfNotNil ("\u0049\u0044",_decf .ID );_cfcg .SetIfNotNil ("\u0056",_decf .V );_cfcg .SetIfNotNil ("\u0045\u0046",_decf .EF );_cfcg .SetIfNotNil ("\u0052\u0046",_decf .RF );_cfcg .SetIfNotNil ("\u0044\u0065\u0073\u0063",_decf .Desc );_cfcg .SetIfNotNil ("\u0043\u0049",_decf .CI ); _cfcg .SetIfNotNil ("\u0041\u0046\u0052\u0065\u006c\u0061\u0074\u0069\u006fn\u0073\u0068\u0069\u0070",_decf .AFRelationship );return _decf ._bcadf ;}; // PdfColorspaceDeviceRGB represents an RGB colorspace. type PdfColorspaceDeviceRGB struct{}; // PdfColorspaceCalGray represents CalGray color space. type PdfColorspaceCalGray struct{WhitePoint []float64 ;BlackPoint []float64 ;Gamma float64 ;_efge *_dfg .PdfIndirectObject ;}; // OutlineDest represents the destination of an outline item. // It holds the page and the position on the page an outline item points to. type OutlineDest struct{PageObj *_dfg .PdfIndirectObject `json:"-"`;Page int64 `json:"page"`;Mode string `json:"mode"`;X float64 `json:"x"`;Y float64 `json:"y"`;Zoom float64 `json:"zoom"`;}; // NewKDictionary creates a new K dictionary object. func NewKDictionary ()*KDict {return &KDict {_dcgedc :make ([]*KValue ,0),_gabf :-1}};func (_fdbdg *LTV )enable (_ggagdf ,_fbegg []*_de .Certificate ,_fdbea string )error {_eddca ,_cbed ,_bfcdb :=_fdbdg .buildCertChain (_ggagdf ,_fbegg );if _bfcdb !=nil {return _bfcdb ; };_eefgf ,_bfcdb :=_fdbdg .getCerts (_eddca );if _bfcdb !=nil {return _bfcdb ;};var _eegdf ,_fgfaf [][]byte ;if _fdbdg .OCSPClient !=nil {_eegdf ,_bfcdb =_fdbdg .getOCSPs (_eddca ,_cbed );if _bfcdb !=nil {return _bfcdb ;};};if _fdbdg .CRLClient !=nil {_fgfaf ,_bfcdb =_fdbdg .getCRLs (_eddca ); if _bfcdb !=nil {return _bfcdb ;};};_aabg :=_fdbdg ._gaggb ;_gbcaa ,_bfcdb :=_aabg .AddCerts (_eefgf );if _bfcdb !=nil {return _bfcdb ;};_fedab ,_bfcdb :=_aabg .AddOCSPs (_eegdf );if _bfcdb !=nil {return _bfcdb ;};_fbdeb ,_bfcdb :=_aabg .AddCRLs (_fgfaf ); if _bfcdb !=nil {return _bfcdb ;};if _fdbea !=""{_aabg .VRI [_fdbea ]=&VRI {Cert :_gbcaa ,OCSP :_fedab ,CRL :_fbdeb };};_fdbdg ._adcg .SetDSS (_aabg );return nil ;}; // NewCompositePdfFontFromTTFFile loads a composite font from a TTF font file. Composite fonts can // be used to represent unicode fonts which can have multi-byte character codes, representing a wide // range of values. They are often used for symbolic languages, including Chinese, Japanese and Korean. // It is represented by a Type0 Font with an underlying CIDFontType2 and an Identity-H encoding map. // TODO: May be extended in the future to support a larger variety of CMaps and vertical fonts. // NOTE: For simple fonts, use NewPdfFontFromTTFFile. func NewCompositePdfFontFromTTFFile (filePath string )(*PdfFont ,error ){_dbad ,_cfbba :=_ga .Open (filePath );if _cfbba !=nil {_egb .Log .Debug ("\u0045\u0052\u0052OR\u003a\u0020\u006f\u0070\u0065\u006e\u0069\u006e\u0067\u0020\u0066\u0069\u006c\u0065\u003a\u0020\u0025\u0076",_cfbba ); return nil ,_cfbba ;};defer _dbad .Close ();return NewCompositePdfFontFromTTF (_dbad );}; // GetXObjectByName gets XObject by name. func (_afccf *PdfPage )GetXObjectByName (name _dfg .PdfObjectName )(_dfg .PdfObject ,bool ){_ccdcd ,_fbfgd :=_afccf .Resources .XObject .(*_dfg .PdfObjectDictionary );if !_fbfgd {return nil ,false ;};if _fffcc :=_ccdcd .Get (name );_fffcc !=nil {return _fffcc ,true ; };return nil ,false ;}; // NewPdfPageResourcesColorspaces returns a new PdfPageResourcesColorspaces object. func NewPdfPageResourcesColorspaces ()*PdfPageResourcesColorspaces {_fdgg :=&PdfPageResourcesColorspaces {};_fdgg .Names =[]string {};_fdgg .Colorspaces =map[string ]PdfColorspace {};_fdgg ._acbeg =&_dfg .PdfIndirectObject {};return _fdgg ;}; // OutlineItem represents a PDF outline item dictionary (Table 153 - pp. 376 - 377). type OutlineItem struct{Title string `json:"title"`;Dest OutlineDest `json:"dest"`;Entries []*OutlineItem `json:"entries,omitempty"`;}; // GetKDict returns the KDict of the KValue. func (_cbcaa *KValue )GetKDict ()*KDict {return _cbcaa ._badbf }; // SetOpenAction sets the OpenAction in the PDF catalog. // The value shall be either an array defining a destination (12.3.2 "Destinations" PDF32000_2008), // or an action dictionary representing an action (12.6 "Actions" PDF32000_2008). func (_acffbc *PdfWriter )SetOpenAction (dest _dfg .PdfObject )error {if dest ==nil ||_dfg .IsNullObject (dest ){return nil ;};_acffbc ._acgcc .Set ("\u004f\u0070\u0065\u006e\u0041\u0063\u0074\u0069\u006f\u006e",dest );return _acffbc .addObjects (dest ); }; // EncryptionAlgorithm is used in EncryptOptions to change the default algorithm used to encrypt the document. type EncryptionAlgorithm int ;func (_adcdb *PdfReader )traverseObjectData (_ffdef _dfg .PdfObject )error {return _dfg .ResolveReferencesDeep (_ffdef ,_adcdb ._fcecf );}; // PdfWriter handles outputing PDF content. type PdfWriter struct{_cbfagb *_dfg .PdfIndirectObject ;_gdcdb *_dfg .PdfIndirectObject ;_cbcacc map[_dfg .PdfObject ]struct{};_cbccc []*_dfg .PdfIndirectObject ;_abcef []_dfg .PdfObject ;_bgbee map[_dfg .PdfObject ]struct{};_cffdc []*_dfg .PdfIndirectObject ; _fdged *PdfOutlineTreeNode ;_acgcc *_dfg .PdfObjectDictionary ;_bgeae []_dfg .PdfObject ;_acace *_dfg .PdfIndirectObject ;_bfdbg *_c .Writer ;_cffge int64 ;_afgfcg error ;_gbdfc *_dfg .PdfCrypt ;_ecgcc *_dfg .PdfObjectDictionary ;_bbbecb *_dfg .PdfIndirectObject ; _beccf *_dfg .PdfObjectArray ;_cfbcb _dfg .Version ;_ecbad *bool ;_fgebdb map[_dfg .PdfObject ][]*_dfg .PdfObjectDictionary ;_abcfe *PdfAcroForm ;_baeae *Names ;_gface Optimizer ;_fbafb StandardApplier ;_effg map[int ]crossReference ;_fcacd int64 ;ObjNumOffset int ; _cddgg bool ;_accfg _dfg .XrefTable ;_baeag int64 ;_fgedaa int64 ;_dacf map[_dfg .PdfObject ]int64 ;_faeee map[_dfg .PdfObject ]struct{};_afacc string ;_bdadb string ;_ebgdb []*PdfOutputIntent ;_faacaa bool ;_baeaee ,_dbddd string ;};func _cfbc (_ffccg *_dfg .PdfObjectDictionary )(*PdfShadingPattern ,error ){_gefbd :=&PdfShadingPattern {}; _ccdeg :=_ffccg .Get ("\u0053h\u0061\u0064\u0069\u006e\u0067");if _ccdeg ==nil {_egb .Log .Debug ("\u0053h\u0061d\u0069\u006e\u0067\u0020\u006d\u0069\u0073\u0073\u0069\u006e\u0067");return nil ,ErrRequiredAttributeMissing ;};_bbbecf ,_faffc :=_debbd (_ccdeg ); if _faffc !=nil {_egb .Log .Debug ("\u0045r\u0072\u006f\u0072\u0020l\u006f\u0061\u0064\u0069\u006eg\u0020s\u0068a\u0064\u0069\u006e\u0067\u003a\u0020\u0025v",_faffc );return nil ,_faffc ;};_gefbd .Shading =_bbbecf ;if _gdfga :=_ffccg .Get ("\u004d\u0061\u0074\u0072\u0069\u0078"); _gdfga !=nil {_caecgb ,_bfbgc :=_gdfga .(*_dfg .PdfObjectArray );if !_bfbgc {_egb .Log .Debug ("\u004d\u0061\u0074\u0072i\u0078\u0020\u006e\u006f\u0074\u0020\u0061\u006e\u0020\u0061r\u0072a\u0079\u0020\u0028\u0067\u006f\u0074\u0020%\u0054\u0029",_gdfga ); return nil ,_dfg .ErrTypeError ;};_gefbd .Matrix =_caecgb ;};if _dgaa :=_ffccg .Get ("\u0045x\u0074\u0047\u0053\u0074\u0061\u0074e");_dgaa !=nil {_gefbd .ExtGState =_dgaa ;};return _gefbd ,nil ;}; // GetNumComponents returns the number of color components (1 for grayscale). func (_bbda *PdfColorDeviceGray )GetNumComponents ()int {return 1}; // VariableText contains the common attributes of a variable text. // The VariableText is typically not used directly, but is can encapsulate by PdfField // See section 12.7.3.3 "Variable Text" and Table 222 (pp. 434-436 PDF32000_2008). type VariableText struct{DA *_dfg .PdfObjectString ;Q *_dfg .PdfObjectInteger ;DS *_dfg .PdfObjectString ;RV _dfg .PdfObject ;}; // GetAlphabet returns a map of the runes in `text` and their frequencies. func GetAlphabet (text string )map[rune ]int {_bfadd :=map[rune ]int {};for _ ,_fceb :=range text {_bfadd [_fceb ]++;};return _bfadd ;}; // Sign signs a specific page with a digital signature. // The signature field parameter must have a valid signature dictionary // specified by its V field. func (_bfccc *PdfAppender )Sign (pageNum int ,field *PdfFieldSignature )error {if field ==nil {return _bd .New ("\u0073\u0069g\u006e\u0061\u0074\u0075\u0072\u0065\u0020\u0066\u0069\u0065\u006c\u0064\u0020\u0063\u0061\u006e\u006e\u006f\u0074\u0020\u0062\u0065 n\u0069\u006c"); };_dfdf :=field .V ;if _dfdf ==nil {return _bd .New ("\u0073\u0069\u0067na\u0074\u0075\u0072\u0065\u0020\u0064\u0069\u0063\u0074i\u006fn\u0061r\u0079 \u0063\u0061\u006e\u006e\u006f\u0074\u0020\u0062\u0065\u0020\u006e\u0069\u006c");};_bcba :=pageNum -1; if _bcba < 0||_bcba > len (_bfccc ._egfc )-1{return _d .Errorf ("\u0070\u0061\u0067\u0065\u0020\u0025\u0064\u0020\u006e\u006f\u0074\u0020f\u006f\u0075\u006e\u0064",pageNum );};_gabef :=_bfccc .Reader .PageList [_bcba ];field .P =_gabef .ToPdfObject (); if field .T ==nil ||field .T .String ()==""{field .T =_dfg .MakeString (_d .Sprintf ("\u0053\u0069\u0067n\u0061\u0074\u0075\u0072\u0065\u0020\u0025\u0064",pageNum ));};_gabef .AddAnnotation (field .PdfAnnotation );if _bfccc ._ebfe ==_bfccc ._eege .AcroForm {_bfccc ._ebfe =_bfccc .Reader .AcroForm ; };_fgea :=_bfccc ._ebfe ;if _fgea ==nil {_fgea =NewPdfAcroForm ();};_fgea .SigFlags =_dfg .MakeInteger (3);if _fgea .NeedAppearances !=nil {_fgea .NeedAppearances =nil ;};_gffca :=append (_fgea .AllFields (),field .PdfField );_fgea .Fields =&_gffca ;_bfccc .ReplaceAcroForm (_fgea ); _bfccc .UpdatePage (_gabef );_bfccc ._egfc [_bcba ]=_gabef ;if _ ,_egfbg :=field .V .GetDocMDPPermission ();_egfbg {_bfccc ._bcdg =NewPermissions (field .V );};return nil ;};func (_gfegd *LTV )buildCertChain (_cdbfg ,_ddgeg []*_de .Certificate )([]*_de .Certificate ,map[string ]*_de .Certificate ,error ){_bgfae :=map[string ]*_de .Certificate {}; for _ ,_badd :=range _cdbfg {_bgfae [_badd .Subject .CommonName ]=_badd ;};_cdgdf :=_cdbfg ;for _ ,_ddag :=range _ddgeg {_gcggf :=_ddag .Subject .CommonName ;if _ ,_afbee :=_bgfae [_gcggf ];_afbee {continue ;};_bgfae [_gcggf ]=_ddag ;_cdgdf =append (_cdgdf ,_ddag ); };if len (_cdgdf )==0{return nil ,nil ,ErrSignNoCertificates ;};var _bfcccc error ;for _gaef :=_cdgdf [0];_gaef !=nil &&!_gfegd .CertClient .IsCA (_gaef );{_ccefc ,_gdaac :=_bgfae [_gaef .Issuer .CommonName ];if !_gdaac {if _ccefc ,_bfcccc =_gfegd .CertClient .GetIssuer (_gaef ); _bfcccc !=nil {_egb .Log .Debug ("W\u0041\u0052\u004e\u003a\u0020\u0043\u006f\u0075\u006cd\u0020\u006e\u006f\u0074\u0020\u0072\u0065tr\u0069\u0065\u0076\u0065 \u0063\u0065\u0072\u0074\u0069\u0066\u0069\u0063\u0061te\u0020\u0069s\u0073\u0075\u0065\u0072\u003a\u0020\u0025\u0076",_bfcccc ); break ;};_bgfae [_gaef .Issuer .CommonName ]=_ccefc ;_cdgdf =append (_cdgdf ,_ccefc );};_gaef =_ccefc ;};return _cdgdf ,_bgfae ,nil ;}; // GetNumComponents returns the number of color components (3 for RGB). func (_adga *PdfColorDeviceRGB )GetNumComponents ()int {return 3}; // GetStructParentsKey returns the StructParents key. // If not set, returns -1. func (_edec *PdfPage )GetStructParentsKey ()int {if _eafde ,_bffd :=_dfg .GetIntVal (_edec .StructParents );_bffd {return _eafde ;};return -1;};func (_dedd *pdfFontType3 )baseFields ()*fontCommon {return &_dedd .fontCommon };func _ggbfb (_acadb rune )string {for _ebeca ,_gfgab :=range _cf .Categories {if len (_ebeca )==2&&_cf .Is (_gfgab ,_acadb ){return _ebeca ; };};return "\u0043\u006e";}; // NewStandard14FontWithEncoding returns the standard 14 font named `basefont` as a *PdfFont and // a TextEncoder that encodes all the runes in `alphabet`, or an error if this is not possible. // An error can occur if `basefont` is not one the standard 14 font names. func NewStandard14FontWithEncoding (basefont StdFontName ,alphabet map[rune ]int )(*PdfFont ,_ff .SimpleEncoder ,error ){_cbbcc ,_dfbd :=_ggabd (basefont );if _dfbd !=nil {return nil ,nil ,_dfbd ;};_bdcfd ,_bdbce :=_cbbcc .Encoder ().(_ff .SimpleEncoder ); if !_bdbce {return nil ,nil ,_d .Errorf ("\u006f\u006e\u006c\u0079\u0020s\u0069\u006d\u0070\u006c\u0065\u0020\u0065\u006e\u0063\u006f\u0064\u0069\u006eg\u0020\u0069\u0073\u0020\u0073\u0075\u0070\u0070\u006f\u0072\u0074\u0065\u0064\u002c\u0020\u0067\u006f\u0074\u0020\u0025\u0054",_cbbcc .Encoder ()); };_ggabe :=make (map[rune ]_ff .GlyphName );for _bfaea :=range alphabet {if _ ,_aebaa :=_bdcfd .RuneToCharcode (_bfaea );!_aebaa {_ ,_faabc :=_cbbcc ._eecea .Read (_bfaea );if !_faabc {_egb .Log .Trace ("r\u0075\u006e\u0065\u0020\u0025\u0023x\u003d\u0025\u0071\u0020\u006e\u006f\u0074\u0020\u0069n\u0020\u0074\u0068e\u0020f\u006f\u006e\u0074",_bfaea ,_bfaea ); continue ;};_eagd ,_faabc :=_ff .RuneToGlyph (_bfaea );if !_faabc {_egb .Log .Debug ("\u006eo\u0020\u0067\u006c\u0079\u0070\u0068\u0020\u0066\u006f\u0072\u0020r\u0075\u006e\u0065\u0020\u0025\u0023\u0078\u003d\u0025\u0071",_bfaea ,_bfaea );continue ;};if len (_ggabe )>=255{return nil ,nil ,_bd .New ("\u0074\u006f\u006f\u0020\u006d\u0061\u006e\u0079\u0020\u0063\u0068\u0061\u0072a\u0063\u0074\u0065\u0072\u0073\u0020f\u006f\u0072\u0020\u0073\u0069\u006d\u0070\u006c\u0065\u0020\u0065\u006e\u0063o\u0064\u0069\u006e\u0067"); };_ggabe [_bfaea ]=_eagd ;};};var (_fabg []_ff .CharCode ;_egaff []_ff .CharCode ;);for _geae :=_ff .CharCode (1);_geae <=0xff;_geae ++{_cdbgg ,_ebaf :=_bdcfd .CharcodeToRune (_geae );if !_ebaf {_fabg =append (_fabg ,_geae );continue ;};if _ ,_ebaf =alphabet [_cdbgg ]; !_ebaf {_egaff =append (_egaff ,_geae );};};_gbga :=append (_fabg ,_egaff ...);if len (_gbga )< len (_ggabe ){return nil ,nil ,_d .Errorf ("n\u0065\u0065\u0064\u0020\u0074\u006f\u0020\u0065\u006ec\u006f\u0064\u0065\u0020\u0025\u0064\u0020ru\u006e\u0065\u0073\u002c \u0062\u0075\u0074\u0020\u0068\u0061\u0076\u0065\u0020on\u006c\u0079 \u0025\u0064\u0020\u0073\u006c\u006f\u0074\u0073",len (_ggabe ),len (_gbga )); };_bgfag :=make ([]rune ,0,len (_ggabe ));for _cfge :=range _ggabe {_bgfag =append (_bgfag ,_cfge );};_ed .Slice (_bgfag ,func (_cfbbc ,_gdee int )bool {return _bgfag [_cfbbc ]< _bgfag [_gdee ]});_fbcc :=make (map[_ff .CharCode ]_ff .GlyphName ,len (_bgfag )); for _ ,_cebdfa :=range _bgfag {_gbbac :=_gbga [0];_gbga =_gbga [1:];_fbcc [_gbbac ]=_ggabe [_cebdfa ];};_bdcfd =_ff .ApplyDifferences (_bdcfd ,_fbcc );_cbbcc .SetEncoder (_bdcfd );return &PdfFont {_fab :&_cbbcc },_bdcfd ,nil ;}; // GetPdfVersion gets the version of the PDF used within this document. func (_afaffb *PdfWriter )GetPdfVersion ()string {return _afaffb .getPdfVersion ()}; // NewPdfRectangle creates a PDF rectangle object based on an input array of 4 integers. // Defining the lower left (LL) and upper right (UR) corners with // floating point numbers. func NewPdfRectangle (arr _dfg .PdfObjectArray )(*PdfRectangle ,error ){_acgee :=PdfRectangle {};if arr .Len ()!=4{return nil ,_bd .New ("\u0069\u006e\u0076\u0061\u006c\u0069d\u0020\u0072\u0065\u0063\u0074\u0061\u006e\u0067\u006c\u0065\u0020\u0061\u0072r\u0061\u0079\u002c\u0020\u006c\u0065\u006e \u0021\u003d\u0020\u0034"); };var _fcee error ;_acgee .Llx ,_fcee =_dfg .GetNumberAsFloat (arr .Get (0));if _fcee !=nil {return nil ,_fcee ;};_acgee .Lly ,_fcee =_dfg .GetNumberAsFloat (arr .Get (1));if _fcee !=nil {return nil ,_fcee ;};_acgee .Urx ,_fcee =_dfg .GetNumberAsFloat (arr .Get (2)); if _fcee !=nil {return nil ,_fcee ;};_acgee .Ury ,_fcee =_dfg .GetNumberAsFloat (arr .Get (3));if _fcee !=nil {return nil ,_fcee ;};return &_acgee ,nil ;}; // PdfDate represents a date, which is a PDF string of the form: // (D:YYYYMMDDHHmmSSOHH'mm) type PdfDate struct{_accga int64 ;_fedabd int64 ;_agfc int64 ;_cgae int64 ;_abggb int64 ;_dbddf int64 ;_fedac byte ;_adgc int64 ;_aaggg int64 ;}; // NewStructureTagInfo creates a new StructureTagInfo with default values. func NewStructureTagInfo ()*StructureTagInfo {return &StructureTagInfo {Mcid :0,StructureType :StructureTypeUnknown };};var (StructureTypeSpan StructureType ="\u0053\u0070\u0061\u006e";StructureTypeQuote StructureType ="\u0051\u0075\u006ft\u0065";StructureTypeNote StructureType ="\u004e\u006f\u0074\u0065"; StructureTypeReference StructureType ="\u0052e\u0066\u0065\u0072\u0065\u006e\u0063e";StructureTypeBibliography StructureType ="\u0042\u0069\u0062\u0045\u006e\u0074\u0072\u0079";StructureTypeCode StructureType ="\u0043\u006f\u0064\u0065";StructureTypeLink StructureType ="\u004c\u0069\u006e\u006b"; StructureTypeAnnot StructureType ="\u0041\u006e\u006eo\u0074";StructureTypeRuby StructureType ="\u0052\u0075\u0062\u0079";StructureTypeWarichu StructureType ="\u0057a\u0072\u0069\u0063\u0068\u0075";StructureTypeRubyBase StructureType ="\u0052\u0042";StructureTypeRubyText StructureType ="\u0052\u0054"; StructureTypeRubyPunctuation StructureType ="\u0052\u0050";StructureTypeWarichuText StructureType ="\u0057\u0054";StructureTypeWarichuPunctuation StructureType ="\u0057\u0050";StructureTypeFigure StructureType ="\u0046\u0069\u0067\u0075\u0072\u0065";StructureTypeFormula StructureType ="\u0046o\u0072\u006d\u0075\u006c\u0061"; StructureTypeForm StructureType ="\u0046\u006f\u0072\u006d";); // ImageToRGB converts an image in CMYK32 colorspace to an RGB image. func (_bcff *PdfColorspaceDeviceCMYK )ImageToRGB (img Image )(Image ,error ){_egb .Log .Trace ("\u0043\u004d\u0059\u004b\u0033\u0032\u0020\u002d\u003e\u0020\u0052\u0047\u0042");_egb .Log .Trace ("I\u006d\u0061\u0067\u0065\u0020\u0042P\u0043\u003a\u0020\u0025\u0064\u002c \u0043\u006f\u006c\u006f\u0072\u0020\u0063o\u006d\u0070\u006f\u006e\u0065\u006e\u0074\u0073\u003a\u0020%\u0064",img .BitsPerComponent ,img .ColorComponents ); _egb .Log .Trace ("\u004c\u0065\u006e \u0064\u0061\u0074\u0061\u003a\u0020\u0025\u0064",len (img .Data ));_egb .Log .Trace ("H\u0065\u0069\u0067\u0068t:\u0020%\u0064\u002c\u0020\u0057\u0069d\u0074\u0068\u003a\u0020\u0025\u0064",img .Height ,img .Width ); _eafbb ,_bfcad :=_ef .NewImage (int (img .Width ),int (img .Height ),int (img .BitsPerComponent ),img .ColorComponents ,img .Data ,img ._baeef ,img ._begcc );if _bfcad !=nil {return Image {},_bfcad ;};_adce ,_bfcad :=_ef .NRGBAConverter .Convert (_eafbb ); if _bfcad !=nil {return Image {},_bfcad ;};return _deba (_adce .Base ()),nil ;};func (_aead *PdfReader )newPdfActionJavaScriptFromDict (_fccea *_dfg .PdfObjectDictionary )(*PdfActionJavaScript ,error ){return &PdfActionJavaScript {JS :_fccea .Get ("\u004a\u0053")},nil ; }; // NewXObjectImage returns a new XObjectImage. func NewXObjectImage ()*XObjectImage {_gaabe :=&XObjectImage {};_gadaf :=&_dfg .PdfObjectStream {};_gadaf .PdfObjectDictionary =_dfg .MakeDict ();_gaabe ._gfgedd =_gadaf ;return _gaabe ;}; // RunesToCharcodeBytes maps the provided runes to charcode bytes and it // returns the resulting slice of bytes, along with the number of runes which // could not be converted. If the number of misses is 0, all runes were // successfully converted. func (_degcf *PdfFont )RunesToCharcodeBytes (data []rune )([]byte ,int ){var _eagbf []_ff .TextEncoder ;var _afgec _ff .CMapEncoder ;if _gdaff :=_degcf .baseFields ()._bgdcbc ;_gdaff !=nil {_afgec =_ff .NewCMapEncoder ("",nil ,_gdaff );};_bbccc :=_degcf .Encoder (); if _bbccc !=nil {switch _gecfa :=_bbccc .(type ){case _ff .SimpleEncoder :_eegg :=_gecfa .BaseName ();if _ ,_gced :=_cbgbe [_eegg ];_gced {_eagbf =append (_eagbf ,_bbccc );};};};if len (_eagbf )==0{if _degcf .baseFields ()._bgdcbc !=nil {_eagbf =append (_eagbf ,_afgec ); };if _bbccc !=nil {_eagbf =append (_eagbf ,_bbccc );};};var _fbefc _cca .Buffer ;var _abgc int ;for _ ,_ceggd :=range data {var _fcceag bool ;for _ ,_fcae :=range _eagbf {if _gdgd :=_fcae .Encode (string (_ceggd ));len (_gdgd )> 0{_fbefc .Write (_gdgd ); _fcceag =true ;break ;};};if !_fcceag {_egb .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020f\u0061\u0069\u006ce\u0064\u0020\u0074\u006f \u006d\u0061\u0070\u0020\u0072\u0075\u006e\u0065\u0020\u0060\u0025\u002b\u0071\u0060\u0020\u0074\u006f\u0020\u0063\u0068\u0061\u0072\u0063\u006f\u0064\u0065",_ceggd ); _abgc ++;};};if _abgc !=0{_egb .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a \u0063\u006f\u0075\u006c\u0064\u0020\u006e\u006f\u0074\u0020\u0063\u006f\u006e\u0076\u0065\u0072\u0074\u0020\u0061\u006cl\u0020\u0072\u0075\u006e\u0065\u0073\u0020\u0074\u006f\u0020\u0063\u0068\u0061\u0072c\u006fd\u0065\u0073\u002e\u000a"+"\u0009\u006e\u0075\u006d\u0052\u0075\u006e\u0065\u0073\u003d\u0025d\u0020\u006e\u0075\u006d\u004d\u0069\u0073\u0073\u0065\u0073=\u0025\u0064\u000a"+"\t\u0066\u006f\u006e\u0074=%\u0073 \u0065\u006e\u0063\u006f\u0064e\u0072\u0073\u003d\u0025\u002b\u0076",len (data ),_abgc ,_degcf ,_eagbf ); };return _fbefc .Bytes (),_abgc ;};type pdfCIDFontType0 struct{fontCommon ;_eceb *_dfg .PdfIndirectObject ;_eebeb _ff .TextEncoder ; // Table 117 – Entries in a CIDFont dictionary (page 269) // (Required) Dictionary that defines the character collection of the CIDFont. // See Table 116. CIDSystemInfo *_dfg .PdfObjectDictionary ; // Glyph metrics fields (optional). DW _dfg .PdfObject ;W _dfg .PdfObject ;DW2 _dfg .PdfObject ;W2 _dfg .PdfObject ;_ceda map[_ff .CharCode ]float64 ;_ebfc float64 ;}; // SetSubtype sets the Subtype S for given PdfOutputIntent. func (_cdbdc *PdfOutputIntent )SetSubtype (subtype PdfOutputIntentType )error {if !subtype .IsValid (){return _bd .New ("\u0070\u0072o\u0076\u0069\u0064\u0065d\u0020\u0069n\u0076\u0061\u006c\u0069\u0064\u0020\u004f\u0075t\u0070\u0075\u0074\u0049\u006e\u0074\u0065\u006e\u0074\u0020\u0053\u0075b\u0054\u0079\u0070\u0065"); };_cdbdc .S =subtype ;return nil ;}; // ToPdfObject returns a PDF object representation of the outline item. func (_fcffb *OutlineItem )ToPdfObject ()_dfg .PdfObject {_egacb ,_ :=_fcffb .ToPdfOutlineItem ();return _egacb .ToPdfObject ();}; // GetRuneMetrics returns the char metrics for a rune. // TODO(peterwilliams97) There is nothing callers can do if no CharMetrics are found so we might as // well give them 0 width. There is no need for the bool return. func (_aeeb *PdfFont )GetRuneMetrics (r rune )(CharMetrics ,bool ){_aecac :=_aeeb .actualFont ();if _aecac ==nil {_egb .Log .Debug ("ER\u0052\u004fR\u003a\u0020\u0047\u0065\u0074\u0047\u006c\u0079\u0070h\u0043\u0068\u0061\u0072\u004d\u0065\u0074\u0072\u0069\u0063\u0073\u0020\u004e\u006f\u0074\u0020\u0069\u006d\u0070\u006c\u0065\u006d\u0065\u006e\u0074\u0065\u0064\u0020f\u006fr\u0020\u0066\u006f\u006e\u0074\u0020\u0074\u0079p\u0065=\u0025\u0023T",_aeeb ._fab ); return _bf .CharMetrics {},false ;};if _gdbdf ,_bdae :=_aecac .GetRuneMetrics (r );_bdae {return _gdbdf ,true ;};if _aeafe ,_cgbg :=_aeeb .GetFontDescriptor ();_cgbg ==nil &&_aeafe !=nil {return _bf .CharMetrics {Wx :_aeafe ._decbb },true ;};_egb .Log .Debug ("\u0047\u0065\u0074\u0047\u006c\u0079\u0070h\u0043\u0068\u0061r\u004d\u0065\u0074\u0072i\u0063\u0073\u003a\u0020\u004e\u006f\u0020\u006d\u0065\u0074\u0072\u0069\u0063\u0073\u0020\u0066\u006f\u0072\u0020\u0066\u006f\u006e\u0074\u003d\u0025\u0073",_aeeb ); return _bf .CharMetrics {},false ;}; // NewPdfColorCalRGB returns a new CalRBG color. func NewPdfColorCalRGB (a ,b ,c float64 )*PdfColorCalRGB {_bcgd :=PdfColorCalRGB {a ,b ,c };return &_bcgd ;};func _faeg (_bgdf ,_eebdc string )string {if _af .Contains (_bgdf ,"\u002b"){_aefg :=_af .Split (_bgdf ,"\u002b");if len (_aefg )==2{_bgdf =_aefg [1]; };};return _eebdc +"\u002b"+_bgdf ;};type crossReference struct{Type int ; // Type 1 Offset int64 ;Generation int64 ; // Type 2 ObjectNumber int ;Index int ;}; // PrintScaling returns the value of the printScaling. func (_fbdce *ViewerPreferences )PrintScaling ()PrintScaling {return _fbdce ._bcdgc }; // SetPdfProducer sets the Producer attribute of the output PDF. func SetPdfProducer (producer string ){_dfbaa .Lock ();defer _dfbaa .Unlock ();_fgfff =producer }; // DetermineColorspaceNameFromPdfObject determines PDF colorspace from a PdfObject. Returns the colorspace name and // an error on failure. If the colorspace was not found, will return an empty string. func DetermineColorspaceNameFromPdfObject (obj _dfg .PdfObject )(_dfg .PdfObjectName ,error ){var _gffg *_dfg .PdfObjectName ;var _eaag *_dfg .PdfObjectArray ;if _defe ,_gfbg :=obj .(*_dfg .PdfIndirectObject );_gfbg {if _adab ,_caaec :=_defe .PdfObject .(*_dfg .PdfObjectArray ); _caaec {_eaag =_adab ;}else if _bfee ,_efga :=_defe .PdfObject .(*_dfg .PdfObjectName );_efga {_gffg =_bfee ;};}else if _bdbae ,_gdcf :=obj .(*_dfg .PdfObjectArray );_gdcf {_eaag =_bdbae ;}else if _gfeg ,_baee :=obj .(*_dfg .PdfObjectName );_baee {_gffg =_gfeg ; };if _gffg !=nil {switch *_gffg {case "\u0044\u0065\u0076\u0069\u0063\u0065\u0047\u0072\u0061\u0079","\u0044e\u0076\u0069\u0063\u0065\u0052\u0047B","\u0044\u0065\u0076\u0069\u0063\u0065\u0043\u004d\u0059\u004b":return *_gffg ,nil ;case "\u0050a\u0074\u0074\u0065\u0072\u006e":return *_gffg ,nil ; };};if _eaag !=nil &&_eaag .Len ()> 0{if _ddbf ,_bfba :=_eaag .Get (0).(*_dfg .PdfObjectName );_bfba {switch *_ddbf {case "\u0044\u0065\u0076\u0069\u0063\u0065\u0047\u0072\u0061\u0079","\u0044e\u0076\u0069\u0063\u0065\u0052\u0047B","\u0044\u0065\u0076\u0069\u0063\u0065\u0043\u004d\u0059\u004b":if _eaag .Len ()==1{return *_ddbf ,nil ; };case "\u0043a\u006c\u0047\u0072\u0061\u0079","\u0043\u0061\u006c\u0052\u0047\u0042","\u004c\u0061\u0062":return *_ddbf ,nil ;case "\u0049\u0043\u0043\u0042\u0061\u0073\u0065\u0064","\u0050a\u0074\u0074\u0065\u0072\u006e","\u0049n\u0064\u0065\u0078\u0065\u0064":return *_ddbf ,nil ; case "\u0053\u0065\u0070\u0061\u0072\u0061\u0074\u0069\u006f\u006e","\u0044e\u0076\u0069\u0063\u0065\u004e":return *_ddbf ,nil ;};};};return "",nil ;};func (_beed *LTV )validateSig (_adeba *PdfSignature )error {if _adeba ==nil ||_adeba .Contents ==nil ||len (_adeba .Contents .Bytes ())==0{return _d .Errorf ("i\u006e\u0076\u0061\u006c\u0069\u0064 \u0073\u0069\u0067\u006e\u0061\u0074\u0075\u0072\u0065 \u0066\u0069\u0065l\u0064:\u0020\u0025\u0076",_adeba ); };return nil ;}; // String returns a string representation of what flags are set. func (_bccf FieldFlag )String ()string {_eafd :="";if _bccf ==FieldFlagClear {_eafd ="\u0043\u006c\u0065a\u0072";return _eafd ;};if _bccf &FieldFlagReadOnly > 0{_eafd +="\u007cR\u0065\u0061\u0064\u004f\u006e\u006cy";};if _bccf &FieldFlagRequired > 0{_eafd +="\u007cR\u0065\u0071\u0075\u0069\u0072\u0065d"; };if _bccf &FieldFlagNoExport > 0{_eafd +="\u007cN\u006f\u0045\u0078\u0070\u006f\u0072t";};if _bccf &FieldFlagNoToggleToOff > 0{_eafd +="\u007c\u004e\u006f\u0054\u006f\u0067\u0067\u006c\u0065T\u006f\u004f\u0066\u0066";};if _bccf &FieldFlagRadio > 0{_eafd +="\u007c\u0052\u0061\u0064\u0069\u006f"; };if _bccf &FieldFlagPushbutton > 0{_eafd +="|\u0050\u0075\u0073\u0068\u0062\u0075\u0074\u0074\u006f\u006e";};if _bccf &FieldFlagRadiosInUnision > 0{_eafd +="\u007c\u0052a\u0064\u0069\u006fs\u0049\u006e\u0055\u006e\u0069\u0073\u0069\u006f\u006e";};if _bccf &FieldFlagMultiline > 0{_eafd +="\u007c\u004d\u0075\u006c\u0074\u0069\u006c\u0069\u006e\u0065"; };if _bccf &FieldFlagPassword > 0{_eafd +="\u007cP\u0061\u0073\u0073\u0077\u006f\u0072d";};if _bccf &FieldFlagFileSelect > 0{_eafd +="|\u0046\u0069\u006c\u0065\u0053\u0065\u006c\u0065\u0063\u0074";};if _bccf &FieldFlagDoNotScroll > 0{_eafd +="\u007c\u0044\u006fN\u006f\u0074\u0053\u0063\u0072\u006f\u006c\u006c"; };if _bccf &FieldFlagComb > 0{_eafd +="\u007c\u0043\u006fm\u0062";};if _bccf &FieldFlagRichText > 0{_eafd +="\u007cR\u0069\u0063\u0068\u0054\u0065\u0078t";};if _bccf &FieldFlagDoNotSpellCheck > 0{_eafd +="\u007c\u0044o\u004e\u006f\u0074S\u0070\u0065\u006c\u006c\u0043\u0068\u0065\u0063\u006b"; };if _bccf &FieldFlagCombo > 0{_eafd +="\u007c\u0043\u006f\u006d\u0062\u006f";};if _bccf &FieldFlagEdit > 0{_eafd +="\u007c\u0045\u0064i\u0074";};if _bccf &FieldFlagSort > 0{_eafd +="\u007c\u0053\u006fr\u0074";};if _bccf &FieldFlagMultiSelect > 0{_eafd +="\u007c\u004d\u0075l\u0074\u0069\u0053\u0065\u006c\u0065\u0063\u0074"; };if _bccf &FieldFlagCommitOnSelChange > 0{_eafd +="\u007cC\u006fm\u006d\u0069\u0074\u004f\u006eS\u0065\u006cC\u0068\u0061\u006e\u0067\u0065";};return _af .Trim (_eafd ,"\u007c");}; // NewPdfColorspaceSpecialIndexed returns a new Indexed color. func NewPdfColorspaceSpecialIndexed ()*PdfColorspaceSpecialIndexed {return &PdfColorspaceSpecialIndexed {HiVal :255};}; // PdfTransformParamsDocMDP represents a transform parameters dictionary for the DocMDP method and is used to detect // modifications relative to a signature field that is signed by the author of a document. // (Section 12.8.2.2, Table 254 - Entries in the DocMDP transform parameters dictionary p. 471 in PDF32000_2008). type PdfTransformParamsDocMDP struct{Type *_dfg .PdfObjectName ;P *_dfg .PdfObjectInteger ;V *_dfg .PdfObjectName ;}; // NewPdfAnnotationFileAttachment returns a new file attachment annotation. func NewPdfAnnotationFileAttachment ()*PdfAnnotationFileAttachment {_baf :=NewPdfAnnotation ();_dge :=&PdfAnnotationFileAttachment {};_dge .PdfAnnotation =_baf ;_dge .PdfAnnotationMarkup =&PdfAnnotationMarkup {};_baf .SetContext (_dge );return _dge ;}; // NewPdfAnnotationSquiggly returns a new text squiggly annotation. func NewPdfAnnotationSquiggly ()*PdfAnnotationSquiggly {_add :=NewPdfAnnotation ();_agf :=&PdfAnnotationSquiggly {};_agf .PdfAnnotation =_add ;_agf .PdfAnnotationMarkup =&PdfAnnotationMarkup {};_add .SetContext (_agf );return _agf ;};const (RC4_128bit =EncryptionAlgorithm (iota ); AES_128bit ;AES_256bit ;); // PdfShadingType5 is a Lattice-form Gouraud-shaded triangle mesh. type PdfShadingType5 struct{*PdfShading ;BitsPerCoordinate *_dfg .PdfObjectInteger ;BitsPerComponent *_dfg .PdfObjectInteger ;VerticesPerRow *_dfg .PdfObjectInteger ;Decode *_dfg .PdfObjectArray ;Function []PdfFunction ;}; // ToPdfObject implements interface PdfModel. func (_ffb *PdfActionSetOCGState )ToPdfObject ()_dfg .PdfObject {_ffb .PdfAction .ToPdfObject ();_bggf :=_ffb ._fe ;_dfdd :=_bggf .PdfObject .(*_dfg .PdfObjectDictionary );_dfdd .SetIfNotNil ("\u0053",_dfg .MakeName (string (ActionTypeSetOCGState )));_dfdd .SetIfNotNil ("\u0053\u0074\u0061t\u0065",_ffb .State ); _dfdd .SetIfNotNil ("\u0050\u0072\u0065\u0073\u0065\u0072\u0076\u0065\u0052\u0042",_ffb .PreserveRB );return _bggf ;}; // NewOutlineItem returns a new outline item instance. func NewOutlineItem (title string ,dest OutlineDest )*OutlineItem {return &OutlineItem {Title :title ,Dest :dest };}; // ToWriter creates a new writer from the current reader, based on the specified options. // If no options are provided, all reader properties are copied to the writer. func (_gadbb *PdfReader )ToWriter (opts *ReaderToWriterOpts )(*PdfWriter ,error ){_fdbfc :=NewPdfWriter ();_fdbfc .SetFileName (_gadbb ._aefda );if opts ==nil {opts =&ReaderToWriterOpts {};};_gggeg ,_ggfga :=_gadbb .GetNumPages ();if _ggfga !=nil {_egb .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a\u0020\u0025v",_ggfga ); return nil ,_ggfga ;};for _eacdg :=1;_eacdg <=_gggeg ;_eacdg ++{_ffac ,_cbccae :=_gadbb .GetPage (_eacdg );if _cbccae !=nil {_egb .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a\u0020\u0025v",_cbccae );return nil ,_cbccae ;};if opts .PageProcessCallback !=nil {_cbccae =opts .PageProcessCallback (_eacdg ,_ffac ); if _cbccae !=nil {_egb .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a\u0020\u0025v",_cbccae );return nil ,_cbccae ;};}else if opts .PageCallback !=nil {opts .PageCallback (_eacdg ,_ffac );};_cbccae =_fdbfc .AddPage (_ffac );if _cbccae !=nil {_egb .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a\u0020\u0025v",_cbccae ); return nil ,_cbccae ;};};_fdbfc ._cfbcb =_gadbb .PdfVersion ();if !opts .SkipInfo {_bfbab ,_daafb :=_gadbb .GetPdfInfo ();if _daafb !=nil {_egb .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a\u0020\u0025v",_daafb );}else {_fdbfc ._acace .PdfObject =_bfbab .ToPdfObject (); };};if !opts .SkipMetadata {if _degd :=_gadbb ._fbfgb .Get ("\u004d\u0065\u0074\u0061\u0064\u0061\u0074\u0061");_degd !=nil {if _agebc :=_fdbfc .SetCatalogMetadata (_degd );_agebc !=nil {return nil ,_agebc ;};};};if !opts .SkipMarkInfo {if _aggc ,_dccag :=_gadbb .GetCatalogMarkInfo (); _dccag {if _cceebg :=_fdbfc .SetCatalogMarkInfo (_aggc );_cceebg !=nil {return nil ,_cceebg ;};};};if !opts .SkipAcroForm {_cacgg :=_fdbfc .SetForms (_gadbb .AcroForm );if _cacgg !=nil {_egb .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a\u0020\u0025v",_cacgg ); return nil ,_cacgg ;};};if !opts .SkipViewerPreferences {if _ebgdg ,_defde :=_gadbb .GetCatalogViewerPreferences ();_defde {if _bbecd :=_fdbfc .SetCatalogViewerPreferences (_ebgdg );_bbecd !=nil {return nil ,_bbecd ;};};};if !opts .SkipLanguage {if _agcee ,_edbf :=_gadbb .GetCatalogLanguage (); _edbf {if _affee :=_fdbfc .SetCatalogLanguage (_agcee );_affee !=nil {return nil ,_affee ;};};};if !opts .SkipOutlines {_fdbfc .AddOutlineTree (_gadbb .GetOutlineTree ());};if !opts .SkipOCProperties {_bdeg ,_eaffa :=_gadbb .GetOCProperties ();if _eaffa !=nil {_egb .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a\u0020\u0025v",_eaffa ); }else {_eaffa =_fdbfc .SetOCProperties (_bdeg );if _eaffa !=nil {_egb .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a\u0020\u0025v",_eaffa );};};};if !opts .SkipPageLabels {_fccgb ,_aegea :=_gadbb .GetPageLabels ();if _aegea !=nil {_egb .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a\u0020\u0025v",_aegea ); }else {_aegea =_fdbfc .SetPageLabels (_fccgb );if _aegea !=nil {_egb .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a\u0020\u0025v",_aegea );};};};if !opts .SkipNamedDests {_eaeae ,_cfeb :=_gadbb .GetNamedDestinations ();if _cfeb !=nil {_egb .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a\u0020\u0025v",_cfeb ); }else {_cfeb =_fdbfc .SetNamedDestinations (_eaeae );if _cfeb !=nil {_egb .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a\u0020\u0025v",_cfeb );};};};if !opts .SkipNameDictionary {_dfbcf ,_fccca :=_gadbb .GetNameDictionary ();if _fccca !=nil {_egb .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a\u0020\u0025v",_fccca ); }else {_fccca =_fdbfc .SetNameDictionary (_dfbcf );if _fccca !=nil {_egb .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a\u0020\u0025v",_fccca );};};};_gecfe ,_dceab :=_gadbb .GetCatalogStructTreeRoot ();if _dceab {_dbdga :=_fdbfc .SetCatalogStructTreeRoot (_gecfe ); if _dbdga !=nil {_egb .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a\u0020\u0025v",_dbdga );};};if !opts .SkipRotation &&_gadbb .Rotate !=nil {if _caac :=_fdbfc .SetRotation (*_gadbb .Rotate );_caac !=nil {_egb .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a\u0020\u0025v",_caac ); };};return &_fdbfc ,nil ;}; // ToPdfObject implements interface PdfModel. func (_eeca *PdfAnnotationWatermark )ToPdfObject ()_dfg .PdfObject {_eeca .PdfAnnotation .ToPdfObject ();_gcgb :=_eeca ._afae ;_fagf :=_gcgb .PdfObject .(*_dfg .PdfObjectDictionary );_fagf .SetIfNotNil ("\u0053u\u0062\u0074\u0079\u0070\u0065",_dfg .MakeName ("\u0057a\u0074\u0065\u0072\u006d\u0061\u0072k")); _fagf .SetIfNotNil ("\u0046\u0069\u0078\u0065\u0064\u0050\u0072\u0069\u006e\u0074",_eeca .FixedPrint );return _gcgb ;}; // PdfActionType represents an action type in PDF (section 12.6.4 p. 417). type PdfActionType string ; // ToPdfObject converts the ID tree to a PDF object. func (_bgccf *IDTree )ToPdfObject ()_dfg .PdfObject {_gffcf :=_dfg .MakeDict ();if _bgccf .Names !=nil &&_bgccf .Names .Len ()> 0{_gffcf .Set ("\u004e\u0061\u006de\u0073",_bgccf .Names );_gffcf .Set ("\u004c\u0069\u006d\u0069\u0074\u0073",_bgccf .Limits ); };if len (_bgccf .Kids )> 0{_bfgbf :=_dfg .MakeArray ();for _ ,_ecgag :=range _bgccf .Kids {_bfgbf .Append (_ecgag .ToPdfObject ());};_fafda :=_dfg .MakeDict ();_fafda .Set ("\u004b\u0069\u0064\u0073",_bfgbf );_gffcf .Set ("\u004b\u0069\u0064\u0073",_fafda ); };return _gffcf ;}; // NewStructTreeRootFromPdfObject creates a new structure tree root from a PDF object. func NewStructTreeRootFromPdfObject (obj _dfg .PdfObject )(*StructTreeRoot ,error ){_aebfd :=_dfg .ResolveReference (obj );_aecceg ,_beefg :=_dfg .GetDict (_aebfd );if !_beefg {return nil ,_d .Errorf ("\u0065\u0078\u0069\u0073\u0074\u0069\u006e\u0067 \u0073\u0074\u0072uc\u0074\u0075\u0072\u0065\u0020\u0074r\u0065\u0065\u0020\u0072\u006f\u006f\u0074\u0020\u0069\u0073\u0020\u006e\u006f\u0074\u0020a\u0020\u0064\u0069\u0063\u0074\u0069\u006f\u006ea\u0072\u0079"); };_gecaa :=&StructTreeRoot {};_gecaa ._badddb =_dfg .MakeIndirectObject (_dfg .MakeDict ());if _acbag :=_aecceg .Get ("\u004b");_acbag !=nil {_deadf :=_dfg .ResolveReference (_acbag );_ebfff :=_dfg .ResolveReferencesDeep (_deadf ,nil );if _ebfff !=nil {_egb .Log .Debug ("\u0045\u0072\u0072\u006fr\u0020\u0072\u0065\u0073\u006f\u006c\u0076\u0069\u006e\u0067 \u004b \u006f\u0062\u006a\u0065\u0063\u0074\u003a \u0025\u0076",_ebfff ); };_gecaa .K =[]*KDict {};if _ccbag ,_adedc :=_dfg .GetArray (_deadf );_adedc {for _affaa :=0;_affaa < _ccbag .Len ();_affaa ++{_deeff :=_ccbag .Get (_affaa );_ageadf ,_eeeeba :=NewKDictFromPdfObject (_deeff );if _eeeeba !=nil {return nil ,_eeeeba ;};_gecaa .K =append (_gecaa .K ,_ageadf ); };}else {_ecefcg ,_acfee :=NewKDictFromPdfObject (_deadf );if _acfee !=nil {return nil ,_acfee ;};_gecaa .K =append (_gecaa .K ,_ecefcg );};};if _cbcf :=_aecceg .Get ("\u0049\u0044\u0054\u0072\u0065\u0065");_cbcf !=nil {_gecaa .IDTree =_ecaae (_cbcf ); };if _gcfgb :=_aecceg .Get ("\u0050\u0061\u0072\u0065\u006e\u0074\u0054\u0072\u0065\u0065");_gcfgb !=nil {_dgcd :=_dfg .ResolveReference (_gcfgb );if _baaba ,_dbdbd :=_dfg .GetDict (_dgcd );_dbdbd {_gecaa .ParentTree =_baaba ;};};if _gddg :=_aecceg .Get ("\u0050\u0061\u0072\u0065\u006e\u0074\u0054\u0072\u0065\u0065\u004e\u0065x\u0074\u004b\u0065\u0079"); _gddg !=nil {_ ,_ecece :=_dfg .GetInt (_gddg );if _ecece {_bggffg ,_ggdfcf :=_dfg .GetNumberAsInt64 (_gddg );if _ggdfcf !=nil {return nil ,_ggdfcf ;};_gecaa .ParentTreeNextKey =_bggffg ;};};if _bdfgd :=_aecceg .Get ("\u0052o\u006c\u0065\u004d\u0061\u0070"); _bdfgd !=nil {switch _fbeea :=_bdfgd .(type ){case *_dfg .PdfIndirectObject :if _bcfda ,_egfdb :=_dfg .GetDict (_fbeea .PdfObject );_egfdb {_gecaa .RoleMap =_bcfda ;};case *_dfg .PdfObjectDictionary :_gecaa .RoleMap =_fbeea ;case *_dfg .PdfObjectString :_gecaa .RoleMap =_fbeea ; };};if _ccdab :=_aecceg .Get ("\u0043\u006c\u0061\u0073\u0073\u004d\u0061\u0070");_ccdab !=nil {if _fcbag ,_ebabf :=_dfg .GetDict (_ccdab );_ebabf {_gecaa .ClassMap =_fcbag ;};};return _gecaa ,nil ;};func (_gdgbd *PdfPage )removeXObj (_ffdcd *_dfg .PdfObjectDictionary ,_cgbaf _dfg .PdfObjectName ){_ffdcd .Remove (_cgbaf ); _bgecf :=_dfg .NewFlateEncoder ();_cdafce :=_gdgbd .GetContentStreamObjs ();_fabd :=_dfg .MakeArray ();for _ ,_aeaba :=range _cdafce {_ddfd ,_ :=_bgbfb (_aeaba );if _af .Contains (_ddfd ,_cgbaf .String ()){_daaa :=_af .Index (_ddfd ,_cgbaf .String ()); _cceac :=_af .LastIndex (_ddfd [:_daaa ],"\u0071");_acfec :=_af .Index (_ddfd [_daaa :],"\u0051")+_daaa +1;if _cceac >=0&&_acfec >=0{var _debg _af .Builder ;_debg .WriteString (_ddfd [:_cceac ]);_debg .WriteString (_ddfd [_acfec :]);_cdaff ,_bccb :=_dfg .MakeStream ([]byte (_debg .String ()),_bgecf ); if _bccb ==nil {_fabd .Append (_cdaff );continue ;};};};_fabd .Append (_aeaba );};_gdgbd .Contents =_fabd ;};func _cgbf (_bbgc _dfg .PdfObject ,_fdfaf *PdfReader )(*OutlineDest ,error ){_geaa ,_ecgea :=_dfg .GetArray (_bbgc );if !_ecgea {return nil ,_bd .New ("\u006f\u0075\u0074\u006c\u0069\u006e\u0065 \u0064\u0065\u0073t\u0069\u006e\u0061\u0074i\u006f\u006e\u0020\u006f\u0062\u006a\u0065\u0063\u0074\u0020\u006d\u0075\u0073\u0074\u0020\u0062\u0065\u0020\u0061\u006e\u0020\u0061\u0072\u0072\u0061\u0079"); };_bdbb :=_geaa .Len ();if _bdbb < 2{return nil ,_d .Errorf ("\u0069n\u0076\u0061l\u0069\u0064\u0020\u006fu\u0074\u006c\u0069n\u0065\u0020\u0064\u0065\u0073\u0074\u0069\u006e\u0061ti\u006f\u006e\u0020a\u0072\u0072a\u0079\u0020\u006c\u0065\u006e\u0067t\u0068\u003a \u0025\u0064",_bdbb ); };_fdbef :=&OutlineDest {Mode :"\u0046\u0069\u0074"};_cbfg :=_geaa .Get (0);if _dddgb ,_gabgd :=_dfg .GetIndirect (_cbfg );_gabgd {if _ ,_gcdc ,_cdeab :=_fdfaf .PageFromIndirectObject (_dddgb );_cdeab ==nil {_fdbef .Page =int64 (_gcdc -1);}else {_egb .Log .Debug ("\u0057\u0041\u0052\u004e\u003a\u0020\u0063o\u0075\u006c\u0064 \u006e\u006f\u0074\u0020g\u0065\u0074\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006e\u0064\u0065\u0078\u0020\u0066\u006f\u0072\u0020\u0070\u0061\u0067\u0065\u0020\u0025\u002b\u0076",_dddgb ); };_fdbef .PageObj =_dddgb ;}else if _edgf ,_aeebc :=_dfg .GetIntVal (_cbfg );_aeebc {if _edgf >=0&&_edgf < len (_fdfaf .PageList ){_fdbef .PageObj =_fdfaf .PageList [_edgf ].GetPageAsIndirectObject ();}else {_egb .Log .Debug ("\u0057\u0041R\u004e\u003a\u0020\u0063\u006f\u0075\u006c\u0064\u0020\u006e\u006f\u0074\u0020\u0067\u0065\u0074\u0020\u0070\u0061\u0067\u0065\u0020\u0063\u006f\u006e\u0074\u0061\u0069\u006e\u0065\u0072\u0020\u0066\u006f\u0072\u0020\u0070\u0061\u0067\u0065\u0020\u0025\u0064",_edgf ); };_fdbef .Page =int64 (_edgf );}else {return nil ,_d .Errorf ("\u0069\u006eva\u006c\u0069\u0064 \u006f\u0075\u0074\u006cine\u0020de\u0073\u0074\u0069\u006e\u0061\u0074\u0069on\u0020\u0070\u0061\u0067\u0065\u003a\u0020%\u0054",_cbfg );};_ggaaec ,_ecgea :=_dfg .GetNameVal (_geaa .Get (1)); if !_ecgea {_egb .Log .Debug ("\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u006f\u0075\u0074\u006c\u0069\u006e\u0065\u0020\u0064\u0065s\u0074\u0069\u006e\u0061\u0074\u0069\u006fn\u0020\u006d\u0061\u0067\u006e\u0069\u0066\u0069\u0063\u0061\u0074i\u006f\u006e\u0020\u006d\u006f\u0064\u0065\u003a\u0020\u0025\u0076",_geaa .Get (1)); return _fdbef ,nil ;};switch _ggaaec {case "\u0046\u0069\u0074","\u0046\u0069\u0074\u0042":case "\u0046\u0069\u0074\u0048","\u0046\u0069\u0074B\u0048":if _bdbb > 2{_fdbef .Y ,_ =_dfg .GetNumberAsFloat (_dfg .TraceToDirectObject (_geaa .Get (2)));};case "\u0046\u0069\u0074\u0056","\u0046\u0069\u0074B\u0056":if _bdbb > 2{_fdbef .X ,_ =_dfg .GetNumberAsFloat (_dfg .TraceToDirectObject (_geaa .Get (2))); };case "\u0058\u0059\u005a":if _bdbb > 4{_fdbef .X ,_ =_dfg .GetNumberAsFloat (_dfg .TraceToDirectObject (_geaa .Get (2)));_fdbef .Y ,_ =_dfg .GetNumberAsFloat (_dfg .TraceToDirectObject (_geaa .Get (3)));_fdbef .Zoom ,_ =_dfg .GetNumberAsFloat (_dfg .TraceToDirectObject (_geaa .Get (4))); };default:_ggaaec ="\u0046\u0069\u0074";};_fdbef .Mode =_ggaaec ;return _fdbef ,nil ;}; // PdfAnnotationSquiggly represents Squiggly annotations. // (Section 12.5.6.10). type PdfAnnotationSquiggly struct{*PdfAnnotation ;*PdfAnnotationMarkup ;QuadPoints _dfg .PdfObject ;};func (_caeb *PdfReader )newPdfAnnotationFileAttachmentFromDict (_cbdd *_dfg .PdfObjectDictionary )(*PdfAnnotationFileAttachment ,error ){_fbgg :=PdfAnnotationFileAttachment {}; _dea ,_dfea :=_caeb .newPdfAnnotationMarkupFromDict (_cbdd );if _dfea !=nil {return nil ,_dfea ;};_fbgg .PdfAnnotationMarkup =_dea ;_fbgg .FS =_cbdd .Get ("\u0046\u0053");_fbgg .Name =_cbdd .Get ("\u004e\u0061\u006d\u0065");return &_fbgg ,nil ;}; // ImageToRGB returns an error since an image cannot be defined in a pattern colorspace. func (_cefae *PdfColorspaceSpecialPattern )ImageToRGB (img Image )(Image ,error ){_egb .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u003a\u0020\u0049\u006d\u0061\u0067\u0065\u0020\u0063\u0061n\u006e\u006f\u0074\u0020\u0062\u0065\u0020\u0073\u0070\u0065\u0063\u0069\u0066i\u0065\u0064\u0020\u0069\u006e\u0020\u0050\u0061\u0074\u0074\u0065\u0072n \u0063\u006f\u006c\u006f\u0072\u0073\u0070\u0061\u0063\u0065"); return img ,_bd .New ("\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0063\u006f\u006c\u006f\u0072\u0073\u0070\u0061\u0063\u0065\u0020\u0066\u006f\u0072\u0020\u0069m\u0061\u0067\u0065\u0020\u0028p\u0061\u0074t\u0065\u0072\u006e\u0029");}; // ViewArea returns the value of the viewArea. func (_adbfd *ViewerPreferences )ViewArea ()PageBoundary {return _adbfd ._gaeae };func (_bcde *PdfReader )newPdfAnnotationPopupFromDict (_fdfe *_dfg .PdfObjectDictionary )(*PdfAnnotationPopup ,error ){_cac :=PdfAnnotationPopup {};_cac .Parent =_fdfe .Get ("\u0050\u0061\u0072\u0065\u006e\u0074"); _cac .Open =_fdfe .Get ("\u004f\u0070\u0065\u006e");return &_cac ,nil ;}; // Size returns the width and the height of the page. The method reports // the page dimensions as displayed by a PDF viewer (i.e. page rotation is // taken into account). func (_aaadg *PdfPage )Size ()(float64 ,float64 ,error ){_afbae ,_bgfb :=_aaadg .GetMediaBox ();if _bgfb !=nil {return 0,0,_bgfb ;};_fgcfa ,_daefb :=_afbae .Width (),_afbae .Height ();_caaf ,_bgfb :=_aaadg .GetRotate ();if _bgfb !=nil {_egb .Log .Debug ("\u0045\u0052R\u004f\u0052\u003a\u0020\u0025\u0073\u0020\u002d\u0020\u0069\u0067\u006e\u006f\u0072\u0069\u006e\u0067\u0020\u0061\u006e\u0064\u0020\u0061\u0073\u0073\u0075\u006d\u0069\u006e\u0067\u0020\u006e\u006f\u0020\u0072\u006f\u0074\u0061\u0074\u0069\u006f\u006e\u000a",_bgfb .Error ()); };if _eebgg :=_caaf ;_eebgg %360!=0&&_eebgg %90==0{if _cgbe :=(360+_eebgg %360)%360;_cgbe ==90||_cgbe ==270{_fgcfa ,_daefb =_daefb ,_fgcfa ;};};return _fgcfa ,_daefb ,nil ;}; // StandardImplementer is an interface that defines specified PDF standards like PDF/A-1A (pdfa.Profile1A) // NOTE: This implementation is in experimental development state. // // Keep in mind that it might change in the subsequent minor versions. type StandardImplementer interface{StandardValidator ;StandardApplier ; // StandardName gets the human-readable name of the standard. StandardName ()string ;}; // NewXObjectForm creates a brand new XObject Form. Creates a new underlying PDF object stream primitive. func NewXObjectForm ()*XObjectForm {_cgfcb :=&XObjectForm {};_cdbba :=&_dfg .PdfObjectStream {};_cdbba .PdfObjectDictionary =_dfg .MakeDict ();_cgfcb ._baced =_cdbba ;return _cgfcb ;}; // ToInteger convert to an integer format. func (_gcfe *PdfColorDeviceGray )ToInteger (bits int )uint32 {_bdde :=_df .Pow (2,float64 (bits ))-1;return uint32 (_bdde *_gcfe .Val ());};func _aecff (_cbddb *_dfg .PdfObjectDictionary ,_eeec *fontCommon )(*pdfCIDFontType2 ,error ){if _eeec ._gdab !="\u0043\u0049\u0044F\u006f\u006e\u0074\u0054\u0079\u0070\u0065\u0032"{_egb .Log .Debug ("\u0045R\u0052\u004fR\u003a\u0020\u0046\u006fn\u0074\u0020\u0053u\u0062\u0054\u0079\u0070\u0065\u0020\u0021\u003d\u0020CI\u0044\u0046\u006fn\u0074\u0054y\u0070\u0065\u0032\u002e\u0020\u0066o\u006e\u0074=\u0025\u0073",_eeec ); return nil ,_dfg .ErrRangeError ;};_edafg :=_ddcab (_eeec );_agfg ,_dcgce :=_dfg .GetDict (_cbddb .Get ("\u0043\u0049\u0044\u0053\u0079\u0073\u0074\u0065\u006d\u0049\u006e\u0066\u006f"));if !_dcgce {_egb .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0043I\u0044\u0053\u0079st\u0065\u006d\u0049\u006e\u0066\u006f \u0028\u0052\u0065\u0071\u0075\u0069\u0072\u0065\u0064\u0029\u0020\u006d\u0069\u0073\u0073i\u006e\u0067\u002e\u0020\u0066\u006f\u006e\u0074=\u0025\u0073",_eeec ); return nil ,ErrRequiredAttributeMissing ;};_edafg .CIDSystemInfo =_agfg ;_edafg .DW =_cbddb .Get ("\u0044\u0057");_edafg .W =_cbddb .Get ("\u0057");_edafg .DW2 =_cbddb .Get ("\u0044\u0057\u0032");_edafg .W2 =_cbddb .Get ("\u0057\u0032");_edafg .CIDToGIDMap =_cbddb .Get ("C\u0049\u0044\u0054\u006f\u0047\u0049\u0044\u004d\u0061\u0070"); _edafg ._cfcga =1000.0;if _dbgfa ,_gcadb :=_dfg .GetNumberAsFloat (_edafg .DW );_gcadb ==nil {_edafg ._cfcga =_dbgfa ;};_dcfgg ,_ddebf :=_fafd (_edafg .W );if _ddebf !=nil {return nil ,_ddebf ;};if _dcfgg ==nil {_dcfgg =map[_ff .CharCode ]float64 {};}; _edafg ._gdebe =_dcfgg ;return _edafg ,nil ;}; // NewPdfAnnotationLink returns a new link annotation. func NewPdfAnnotationLink ()*PdfAnnotationLink {_bggff :=NewPdfAnnotation ();_adfb :=&PdfAnnotationLink {};_adfb .PdfAnnotation =_bggff ;_bggff .SetContext (_adfb );return _adfb ;}; // PdfColorspaceICCBased format [/ICCBased stream] // // The stream shall contain the ICC profile. // A conforming reader shall support ICC.1:2004:10 as required by PDF 1.7, which will enable it // to properly render all embedded ICC profiles regardless of the PDF version // // In the current implementation, we rely on the alternative colormap provided. type PdfColorspaceICCBased struct{N int ;Alternate PdfColorspace ; // If omitted ICC not supported: then use DeviceGray, // DeviceRGB or DeviceCMYK for N=1,3,4 respectively. Range []float64 ;Metadata *_dfg .PdfObjectStream ;Data []byte ;_ggdb *_dfg .PdfIndirectObject ;_edadb *_dfg .PdfObjectStream ;};const (NonFullScreenPageModeUseNone NonFullScreenPageMode ="\u0055s\u0065\u004e\u006f\u006e\u0065";NonFullScreenPageModeUseOutlines NonFullScreenPageMode ="U\u0073\u0065\u004f\u0075\u0074\u006c\u0069\u006e\u0065\u0073"; NonFullScreenPageModeUseThumbs NonFullScreenPageMode ="\u0055s\u0065\u0054\u0068\u0075\u006d\u0062s";NonFullScreenPageModeUseOC NonFullScreenPageMode ="\u0055\u0073\u0065O\u0043";DirectionL2R Direction ="\u004c\u0032\u0052";DirectionR2L Direction ="\u0052\u0032\u004c"; PageBoundaryMediaBox PageBoundary ="\u004d\u0065\u0064\u0069\u0061\u0042\u006f\u0078";PageBoundaryCropBox PageBoundary ="\u0043r\u006f\u0070\u0042\u006f\u0078";PageBoundaryBleedBox PageBoundary ="\u0042\u006c\u0065\u0065\u0064\u0042\u006f\u0078";PageBoundaryTrimBox PageBoundary ="\u0054r\u0069\u006d\u0042\u006f\u0078"; PageBoundaryArtBox PageBoundary ="\u0041\u0072\u0074\u0042\u006f\u0078";PrintScalingNone PrintScaling ="\u004e\u006f\u006e\u0065";PrintScalingAppDefault PrintScaling ="\u0041\u0070\u0070\u0044\u0065\u0066\u0061\u0075\u006c\u0074";DuplexNone Duplex ="\u006e\u006f\u006e\u0065"; DuplexSimplex Duplex ="\u0053i\u006d\u0070\u006c\u0065\u0078";DuplexFlipShortEdge Duplex ="\u0044\u0075\u0070\u006cex\u0046\u006c\u0069\u0070\u0053\u0068\u006f\u0072\u0074\u0045\u0064\u0067\u0065";DuplexFlipLongEdge Duplex ="\u0044u\u0070l\u0065\u0078\u0046\u006c\u0069p\u004c\u006fn\u0067\u0045\u0064\u0067\u0065"; );func (_bcabe *PdfReader )newPdfOutlineItemFromIndirectObject (_ccggc *_dfg .PdfIndirectObject )(*PdfOutlineItem ,error ){_ffff ,_edade :=_ccggc .PdfObject .(*_dfg .PdfObjectDictionary );if !_edade {return nil ,_d .Errorf ("\u006f\u0075\u0074l\u0069\u006e\u0065\u0020o\u0062\u006a\u0065\u0063\u0074\u0020\u006eo\u0074\u0020\u0061\u0020\u0064\u0069\u0063\u0074\u0069\u006f\u006e\u0061\u0072\u0079"); };_bcbeb :=NewPdfOutlineItem ();_acaab :=_ffff .Get ("\u0054\u0069\u0074l\u0065");if _acaab ==nil {return nil ,_d .Errorf ("\u006d\u0069\u0073s\u0069\u006e\u0067\u0020\u0054\u0069\u0074\u006c\u0065\u0020\u0066\u0072\u006f\u006d\u0020\u004f\u0075\u0074\u006c\u0069\u006e\u0065\u0020\u0049\u0074\u0065\u006d\u0020\u0028r\u0065\u0071\u0075\u0069\u0072\u0065\u0064\u0029"); };_dgff ,_fgcdcf :=_dfg .GetString (_acaab );if !_fgcdcf {return nil ,_d .Errorf ("\u0074\u0069\u0074le\u0020\u006e\u006f\u0074\u0020\u0061\u0020\u0073\u0074\u0072\u0069\u006e\u0067\u0020\u0028\u0025\u0054\u0029",_acaab );};_bcbeb .Title =_dgff ;if _agebg :=_ffff .Get ("\u0043\u006f\u0075n\u0074"); _agebg !=nil {_ceag ,_eedde :=_agebg .(*_dfg .PdfObjectInteger );if !_eedde {return nil ,_d .Errorf ("\u0063o\u0075\u006e\u0074\u0020n\u006f\u0074\u0020\u0061\u006e \u0069n\u0074e\u0067\u0065\u0072\u0020\u0028\u0025\u0054)",_agebg );};_dbegd :=int64 (*_ceag ); _bcbeb .Count =&_dbegd ;};if _adbed :=_ffff .Get ("\u0044\u0065\u0073\u0074");_adbed !=nil {_bcbeb .Dest =_dfg .ResolveReference (_adbed );if !_bcabe ._bafba {_dbbbg :=_bcabe .traverseObjectData (_bcbeb .Dest );if _dbbbg !=nil {return nil ,_dbbbg ;};}; };if _fbedf :=_ffff .Get ("\u0041");_fbedf !=nil {_bcbeb .A =_dfg .ResolveReference (_fbedf );if !_bcabe ._bafba {_bffbb :=_bcabe .traverseObjectData (_bcbeb .A );if _bffbb !=nil {return nil ,_bffbb ;};};};if _gbea :=_ffff .Get ("\u0053\u0045");_gbea !=nil {_bcbeb .SE =nil ; };if _eebed :=_ffff .Get ("\u0043");_eebed !=nil {_bcbeb .C =_dfg .ResolveReference (_eebed );};if _fecfgd :=_ffff .Get ("\u0046");_fecfgd !=nil {_bcbeb .F =_dfg .ResolveReference (_fecfgd );};return _bcbeb ,nil ;}; // HasShadingByName checks whether a shading is defined by the specified keyName. func (_fbaeb *PdfPageResources )HasShadingByName (keyName _dfg .PdfObjectName )bool {_ ,_eggb :=_fbaeb .GetShadingByName (keyName );return _eggb ;}; // ColorFromPdfObjects returns a new PdfColor based on the input slice of color // components. The slice should contain a single PdfObjectFloat element. func (_begea *PdfColorspaceSpecialSeparation )ColorFromPdfObjects (objects []_dfg .PdfObject )(PdfColor ,error ){if len (objects )!=1{return nil ,_bd .New ("r\u0061\u006e\u0067\u0065\u0020\u0063\u0068\u0065\u0063\u006b");};_dgbg ,_cccd :=_dfg .GetNumbersAsFloat (objects ); if _cccd !=nil {return nil ,_cccd ;};return _begea .ColorFromFloats (_dgbg );}; // ToPdfObject returns the PDF representation of the outline tree node. func (_acefbf *PdfOutlineTreeNode )ToPdfObject ()_dfg .PdfObject {return _acefbf .GetContext ().ToPdfObject ();}; // GetCharMetrics returns the char metrics for character code `code`. // How it works: // 1. It calls the GetCharMetrics function for the underlying font, either a simple font or // a Type0 font. The underlying font GetCharMetrics() functions do direct charcode ➞ metrics // mappings. // 2. If the underlying font's GetCharMetrics() doesn't have a CharMetrics for `code` then a // a CharMetrics with the FontDescriptor's /MissingWidth is returned. // 3. If there is no /MissingWidth then a failure is returned. // // TODO(peterwilliams97) There is nothing callers can do if no CharMetrics are found so we might as // well give them 0 width. There is no need for the bool return. // // TODO(gunnsth): Reconsider whether needed or if can map via GlyphName. func (_dfbdd *PdfFont )GetCharMetrics (code _ff .CharCode )(CharMetrics ,bool ){var _gbbec _bf .CharMetrics ;switch _abgfb :=_dfbdd ._fab .(type ){case *pdfFontSimple :if _cgcg ,_cfcdd :=_abgfb .GetCharMetrics (code );_cfcdd {return _cgcg ,_cfcdd ;};case *pdfFontType0 :if _dbffa ,_efca :=_abgfb .GetCharMetrics (code ); _efca {return _dbffa ,_efca ;};case *pdfCIDFontType0 :if _bdfb ,_cfbbcd :=_abgfb .GetCharMetrics (code );_cfbbcd {return _bdfb ,_cfbbcd ;};case *pdfCIDFontType2 :if _fbgd ,_dbbd :=_abgfb .GetCharMetrics (code );_dbbd {return _fbgd ,_dbbd ;};case *pdfFontType3 :if _cadf ,_fece :=_abgfb .GetCharMetrics (code ); _fece {return _cadf ,_fece ;};default:_egb .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020G\u0065\u0074\u0043h\u0061\u0072\u004de\u0074\u0072i\u0063\u0073\u0020\u006e\u006f\u0074 \u0069mp\u006c\u0065\u006d\u0065\u006e\u0074\u0065\u0064\u0020\u0066\u006f\u0072\u0020\u0066\u006f\u006e\u0074\u0020\u0074\u0079\u0070\u0065\u003d\u0025\u0054\u002e",_dfbdd ._fab ); return _gbbec ,false ;};if _efgeg ,_fdege :=_dfbdd .GetFontDescriptor ();_fdege ==nil &&_efgeg !=nil {return _bf .CharMetrics {Wx :_efgeg ._decbb },true ;};_egb .Log .Debug ("\u0047\u0065\u0074\u0043\u0068\u0061\u0072\u004d\u0065\u0074\u0072\u0069\u0063\u0073\u003a\u0020\u004e\u006f\u0020\u006d\u0065\u0074\u0072\u0069c\u0073\u0020\u0066\u006f\u0072 \u0066\u006fn\u0074\u003d\u0025\u0073",_dfbdd ); return _gbbec ,false ;}; // multiFontEncoder implements a an Encoder that holds a list of fonts provided. type MultipleFontEncoder struct{_ceede []*PdfFont ;CurrentFont *PdfFont ;}; // ToPdfObject returns the PDF representation of the colorspace. func (_bfbd *PdfColorspaceSpecialPattern )ToPdfObject ()_dfg .PdfObject {if _bfbd .UnderlyingCS ==nil {return _dfg .MakeName ("\u0050a\u0074\u0074\u0065\u0072\u006e");};_begbd :=_dfg .MakeArray (_dfg .MakeName ("\u0050a\u0074\u0074\u0065\u0072\u006e")); _begbd .Append (_bfbd .UnderlyingCS .ToPdfObject ());if _bfbd ._fdea !=nil {_bfbd ._fdea .PdfObject =_begbd ;return _bfbd ._fdea ;};return _begbd ;}; // ToPdfObject implements interface PdfModel. func (_cada *PdfAnnotationHighlight )ToPdfObject ()_dfg .PdfObject {_cada .PdfAnnotation .ToPdfObject ();_eafc :=_cada ._afae ;_dcfg :=_eafc .PdfObject .(*_dfg .PdfObjectDictionary );_cada .appendToPdfDictionary (_dcfg );_dcfg .SetIfNotNil ("\u0053u\u0062\u0074\u0079\u0070\u0065",_dfg .MakeName ("\u0048i\u0067\u0068\u006c\u0069\u0067\u0068t")); _dcfg .SetIfNotNil ("\u0051\u0075\u0061\u0064\u0050\u006f\u0069\u006e\u0074\u0073",_cada .QuadPoints );return _eafc ;}; // PdfAnnotationTrapNet represents TrapNet annotations. // (Section 12.5.6.21). type PdfAnnotationTrapNet struct{*PdfAnnotation };func (_edcda *PdfPage )setContainer (_fgac *_dfg .PdfIndirectObject ){_fgac .PdfObject =_edcda ._daae ;_edcda ._bdeee =_fgac ;}; // NewPdfShadingType3 creates an empty shading type 3 dictionary. func NewPdfShadingType3 ()*PdfShadingType3 {_aebba :=&PdfShadingType3 {};_aebba .PdfShading =&PdfShading {};_aebba .PdfShading ._gdfdg =_dfg .MakeIndirectObject (_dfg .MakeDict ());_aebba .PdfShading ._fdbfb =_aebba ;return _aebba ;}; // ToPdfObject implements interface PdfModel. func (_gba *PdfActionJavaScript )ToPdfObject ()_dfg .PdfObject {_gba .PdfAction .ToPdfObject ();_bbc :=_gba ._fe ;_fea :=_bbc .PdfObject .(*_dfg .PdfObjectDictionary );_fea .SetIfNotNil ("\u0053",_dfg .MakeName (string (ActionTypeJavaScript )));_fea .SetIfNotNil ("\u004a\u0053",_gba .JS ); return _bbc ;}; // NewKDictFromPdfObject creates a new K dictionary object from a PDF object. func NewKDictFromPdfObject (obj _dfg .PdfObject )(*KDict ,error ){_ffafg :=_dfg .ResolveReference (obj );if _ffafg ==nil {return nil ,_d .Errorf ("\u004b \u006fb\u006a\u0065\u0063\u0074\u0020\u0069\u0073\u0020\u006e\u0069\u006c");};_dgfge ,_agcgg :=_dfg .GetDict (_ffafg ); if !_agcgg {return nil ,_d .Errorf ("\u004b\u0020\u006f\u0062j\u0065\u0063\u0074\u0020\u0069\u0073\u0020\u006e\u006f\u0074 \u0061 \u0064\u0069\u0063\u0074\u0069\u006f\u006ea\u0072\u0079");};_ebdga :=&KDict {};if _fdcff :=_dgfge .Get ("\u0053");_fdcff !=nil {_ebdga .S =_fdcff ; };if _adbgaa :=_dgfge .Get ("\u0050");_adbgaa !=nil {_ebdga .P =_adbgaa ;};if _gaga :=_dgfge .Get ("\u0049\u0044");_gaga !=nil {if _abbcb ,_fedcg :=_dfg .GetString (_gaga );_fedcg {_ebdga .ID =_abbcb ;};};if _cgccg :=_dgfge .Get ("\u0050\u0067");_cgccg !=nil {_ebdga .Pg =_cgccg ; };if _dceef :=_dgfge .Get ("\u004b");_dceef !=nil {_ebdga .K =_dceef ;switch _agagg :=_dceef .(type ){case *_dfg .PdfObjectArray :if _fcceb ,_bfaac :=_dfg .GetArray (_dceef );_bfaac {for _ ,_edgab :=range _fcceb .Elements (){switch _ddfdg :=_edgab .(type ){case *_dfg .PdfIndirectObject :_cgcd ,_gddec :=NewKDictFromPdfObject (_ddfdg ); if _gddec !=nil {_egb .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0063\u0072\u0065\u0061\u0074i\u006e\u0067\u0020\u004b\u0020\u0063\u0068\u0069\u006c\u0064:\u0020\u0025\u0076",_gddec );continue ;};_ebdga ._dcgedc =append (_ebdga ._dcgedc ,&KValue {_badbf :_cgcd }); case *_dfg .PdfObjectInteger :if _deed ,_bfbded :=_dfg .GetIntVal (_edgab );_bfbded {_ebdga ._dcgedc =append (_ebdga ._dcgedc ,&KValue {_dddge :&_deed });};case *_dfg .PdfObjectDictionary :_ebdga ._dcgedc =append (_ebdga ._dcgedc ,&KValue {_gbedc :_edgab }); };};};case *_dfg .PdfIndirectObject :_ggebcf ,_daba :=NewKDictFromPdfObject (_agagg );if _daba !=nil {_egb .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0063\u0072\u0065\u0061\u0074i\u006e\u0067\u0020\u004b\u0020\u0063\u0068\u0069\u006c\u0064:\u0020\u0025\u0076",_daba ); };if _ggebcf !=nil {_ebdga ._dcgedc =append (_ebdga ._dcgedc ,&KValue {_badbf :_ggebcf });};case *_dfg .PdfObjectDictionary :_ebdga ._dcgedc =append (_ebdga ._dcgedc ,&KValue {_gbedc :_agagg });case *_dfg .PdfObjectInteger :if _gcgef ,_gagbb :=_dfg .GetIntVal (_dceef ); _gagbb {_ebdga ._dcgedc =append (_ebdga ._dcgedc ,&KValue {_dddge :&_gcgef });};};};if _cggc :=_dgfge .Get ("\u0041");_cggc !=nil {_ebdga .A =_cggc ;};if _afgd :=_dgfge .Get ("\u0043");_afgd !=nil {_ebdga .C =_afgd ;};if _dedcg :=_dgfge .Get ("\u0052"); _dedcg !=nil {if _aeeec ,_fcagc :=_dfg .GetInt (_dedcg );_fcagc {_ebdga .R =_aeeec ;};};if _ffdfg :=_dgfge .Get ("\u0054");_ffdfg !=nil {if _fbfca ,_cgbde :=_dfg .GetString (_ffdfg );_cgbde {_ebdga .T =_fbfca ;};};if _bebgcc :=_dgfge .Get ("\u004c\u0061\u006e\u0067"); _bebgcc !=nil {if _ffgde ,_defab :=_dfg .GetString (_bebgcc );_defab {_ebdga .Lang =_ffgde ;};};if _bdcag :=_dgfge .Get ("\u0041\u006c\u0074");_bdcag !=nil {if _efged ,_gfde :=_dfg .GetString (_bdcag );_gfde {_ebdga .Alt =_efged ;};};if _gdgcc :=_dgfge .Get ("\u0045"); _gdgcc !=nil {if _fbbbe ,_eegcf :=_dfg .GetString (_gdgcc );_eegcf {_ebdga .E =_fbbbe ;};};if _feecd :=_dgfge .Get ("\u0041\u0063\u0074\u0075\u0061\u006c\u0054\u0065\u0078\u0074");_feecd !=nil {if _cefaf ,_edgbb :=_dfg .GetString (_feecd );_edgbb {_ebdga .ActualText =_cefaf ; };};return _ebdga ,nil ;}; // SetDecode sets the decode image float slice. func (_bcaa *Image )SetDecode (decode []float64 ){_bcaa ._begcc =decode }; // ToPdfObject returns the PDF representation of the shading pattern. func (_dceff *PdfShadingPatternType2 )ToPdfObject ()_dfg .PdfObject {_dceff .PdfPattern .ToPdfObject ();_fbbcd :=_dceff .getDict ();if _dceff .Shading !=nil {_fbbcd .Set ("\u0053h\u0061\u0064\u0069\u006e\u0067",_dceff .Shading .ToPdfObject ());};if _dceff .Matrix !=nil {_fbbcd .Set ("\u004d\u0061\u0074\u0072\u0069\u0078",_dceff .Matrix ); };if _dceff .ExtGState !=nil {_fbbcd .Set ("\u0045x\u0074\u0047\u0053\u0074\u0061\u0074e",_dceff .ExtGState );};return _dceff ._adcec ;}; // PdfAnnotationFileAttachment represents FileAttachment annotations. // (Section 12.5.6.15). type PdfAnnotationFileAttachment struct{*PdfAnnotation ;*PdfAnnotationMarkup ;FS _dfg .PdfObject ;Name _dfg .PdfObject ;}; // ToPdfObject implements interface PdfModel. func (_eeba *PdfAnnotationMovie )ToPdfObject ()_dfg .PdfObject {_eeba .PdfAnnotation .ToPdfObject ();_ddfb :=_eeba ._afae ;_bacb :=_ddfb .PdfObject .(*_dfg .PdfObjectDictionary );_bacb .SetIfNotNil ("\u0053u\u0062\u0074\u0079\u0070\u0065",_dfg .MakeName ("\u004d\u006f\u0076i\u0065")); _bacb .SetIfNotNil ("\u0054",_eeba .T );_bacb .SetIfNotNil ("\u004d\u006f\u0076i\u0065",_eeba .Movie );_bacb .SetIfNotNil ("\u0041",_eeba .A );return _ddfb ;}; // GetContainingPdfObject returns the container of the DSS (indirect object). func (_ecbb *DSS )GetContainingPdfObject ()_dfg .PdfObject {return _ecbb ._beab }; // GetSubFilter returns SubFilter value or empty string. func (_fdeaf *pdfSignDictionary )GetSubFilter ()string {_dbaac :=_fdeaf .Get ("\u0053u\u0062\u0046\u0069\u006c\u0074\u0065r");if _dbaac ==nil {return "";};if _dgaf ,_fgcfab :=_dfg .GetNameVal (_dbaac );_fgcfab {return _dgaf ;};return "";}; // NewGrayImageFromGoImage creates a new grayscale unidoc Image from a golang Image. func (_beeg DefaultImageHandler )NewGrayImageFromGoImage (goimg _gf .Image )(*Image ,error ){_bcbgc :=goimg .Bounds ();_gada :=&Image {Width :int64 (_bcbgc .Dx ()),Height :int64 (_bcbgc .Dy ()),ColorComponents :1,BitsPerComponent :8};switch _fgdbg :=goimg .(type ){case *_gf .Gray :if len (_fgdbg .Pix )!=_bcbgc .Dx ()*_bcbgc .Dy (){_bbcabc ,_gebg :=_ef .GrayConverter .Convert (goimg ); if _gebg !=nil {return nil ,_gebg ;};_gada .Data =_bbcabc .Pix ();}else {_gada .Data =_fgdbg .Pix ;};case *_gf .Gray16 :_gada .BitsPerComponent =16;if len (_fgdbg .Pix )!=_bcbgc .Dx ()*_bcbgc .Dy ()*2{_dcbe ,_ggbdd :=_ef .Gray16Converter .Convert (goimg ); if _ggbdd !=nil {return nil ,_ggbdd ;};_gada .Data =_dcbe .Pix ();}else {_gada .Data =_fgdbg .Pix ;};case _ef .Image :_babcc :=_fgdbg .Base ();if _babcc .ColorComponents ==1{_gada .BitsPerComponent =int64 (_babcc .BitsPerComponent );_gada .Data =_babcc .Data ; return _gada ,nil ;};_gdbec ,_cdgde :=_ef .GrayConverter .Convert (goimg );if _cdgde !=nil {return nil ,_cdgde ;};_gada .Data =_gdbec .Pix ();default:_cgdd ,_cbdda :=_ef .GrayConverter .Convert (goimg );if _cbdda !=nil {return nil ,_cbdda ;};_gada .Data =_cgdd .Pix (); };return _gada ,nil ;}; // MergePageWith appends page content to source Pdf file page content. func (_begc *PdfAppender )MergePageWith (pageNum int ,page *PdfPage )error {_fade :=pageNum -1;var _addc *PdfPage ;for _gafcb ,_acdb :=range _begc ._egfc {if _gafcb ==_fade {_addc =_acdb ;};};if _addc ==nil {return _d .Errorf ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0050\u0061\u0067\u0065\u0020\u0064\u0069\u0063\u0074\u0069\u006f\u006e\u0061r\u0079\u0020\u0025\u0064\u0020\u006e\u006f\u0074\u0020f\u006f\u0075\u006e\u0064\u0020\u0069\u006e\u0020\u0074\u0068\u0065\u0020\u0073o\u0075\u0072\u0063\u0065\u0020\u0064o\u0063\u0075\u006de\u006e\u0074",pageNum ); };if _addc ._bdeee !=nil &&_addc ._bdeee .GetParser ()==_begc ._eege ._agbcd {_addc =_addc .Duplicate ();_begc ._egfc [_fade ]=_addc ;};page =page .Duplicate ();_gccaa (page );_ecee :=_cggdb (_addc );_gccfc :=_cggdb (page );_egfd :=make (map[_dfg .PdfObjectName ]_dfg .PdfObjectName ); for _bega :=range _gccfc {if _ ,_accc :=_ecee [_bega ];_accc {for _aegc :=1;true ;_aegc ++{_gaggc :=_dfg .PdfObjectName (string (_bega )+_gg .Itoa (_aegc ));if _ ,_gdef :=_ecee [_gaggc ];!_gdef {_egfd [_bega ]=_gaggc ;break ;};};};};_bbfg ,_gfd :=page .GetContentStreams (); if _gfd !=nil {return _gfd ;};_cfce ,_gfd :=_addc .GetContentStreams ();if _gfd !=nil {return _gfd ;};for _eae ,_fef :=range _bbfg {for _egc ,_bggfb :=range _egfd {_fef =_af .ReplaceAll (_fef ,"\u002f"+string (_egc ),"\u002f"+string (_bggfb ));};_bbfg [_eae ]=_fef ; };_cfce =append (_cfce ,_bbfg ...);if _egaaf :=_addc .SetContentStreams (_cfce ,_dfg .NewFlateEncoder ());_egaaf !=nil {return _egaaf ;};_addc ._dbec =append (_addc ._dbec ,page ._dbec ...);if _addc .Resources ==nil {_addc .Resources =NewPdfPageResources (); };if page .Resources !=nil {_addc .Resources .Font =_begc .mergeResources (_addc .Resources .Font ,page .Resources .Font ,_egfd );_addc .Resources .XObject =_begc .mergeResources (_addc .Resources .XObject ,page .Resources .XObject ,_egfd );_addc .Resources .Properties =_begc .mergeResources (_addc .Resources .Properties ,page .Resources .Properties ,_egfd ); if _addc .Resources .ProcSet ==nil {_addc .Resources .ProcSet =page .Resources .ProcSet ;};_addc .Resources .Shading =_begc .mergeResources (_addc .Resources .Shading ,page .Resources .Shading ,_egfd );_addc .Resources .ExtGState =_begc .mergeResources (_addc .Resources .ExtGState ,page .Resources .ExtGState ,_egfd ); };_cbfc ,_gfd :=_addc .GetMediaBox ();if _gfd !=nil {return _gfd ;};_bebf ,_gfd :=page .GetMediaBox ();if _gfd !=nil {return _gfd ;};var _cdbd bool ;if _cbfc .Llx > _bebf .Llx {_cbfc .Llx =_bebf .Llx ;_cdbd =true ;};if _cbfc .Lly > _bebf .Lly {_cbfc .Lly =_bebf .Lly ; _cdbd =true ;};if _cbfc .Urx < _bebf .Urx {_cbfc .Urx =_bebf .Urx ;_cdbd =true ;};if _cbfc .Ury < _bebf .Ury {_cbfc .Ury =_bebf .Ury ;_cdbd =true ;};if _cdbd {_addc .MediaBox =_cbfc ;};return nil ;}; // XObjectType represents the type of an XObject. type XObjectType int ; // UpdateXObjectImageFromImage creates a new XObject Image from an // Image object `img` and default masks from xobjIn. // The default masks are overridden if img.hasAlpha // If `encoder` is nil, uses raw encoding (none). func UpdateXObjectImageFromImage (xobjIn *XObjectImage ,img *Image ,cs PdfColorspace ,encoder _dfg .StreamEncoder )(*XObjectImage ,error ){if encoder ==nil {var _ccbegg error ;encoder ,_ccbegg =img .getSuitableEncoder ();if _ccbegg !=nil {_egb .Log .Debug ("F\u0061\u0069l\u0075\u0072\u0065\u0020\u006f\u006e\u0020\u0066\u0069\u006e\u0064\u0069\u006e\u0067\u0020\u0073\u0075\u0069\u0074\u0061b\u006c\u0065\u0020\u0069\u006d\u0061\u0067\u0065\u0020\u0065\u006e\u0063\u006f\u0064\u0065\u0072,\u0020\u0066\u0061\u006c\u006c\u0062\u0061\u0063\u006b\u0020\u0074\u006f\u0020R\u0061\u0077\u0045\u006e\u0063\u006f\u0064\u0065\u0072\u003a\u0020%\u0076",_ccbegg ); encoder =_dfg .NewRawEncoder ();};};encoder .UpdateParams (img .GetParamsDict ());_cgadd ,_cceef :=encoder .EncodeBytes (img .Data );if _cceef !=nil {_egb .Log .Debug ("\u0045\u0072\u0072or\u0020\u0077\u0069\u0074\u0068\u0020\u0065\u006e\u0063\u006f\u0064\u0069\u006e\u0067\u003a\u0020\u0025\u0076",_cceef ); return nil ,_cceef ;};_feggf :=NewXObjectImage ();_aafaf :=img .Width ;_gecbc :=img .Height ;_feggf .Width =&_aafaf ;_feggf .Height =&_gecbc ;_dgedab :=img .BitsPerComponent ;_feggf .BitsPerComponent =&_dgedab ;_feggf .Filter =encoder ;_feggf .Stream =_cgadd ; if cs ==nil {if img .ColorComponents ==1{_feggf .ColorSpace =NewPdfColorspaceDeviceGray ();if img .BitsPerComponent ==16{switch encoder .(type ){case *_dfg .DCTEncoder :_feggf .ColorSpace =NewPdfColorspaceDeviceRGB ();_dgedab =8;_feggf .BitsPerComponent =&_dgedab ; };};}else if img .ColorComponents ==3{_feggf .ColorSpace =NewPdfColorspaceDeviceRGB ();}else if img .ColorComponents ==4{switch encoder .(type ){case *_dfg .DCTEncoder :_feggf .ColorSpace =NewPdfColorspaceDeviceRGB ();default:_feggf .ColorSpace =NewPdfColorspaceDeviceCMYK (); };}else {return nil ,_bd .New ("c\u006fl\u006f\u0072\u0073\u0070\u0061\u0063\u0065\u0020u\u006e\u0064\u0065\u0066in\u0065\u0064");};}else {_feggf .ColorSpace =cs ;};if len (img ._baeef )!=0{_gceac :=NewXObjectImage ();_gceac .Filter =encoder ;_cfbebd ,_gfdb :=encoder .EncodeBytes (img ._baeef ); if _gfdb !=nil {_egb .Log .Debug ("\u0045\u0072\u0072or\u0020\u0077\u0069\u0074\u0068\u0020\u0065\u006e\u0063\u006f\u0064\u0069\u006e\u0067\u003a\u0020\u0025\u0076",_gfdb );return nil ,_gfdb ;};_gceac .Stream =_cfbebd ;_gceac .BitsPerComponent =_feggf .BitsPerComponent ; _gceac .Width =&img .Width ;_gceac .Height =&img .Height ;_gceac .ColorSpace =NewPdfColorspaceDeviceGray ();_feggf .SMask =_gceac .ToPdfObject ();}else {_feggf .SMask =xobjIn .SMask ;_feggf .ImageMask =xobjIn .ImageMask ;if _feggf .ColorSpace .GetNumComponents ()==1{_fbedee (_feggf ); };};return _feggf ,nil ;}; // CharcodesToUnicodeWithStats is identical to CharcodesToUnicode except it returns more statistical // information about hits and misses from the reverse mapping process. // NOTE: The number of runes returned may be greater than the number of charcodes. // TODO(peterwilliams97): Deprecate in v4 and use only CharcodesToStrings() func (_gdega *PdfFont )CharcodesToUnicodeWithStats (charcodes []_ff .CharCode )(_decgd []rune ,_dfef ,_fegfa int ){_fceca ,_dfef ,_fegfa :=_gdega .CharcodesToStrings (charcodes ,"");return []rune (_af .Join (_fceca ,"")),_dfef ,_fegfa ;}; // IsShading specifies if the pattern is a shading pattern. func (_gffeg *PdfPattern )IsShading ()bool {return _gffeg .PatternType ==2}; // ToPdfObject returns the PDF representation of the tiling pattern. func (_ggfd *PdfTilingPattern )ToPdfObject ()_dfg .PdfObject {_ggfd .PdfPattern .ToPdfObject ();_ebadca :=_ggfd .getDict ();if _ggfd .PaintType !=nil {_ebadca .Set ("\u0050a\u0069\u006e\u0074\u0054\u0079\u0070e",_ggfd .PaintType );};if _ggfd .TilingType !=nil {_ebadca .Set ("\u0054\u0069\u006c\u0069\u006e\u0067\u0054\u0079\u0070\u0065",_ggfd .TilingType ); };if _ggfd .BBox !=nil {_ebadca .Set ("\u0042\u0042\u006f\u0078",_ggfd .BBox .ToPdfObject ());};if _ggfd .XStep !=nil {_ebadca .Set ("\u0058\u0053\u0074e\u0070",_ggfd .XStep );};if _ggfd .YStep !=nil {_ebadca .Set ("\u0059\u0053\u0074e\u0070",_ggfd .YStep ); };if _ggfd .Resources !=nil {_ebadca .Set ("\u0052e\u0073\u006f\u0075\u0072\u0063\u0065s",_ggfd .Resources .ToPdfObject ());};if _ggfd .Matrix !=nil {_ebadca .Set ("\u004d\u0061\u0074\u0072\u0069\u0078",_ggfd .Matrix );};return _ggfd ._adcec ;}; // PdfColorspaceSpecialPattern is a Pattern colorspace. // Can be defined either as /Pattern or with an underlying colorspace [/Pattern cs]. type PdfColorspaceSpecialPattern struct{UnderlyingCS PdfColorspace ;_fdea *_dfg .PdfIndirectObject ;};var _ pdfFont =(*pdfFontType0 )(nil ); // NewCompliancePdfReader creates a PdfReader or an input io.ReadSeeker that during reading will scan the files for the // metadata details. It could be used for the PDF standard implementations like PDF/A or PDF/X. // NOTE: This implementation is in experimental development state. // // Keep in mind that it might change in the subsequent minor versions. func NewCompliancePdfReader (rs _edg .ReadSeeker )(*CompliancePdfReader ,error ){const _ggcg ="\u006d\u006f\u0064\u0065l\u003a\u004e\u0065\u0077\u0043\u006f\u006d\u0070\u006c\u0069a\u006ec\u0065\u0050\u0064\u0066\u0052\u0065\u0061d\u0065\u0072";_faafd ,_gfcb :=_dafc (rs ,&ReaderOpts {ComplianceMode :true },false ,_ggcg ); if _gfcb !=nil {return nil ,_gfcb ;};return &CompliancePdfReader {PdfReader :_faafd },nil ;}; // RemoveKChild removes a specific KDict child from the kChildren slice. func (_cdgda *KDict )RemoveKChild (kChild *KDict )bool {for _gbcca ,_gabdc :=range _cdgda ._dcgedc {if _gabdc ._badbf ==kChild {_cdgda ._dcgedc =append (_cdgda ._dcgedc [:_gbcca ],_cdgda ._dcgedc [_gbcca +1:]...);return true ;};};return false ;}; // ColorToRGB converts gray -> rgb for a single color component. func (_dbbe *PdfColorspaceDeviceGray )ColorToRGB (color PdfColor )(PdfColor ,error ){_efcbd ,_ecgf :=color .(*PdfColorDeviceGray );if !_ecgf {_egb .Log .Debug ("\u0049\u006e\u0070\u0075\u0074\u0020\u0063\u006f\u006c\u006fr\u0020\u006e\u006f\u0074\u0020\u0064\u0065v\u0069\u0063\u0065\u0020\u0067\u0072\u0061\u0079\u0020\u0025\u0054",color ); return nil ,_bd .New ("\u0074\u0079p\u0065\u0020\u0063h\u0065\u0063\u006b\u0020\u0065\u0072\u0072\u006f\u0072");};return NewPdfColorDeviceRGB (float64 (*_efcbd ),float64 (*_efcbd ),float64 (*_efcbd )),nil ;}; // GetContainingPdfObject implements interface PdfModel. func (_cedfb *PdfSignatureReference )GetContainingPdfObject ()_dfg .PdfObject {return _cedfb ._bacgc }; // AddMCIDChild adds a child MCID object. func (_ecdde *KDict )AddMCIDChild (mcid int ){_ecdde ._dcgedc =append (_ecdde ._dcgedc ,&KValue {_dddge :&mcid });}; // SetDuplex sets the value of the duplex. func (_gccgg *ViewerPreferences )SetDuplex (duplex Duplex ){_gccgg ._adeg =duplex }; // GetMCID returns the MCID of the KValue. func (_cgcff *KValue )GetMCID ()*int {return _cgcff ._dddge }; // HasXObjectByName checks if an XObject with a specified keyName is defined. func (_eeeeb *PdfPageResources )HasXObjectByName (keyName _dfg .PdfObjectName )bool {_agbd ,_ :=_eeeeb .GetXObjectByName (keyName );return _agbd !=nil ;}; // NewPdfAnnotationPolyLine returns a new polyline annotation. func NewPdfAnnotationPolyLine ()*PdfAnnotationPolyLine {_gbab :=NewPdfAnnotation ();_gbg :=&PdfAnnotationPolyLine {};_gbg .PdfAnnotation =_gbab ;_gbg .PdfAnnotationMarkup =&PdfAnnotationMarkup {};_gbab .SetContext (_gbg );return _gbg ;}; // NewPdfOutlineTree returns an initialized PdfOutline tree. func NewPdfOutlineTree ()*PdfOutline {_gdcc :=NewPdfOutline ();_gdcc ._cface =&_gdcc ;return _gdcc }; // PdfAnnotationLink represents Link annotations. // (Section 12.5.6.5 p. 403). type PdfAnnotationLink struct{*PdfAnnotation ;A _dfg .PdfObject ;Dest _dfg .PdfObject ;H _dfg .PdfObject ;PA _dfg .PdfObject ;QuadPoints _dfg .PdfObject ;BS _dfg .PdfObject ;_gdc *PdfAction ;_ebdec *PdfReader ;};func (_bccda fontCommon )coreString ()string {_agaca :=""; if _bccda ._cebfd !=nil {_agaca =_bccda ._cebfd .String ();};return _d .Sprintf ("\u0025#\u0071\u0020%\u0023\u0071\u0020%\u0071\u0020\u006f\u0062\u006a\u003d\u0025d\u0020\u0054\u006f\u0055\u006e\u0069c\u006f\u0064\u0065\u003d\u0025\u0074\u0020\u0066\u006c\u0061\u0067s\u003d\u0030\u0078\u0025\u0030\u0078\u0020\u0025\u0073",_bccda ._gdab ,_bccda ._dbcbc ,_bccda ._gadbd ,_bccda ._egggc ,_bccda ._eaaga !=nil ,_bccda .fontFlags (),_agaca ); }; // GetContainingPdfObject returns the container of the outline item (indirect object). func (_ecega *PdfOutlineItem )GetContainingPdfObject ()_dfg .PdfObject {return _ecega ._fcecb }; // NewCompositePdfFontFromTTF loads a composite TTF font. Composite fonts can // be used to represent unicode fonts which can have multi-byte character codes, representing a wide // range of values. They are often used for symbolic languages, including Chinese, Japanese and Korean. // It is represented by a Type0 Font with an underlying CIDFontType2 and an Identity-H encoding map. // TODO: May be extended in the future to support a larger variety of CMaps and vertical fonts. // NOTE: For simple fonts, use NewPdfFontFromTTF. func NewCompositePdfFontFromTTF (r _edg .ReadSeeker )(*PdfFont ,error ){_dgbeed ,_dafb :=_edg .ReadAll (r );if _dafb !=nil {_egb .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0055\u006e\u0061\u0062\u006c\u0065 \u0074\u006f\u0020\u0072\u0065\u0061d\u0020\u0066\u006f\u006e\u0074\u0020\u0063\u006f\u006e\u0074\u0065\u006e\u0074s\u003a\u0020\u0025\u0076",_dafb ); return nil ,_dafb ;};_dgbd ,_dafb :=_bf .TtfParse (_cca .NewReader (_dgbeed ));if _dafb !=nil {_egb .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a \u0077\u0068\u0069\u006c\u0065\u0020\u006c\u006f\u0061\u0064\u0069\u006e\u0067 \u0074\u0074\u0066\u0020\u0066\u006f\u006et\u003a\u0020\u0025\u0076",_dafb ); return nil ,_dafb ;};_acefa :=&pdfCIDFontType2 {fontCommon :fontCommon {_gdab :"\u0043\u0049\u0044F\u006f\u006e\u0074\u0054\u0079\u0070\u0065\u0032"},CIDToGIDMap :_dfg .MakeName ("\u0049\u0064\u0065\u006e\u0074\u0069\u0074\u0079")};if len (_dgbd .Widths )<=0{return nil ,_bd .New ("\u0045\u0052\u0052O\u0052\u003a\u0020\u004d\u0069\u0073\u0073\u0069\u006e\u0067\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0064\u0020\u0061\u0074\u0074\u0072\u0069\u0062\u0075\u0074\u0065 \u0028\u0057\u0069\u0064\u0074\u0068\u0073\u0029"); };_gcgbe :=1000.0/float64 (_dgbd .UnitsPerEm );_cfac :=_gcgbe *float64 (_dgbd .Widths [0]);_daff :=make (map[rune ]int );_gaagf :=make (map[_bf .GID ]int );_ccbcab :=_bf .GID (len (_dgbd .Widths ));for _ebcf ,_adba :=range _dgbd .Chars {if _adba > _ccbcab -1{continue ; };_aaga :=int (_gcgbe *float64 (_dgbd .Widths [_adba ]));_daff [_ebcf ]=_aaga ;_gaagf [_adba ]=_aaga ;};_acefa ._cede =_daff ;_acefa .DW =_dfg .MakeInteger (int64 (_cfac ));_bffbg :=_dffdg (_gaagf ,uint16 (_ccbcab ));_acefa .W =_dfg .MakeIndirectObject (_bffbg ); _bcge :=_dfg .MakeDict ();_bcge .Set ("\u004f\u0072\u0064\u0065\u0072\u0069\u006e\u0067",_dfg .MakeString ("\u0049\u0064\u0065\u006e\u0074\u0069\u0074\u0079"));_bcge .Set ("\u0052\u0065\u0067\u0069\u0073\u0074\u0072\u0079",_dfg .MakeString ("\u0041\u0064\u006fb\u0065")); _bcge .Set ("\u0053\u0075\u0070\u0070\u006c\u0065\u006d\u0065\u006e\u0074",_dfg .MakeInteger (0));_acefa .CIDSystemInfo =_bcge ;_deaf :=&PdfFontDescriptor {FontName :_dfg .MakeName (_dgbd .PostScriptName ),Ascent :_dfg .MakeFloat (_gcgbe *float64 (_dgbd .TypoAscender )),Descent :_dfg .MakeFloat (_gcgbe *float64 (_dgbd .TypoDescender )),CapHeight :_dfg .MakeFloat (_gcgbe *float64 (_dgbd .CapHeight )),FontBBox :_dfg .MakeArrayFromFloats ([]float64 {_gcgbe *float64 (_dgbd .Xmin ),_gcgbe *float64 (_dgbd .Ymin ),_gcgbe *float64 (_dgbd .Xmax ),_gcgbe *float64 (_dgbd .Ymax )}),ItalicAngle :_dfg .MakeFloat (_dgbd .ItalicAngle ),MissingWidth :_dfg .MakeFloat (_cfac )}; _ddcaf ,_dafb :=_dfg .MakeStream (_dgbeed ,_dfg .NewFlateEncoder ());if _dafb !=nil {_egb .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0055\u006e\u0061\u0062\u006c\u0065\u0020\u0074o\u0020m\u0061\u006b\u0065\u0020\u0073\u0074\u0072\u0065\u0061\u006d\u003a\u0020\u0025\u0076",_dafb ); return nil ,_dafb ;};_ddcaf .PdfObjectDictionary .Set ("\u004ce\u006e\u0067\u0074\u0068\u0031",_dfg .MakeInteger (int64 (len (_dgbeed ))));_deaf .FontFile2 =_ddcaf ;if _dgbd .Bold {_deaf .StemV =_dfg .MakeInteger (120);}else {_deaf .StemV =_dfg .MakeInteger (70); };_adbf :=_dfefc ;if _dgbd .IsFixedPitch {_adbf |=_dbacd ;};if _dgbd .ItalicAngle !=0{_adbf |=_dfdb ;};_deaf .Flags =_dfg .MakeInteger (int64 (_adbf ));_acefa ._dbcbc =_dgbd .PostScriptName ;_acefa ._cebfd =_deaf ;_dcac :=pdfFontType0 {fontCommon :fontCommon {_gdab :"\u0054\u0079\u0070e\u0030",_dbcbc :_dgbd .PostScriptName },DescendantFont :&PdfFont {_fab :_acefa },Encoding :_dfg .MakeName ("\u0049\u0064\u0065\u006e\u0074\u0069\u0074\u0079\u002d\u0048"),_gbaf :_dgbd .NewEncoder ()}; if len (_dgbd .Chars )> 0{_ffdf :=make (map[_efg .CharCode ]rune ,len (_dgbd .Chars ));for _bfda ,_cabd :=range _dgbd .Chars {_egccb :=_efg .CharCode (_cabd );if _debce ,_gdfcb :=_ffdf [_egccb ];!_gdfcb ||(_gdfcb &&_debce > _bfda ){_ffdf [_egccb ]=_bfda ; };};_dcac ._bgdcbc =_efg .NewToUnicodeCMap (_ffdf );};_eabdd :=PdfFont {_fab :&_dcac };return &_eabdd ,nil ;};func _aedcf (_gdaee []*_dfg .PdfObjectStream )*_dfg .PdfObjectArray {if len (_gdaee )==0{return nil ;};_cffafd :=make ([]_dfg .PdfObject ,0,len (_gdaee )); for _ ,_ggdgc :=range _gdaee {_cffafd =append (_cffafd ,_ggdgc );};return _dfg .MakeArray (_cffafd ...);}; // NewPdfOutputIntentFromPdfObject creates a new PdfOutputIntent from the input core.PdfObject. func NewPdfOutputIntentFromPdfObject (object _dfg .PdfObject )(*PdfOutputIntent ,error ){_fbfg :=&PdfOutputIntent {};if _fcdf :=_fbfg .ParsePdfObject (object );_fcdf !=nil {return nil ,_fcdf ;};return _fbfg ,nil ;}; // SetPageNumber sets the page number. func (_cbae *KDict )SetPageNumber (pageNumber int64 ){_cbae ._gabf =pageNumber };func _debbd (_cgdfd _dfg .PdfObject )(*PdfShading ,error ){_bbccg :=&PdfShading {};var _dcgcb *_dfg .PdfObjectDictionary ;if _cbebc ,_dada :=_dfg .GetIndirect (_cgdfd );_dada {_bbccg ._gdfdg =_cbebc ; _ffffa ,_faegec :=_cbebc .PdfObject .(*_dfg .PdfObjectDictionary );if !_faegec {_egb .Log .Debug ("\u004f\u0062\u006a\u0065c\u0074\u0020\u006e\u006f\u0074\u0020\u0061\u0020\u0064\u0069c\u0074i\u006f\u006e\u0061\u0072\u0079\u0020\u0074y\u0070\u0065");return nil ,_dfg .ErrTypeError ; };_dcgcb =_ffffa ;}else if _eebca ,_ccefcg :=_dfg .GetStream (_cgdfd );_ccefcg {_bbccg ._gdfdg =_eebca ;_dcgcb =_eebca .PdfObjectDictionary ;}else if _fgedc ,_ggdda :=_dfg .GetDict (_cgdfd );_ggdda {_bbccg ._gdfdg =_fgedc ;_dcgcb =_fgedc ;}else {_egb .Log .Debug ("O\u0062\u006a\u0065\u0063\u0074\u0020t\u0079\u0070\u0065\u0020\u0075\u006e\u0065\u0078\u0070e\u0063\u0074\u0065d\u0020(\u0025\u0054\u0029",_cgdfd ); return nil ,_dfg .ErrTypeError ;};if _dcgcb ==nil {_egb .Log .Debug ("\u0044i\u0063t\u0069\u006f\u006e\u0061\u0072y\u0020\u006di\u0073\u0073\u0069\u006e\u0067");return nil ,_bd .New ("\u0064\u0069\u0063t\u0020\u006d\u0069\u0073\u0073\u0069\u006e\u0067"); };_cgdfd =_dcgcb .Get ("S\u0068\u0061\u0064\u0069\u006e\u0067\u0054\u0079\u0070\u0065");if _cgdfd ==nil {_egb .Log .Debug ("\u0052\u0065q\u0075\u0069\u0072\u0065\u0064\u0020\u0073\u0068\u0061\u0064\u0069\u006e\u0067\u0020\u0074\u0079\u0070\u0065\u0020\u006d\u0069\u0073si\u006e\u0067"); return nil ,ErrRequiredAttributeMissing ;};_cgdfd =_dfg .TraceToDirectObject (_cgdfd );_eedbf ,_agbde :=_cgdfd .(*_dfg .PdfObjectInteger );if !_agbde {_egb .Log .Debug ("\u0049\u006e\u0076al\u0069\u0064\u0020\u0074\u0079\u0070\u0065\u0020\u0066o\u0072 \u0073h\u0061d\u0069\u006e\u0067\u0020\u0074\u0079\u0070\u0065\u0020\u0028\u0025\u0054\u0029",_cgdfd ); return nil ,_dfg .ErrTypeError ;};if *_eedbf < 1||*_eedbf > 7{_egb .Log .Debug ("\u0049\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0073\u0068\u0061\u0064\u0069\u006e\u0067\u0020\u0074\u0079\u0070\u0065\u002c\u0020\u006e\u006ft\u0020\u0031\u002d\u0037\u0020(\u0067\u006ft\u0020\u0025\u0064\u0029",*_eedbf ); return nil ,_dfg .ErrTypeError ;};_bbccg .ShadingType =_eedbf ;_cgdfd =_dcgcb .Get ("\u0043\u006f\u006c\u006f\u0072\u0053\u0070\u0061\u0063\u0065");if _cgdfd ==nil {_egb .Log .Debug ("\u0052\u0065\u0071\u0075\u0069\u0072e\u0064\u0020\u0043\u006f\u006c\u006f\u0072\u0053\u0070\u0061\u0063\u0065\u0020e\u006e\u0074\u0072\u0079\u0020\u006d\u0069s\u0073\u0069\u006e\u0067"); return nil ,ErrRequiredAttributeMissing ;};_gddebc ,_dcbdc :=NewPdfColorspaceFromPdfObject (_cgdfd );if _dcbdc !=nil {_egb .Log .Debug ("\u0046\u0061i\u006c\u0065\u0064\u0020\u006c\u006f\u0061\u0064\u0069\u006e\u0067\u0020\u0063\u006f\u006c\u006f\u0072\u0073\u0070\u0061\u0063\u0065: \u0025\u0076",_dcbdc ); return nil ,_dcbdc ;};_bbccg .ColorSpace =_gddebc ;_cgdfd =_dcgcb .Get ("\u0042\u0061\u0063\u006b\u0067\u0072\u006f\u0075\u006e\u0064");if _cgdfd !=nil {_cgdfd =_dfg .TraceToDirectObject (_cgdfd );_bcdbb ,_affb :=_cgdfd .(*_dfg .PdfObjectArray );if !_affb {_egb .Log .Debug ("\u0042\u0061\u0063\u006b\u0067r\u006f\u0075\u006e\u0064\u0020\u0073\u0068\u006f\u0075\u006c\u0064\u0020\u0062e\u0020\u0073\u0070\u0065\u0063\u0069\u0066\u0069\u0065\u0064\u0020\u0062\u0079\u0020\u0061\u006e\u0020\u0061\u0072\u0072\u0061\u0079\u0020\u0028\u0067\u006f\u0074\u0020\u0025\u0054)",_cgdfd ); return nil ,_dfg .ErrTypeError ;};_bbccg .Background =_bcdbb ;};_cgdfd =_dcgcb .Get ("\u0042\u0042\u006f\u0078");if _cgdfd !=nil {_cgdfd =_dfg .TraceToDirectObject (_cgdfd );_edebg ,_aafba :=_cgdfd .(*_dfg .PdfObjectArray );if !_aafba {_egb .Log .Debug ("\u0042\u0061\u0063\u006b\u0067r\u006f\u0075\u006e\u0064\u0020\u0073\u0068\u006f\u0075\u006c\u0064\u0020\u0062e\u0020\u0073\u0070\u0065\u0063\u0069\u0066\u0069\u0065\u0064\u0020\u0062\u0079\u0020\u0061\u006e\u0020\u0061\u0072\u0072\u0061\u0079\u0020\u0028\u0067\u006f\u0074\u0020\u0025\u0054)",_cgdfd ); return nil ,_dfg .ErrTypeError ;};_degaf ,_dcged :=NewPdfRectangle (*_edebg );if _dcged !=nil {_egb .Log .Debug ("\u0042\u0042\u006f\u0078\u0020\u0065\u0072\u0072\u006fr\u003a\u0020\u0025\u0076",_dcged );return nil ,_dcged ;};_bbccg .BBox =_degaf ;};_cgdfd =_dcgcb .Get ("\u0041n\u0074\u0069\u0041\u006c\u0069\u0061s"); if _cgdfd !=nil {_cgdfd =_dfg .TraceToDirectObject (_cgdfd );_gbccd ,_afbag :=_cgdfd .(*_dfg .PdfObjectBool );if !_afbag {_egb .Log .Debug ("A\u006e\u0074\u0069\u0041\u006c\u0069\u0061\u0073\u0020i\u006e\u0076\u0061\u006c\u0069\u0064\u0020ty\u0070\u0065\u002c\u0020s\u0068\u006f\u0075\u006c\u0064\u0020\u0062\u0065\u0020bo\u006f\u006c \u0028\u0067\u006f\u0074\u0020\u0025\u0054\u0029",_cgdfd ); return nil ,_dfg .ErrTypeError ;};_bbccg .AntiAlias =_gbccd ;};switch *_eedbf {case 1:_fedda ,_edced :=_daeg (_dcgcb );if _edced !=nil {return nil ,_edced ;};_fedda .PdfShading =_bbccg ;_bbccg ._fdbfb =_fedda ;return _bbccg ,nil ;case 2:_fabc ,_gecgf :=_bbcge (_dcgcb ); if _gecgf !=nil {return nil ,_gecgf ;};_fabc .PdfShading =_bbccg ;_bbccg ._fdbfb =_fabc ;return _bbccg ,nil ;case 3:_fgaea ,_ceegd :=_aacg (_dcgcb );if _ceegd !=nil {return nil ,_ceegd ;};_fgaea .PdfShading =_bbccg ;_bbccg ._fdbfb =_fgaea ;return _bbccg ,nil ; case 4:_ccae ,_dfffc :=_gagdd (_dcgcb );if _dfffc !=nil {return nil ,_dfffc ;};_ccae .PdfShading =_bbccg ;_bbccg ._fdbfb =_ccae ;return _bbccg ,nil ;case 5:_abecf ,_edceb :=_agbff (_dcgcb );if _edceb !=nil {return nil ,_edceb ;};_abecf .PdfShading =_bbccg ; _bbccg ._fdbfb =_abecf ;return _bbccg ,nil ;case 6:_gdefgd ,_abdba :=_begg (_dcgcb );if _abdba !=nil {return nil ,_abdba ;};_gdefgd .PdfShading =_bbccg ;_bbccg ._fdbfb =_gdefgd ;return _bbccg ,nil ;case 7:_fbgbc ,_fcbdb :=_dfefb (_dcgcb );if _fcbdb !=nil {return nil ,_fcbdb ; };_fbgbc .PdfShading =_bbccg ;_bbccg ._fdbfb =_fbgbc ;return _bbccg ,nil ;};return nil ,_bd .New ("u\u006ek\u006e\u006f\u0077\u006e\u0020\u0073\u0068\u0061d\u0069\u006e\u0067\u0020ty\u0070\u0065");};func (_efabd *PdfReader )newPdfFieldSignatureFromDict (_aegfb *_dfg .PdfObjectDictionary )(*PdfFieldSignature ,error ){_bbfga :=&PdfFieldSignature {}; _egab ,_dbaf :=_dfg .GetIndirect (_aegfb .Get ("\u0056"));if _dbaf {var _eagb error ;_bbfga .V ,_eagb =_efabd .newPdfSignatureFromIndirect (_egab );if _eagb !=nil {return nil ,_eagb ;};};_bbfga .Lock ,_ =_dfg .GetIndirect (_aegfb .Get ("\u004c\u006f\u0063\u006b")); _bbfga .SV ,_ =_dfg .GetIndirect (_aegfb .Get ("\u0053\u0056"));return _bbfga ,nil ;}; // XObjectImage (Table 89 in 8.9.5.1). // Implements PdfModel interface. type XObjectImage struct{ // ColorSpace PdfObject Width *int64 ;Height *int64 ;ColorSpace PdfColorspace ;BitsPerComponent *int64 ;Filter _dfg .StreamEncoder ;Intent _dfg .PdfObject ;ImageMask _dfg .PdfObject ;Mask _dfg .PdfObject ;Matte _dfg .PdfObject ;Decode _dfg .PdfObject ;Interpolate _dfg .PdfObject ; Alternatives _dfg .PdfObject ;SMask _dfg .PdfObject ;SMaskInData _dfg .PdfObject ;Name _dfg .PdfObject ;StructParent _dfg .PdfObject ;ID _dfg .PdfObject ;OPI _dfg .PdfObject ;Metadata _dfg .PdfObject ;OC _dfg .PdfObject ;Stream []byte ;_gfgedd *_dfg .PdfObjectStream ; _fbegd bool ;};func _fccef (_ddae _dfg .PdfObject )[]*_dfg .PdfObjectStream {if _ddae ==nil {return nil ;};_cfcc ,_dbabg :=_dfg .GetArray (_ddae );if !_dbabg ||_cfcc .Len ()==0{return nil ;};_ecad :=make ([]*_dfg .PdfObjectStream ,0,_cfcc .Len ());for _ ,_caca :=range _cfcc .Elements (){if _bcefe ,_decce :=_dfg .GetStream (_caca ); _decce {_ecad =append (_ecad ,_bcefe );};};return _ecad ;};func (_gacea *LTV )generateVRIKey (_cged *PdfSignature )(string ,error ){_fdbae ,_gbace :=_fcabf (_cged .Contents .Bytes ());if _gbace !=nil {return "",_gbace ;};return _af .ToUpper (_bc .EncodeToString (_fdbae )),nil ; }; // GetContainingPdfObject returns the container of the resources object (indirect object). func (_bgbeg *PdfPageResources )GetContainingPdfObject ()_dfg .PdfObject {return _bgbeg ._gffaff }; // IsValid checks if the given pdf output intent type is valid. func (_decgdg PdfOutputIntentType )IsValid ()bool {return _decgdg >=PdfOutputIntentTypeA1 &&_decgdg <=PdfOutputIntentTypeX ;};func _bdaaf (_edfac string )(string ,error ){var _caaafb _cca .Buffer ;_caaafb .WriteString (_edfac );_dgeec :=make ([]byte ,8+16); _dcfaf :=_ge .Now ().UTC ().UnixNano ();_bg .BigEndian .PutUint64 (_dgeec ,uint64 (_dcfaf ));_ ,_aaecg :=_da .Read (_dgeec [8:]);if _aaecg !=nil {return "",_aaecg ;};_caaafb .WriteString (_bc .EncodeToString (_dgeec ));return _caaafb .String (),nil ;}; // ToPdfObject implements interface PdfModel. func (_debb *PdfAnnotationPolyLine )ToPdfObject ()_dfg .PdfObject {_debb .PdfAnnotation .ToPdfObject ();_bee :=_debb ._afae ;_edf :=_bee .PdfObject .(*_dfg .PdfObjectDictionary );_debb .appendToPdfDictionary (_edf );_edf .SetIfNotNil ("\u0053u\u0062\u0074\u0079\u0070\u0065",_dfg .MakeName ("\u0050\u006f\u006c\u0079\u004c\u0069\u006e\u0065")); _edf .SetIfNotNil ("\u0056\u0065\u0072\u0074\u0069\u0063\u0065\u0073",_debb .Vertices );_edf .SetIfNotNil ("\u004c\u0045",_debb .LE );_edf .SetIfNotNil ("\u0042\u0053",_debb .BS );_edf .SetIfNotNil ("\u0049\u0043",_debb .IC );_edf .SetIfNotNil ("\u0042\u0045",_debb .BE ); _edf .SetIfNotNil ("\u0049\u0054",_debb .IT );_edf .SetIfNotNil ("\u004de\u0061\u0073\u0075\u0072\u0065",_debb .Measure );return _bee ;}; // CompliancePdfReader is a wrapper over PdfReader that is used for verifying if the input Pdf document matches the // compliance rules of standards like PDF/A. // NOTE: This implementation is in experimental development state. // // Keep in mind that it might change in the subsequent minor versions. type CompliancePdfReader struct{*PdfReader ;_gdcg _dfg .ParserMetadata ;}; // SetPdfCreator sets the Creator attribute of the output PDF. func SetPdfCreator (creator string ){_dfbaa .Lock ();defer _dfbaa .Unlock ();_gecfb =creator };func (_eed *PdfAnnotationMarkup )appendToPdfDictionary (_fcab *_dfg .PdfObjectDictionary ){_fcab .SetIfNotNil ("\u0054",_eed .T );if _eed .Popup !=nil {_fcab .Set ("\u0050\u006f\u0070u\u0070",_eed .Popup .ToPdfObject ()); };_fcab .SetIfNotNil ("\u0043\u0041",_eed .CA );_fcab .SetIfNotNil ("\u0052\u0043",_eed .RC );_fcab .SetIfNotNil ("\u0043\u0072\u0065a\u0074\u0069\u006f\u006e\u0044\u0061\u0074\u0065",_eed .CreationDate );_fcab .SetIfNotNil ("\u0049\u0052\u0054",_eed .IRT ); _fcab .SetIfNotNil ("\u0053\u0075\u0062\u006a",_eed .Subj );_fcab .SetIfNotNil ("\u0052\u0054",_eed .RT );_fcab .SetIfNotNil ("\u0049\u0054",_eed .IT );_fcab .SetIfNotNil ("\u0045\u0078\u0044\u0061\u0074\u0061",_eed .ExData );}; // SetAlpha sets the alpha layer for the image. func (_fedag *Image )SetAlpha (alpha []byte ){_fedag ._baeef =alpha }; // L returns the value of the L component of the color. func (_dgfe *PdfColorLab )L ()float64 {return _dgfe [0]}; // RepairAcroForm attempts to rebuild the AcroForm fields using the widget // annotations present in the document pages. Pass nil for the opts parameter // in order to use the default options. // NOTE: Currently, the opts parameter is declared in order to enable adding // future options, but passing nil will always result in the default options // being used. func (_eadff *PdfReader )RepairAcroForm (opts *AcroFormRepairOptions )error {var _dgeeb []*PdfField ;_cgfgb :=map[*_dfg .PdfIndirectObject ]struct{}{};for _ ,_agdgg :=range _eadff .PageList {_ebcdd ,_fdgbcf :=_agdgg .GetAnnotations ();if _fdgbcf !=nil {return _fdgbcf ; };for _ ,_bbegf :=range _ebcdd {var _fddea *PdfField ;switch _dcedb :=_bbegf .GetContext ().(type ){case *PdfAnnotationWidget :if _dcedb ._bcad !=nil {_fddea =_dcedb ._bcad ;break ;};if _dgge ,_agdeb :=_dfg .GetIndirect (_dcedb .Parent );_agdeb {_fddea ,_fdgbcf =_eadff .newPdfFieldFromIndirectObject (_dgge ,nil ); if _fdgbcf ==nil {break ;};_egb .Log .Debug ("W\u0041\u0052\u004e\u003a\u0020\u0063\u006f\u0075\u006c\u0064\u0020\u006e\u006f\u0074\u0020\u0070\u0061\u0072s\u0065\u0020\u0066\u006f\u0072\u006d\u0020\u0066\u0069\u0065ld\u0020\u0025\u002bv\u003a \u0025\u0076",_dgge ,_fdgbcf ); };if _dcedb ._afae !=nil {_fddea ,_fdgbcf =_eadff .newPdfFieldFromIndirectObject (_dcedb ._afae ,nil );if _fdgbcf ==nil {break ;};_egb .Log .Debug ("W\u0041\u0052\u004e\u003a\u0020\u0063\u006f\u0075\u006c\u0064\u0020\u006e\u006f\u0074\u0020\u0070\u0061\u0072s\u0065\u0020\u0066\u006f\u0072\u006d\u0020\u0066\u0069\u0065ld\u0020\u0025\u002bv\u003a \u0025\u0076",_dcedb ._afae ,_fdgbcf ); };};if _fddea ==nil {continue ;};if _ ,_beabe :=_cgfgb [_fddea ._caaa ];_beabe {continue ;};_cgfgb [_fddea ._caaa ]=struct{}{};_dgeeb =append (_dgeeb ,_fddea );};};if len (_dgeeb )==0{return nil ;};if _eadff .AcroForm ==nil {_eadff .AcroForm =NewPdfAcroForm (); };_eadff .AcroForm .Fields =&_dgeeb ;return nil ;};func _deba (_eabffc *_ef .ImageBase )(_bceaa Image ){_bceaa .Width =int64 (_eabffc .Width );_bceaa .Height =int64 (_eabffc .Height );_bceaa .BitsPerComponent =int64 (_eabffc .BitsPerComponent );_bceaa .ColorComponents =_eabffc .ColorComponents ; _bceaa .Data =_eabffc .Data ;_bceaa ._begcc =_eabffc .Decode ;_bceaa ._baeef =_eabffc .Alpha ;return _bceaa ;};func (_begaa *PdfWriter )optimizeDocument ()error {if _begaa ._fbafb ==nil {return nil ;};_begdg ,_ebgfa :=_dfg .GetDict (_begaa ._acace );if !_ebgfa {return _bd .New ("\u0061\u006e\u0020in\u0066\u006f\u0020\u006f\u0062\u006a\u0065\u0063\u0074 \u0069s\u0020n\u006ft\u0020\u0061\u0020\u0064\u0069\u0063\u0074\u0069\u006f\u006e\u0061\u0072\u0079"); };_agged :=_beg .Document {ID :[2]string {_begaa ._baeaee ,_begaa ._dbddd },Version :_begaa ._cfbcb ,Objects :_begaa ._abcef ,Info :_begdg ,Crypt :_begaa ._gbdfc ,UseHashBasedID :_begaa ._faacaa };if _cddaa :=_begaa ._fbafb .ApplyStandard (&_agged );_cddaa !=nil {return _cddaa ; };_begaa ._baeaee ,_begaa ._dbddd =_agged .ID [0],_agged .ID [1];_begaa ._cfbcb =_agged .Version ;_begaa ._abcef =_agged .Objects ;_begaa ._acace .PdfObject =_agged .Info ;_begaa ._faacaa =_agged .UseHashBasedID ;_begaa ._gbdfc =_agged .Crypt ;_deadgd :=make (map[_dfg .PdfObject ]struct{},len (_begaa ._abcef )); for _ ,_gcaa :=range _begaa ._abcef {_deadgd [_gcaa ]=struct{}{};};_begaa ._bgbee =_deadgd ;return nil ;};func _gcacc (_cebcc *_dfg .PdfObjectArray )(float64 ,error ){_cffdca ,_fgfdc :=_cebcc .ToFloat64Array ();if _fgfdc !=nil {_egb .Log .Debug ("\u0042\u0061\u0064\u0020\u004d\u0061\u0074\u0074\u0065\u0020\u0061\u0072\u0072\u0061\u0079:\u0020m\u0061\u0074\u0074\u0065\u003d\u0025\u0073\u0020\u0065\u0072\u0072\u003d\u0025\u0076",_cebcc ,_fgfdc ); };switch len (_cffdca ){case 1:return _cffdca [0],nil ;case 3:_bdaba :=PdfColorspaceDeviceRGB {};_dbfe ,_gggdc :=_bdaba .ColorFromFloats (_cffdca );if _gggdc !=nil {return 0.0,_gggdc ;};return _dbfe .(*PdfColorDeviceRGB ).ToGray ().Val (),nil ;case 4:_decda :=PdfColorspaceDeviceCMYK {}; _bbed ,_caedb :=_decda .ColorFromFloats (_cffdca );if _caedb !=nil {return 0.0,_caedb ;};_bbfa ,_caedb :=_decda .ColorToRGB (_bbed .(*PdfColorDeviceCMYK ));if _caedb !=nil {return 0.0,_caedb ;};return _bbfa .(*PdfColorDeviceRGB ).ToGray ().Val (),nil ; };_fgfdc =_bd .New ("\u0062a\u0064 \u004d\u0061\u0074\u0074\u0065\u0020\u0063\u006f\u006c\u006f\u0072");_egb .Log .Error ("\u0074\u006f\u0047ra\u0079\u003a\u0020\u006d\u0061\u0074\u0074\u0065\u003d\u0025\u0073\u0020\u0065\u0072\u0072\u003d\u0025\u0076",_cebcc ,_fgfdc ); return 0.0,_fgfdc ;};func (_dffg *PdfAppender )mergeResources (_abg ,_babf _dfg .PdfObject ,_adec map[_dfg .PdfObjectName ]_dfg .PdfObjectName )_dfg .PdfObject {if _babf ==nil &&_abg ==nil {return nil ;};if _babf ==nil {return _abg ;};_afgc ,_dcef :=_dfg .GetDict (_babf ); if !_dcef {return _abg ;};if _abg ==nil {_agfde :=_dfg .MakeDict ();_agfde .Merge (_afgc );return _babf ;};_dfcb ,_dcef :=_dfg .GetDict (_abg );if !_dcef {_egb .Log .Error ("\u0045\u0072\u0072or\u0020\u0072\u0065\u0073\u006f\u0075\u0072\u0063\u0065 \u0069s\u0020n\u006ft\u0020\u0061\u0020\u0064\u0069\u0063\u0074\u0069\u006f\u006e\u0061\u0072\u0079"); _dfcb =_dfg .MakeDict ();};for _ ,_ddg :=range _afgc .Keys (){if _cbdg ,_abe :=_adec [_ddg ];_abe {_dfcb .Set (_cbdg ,_afgc .Get (_ddg ));}else {_dfcb .Set (_ddg ,_afgc .Get (_ddg ));};};return _dfcb ;}; // NewPdfFilespecFromObj creates and returns a new PdfFilespec object. func NewPdfFilespecFromObj (obj _dfg .PdfObject )(*PdfFilespec ,error ){_ccbfc :=&PdfFilespec {};var _feege *_dfg .PdfObjectDictionary ;if _dddbg ,_dcbb :=_dfg .GetIndirect (obj );_dcbb {_ccbfc ._bcadf =_dddbg ;_dead ,_bggbe :=_dfg .GetDict (_dddbg .PdfObject ); if !_bggbe {_egb .Log .Debug ("\u004f\u0062\u006a\u0065c\u0074\u0020\u006e\u006f\u0074\u0020\u0061\u0020\u0064\u0069c\u0074i\u006f\u006e\u0061\u0072\u0079\u0020\u0074y\u0070\u0065");return nil ,_dfg .ErrTypeError ;};_feege =_dead ;}else if _eefc ,_ecdb :=_dfg .GetDict (obj ); _ecdb {_ccbfc ._bcadf =_eefc ;_feege =_eefc ;}else {_egb .Log .Debug ("O\u0062\u006a\u0065\u0063\u0074\u0020t\u0079\u0070\u0065\u0020\u0075\u006e\u0065\u0078\u0070e\u0063\u0074\u0065d\u0020(\u0025\u0054\u0029",obj );return nil ,_dfg .ErrTypeError ;};if _feege ==nil {_egb .Log .Debug ("\u0044i\u0063t\u0069\u006f\u006e\u0061\u0072y\u0020\u006di\u0073\u0073\u0069\u006e\u0067"); return nil ,_bd .New ("\u0064\u0069\u0063t\u0020\u006d\u0069\u0073\u0073\u0069\u006e\u0067");};if _dbffb :=_feege .Get ("\u0054\u0079\u0070\u0065");_dbffb !=nil {_bced ,_agafa :=_dbffb .(*_dfg .PdfObjectName );if !_agafa {_egb .Log .Trace ("\u0049\u006e\u0063\u006f\u006d\u0070\u0061\u0074\u0069\u0062\u0069\u006c\u0069\u0074\u0079\u0021\u0020\u0049\u006e\u0076a\u006c\u0069\u0064\u0020\u0074\u0079\u0070\u0065\u0020\u006f\u0066\u0020\u0054\u0079\u0070\u0065\u0020\u0028\u0025\u0054\u0029\u0020\u002d\u0020\u0073\u0068\u006f\u0075\u006c\u0064 \u0062\u0065\u0020\u004e\u0061m\u0065",_dbffb ); }else {if *_bced !="\u0046\u0069\u006c\u0065\u0073\u0070\u0065\u0063"{_egb .Log .Trace ("\u0055\u006e\u0073\u0075\u0073\u0070e\u0063\u0074\u0065\u0064\u0020\u0054\u0079\u0070\u0065\u0020\u0021\u003d\u0020F\u0069\u006c\u0065\u0073\u0070\u0065\u0063 \u0028\u0025\u0073\u0029",*_bced ); };};};if _fggc :=_feege .Get ("\u0046\u0053");_fggc !=nil {_ccbfc .FS =_fggc ;};if _bcfg :=_feege .Get ("\u0046");_bcfg !=nil {_ccbfc .F =_bcfg ;};if _eabb :=_feege .Get ("\u0055\u0046");_eabb !=nil {_ccbfc .UF =_eabb ;};if _cgba :=_feege .Get ("\u0044\u004f\u0053"); _cgba !=nil {_ccbfc .DOS =_cgba ;};if _fdabb :=_feege .Get ("\u004d\u0061\u0063");_fdabb !=nil {_ccbfc .Mac =_fdabb ;};if _dgc :=_feege .Get ("\u0055\u006e\u0069\u0078");_dgc !=nil {_ccbfc .Unix =_dgc ;};if _gedfd :=_feege .Get ("\u0049\u0044");_gedfd !=nil {_ccbfc .ID =_gedfd ; };if _caaae :=_feege .Get ("\u0056");_caaae !=nil {_ccbfc .V =_caaae ;};if _baaf :=_feege .Get ("\u0045\u0046");_baaf !=nil {_ccbfc .EF =_baaf ;};if _ecdge :=_feege .Get ("\u0052\u0046");_ecdge !=nil {_ccbfc .RF =_ecdge ;};if _cdagb :=_feege .Get ("\u0044\u0065\u0073\u0063"); _cdagb !=nil {_ccbfc .Desc =_cdagb ;};if _eegec :=_feege .Get ("\u0043\u0049");_eegec !=nil {_ccbfc .CI =_eegec ;};if _degc :=_feege .Get ("\u0041\u0046\u0052\u0065\u006c\u0061\u0074\u0069\u006fn\u0073\u0068\u0069\u0070");_degc !=nil {_ccbfc .AFRelationship =_degc ; };return _ccbfc ,nil ;}; // ToPdfObject returns the button field dictionary within an indirect object. func (_dfde *PdfFieldButton )ToPdfObject ()_dfg .PdfObject {_dfde .PdfField .ToPdfObject ();_gagf :=_dfde ._caaa ;_gdge :=_gagf .PdfObject .(*_dfg .PdfObjectDictionary );_gdge .Set ("\u0046\u0054",_dfg .MakeName ("\u0042\u0074\u006e"));if _dfde .Opt !=nil {_gdge .Set ("\u004f\u0070\u0074",_dfde .Opt ); };return _gagf ;};func (_eaga *PdfAppender )updateObjectsDeep (_dbac _dfg .PdfObject ,_aed map[_dfg .PdfObject ]struct{}){if _aed ==nil {_aed =map[_dfg .PdfObject ]struct{}{};};if _ ,_gccfd :=_aed [_dbac ];_gccfd ||_dbac ==nil {return ;};_aed [_dbac ]=struct{}{}; _eaae :=_dfg .ResolveReferencesDeep (_dbac ,_eaga ._bbf );if _eaae !=nil {_egb .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a\u0020\u0025v",_eaae );};switch _ccdf :=_dbac .(type ){case *_dfg .PdfIndirectObject :switch {case _ccdf .GetParser ()==_eaga ._eege ._agbcd :return ; case _ccdf .GetParser ()==_eaga .Reader ._agbcd :_dbbf ,_ :=_eaga ._eege .GetIndirectObjectByNumber (int (_ccdf .ObjectNumber ));_cebc ,_ddc :=_dbbf .(*_dfg .PdfIndirectObject );if _ddc &&_cebc !=nil {_gaabg :=string (_ccdf .PdfObject .Write ());if _cebc .PdfObject !=_ccdf .PdfObject &&string (_cebc .PdfObject .Write ())!=_gaabg {if _af .Contains (_gaabg ,"\u002f\u0053\u0069\u0067")&&_af .Contains (_gaabg ,"\u002f\u0053\u0075\u0062\u0074\u0079\u0070\u0065"){return ; };_eaga .addNewObject (_dbac );_eaga ._effe [_dbac ]=_ccdf .ObjectNumber ;};};default:_eaga .addNewObject (_dbac );};_eaga .updateObjectsDeep (_ccdf .PdfObject ,_aed );case *_dfg .PdfObjectArray :for _ ,_dde :=range _ccdf .Elements (){_eaga .updateObjectsDeep (_dde ,_aed ); };case *_dfg .PdfObjectDictionary :for _ ,_fgcc :=range _ccdf .Keys (){_eaga .updateObjectsDeep (_ccdf .Get (_fgcc ),_aed );};case *_dfg .PdfObjectStreams :if _ccdf .GetParser ()!=_eaga ._eege ._agbcd {for _ ,_bedf :=range _ccdf .Elements (){_eaga .updateObjectsDeep (_bedf ,_aed ); };};case *_dfg .PdfObjectStream :switch {case _ccdf .GetParser ()==_eaga ._eege ._agbcd :return ;case _ccdf .GetParser ()==_eaga .Reader ._agbcd :if _gdgca ,_cfcd :=_eaga ._eege ._agbcd .LookupByReference (_ccdf .PdfObjectReference );_cfcd ==nil {var _gdcb bool ; if _fdfd ,_ccbd :=_dfg .GetStream (_gdgca );_ccbd &&_cca .Equal (_fdfd .Stream ,_ccdf .Stream ){_gdcb =true ;};if _bafc ,_fcdd :=_dfg .GetDict (_gdgca );_gdcb &&_fcdd {_gdcb =string (_bafc .Write ())==string (_ccdf .PdfObjectDictionary .Write ());};if _gdcb {return ; };};if _ccdf .ObjectNumber !=0{_eaga ._effe [_dbac ]=_ccdf .ObjectNumber ;};default:if _ ,_febe :=_eaga ._dadd [_dbac ];!_febe {_eaga .addNewObject (_dbac );};};_eaga .updateObjectsDeep (_ccdf .PdfObjectDictionary ,_aed );};}; // GetNamedDestinations returns the Dests entry in the PDF catalog. // See section 12.3.2.3 "Named Destinations" (p. 367 PDF32000_2008). func (_agebgg *PdfReader )GetNamedDestinations ()(_dfg .PdfObject ,error ){_eage :=_dfg .ResolveReference (_agebgg ._fbfgb .Get ("\u0044\u0065\u0073t\u0073"));if _eage ==nil {return nil ,nil ;};if !_agebgg ._bafba {_cabdb :=_agebgg .traverseObjectData (_eage ); if _cabdb !=nil {return nil ,_cabdb ;};};return _eage ,nil ;}; // PrintPdfObject is a helper function printing object with a given number in a PDF file. // It can be useful while debugging. Use os.Stdout as w io.Writer to print to console. // If objNum is -1, then it prints trailer of the PDF file. func (_eeeca *PdfReader )PrintPdfObject (w _edg .Writer ,objNum int )error {if objNum ==-1{_abgec ,_cagab :=_eeeca .GetTrailer ();if _cagab !=nil {return _cagab ;};_d .Fprintf (w ,"\u0054\u0072\u0061i\u006c\u0065\u0072\u003a\u0020\u0025\u0073\u000a",_abgec .String ()); return nil ;};_bbcaf ,_gebebc :=_eeeca .GetIndirectObjectByNumber (objNum );if _gebebc !=nil {return _gebebc ;};_d .Fprintf (w ,"\u004f\u0062\u006a\u0065\u0063\u0074\u0020\u0025\u0064:\u0020\u0025\u0073\u000a",objNum ,_bbcaf .String ());if _dffge ,_cbeaef :=_bbcaf .(*_dfg .PdfObjectStream ); _cbeaef {_deafg ,_cgfbg :=_dfg .DecodeStream (_dffge );if _cgfbg !=nil {return _cgfbg ;};_d .Fprintf (w ,"D\u0065\u0063\u006f\u0064\u0065\u0064\u003a\u000a\u0025\u0073",_deafg );}else if _dcda ,_dgfgbg :=_bbcaf .(*_dfg .PdfIndirectObject );_dgfgbg {_d .Fprintf (w ,"\u0025\u0054\u000a",_dcda .PdfObject ); _d .Fprintf (w ,"\u0025\u0073\u000a",_dcda .PdfObject .String ());};return nil ;}; // EnableAll LTV enables all signatures in the PDF document. // The signing certificate chain is extracted from each signature dictionary. // Optionally, additional certificates can be specified through the // `extraCerts` parameter. The LTV client attempts to build the certificate // chain up to a trusted root by downloading any missing certificates. func (_fggdf *LTV )EnableAll (extraCerts []*_de .Certificate )error {_dbfac :=_fggdf ._adcg ._eege .AcroForm ;for _ ,_fccd :=range _dbfac .AllFields (){_gddf ,_ :=_fccd .GetContext ().(*PdfFieldSignature );if _gddf ==nil {continue ;};_efbg :=_gddf .V ; if _caaee :=_fggdf .validateSig (_efbg );_caaee !=nil {_egb .Log .Debug ("\u0057\u0041\u0052N\u003a\u0020\u0053\u006b\u0069\u0070\u0070\u0069\u006e\u0067\u0020\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0073\u0069\u0067\u006e\u0061\u0074\u0075\u0072\u0065\u0020f\u0069\u0065\u006c\u0064\u003a\u0020\u0025\u0076",_caaee ); };if _egebg :=_fggdf .Enable (_efbg ,extraCerts );_egebg !=nil {return _egebg ;};};return nil ;};func _begg (_bddef *_dfg .PdfObjectDictionary )(*PdfShadingType6 ,error ){_baeda :=PdfShadingType6 {};_beec :=_bddef .Get ("\u0042\u0069\u0074\u0073\u0050\u0065\u0072\u0043\u006f\u006f\u0072\u0064i\u006e\u0061\u0074\u0065"); if _beec ==nil {_egb .Log .Debug ("\u0052e\u0071\u0075i\u0072\u0065\u0064 \u0061\u0074\u0074\u0072\u0069\u0062\u0075t\u0065\u0020\u006d\u0069\u0073\u0073i\u006e\u0067\u003a\u0020\u0042\u0069\u0074\u0073\u0050\u0065\u0072C\u006f\u006f\u0072\u0064\u0069\u006e\u0061\u0074\u0065"); return nil ,ErrRequiredAttributeMissing ;};_fdbdb ,_fbbea :=_beec .(*_dfg .PdfObjectInteger );if !_fbbea {_egb .Log .Debug ("\u0042\u0069\u0074\u0073\u0050e\u0072\u0043\u006f\u006f\u0072\u0064\u0069\u006e\u0061\u0074\u0065\u0020\u006eo\u0074\u0020\u0061\u006e\u0020\u0069\u006e\u0074\u0065\u0067\u0065\u0072\u0020\u0028\u0067\u006f\u0074\u0020\u0025\u0054\u0029",_beec ); return nil ,_dfg .ErrTypeError ;};_baeda .BitsPerCoordinate =_fdbdb ;_beec =_bddef .Get ("\u0042\u0069t\u0073\u0050\u0065r\u0043\u006f\u006d\u0070\u006f\u006e\u0065\u006e\u0074");if _beec ==nil {_egb .Log .Debug ("\u0052e\u0071\u0075i\u0072\u0065\u0064\u0020a\u0074\u0074\u0072i\u0062\u0075\u0074\u0065\u0020\u006d\u0069\u0073\u0073in\u0067\u003a\u0020B\u0069\u0074s\u0050\u0065\u0072\u0043\u006f\u006dp\u006f\u006ee\u006e\u0074"); return nil ,ErrRequiredAttributeMissing ;};_fdbdb ,_fbbea =_beec .(*_dfg .PdfObjectInteger );if !_fbbea {_egb .Log .Debug ("B\u0069\u0074\u0073\u0050\u0065\u0072\u0043\u006f\u006d\u0070\u006f\u006e\u0065\u006e\u0074\u0020\u006e\u006ft\u0020\u0061\u006e\u0020\u0069\u006e\u0074\u0065\u0067\u0065r \u0028\u0067\u006ft\u0020%\u0054\u0029",_beec ); return nil ,_dfg .ErrTypeError ;};_baeda .BitsPerComponent =_fdbdb ;_beec =_bddef .Get ("B\u0069\u0074\u0073\u0050\u0065\u0072\u0046\u006c\u0061\u0067");if _beec ==nil {_egb .Log .Debug ("\u0052\u0065\u0071\u0075\u0069\u0072\u0065\u0064\u0020\u0061\u0074\u0074\u0072i\u0062\u0075\u0074\u0065\u0020\u006di\u0073\u0073\u0069\u006e\u0067\u003a\u0020\u0042\u0069\u0074\u0073\u0050\u0065r\u0046\u006c\u0061\u0067"); return nil ,ErrRequiredAttributeMissing ;};_fdbdb ,_fbbea =_beec .(*_dfg .PdfObjectInteger );if !_fbbea {_egb .Log .Debug ("B\u0069\u0074\u0073\u0050\u0065\u0072F\u006c\u0061\u0067\u0020\u006e\u006ft\u0020\u0061\u006e\u0020\u0069\u006e\u0074e\u0067\u0065\u0072\u0020\u0028\u0067\u006f\u0074\u0020\u0025T\u0029",_beec ); return nil ,_dfg .ErrTypeError ;};_baeda .BitsPerComponent =_fdbdb ;_beec =_bddef .Get ("\u0044\u0065\u0063\u006f\u0064\u0065");if _beec ==nil {_egb .Log .Debug ("\u0052\u0065\u0071ui\u0072\u0065\u0064\u0020\u0061\u0074\u0074\u0072\u0069b\u0075t\u0065 \u006di\u0073\u0073\u0069\u006e\u0067\u003a\u0020\u0044\u0065\u0063\u006f\u0064\u0065"); return nil ,ErrRequiredAttributeMissing ;};_dcbfe ,_fbbea :=_beec .(*_dfg .PdfObjectArray );if !_fbbea {_egb .Log .Debug ("\u0044\u0065\u0063\u006fd\u0065\u0020\u006e\u006f\u0074\u0020\u0061\u006e\u0020\u0061r\u0072a\u0079\u0020\u0028\u0067\u006f\u0074\u0020%\u0054\u0029",_beec ); return nil ,_dfg .ErrTypeError ;};_baeda .Decode =_dcbfe ;if _ecceb :=_bddef .Get ("\u0046\u0075\u006e\u0063\u0074\u0069\u006f\u006e");_ecceb !=nil {_baeda .Function =[]PdfFunction {};if _befde ,_dgffc :=_ecceb .(*_dfg .PdfObjectArray );_dgffc {for _ ,_dbada :=range _befde .Elements (){_eegee ,_fabbe :=_gbada (_dbada ); if _fabbe !=nil {_egb .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0070\u0061\u0072\u0073\u0069n\u0067\u0020\u0066\u0075\u006e\u0063\u0074\u0069\u006f\u006e:\u0020\u0025\u0076",_fabbe );return nil ,_fabbe ;};_baeda .Function =append (_baeda .Function ,_eegee ); };}else {_acgda ,_acdaf :=_gbada (_ecceb );if _acdaf !=nil {_egb .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0070\u0061\u0072\u0073\u0069n\u0067\u0020\u0066\u0075\u006e\u0063\u0074\u0069\u006f\u006e:\u0020\u0025\u0076",_acdaf );return nil ,_acdaf ; };_baeda .Function =append (_baeda .Function ,_acgda );};};return &_baeda ,nil ;};func (_dgba *PdfReader )newPdfAnnotationPolyLineFromDict (_efag *_dfg .PdfObjectDictionary )(*PdfAnnotationPolyLine ,error ){_dfcd :=PdfAnnotationPolyLine {};_aeb ,_effa :=_dgba .newPdfAnnotationMarkupFromDict (_efag ); if _effa !=nil {return nil ,_effa ;};_dfcd .PdfAnnotationMarkup =_aeb ;_dfcd .Vertices =_efag .Get ("\u0056\u0065\u0072\u0074\u0069\u0063\u0065\u0073");_dfcd .LE =_efag .Get ("\u004c\u0045");_dfcd .BS =_efag .Get ("\u0042\u0053");_dfcd .IC =_efag .Get ("\u0049\u0043"); _dfcd .BE =_efag .Get ("\u0042\u0045");_dfcd .IT =_efag .Get ("\u0049\u0054");_dfcd .Measure =_efag .Get ("\u004de\u0061\u0073\u0075\u0072\u0065");return &_dfcd ,nil ;}; // ColorFromPdfObjects returns a new PdfColor based on the input slice of color // components. The slice should contain three PdfObjectFloat elements representing // the L, A and B components of the color. func (_aeec *PdfColorspaceLab )ColorFromPdfObjects (objects []_dfg .PdfObject )(PdfColor ,error ){if len (objects )!=3{return nil ,_bd .New ("r\u0061\u006e\u0067\u0065\u0020\u0063\u0068\u0065\u0063\u006b");};_eeaf ,_cddg :=_dfg .GetNumbersAsFloat (objects ); if _cddg !=nil {return nil ,_cddg ;};return _aeec .ColorFromFloats (_eeaf );}; // ToPdfObject returns the PDF representation of the colorspace. func (_cbad *PdfColorspaceDeviceCMYK )ToPdfObject ()_dfg .PdfObject {return _dfg .MakeName ("\u0044\u0065\u0076\u0069\u0063\u0065\u0043\u004d\u0059\u004b");}; // ToPdfObject returns the PDF representation of the shading dictionary. func (_aedg *PdfShadingType3 )ToPdfObject ()_dfg .PdfObject {_aedg .PdfShading .ToPdfObject ();_ageda ,_eaeba :=_aedg .getShadingDict ();if _eaeba !=nil {_egb .Log .Error ("\u0055\u006ea\u0062\u006c\u0065\u0020\u0074\u006f\u0020\u0061\u0063\u0063\u0065\u0073\u0073\u0020\u0073\u0068\u0061\u0064\u0069\u006e\u0067\u0020di\u0063\u0074"); return nil ;};if _aedg .Coords !=nil {_ageda .Set ("\u0043\u006f\u006f\u0072\u0064\u0073",_aedg .Coords );};if _aedg .Domain !=nil {_ageda .Set ("\u0044\u006f\u006d\u0061\u0069\u006e",_aedg .Domain );};if _aedg .Function !=nil {if len (_aedg .Function )==1{_ageda .Set ("\u0046\u0075\u006e\u0063\u0074\u0069\u006f\u006e",_aedg .Function [0].ToPdfObject ()); }else {_fabdb :=_dfg .MakeArray ();for _ ,_fbcaf :=range _aedg .Function {_fabdb .Append (_fbcaf .ToPdfObject ());};_ageda .Set ("\u0046\u0075\u006e\u0063\u0074\u0069\u006f\u006e",_fabdb );};};if _aedg .Extend !=nil {_ageda .Set ("\u0045\u0078\u0074\u0065\u006e\u0064",_aedg .Extend ); };return _aedg ._gdfdg ;}; // SetXObjectByName adds the XObject from the passed in stream to the page resources. // The added XObject is identified by the specified name. func (_cgebc *PdfPageResources )SetXObjectByName (keyName _dfg .PdfObjectName ,stream *_dfg .PdfObjectStream )error {if _cgebc .XObject ==nil {_cgebc .XObject =_dfg .MakeDict ();};_gfeca :=_dfg .TraceToDirectObject (_cgebc .XObject );_acacc ,_abeda :=_gfeca .(*_dfg .PdfObjectDictionary ); if !_abeda {_egb .Log .Debug ("\u0049\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0058\u004f\u0062j\u0065\u0063\u0074\u002c\u0020\u0067\u006f\u0074\u0020\u0025T\u002f\u0025\u0054",_cgebc .XObject ,_gfeca );return _bd .New ("\u0074\u0079p\u0065\u0020\u0063h\u0065\u0063\u006b\u0020\u0065\u0072\u0072\u006f\u0072"); };_acacc .Set (keyName ,stream );return nil ;}; // PdfAction represents an action in PDF (section 12.6 p. 412). type PdfAction struct{_bdb PdfModel ;Type _dfg .PdfObject ;S _dfg .PdfObject ;Next _dfg .PdfObject ;_fe *_dfg .PdfIndirectObject ;}; // GetCharMetrics returns the character metrics for the specified character code. A bool flag is // returned to indicate whether or not the entry was found in the glyph to charcode mapping. // How it works: // 1. Return a value the /Widths array (charWidths) if there is one. // 2. If the font has the same name as a standard 14 font then return width=250. // 3. Otherwise return no match and let the caller substitute a default. func (_fega pdfFontSimple )GetCharMetrics (code _ff .CharCode )(_bf .CharMetrics ,bool ){if _geefg ,_cbccg :=_fega ._aefba [code ];_cbccg {return _bf .CharMetrics {Wx :_geefg },true ;};if _bf .IsStdFont (_bf .StdFontName (_fega ._dbcbc )){return _bf .CharMetrics {Wx :250},true ; };return _bf .CharMetrics {},false ;}; // ToPdfObject implements interface PdfModel. func (_eba *PdfAnnotation3D )ToPdfObject ()_dfg .PdfObject {_eba .PdfAnnotation .ToPdfObject ();_bcaeb :=_eba ._afae ;_bdee :=_bcaeb .PdfObject .(*_dfg .PdfObjectDictionary );_bdee .SetIfNotNil ("\u0053u\u0062\u0074\u0079\u0070\u0065",_dfg .MakeName ("\u0033\u0044")); _bdee .SetIfNotNil ("\u0033\u0044\u0044",_eba .T3DD );_bdee .SetIfNotNil ("\u0033\u0044\u0056",_eba .T3DV );_bdee .SetIfNotNil ("\u0033\u0044\u0041",_eba .T3DA );_bdee .SetIfNotNil ("\u0033\u0044\u0049",_eba .T3DI );_bdee .SetIfNotNil ("\u0033\u0044\u0042",_eba .T3DB ); return _bcaeb ;}; // NewPdfActionGoToR returns a new "go to remote" action. func NewPdfActionGoToR ()*PdfActionGoToR {_def :=NewPdfAction ();_aee :=&PdfActionGoToR {};_aee .PdfAction =_def ;_def .SetContext (_aee );return _aee ;}; // NewPdfAnnotationRedact returns a new redact annotation. func NewPdfAnnotationRedact ()*PdfAnnotationRedact {_cge :=NewPdfAnnotation ();_gegc :=&PdfAnnotationRedact {};_gegc .PdfAnnotation =_cge ;_gegc .PdfAnnotationMarkup =&PdfAnnotationMarkup {};_cge .SetContext (_gegc );return _gegc ;};func (_gddc *PdfReader )newPdfAnnotationStrikeOut (_adb *_dfg .PdfObjectDictionary )(*PdfAnnotationStrikeOut ,error ){_bcdf :=PdfAnnotationStrikeOut {}; _bbae ,_eabgg :=_gddc .newPdfAnnotationMarkupFromDict (_adb );if _eabgg !=nil {return nil ,_eabgg ;};_bcdf .PdfAnnotationMarkup =_bbae ;_bcdf .QuadPoints =_adb .Get ("\u0051\u0075\u0061\u0064\u0050\u006f\u0069\u006e\u0074\u0073");return &_bcdf ,nil ;}; // GetTrailer returns the PDF's trailer dictionary. func (_dgcac *PdfReader )GetTrailer ()(*_dfg .PdfObjectDictionary ,error ){_cdca :=_dgcac ._agbcd .GetTrailer ();if _cdca ==nil {return nil ,_bd .New ("\u0074r\u0061i\u006c\u0065\u0072\u0020\u006d\u0069\u0073\u0073\u0069\u006e\u0067");};return _cdca ,nil ; }; // NewEmbeddedFileFromContent construct a new EmbeddedFile from supplied file content. func NewEmbeddedFileFromContent (content []byte )(*EmbeddedFile ,error ){_fedfdd ,_faed :=_ccaf .Match (content );if _faed !=nil {_egb .Log .Debug ("\u0046\u0061\u0069\u006c\u0065\u0064\u0020\u0074\u006f\u0020d\u0065\u0074\u0065\u0063\u0074\u0020\u0066i\u006c\u0065\u0020\u0074\u0079\u0070\u0065\u003a\u0020\u0025\u0076",_faed ); };_eaac :=_cd .Sum (content );_egeb :=&EmbeddedFile {Name :"\u0061\u0074\u0074\u0061\u0063\u0068\u006d\u0065\u006e\u0074",Content :content ,FileType :_fedfdd .MIME .Type ,Hash :_bc .EncodeToString (_eaac [:])};return _egeb ,nil ;}; // AddWatermarkImage adds an image watermark to the page. func (_dbaed *PdfPage )AddWatermarkImage (ximg *XObjectImage ,opt WatermarkImageOptions )error {_agaff ,_gegdfg :=_dbaed .GetMediaBox ();if _gegdfg !=nil {return _gegdfg ;};_dfbga :=_agaff .Urx -_agaff .Llx ;_ecgd :=_agaff .Ury -_agaff .Lly ;_aaadf :=opt .Angle *_df .Pi /180; _fbaeg :=float64 (*ximg .Width );_cdecd :=(_dfbga -_fbaeg *_df .Cos (_aaadf ))/2;if opt .FitToWidth {_fbaeg =_dfbga ;_cdecd =0;};_gbdcac :=_ecgd ;_ddgc :=float64 (0);if opt .PreserveAspectRatio {_gbdcac =_fbaeg *float64 (*ximg .Height )/float64 (*ximg .Width ); _ddgc =(_ecgd -_gbdcac )/2;_ddgc -=float64 (*ximg .Width )/2*_df .Sin (_aaadf );};if _dbaed .Resources ==nil {_dbaed .Resources =NewPdfPageResources ();};_bggef :=NewXObjectForm ();_bggef .BBox =_dfg .MakeArrayFromFloats ([]float64 {0,0,_fbaeg ,_gbdcac }); _bggef .Resources =NewPdfPageResources ();_bfcgb :=0;_afccfc :=_dfg .PdfObjectName (_d .Sprintf ("\u0049\u006d\u0077%\u0064",_bfcgb ));for _bggef .Resources .HasXObjectByName (_afccfc ){_bfcgb ++;_afccfc =_dfg .PdfObjectName (_d .Sprintf ("\u0049\u006d\u0077%\u0064",_bfcgb )); };_gegdfg =_bggef .Resources .SetXObjectImageByName (_afccfc ,ximg );if _gegdfg !=nil {return _gegdfg ;};_bfcgb =0;_bgfab :=_dfg .PdfObjectName (_d .Sprintf ("\u0047\u0053\u0025\u0064",_bfcgb ));for _bggef .Resources .HasExtGState (_bgfab ){_bfcgb ++;_bgfab =_dfg .PdfObjectName (_d .Sprintf ("\u0047\u0053\u0025\u0064",_bfcgb )); };_caggf :=_dfg .MakeDict ();_caggf .Set ("\u0042\u004d",_dfg .MakeName ("\u004e\u006f\u0072\u006d\u0061\u006c"));_caggf .Set ("\u0043\u0041",_dfg .MakeFloat (opt .Alpha ));_caggf .Set ("\u0063\u0061",_dfg .MakeFloat (opt .Alpha ));_gegdfg =_bggef .Resources .AddExtGState (_bgfab ,_caggf ); if _gegdfg !=nil {return _gegdfg ;};_cadd :=_d .Sprintf ("\u0071\u000a"+"\u002f%\u0073\u0020\u0067\u0073\u000a"+"%\u002e\u0030\u0066\u0020\u0030\u00200\u0020\u0025\u002e\u0030\u0066\u0020\u0025\u002e\u0034f\u0020\u0025\u002e4\u0066 \u0063\u006d\u000a"+"\u002f%\u0073\u0020\u0044\u006f\u000a"+"\u0051",_bgfab ,_fbaeg ,_gbdcac ,0.0,0.0,_afccfc ); _bggef .SetContentStream ([]byte (_cadd ),nil );_fggcc :=_eea .IdentityMatrix ().Rotate (_aaadf );_gbgdd :=[]float64 {_fggcc [0],_fggcc [1],_fggcc [3],_fggcc [4],_fggcc [6],_fggcc [7]};_bggef .Matrix =_dfg .MakeArrayFromFloats (_gbgdd );_eggc :=_dbaed .Resources .GenerateXObjectName (); _gegdfg =_dbaed .Resources .SetXObjectFormByName (_eggc ,_bggef );if _gegdfg !=nil {return _gegdfg ;};_eafdf :=_d .Sprintf ("\u0071\u000a"+"%\u002e\u0030\u0066\u0020\u0030\u00200\u0020\u0025\u002e\u0030\u0066\u0020\u0025\u002e\u0034f\u0020\u0025\u002e4\u0066 \u0063\u006d\u000a"+"\u002f%\u0073\u0020\u0044\u006f\u000a"+"\u0051",1.0,1.0,_cdecd ,_ddgc ,_eggc ); return _dbaed .AppendContentBytes ([]byte (_eafdf ),true );}; // A returns the value of the A component of the color. func (_ebee *PdfColorLab )A ()float64 {return _ebee [1]}; // PdfColorDeviceRGB represents a color in DeviceRGB colorspace with R, G, B components, where component is // defined in the range 0.0 - 1.0 where 1.0 is the primary intensity. type PdfColorDeviceRGB [3]float64 ; // ToPdfObject implements interface PdfModel. func (_bgb *PdfActionHide )ToPdfObject ()_dfg .PdfObject {_bgb .PdfAction .ToPdfObject ();_afe :=_bgb ._fe ;_abb :=_afe .PdfObject .(*_dfg .PdfObjectDictionary );_abb .SetIfNotNil ("\u0053",_dfg .MakeName (string (ActionTypeHide )));_abb .SetIfNotNil ("\u0054",_bgb .T ); _abb .SetIfNotNil ("\u0048",_bgb .H );return _afe ;}; // SetFillImage attach a model.Image to push button. func (_cfga *PdfFieldButton )SetFillImage (image *Image ){if _cfga .IsPush (){_cfga ._geade =image ;};};var (TabOrderRow TabOrderType ="\u0052";TabOrderColumn TabOrderType ="\u0043";TabOrderStructure TabOrderType ="\u0053";); // SetNameDictionary sets the Names entry in the PDF catalog. // See section 7.7.4 "Name Dictionary" (p. 80 PDF32000_2008). func (_cddfd *PdfWriter )SetNameDictionary (names _dfg .PdfObject )error {if names ==nil {return nil ;};_cddfd ._baeae =_adgdg (names );_egb .Log .Trace ("\u0053e\u0074\u0074\u0069\u006e\u0067\u0020\u0063\u0061\u0074\u0061\u006co\u0067\u0020\u004e\u0061\u006d\u0065\u0073\u002e\u002e\u002e"); _cddfd ._acgcc .Set ("\u004e\u0061\u006de\u0073",names );return _cddfd .addObjects (names );}; // IsFitWindow returns the value of the fitWindow flag. func (_gbfge *ViewerPreferences )IsFitWindow ()bool {if _gbfge ._abea ==nil {return false ;};return *_gbfge ._abea ;}; // AddExtension adds the specified extension to the Extensions dictionary. // See section 7.1.2 "Extensions Dictionary" (pp. 108-109 PDF32000_2008). func (_ggdc *PdfWriter )AddExtension (extName ,baseVersion string ,extLevel int ){_bafgd ,_cafaae :=_dfg .GetDict (_ggdc ._acgcc .Get ("\u0045\u0078\u0074\u0065\u006e\u0073\u0069\u006f\u006e\u0073"));if !_cafaae {_bafgd =_dfg .MakeDict ();_ggdc ._acgcc .Set ("\u0045\u0078\u0074\u0065\u006e\u0073\u0069\u006f\u006e\u0073",_bafgd ); };_cdfda ,_cafaae :=_dfg .GetDict (_bafgd .Get (_dfg .PdfObjectName (extName )));if !_cafaae {_cdfda =_dfg .MakeDict ();_bafgd .Set (_dfg .PdfObjectName (extName ),_cdfda );};if _aegfc ,_ :=_dfg .GetNameVal (_cdfda .Get ("B\u0061\u0073\u0065\u0056\u0065\u0072\u0073\u0069\u006f\u006e")); _aegfc !=baseVersion {_cdfda .Set ("B\u0061\u0073\u0065\u0056\u0065\u0072\u0073\u0069\u006f\u006e",_dfg .MakeName (baseVersion ));};if _faeggf ,_ :=_dfg .GetIntVal (_cdfda .Get ("\u0045\u0078\u0074\u0065\u006e\u0073\u0069\u006f\u006eL\u0065\u0076\u0065\u006c")); _faeggf !=extLevel {_cdfda .Set ("\u0045\u0078\u0074\u0065\u006e\u0073\u0069\u006f\u006eL\u0065\u0076\u0065\u006c",_dfg .MakeInteger (int64 (extLevel )));};};func (_gfdg *PdfColorspaceDeviceRGB )String ()string {return "\u0044e\u0076\u0069\u0063\u0065\u0052\u0047B"; }; // GetContentStream returns the XObject Form's content stream. func (_ddgebd *XObjectForm )GetContentStream ()([]byte ,error ){_dfebf ,_egae :=_dfg .DecodeStream (_ddgebd ._baced );if _egae !=nil {return nil ,_egae ;};return _dfebf ,nil ;}; // DecodeArray returns the range of color component values in CalRGB colorspace. func (_fdfaa *PdfColorspaceCalRGB )DecodeArray ()[]float64 {return []float64 {0.0,1.0,0.0,1.0,0.0,1.0};};func _dbga (_geea _dfg .PdfObject )(*PdfFilespec ,error ){if _geea ==nil {return nil ,nil ;};return NewPdfFilespecFromObj (_geea );}; // PdfActionHide represents a hide action. type PdfActionHide struct{*PdfAction ;T _dfg .PdfObject ;H _dfg .PdfObject ;}; // ColorFromPdfObjects returns a new PdfColor based on the input slice of color // components. The slice should contain a single PdfObjectFloat element. func (_fcgf *PdfColorspaceSpecialIndexed )ColorFromPdfObjects (objects []_dfg .PdfObject )(PdfColor ,error ){if len (objects )!=1{return nil ,_bd .New ("r\u0061\u006e\u0067\u0065\u0020\u0063\u0068\u0065\u0063\u006b");};_gcfa ,_cebf :=_dfg .GetNumbersAsFloat (objects ); if _cebf !=nil {return nil ,_cebf ;};return _fcgf .ColorFromFloats (_gcfa );}; // GetContainingPdfObject returns the page as a dictionary within an PdfIndirectObject. func (_cgcf *PdfPage )GetContainingPdfObject ()_dfg .PdfObject {return _cgcf ._bdeee }; // ToPdfObject implements interface PdfModel. func (_bdbg *PdfAnnotationScreen )ToPdfObject ()_dfg .PdfObject {_bdbg .PdfAnnotation .ToPdfObject ();_cfef :=_bdbg ._afae ;_fbfc :=_cfef .PdfObject .(*_dfg .PdfObjectDictionary );_fbfc .SetIfNotNil ("\u0053u\u0062\u0074\u0079\u0070\u0065",_dfg .MakeName ("\u0053\u0063\u0072\u0065\u0065\u006e")); _fbfc .SetIfNotNil ("\u0054",_bdbg .T );_fbfc .SetIfNotNil ("\u004d\u004b",_bdbg .MK );_fbfc .SetIfNotNil ("\u0041",_bdbg .A );_fbfc .SetIfNotNil ("\u0041\u0041",_bdbg .AA );return _cfef ;}; // PdfColorspaceDeviceCMYK represents a CMYK32 colorspace. type PdfColorspaceDeviceCMYK struct{}; // ColorFromPdfObjects returns a new PdfColor based on the input slice of color // components. The slice should contain a single PdfObjectFloat element in // range 0-1. func (_bbcag *PdfColorspaceDeviceGray )ColorFromPdfObjects (objects []_dfg .PdfObject )(PdfColor ,error ){if len (objects )!=1{return nil ,_bd .New ("r\u0061\u006e\u0067\u0065\u0020\u0063\u0068\u0065\u0063\u006b");};_gggg ,_dca :=_dfg .GetNumbersAsFloat (objects ); if _dca !=nil {return nil ,_dca ;};return _bbcag .ColorFromFloats (_gggg );};func (_ceea *PdfReader )loadAnnotations (_ccaae _dfg .PdfObject )([]*PdfAnnotation ,error ){_eede ,_afcfa :=_dfg .GetArray (_ccaae );if !_afcfa {return nil ,_d .Errorf ("\u0041\u006e\u006e\u006fts\u0020\u006e\u006f\u0074\u0020\u0061\u006e\u0020\u0061\u0072\u0072\u0061\u0079"); };var _dagbe []*PdfAnnotation ;for _ ,_gfdd :=range _eede .Elements (){_gfdd =_dfg .ResolveReference (_gfdd );if _ ,_cdcfa :=_gfdd .(*_dfg .PdfObjectNull );_cdcfa {continue ;};_dfefe ,_ccdbd :=_gfdd .(*_dfg .PdfObjectDictionary );_bcgaa ,_bdaac :=_gfdd .(*_dfg .PdfIndirectObject ); if _ccdbd {_bcgaa =&_dfg .PdfIndirectObject {};_bcgaa .PdfObject =_dfefe ;}else {if !_bdaac {return nil ,_d .Errorf ("\u0061\u006eno\u0074\u0061\u0074i\u006f\u006e\u0020\u006eot \u0069n \u0061\u006e\u0020\u0069\u006e\u0064\u0069re\u0063\u0074\u0020\u006f\u0062\u006a\u0065c\u0074"); };};_dageg ,_fadec :=_ceea .newPdfAnnotationFromIndirectObject (_bcgaa );if _fadec !=nil {return nil ,_fadec ;};switch _bgag :=_dageg .GetContext ().(type ){case *PdfAnnotationWidget :for _ ,_daada :=range _ceea .AcroForm .AllFields (){if _daada ._caaa ==_bgag .Parent {_bgag ._bcad =_daada ; break ;};};};if _dageg !=nil {_dagbe =append (_dagbe ,_dageg );};};return _dagbe ,nil ;};func (_gggee *PdfWriter )writeObjectsInStreams (_abcdd map[_dfg .PdfObject ]bool )error {for _ ,_fabag :=range _gggee ._abcef {if _ceedc :=_abcdd [_fabag ];_ceedc {continue ; };_bggfc :=int64 (0);switch _ecaee :=_fabag .(type ){case *_dfg .PdfIndirectObject :_bggfc =_ecaee .ObjectNumber ;case *_dfg .PdfObjectStream :_bggfc =_ecaee .ObjectNumber ;case *_dfg .PdfObjectStreams :_bggfc =_ecaee .ObjectNumber ;case *_dfg .PdfObjectDictionary ,*_dfg .PdfObjectString :default:_egb .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020U\u006e\u0073\u0075p\u0070\u006f\u0072t\u0065\u0064 \u0074\u0079\u0070\u0065\u0020\u0069n\u0020wr\u0069\u0074\u0065\u0072\u0020\u006f\u0062\u006a\u0065\u0063\u0074\u0073\u003a\u0020\u0025\u0054\u0020\u0028\u0074\u0079\u0070\u0065\u0020\u0025\u0054\u0029",_fabag ,_ecaee ); return ErrTypeCheck ;};if _gggee ._gbdfc !=nil &&_fabag !=_gggee ._bbbecb {_bfbedd :=_gggee ._gbdfc .Encrypt (_fabag ,_bggfc ,0);if _bfbedd !=nil {_egb .Log .Debug ("\u0045\u0052R\u004f\u0052\u003a\u0020\u0046\u0061\u0069\u006c\u0065\u0064\u0020\u0065\u006e\u0063\u0072\u0079\u0070\u0074\u0069\u006e\u0067\u0020(%\u0073\u0029",_bfbedd ); return _bfbedd ;};};_gggee .writeObject (int (_bggfc ),_fabag );};return nil ;}; // SetFlag sets the flag for the field. func (_bccdd *PdfField )SetFlag (flag FieldFlag ){_bccdd .Ff =_dfg .MakeInteger (int64 (flag ))}; // DefaultImageHandler is the default implementation of the ImageHandler using the standard go library. type DefaultImageHandler struct{}; // GetModelFromPrimitive returns the model corresponding to the `primitive` PdfObject. func (_dacc *modelManager )GetModelFromPrimitive (primitive _dfg .PdfObject )PdfModel {_dacc ._feeaf .RLock ();defer _dacc ._feeaf .RUnlock ();model ,_fdbfe :=_dacc ._gdcgg [primitive ];if !_fdbfe {return nil ;};return model ;};func _gebfa (_bfgbge *XObjectForm )(*PdfRectangle ,bool ,error ){if _aaagg ,_cdfcg :=_bfgbge .BBox .(*_dfg .PdfObjectArray ); _cdfcg {_gcfb ,_cffca :=NewPdfRectangle (*_aaagg );if _cffca !=nil {return nil ,false ,_cffca ;};if _ffbe ,_dedb :=_bfgbge .Matrix .(*_dfg .PdfObjectArray );_dedb {_ggge ,_caagcf :=_ffbe .ToFloat64Array ();if _caagcf !=nil {return nil ,false ,_caagcf ; };_faac :=_eea .IdentityMatrix ();if len (_ggge )==6{_faac =_eea .NewMatrix (_ggge [0],_ggge [1],_ggge [2],_ggge [3],_ggge [4],_ggge [5]);};_gcfb .Transform (_faac );return _gcfb ,true ,nil ;};return _gcfb ,false ,nil ;};return nil ,false ,_bd .New ("\u0069\u006e\u0076\u0061l\u0069\u0064\u0020\u0061\u0070\u0070\u0065\u0061\u0072\u0061n\u0063e\u0020\u0042\u0042\u006f\u0078\u0020\u0074y\u0070\u0065"); }; // DecodeArray returns an empty slice as there are no components associated with pattern colorspace. func (_aecga *PdfColorspaceSpecialPattern )DecodeArray ()[]float64 {return []float64 {}};var (_cccdc =_gd .MustCompile ("\u005cd\u002b\u0020\u0064\u0069c\u0074\u005c\u0073\u002b\u0028d\u0075p\u005cs\u002b\u0029\u003f\u0062\u0065\u0067\u0069n");_cbcb =_gd .MustCompile ("\u005e\u005cs\u002a\u002f\u0028\u005c\u0053\u002b\u003f\u0029\u005c\u0073\u002b\u0028\u002e\u002b\u003f\u0029\u005c\u0073\u002b\u0064\u0065\u0066\\s\u002a\u0024"); _fggf =_gd .MustCompile ("\u005e\u005c\u0073*\u0064\u0075\u0070\u005c\u0073\u002b\u0028\u005c\u0064\u002b\u0029\u005c\u0073\u002a\u002f\u0028\u005c\u0077\u002b\u003f\u0029\u0028\u003f\u003a\u005c\u002e\u005c\u0064\u002b)\u003f\u005c\u0073\u002b\u0070\u0075\u0074\u0024"); _cfbdf ="\u002f\u0045\u006e\u0063od\u0069\u006e\u0067\u0020\u0032\u0035\u0036\u0020\u0061\u0072\u0072\u0061\u0079";_efdd ="\u0072\u0065\u0061d\u006f\u006e\u006c\u0079\u0020\u0064\u0065\u0066";_aaaa ="\u0063\u0075\u0072\u0072\u0065\u006e\u0074\u0066\u0069\u006c\u0065\u0020e\u0065\u0078\u0065\u0063"; ); // PdfPageResources is a Page resources model. // Implements PdfModel. type PdfPageResources struct{ExtGState _dfg .PdfObject ;ColorSpace _dfg .PdfObject ;Pattern _dfg .PdfObject ;Shading _dfg .PdfObject ;XObject _dfg .PdfObject ;Font _dfg .PdfObject ;ProcSet _dfg .PdfObject ;Properties _dfg .PdfObject ;_gffaff *_dfg .PdfObjectDictionary ; _fgfec *PdfPageResourcesColorspaces ;}; // EnableByName LTV enables the signature dictionary of the PDF AcroForm // field identified the specified name. The signing certificate chain is // extracted from the signature dictionary. Optionally, additional certificates // can be specified through the `extraCerts` parameter. The LTV client attempts // to build the certificate chain up to a trusted root by downloading any // missing certificates. func (_cddb *LTV )EnableByName (name string ,extraCerts []*_de .Certificate )error {_agbg :=_cddb ._adcg ._eege .AcroForm ;for _ ,_dbgac :=range _agbg .AllFields (){_egefg ,_ :=_dbgac .GetContext ().(*PdfFieldSignature );if _egefg ==nil {continue ;};if _gabg :=_egefg .PartialName (); _gabg !=name {continue ;};return _cddb .Enable (_egefg .V ,extraCerts );};return nil ;};func _ffad ()*Names {return &Names {_ggeed :_dfg .MakeIndirectObject (_dfg .MakeDict ())}};const (XObjectTypeUndefined XObjectType =iota ;XObjectTypeImage ;XObjectTypeForm ; XObjectTypePS ;XObjectTypeUnknown ;);func (_cea *PdfReader )newPdfAnnotationTrapNetFromDict (_dabg *_dfg .PdfObjectDictionary )(*PdfAnnotationTrapNet ,error ){_gbge :=PdfAnnotationTrapNet {};return &_gbge ,nil ;}; // PdfColorCalGray represents a CalGray colorspace. type PdfColorCalGray float64 ;func (_ccbca *PdfReader )newPdfActionSubmitFormFromDict (_bcb *_dfg .PdfObjectDictionary )(*PdfActionSubmitForm ,error ){_caa ,_eag :=_dbga (_bcb .Get ("\u0046"));if _eag !=nil {return nil ,_eag ;};return &PdfActionSubmitForm {F :_caa ,Fields :_bcb .Get ("\u0046\u0069\u0065\u006c\u0064\u0073"),Flags :_bcb .Get ("\u0046\u006c\u0061g\u0073")},nil ; };func (_ccdca *pdfCIDFontType2 )baseFields ()*fontCommon {return &_ccdca .fontCommon }; // SetContext set the sub annotation (context). func (_ggac *PdfShading )SetContext (ctx PdfModel ){_ggac ._fdbfb =ctx }; // NewStandard14FontMustCompile returns the standard 14 font named `basefont` as a *PdfFont. // If `basefont` is one of the 14 Standard14Font values defined above then NewStandard14FontMustCompile // is guaranteed to succeed. func NewStandard14FontMustCompile (basefont StdFontName )*PdfFont {_dfcaa ,_cceeb :=NewStandard14Font (basefont );if _cceeb !=nil {panic (_d .Errorf ("\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0053\u0074\u0061n\u0064\u0061\u0072\u0064\u0031\u0034\u0046\u006f\u006e\u0074 \u0025\u0023\u0071",basefont )); };return _dfcaa ;}; // GetEncryptionMethod returns a descriptive information string about the encryption method used. func (_eebdb *PdfReader )GetEncryptionMethod ()string {_cfgee :=_eebdb ._agbcd .GetCrypter ();return _cfgee .String ();};func (_acbdg *PdfWriter )writeObjects (){_egb .Log .Trace ("\u0057\u0072\u0069\u0074\u0069\u006e\u0067\u0020\u0025d\u0020\u006f\u0062\u006a",len (_acbdg ._abcef )); _acbdg ._effg =make (map[int ]crossReference );_acbdg ._effg [0]=crossReference {Type :0,ObjectNumber :0,Generation :0xFFFF};if _acbdg ._accfg .ObjectMap !=nil {for _bdbcc ,_efcdb :=range _acbdg ._accfg .ObjectMap {if _bdbcc ==0{continue ;};if _efcdb .XType ==_dfg .XrefTypeObjectStream {_caege :=crossReference {Type :2,ObjectNumber :_efcdb .OsObjNumber ,Index :_efcdb .OsObjIndex }; _acbdg ._effg [_bdbcc ]=_caege ;};if _efcdb .XType ==_dfg .XrefTypeTableEntry {_egce :=crossReference {Type :1,ObjectNumber :_efcdb .ObjectNumber ,Offset :_efcdb .Offset };_acbdg ._effg [_bdbcc ]=_egce ;};};};}; // ToPdfObject returns the PDF representation of the shading dictionary. func (_addfa *PdfShadingType1 )ToPdfObject ()_dfg .PdfObject {_addfa .PdfShading .ToPdfObject ();_fbbb ,_ddfba :=_addfa .getShadingDict ();if _ddfba !=nil {_egb .Log .Error ("\u0055\u006ea\u0062\u006c\u0065\u0020\u0074\u006f\u0020\u0061\u0063\u0063\u0065\u0073\u0073\u0020\u0073\u0068\u0061\u0064\u0069\u006e\u0067\u0020di\u0063\u0074"); return nil ;};if _addfa .Domain !=nil {_fbbb .Set ("\u0044\u006f\u006d\u0061\u0069\u006e",_addfa .Domain );};if _addfa .Matrix !=nil {_fbbb .Set ("\u004d\u0061\u0074\u0072\u0069\u0078",_addfa .Matrix );};if _addfa .Function !=nil {if len (_addfa .Function )==1{_fbbb .Set ("\u0046\u0075\u006e\u0063\u0074\u0069\u006f\u006e",_addfa .Function [0].ToPdfObject ()); }else {_dbcf :=_dfg .MakeArray ();for _ ,_abfb :=range _addfa .Function {_dbcf .Append (_abfb .ToPdfObject ());};_fbbb .Set ("\u0046\u0075\u006e\u0063\u0074\u0069\u006f\u006e",_dbcf );};};return _addfa ._gdfdg ;}; // ToPdfObject implements interface PdfModel. func (_dgbcf *PdfTransformParamsDocMDP )ToPdfObject ()_dfg .PdfObject {_ceedg :=_dfg .MakeDict ();_ceedg .SetIfNotNil ("\u0054\u0079\u0070\u0065",_dgbcf .Type );_ceedg .SetIfNotNil ("\u0056",_dgbcf .V );_ceedg .SetIfNotNil ("\u0050",_dgbcf .P );return _ceedg ; };func (_bfgf *PdfReader )newPdfActionURIFromDict (_acfd *_dfg .PdfObjectDictionary )(*PdfActionURI ,error ){return &PdfActionURI {URI :_acfd .Get ("\u0055\u0052\u0049"),IsMap :_acfd .Get ("\u0049\u0073\u004da\u0070")},nil ;};func _cggdb (_bfad *PdfPage )map[_dfg .PdfObjectName ]_dfg .PdfObject {_gebd :=make (map[_dfg .PdfObjectName ]_dfg .PdfObject ); if _bfad .Resources ==nil {return _gebd ;};if _bfad .Resources .Font !=nil {if _aegf ,_eddg :=_dfg .GetDict (_bfad .Resources .Font );_eddg {for _ ,_dffd :=range _aegf .Keys (){_gebd [_dffd ]=_aegf .Get (_dffd );};};};if _bfad .Resources .ExtGState !=nil {if _bfef ,_dbf :=_dfg .GetDict (_bfad .Resources .ExtGState ); _dbf {for _ ,_edbc :=range _bfef .Keys (){_gebd [_edbc ]=_bfef .Get (_edbc );};};};if _bfad .Resources .XObject !=nil {if _bede ,_eccg :=_dfg .GetDict (_bfad .Resources .XObject );_eccg {for _ ,_ebb :=range _bede .Keys (){_gebd [_ebb ]=_bede .Get (_ebb ); };};};if _bfad .Resources .Pattern !=nil {if _gegd ,_ebba :=_dfg .GetDict (_bfad .Resources .Pattern );_ebba {for _ ,_ebg :=range _gegd .Keys (){_gebd [_ebg ]=_gegd .Get (_ebg );};};};if _bfad .Resources .Shading !=nil {if _fdda ,_gccae :=_dfg .GetDict (_bfad .Resources .Shading ); _gccae {for _ ,_facb :=range _fdda .Keys (){_gebd [_facb ]=_fdda .Get (_facb );};};};if _bfad .Resources .ProcSet !=nil {if _adbd ,_bgef :=_dfg .GetDict (_bfad .Resources .ProcSet );_bgef {for _ ,_fbaf :=range _adbd .Keys (){_gebd [_fbaf ]=_adbd .Get (_fbaf ); };};};if _bfad .Resources .Properties !=nil {if _bbbf ,_adbe :=_dfg .GetDict (_bfad .Resources .Properties );_adbe {for _ ,_acebf :=range _bbbf .Keys (){_gebd [_acebf ]=_bbbf .Get (_acebf );};};};return _gebd ;}; // GetCIDToGIDMapObject get the underlying CIDToGIDMap object if the font type is CIDFontType2. func (_gbdce *PdfFont )GetCIDToGIDMapObject ()_dfg .PdfObject {_aaad ,_ggdf :=_gbdce ._fab .(*pdfCIDFontType2 );if _ggdf {return _aaad .CIDToGIDMap ;};return nil ;};func (_agfd *PdfReader )newPdfAnnotationSquareFromDict (_acac *_dfg .PdfObjectDictionary )(*PdfAnnotationSquare ,error ){_agd :=PdfAnnotationSquare {}; _eafb ,_beag :=_agfd .newPdfAnnotationMarkupFromDict (_acac );if _beag !=nil {return nil ,_beag ;};_agd .PdfAnnotationMarkup =_eafb ;_agd .BS =_acac .Get ("\u0042\u0053");_agd .IC =_acac .Get ("\u0049\u0043");_agd .BE =_acac .Get ("\u0042\u0045");_agd .RD =_acac .Get ("\u0052\u0044"); return &_agd ,nil ;}; // NewPdfColorspaceDeviceGray returns a new grayscale colorspace. func NewPdfColorspaceDeviceGray ()*PdfColorspaceDeviceGray {return &PdfColorspaceDeviceGray {}};func _agdb (_afbe *_dfg .PdfObjectDictionary ,_dggc *fontCommon )(*pdfCIDFontType0 ,error ){if _dggc ._gdab !="\u0043\u0049\u0044F\u006f\u006e\u0074\u0054\u0079\u0070\u0065\u0030"{_egb .Log .Debug ("\u0045R\u0052\u004fR\u003a\u0020\u0046\u006fn\u0074\u0020\u0053u\u0062\u0054\u0079\u0070\u0065\u0020\u0021\u003d\u0020CI\u0044\u0046\u006fn\u0074\u0054y\u0070\u0065\u0030\u002e\u0020\u0066o\u006e\u0074=\u0025\u0073",_dggc ); return nil ,_dfg .ErrRangeError ;};_bddd :=_abfgc (_dggc );_bfdcb ,_gfgg :=_dfg .GetDict (_afbe .Get ("\u0043\u0049\u0044\u0053\u0079\u0073\u0074\u0065\u006d\u0049\u006e\u0066\u006f"));if !_gfgg {_egb .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0043I\u0044\u0053\u0079st\u0065\u006d\u0049\u006e\u0066\u006f \u0028\u0052\u0065\u0071\u0075\u0069\u0072\u0065\u0064\u0029\u0020\u006d\u0069\u0073\u0073i\u006e\u0067\u002e\u0020\u0066\u006f\u006e\u0074=\u0025\u0073",_dggc ); return nil ,ErrRequiredAttributeMissing ;};_bddd .CIDSystemInfo =_bfdcb ;_bddd .DW =_afbe .Get ("\u0044\u0057");_bddd .W =_afbe .Get ("\u0057");_bddd .DW2 =_afbe .Get ("\u0044\u0057\u0032");_bddd .W2 =_afbe .Get ("\u0057\u0032");_bddd ._ebfc =1000.0;if _ecfe ,_cccec :=_dfg .GetNumberAsFloat (_bddd .DW ); _cccec ==nil {_bddd ._ebfc =_ecfe ;};_bddae ,_gbec :=_fafd (_bddd .W );if _gbec !=nil {return nil ,_gbec ;};if _bddae ==nil {_bddae =map[_ff .CharCode ]float64 {};};_bddd ._ceda =_bddae ;return _bddd ,nil ;}; // ToPdfObject implements interface PdfModel. func (_egaf *PdfAnnotationFreeText )ToPdfObject ()_dfg .PdfObject {_egaf .PdfAnnotation .ToPdfObject ();_eac :=_egaf ._afae ;_ddfc :=_eac .PdfObject .(*_dfg .PdfObjectDictionary );_egaf .appendToPdfDictionary (_ddfc );_ddfc .SetIfNotNil ("\u0053u\u0062\u0074\u0079\u0070\u0065",_dfg .MakeName ("\u0046\u0072\u0065\u0065\u0054\u0065\u0078\u0074")); _ddfc .SetIfNotNil ("\u0044\u0041",_egaf .DA );_ddfc .SetIfNotNil ("\u0051",_egaf .Q );_ddfc .SetIfNotNil ("\u0052\u0043",_egaf .RC );_ddfc .SetIfNotNil ("\u0044\u0053",_egaf .DS );_ddfc .SetIfNotNil ("\u0043\u004c",_egaf .CL );_ddfc .SetIfNotNil ("\u0049\u0054",_egaf .IT ); _ddfc .SetIfNotNil ("\u0042\u0045",_egaf .BE );_ddfc .SetIfNotNil ("\u0052\u0044",_egaf .RD );_ddfc .SetIfNotNil ("\u0042\u0053",_egaf .BS );_ddfc .SetIfNotNil ("\u004c\u0045",_egaf .LE );return _eac ;}; // GetContainingPdfObject returns the XObject Form's containing object (indirect object). func (_ebgdbc *XObjectForm )GetContainingPdfObject ()_dfg .PdfObject {return _ebgdbc ._baced }; // NewOutlineBookmark returns an initialized PdfOutlineItem for a given bookmark title and page. func NewOutlineBookmark (title string ,page *_dfg .PdfIndirectObject )*PdfOutlineItem {_edafb :=PdfOutlineItem {};_edafb ._cface =&_edafb ;_edafb .Title =_dfg .MakeString (title );_gdefg :=_dfg .MakeArray ();_gdefg .Append (page );_gdefg .Append (_dfg .MakeName ("\u0046\u0069\u0074")); _edafb .Dest =_gdefg ;return &_edafb ;}; // NewStandard14Font returns the standard 14 font named `basefont` as a *PdfFont, or an error if it // `basefont` is not one of the standard 14 font names. func NewStandard14Font (basefont StdFontName )(*PdfFont ,error ){_egca ,_cfedf :=_ggabd (basefont );if _cfedf !=nil {return nil ,_cfedf ;};if basefont !=SymbolName &&basefont !=ZapfDingbatsName {_egca ._febca =_ff .NewWinAnsiEncoder ();};return &PdfFont {_fab :&_egca },nil ; }; // IsCheckbox returns true if the button field represents a checkbox, false otherwise. func (_aebac *PdfFieldButton )IsCheckbox ()bool {return _aebac .GetType ()==ButtonTypeCheckbox };func _eacc (_aafaa _dfg .PdfObject ,_fccbd _dfg .PdfObject ,_eddfd map[_dfg .PdfObject ][]_dfg .PdfObject ,_affcd map[string ]_dfg .PdfObject ,_gfcfd *[]_dfg .PdfObject ){var _bdgde *_dfg .PdfIndirectObject ; if _beff ,_afaff :=_dfg .GetIndirect (_aafaa );_afaff {_bdgde =_beff ;_aafaa =_beff .PdfObject ;};switch _bcgeg :=_aafaa .(type ){case *_dfg .PdfObjectDictionary :if _bcgeg .Get ("\u0053")==nil {return ;};_bcgeg .Set ("\u0050",_fccbd );if _cccbc :=_bcgeg .Get ("\u0050\u0067"); _cccbc !=nil {if _bgaca ,_fcacee :=_dfg .GetIndirect (_cccbc );_fcacee &&_bgaca !=nil &&_bgaca .PdfObject !=nil {_eddfd [_cccbc ]=append (_eddfd [_cccbc ],_bdgde );};};if _bdca :=_bcgeg .Get ("\u0053");_bdca !=nil {if _cfbf ,_cdggf :=_dfg .GetNameVal (_bdca ); _cdggf {if _cfbf ==string (StructureTypeLink )||_cfbf ==string (StructureTypeAnnot ){if _gcafe :=_bcgeg .Get ("\u004b");_gcafe !=nil {if _fdccg ,_aaccc :=_dfg .GetArray (_gcafe );_aaccc &&_fdccg .Len ()==2{_fdcfb :=false ;_bdeea :=false ;for _ ,_bcdcg :=range _fdccg .Elements (){if _cffff ,_cced :=_dfg .GetDict (_bcdcg ); _cced {if _ ,_fcde :=_dfg .GetName (_cffff .Get ("\u0054\u0079\u0070\u0065"));_fcde {_bdeea =true ;};}else if _ ,_fbeaa :=_dfg .GetInt (_bcdcg );_fbeaa {_fdcfb =true ;};};if _fdcfb &&_bdeea {*_gfcfd =append (*_gfcfd ,_bdgde );};}else if _aefbf ,_gegdb :=_dfg .GetDict (_gcafe ); _gegdb {if _ ,_cffcc :=_dfg .GetName (_aefbf .Get ("\u0054\u0079\u0070\u0065"));_cffcc {*_gfcfd =append (*_gfcfd ,_bdgde );};};};};};};if _dcfa :=_bcgeg .Get ("\u0049\u0044");_dcfa !=nil {_affcd [_dcfa .String ()]=_aafaa ;};if _deddg :=_bcgeg .Get ("\u004b"); _deddg !=nil {_eacc (_deddg ,_bdgde ,_eddfd ,_affcd ,_gfcfd );};case *_dfg .PdfObjectArray :for _ ,_debcc :=range _bcgeg .Elements (){_eacc (_debcc ,_fccbd ,_eddfd ,_affcd ,_gfcfd );};default:};}; // SetFilter sets compression filter. Decodes with current filter sets and // encodes the data with the new filter. func (_adaed *XObjectImage )SetFilter (encoder _dfg .StreamEncoder )error {_baff :=_adaed .Stream ;_cbgab ,_egea :=_adaed .Filter .DecodeBytes (_baff );if _egea !=nil {return _egea ;};_adaed .Filter =encoder ;encoder .UpdateParams (_adaed .getParamsDict ()); _baff ,_egea =encoder .EncodeBytes (_cbgab );if _egea !=nil {return _egea ;};_adaed .Stream =_baff ;return nil ;}; // ImageToRGB returns the passed in image. Method exists in order to satisfy // the PdfColorspace interface. func (_agcd *PdfColorspaceDeviceRGB )ImageToRGB (img Image )(Image ,error ){return img ,nil };const (_ PdfOutputIntentType =iota ;PdfOutputIntentTypeA1 ;PdfOutputIntentTypeA2 ;PdfOutputIntentTypeA3 ;PdfOutputIntentTypeA4 ;PdfOutputIntentTypeX ;);func (_cafb *pdfCIDFontType0 )getFontDescriptor ()*PdfFontDescriptor {return _cafb ._cebfd }; func _ggdfc (_cdbb *fontCommon )*pdfFontType3 {return &pdfFontType3 {fontCommon :*_cdbb }}; // SetCatalogStructTreeRoot sets the catalog struct tree root object. func (_gfaee *PdfWriter )SetCatalogStructTreeRoot (tree _dfg .PdfObject )error {if tree ==nil {_gfaee ._acgcc .Remove ("\u0053\u0074\u0072\u0075\u0063\u0074\u0054\u0072\u0065e\u0052\u006f\u006f\u0074");return nil ;};_gfaee ._acgcc .Set ("\u0053\u0074\u0072\u0075\u0063\u0074\u0054\u0072\u0065e\u0052\u006f\u006f\u0074",tree ); return _gfaee .addObjects (tree );}; // NewPdfAnnotationPrinterMark returns a new printermark annotation. func NewPdfAnnotationPrinterMark ()*PdfAnnotationPrinterMark {_dgf :=NewPdfAnnotation ();_gdfd :=&PdfAnnotationPrinterMark {};_gdfd .PdfAnnotation =_dgf ;_dgf .SetContext (_gdfd );return _gdfd ;}; // ColorToRGB converts a color in Separation colorspace to RGB colorspace. func (_cgeaa *PdfColorspaceSpecialSeparation )ColorToRGB (color PdfColor )(PdfColor ,error ){if _cgeaa .AlternateSpace ==nil {return nil ,_bd .New ("\u0061\u006c\u0074\u0065\u0072\u006e\u0061\u0074\u0065\u0020c\u006f\u006c\u006f\u0072\u0073\u0070\u0061c\u0065\u0020\u0075\u006e\u0064\u0065\u0066\u0069\u006e\u0065\u0064"); };return _cgeaa .AlternateSpace .ColorToRGB (color );};func (_cbeaee *PdfReader )newPdfPageFromDict (_fdge *_dfg .PdfObjectDictionary )(*PdfPage ,error ){_fbebg :=NewPdfPage ();_fbebg ._daae =_fdge ;_fbebg ._fagbf =*_fdge ;_fcbdf :=*_fdge ;_addce ,_bagd :=_fcbdf .Get ("\u0054\u0079\u0070\u0065").(*_dfg .PdfObjectName ); if !_bagd {return nil ,_bd .New ("\u006d\u0069ss\u0069\u006e\u0067/\u0069\u006e\u0076\u0061lid\u0020Pa\u0067\u0065\u0020\u0064\u0069\u0063\u0074io\u006e\u0061\u0072\u0079\u0020\u0054\u0079p\u0065");};if *_addce !="\u0050\u0061\u0067\u0065"{return nil ,_bd .New ("\u0070\u0061\u0067\u0065 \u0064\u0069\u0063\u0074\u0069\u006f\u006e\u0061\u0072\u0079 \u0054y\u0070\u0065\u0020\u0021\u003d\u0020\u0050a\u0067\u0065"); };if _cdfgb :=_fcbdf .Get ("\u0050\u0061\u0072\u0065\u006e\u0074");_cdfgb !=nil {_fbebg .Parent =_cdfgb ;};if _gbbaa :=_fcbdf .Get ("\u004c\u0061\u0073t\u004d\u006f\u0064\u0069\u0066\u0069\u0065\u0064");_gbbaa !=nil {_fadeb ,_cgdc :=_dfg .GetString (_gbbaa ); if !_cgdc {return nil ,_bd .New ("\u0070\u0061\u0067\u0065\u0020\u0064\u0069\u0063\u0074\u0069\u006f\u006e\u0061\u0072\u0079\u0020\u004c\u0061\u0073\u0074\u004d\u006f\u0064\u0069f\u0069\u0065\u0064\u0020\u0021=\u0020\u0073t\u0072\u0069\u006e\u0067");}; _cbdf ,_gffaf :=NewPdfDate (_fadeb .Str ());if _gffaf !=nil {return nil ,_gffaf ;};_fbebg .LastModified =&_cbdf ;};if _fgff :=_fcbdf .Get ("\u0052e\u0073\u006f\u0075\u0072\u0063\u0065s");_fgff !=nil &&!_dfg .IsNullObject (_fgff ){_ecbfc ,_afdd :=_dfg .GetDict (_fgff ); if !_afdd {return nil ,_d .Errorf ("\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0072\u0065\u0073\u006f\u0075\u0072\u0063e\u0020d\u0069\u0063\u0074\u0069\u006f\u006e\u0061\u0072\u0079\u0020\u0028\u0025\u0054\u0029",_fgff );};var _agbe error ;_fbebg .Resources ,_agbe =NewPdfPageResourcesFromDict (_ecbfc ); if _agbe !=nil {return nil ,_agbe ;};}else {_fedcef ,_eegb :=_fbebg .getParentResources ();if _eegb !=nil {return nil ,_eegb ;};if _fedcef ==nil {_fedcef =NewPdfPageResources ();};_fbebg .Resources =_fedcef ;};if _eacg :=_fcbdf .Get ("\u004d\u0065\u0064\u0069\u0061\u0042\u006f\u0078"); _eacg !=nil {_gccdc ,_cgbc :=_dfg .GetArray (_eacg );if !_cgbc {return nil ,_bd .New ("\u0070\u0061\u0067\u0065\u0020\u004d\u0065\u0064\u0069\u0061\u0042o\u0078\u0020\u006e\u006f\u0074\u0020\u0061\u006e\u0020\u0061r\u0072\u0061\u0079");};var _gfdaa error ; _fbebg .MediaBox ,_gfdaa =NewPdfRectangle (*_gccdc );if _gfdaa !=nil {return nil ,_gfdaa ;};};if _egegf :=_fcbdf .Get ("\u0043r\u006f\u0070\u0042\u006f\u0078");_egegf !=nil {_ccca ,_ceacg :=_dfg .GetArray (_egegf );if !_ceacg {return nil ,_bd .New ("\u0070a\u0067\u0065\u0020\u0043r\u006f\u0070\u0042\u006f\u0078 \u006eo\u0074 \u0061\u006e\u0020\u0061\u0072\u0072\u0061y"); };var _dfecc error ;_fbebg .CropBox ,_dfecc =NewPdfRectangle (*_ccca );if _dfecc !=nil {return nil ,_dfecc ;};};if _ddddfg :=_fcbdf .Get ("\u0042\u006c\u0065\u0065\u0064\u0042\u006f\u0078");_ddddfg !=nil {_bbebb ,_dcbbc :=_dfg .GetArray (_ddddfg );if !_dcbbc {return nil ,_bd .New ("\u0070\u0061\u0067\u0065\u0020\u0042\u006c\u0065\u0065\u0064\u0042o\u0078\u0020\u006e\u006f\u0074\u0020\u0061\u006e\u0020\u0061r\u0072\u0061\u0079"); };var _fedcf error ;_fbebg .BleedBox ,_fedcf =NewPdfRectangle (*_bbebb );if _fedcf !=nil {return nil ,_fedcf ;};};if _edefe :=_fcbdf .Get ("\u0054r\u0069\u006d\u0042\u006f\u0078");_edefe !=nil {_gbcc ,_dfee :=_dfg .GetArray (_edefe );if !_dfee {return nil ,_bd .New ("\u0070a\u0067\u0065\u0020\u0054r\u0069\u006d\u0042\u006f\u0078 \u006eo\u0074 \u0061\u006e\u0020\u0061\u0072\u0072\u0061y"); };var _cdff error ;_fbebg .TrimBox ,_cdff =NewPdfRectangle (*_gbcc );if _cdff !=nil {return nil ,_cdff ;};};if _ggbdaa :=_fcbdf .Get ("\u0041\u0072\u0074\u0042\u006f\u0078");_ggbdaa !=nil {_efeea ,_ccfd :=_dfg .GetArray (_ggbdaa );if !_ccfd {return nil ,_bd .New ("\u0070a\u0067\u0065\u0020\u0041\u0072\u0074\u0042\u006f\u0078\u0020\u006eo\u0074\u0020\u0061\u006e\u0020\u0061\u0072\u0072\u0061\u0079"); };var _fbfac error ;_fbebg .ArtBox ,_fbfac =NewPdfRectangle (*_efeea );if _fbfac !=nil {return nil ,_fbfac ;};};if _gbdca :=_fcbdf .Get ("\u0042\u006f\u0078C\u006f\u006c\u006f\u0072\u0049\u006e\u0066\u006f");_gbdca !=nil {_fbebg .BoxColorInfo =_gbdca ; };if _bcfbd :=_fcbdf .Get ("\u0043\u006f\u006e\u0074\u0065\u006e\u0074\u0073");_bcfbd !=nil {_fbebg .Contents =_bcfbd ;};if _fbfe :=_fcbdf .Get ("\u0052\u006f\u0074\u0061\u0074\u0065");_fbfe !=nil {_eaadc ,_bafgb :=_dfg .GetNumberAsInt64 (_fbfe );if _bafgb !=nil {return nil ,_bd .New ("\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0050\u0061\u0067e\u0020\u0052\u006f\u0074\u0061\u0074\u0065\u0020\u006f\u0062j\u0065\u0063\u0074"); };_fbebg .Rotate =&_eaadc ;};if _fgccf :=_fcbdf .Get ("\u0047\u0072\u006fu\u0070");_fgccf !=nil {_fbebg .Group =_fgccf ;};if _aabda :=_fcbdf .Get ("\u0054\u0068\u0075m\u0062");_aabda !=nil {_fbebg .Thumb =_aabda ;};if _bafcad :=_fcbdf .Get ("\u0042");_bafcad !=nil {_fbebg .B =_bafcad ; };if _dgca :=_fcbdf .Get ("\u0044\u0075\u0072");_dgca !=nil {_fbebg .Dur =_dgca ;};if _cagc :=_fcbdf .Get ("\u0054\u0072\u0061n\u0073");_cagc !=nil {_fbebg .Trans =_cagc ;};if _egcd :=_fcbdf .Get ("\u0041\u0041");_egcd !=nil {_fbebg .AA =_egcd ;};if _fbefff :=_fcbdf .Get ("\u004d\u0065\u0074\u0061\u0064\u0061\u0074\u0061"); _fbefff !=nil {_fbebg .Metadata =_fbefff ;};if _bcdde :=_fcbdf .Get ("\u0050i\u0065\u0063\u0065\u0049\u006e\u0066o");_bcdde !=nil {_fbebg .PieceInfo =_bcdde ;};if _caggb :=_fcbdf .Get ("\u0053\u0074\u0072\u0075\u0063\u0074\u0050\u0061\u0072\u0065\u006e\u0074\u0073"); _caggb !=nil {_fbebg .StructParents =_caggb ;};if _bfaddd :=_fcbdf .Get ("\u0049\u0044");_bfaddd !=nil {_fbebg .ID =_bfaddd ;};if _deadg :=_fcbdf .Get ("\u0050\u005a");_deadg !=nil {_fbebg .PZ =_deadg ;};if _abcca :=_fcbdf .Get ("\u0053\u0065\u0070\u0061\u0072\u0061\u0074\u0069\u006fn\u0049\u006e\u0066\u006f"); _abcca !=nil {_fbebg .SeparationInfo =_abcca ;};if _abfd :=_fcbdf .Get ("\u0054\u0061\u0062\u0073");_abfd !=nil {_fbebg .Tabs =_abfd ;};if _bbac :=_fcbdf .Get ("T\u0065m\u0070\u006c\u0061\u0074\u0065\u0049\u006e\u0073t\u0061\u006e\u0074\u0069at\u0065\u0064"); _bbac !=nil {_fbebg .TemplateInstantiated =_bbac ;};if _gaabb :=_fcbdf .Get ("\u0050r\u0065\u0073\u0053\u0074\u0065\u0070s");_gaabb !=nil {_fbebg .PresSteps =_gaabb ;};if _aafe :=_fcbdf .Get ("\u0055\u0073\u0065\u0072\u0055\u006e\u0069\u0074");_aafe !=nil {_fbebg .UserUnit =_aafe ; };if _ggdge :=_fcbdf .Get ("\u0056\u0050");_ggdge !=nil {_fbebg .VP =_ggdge ;};if _caedg :=_fcbdf .Get ("\u0041\u006e\u006e\u006f\u0074\u0073");_caedg !=nil {_fbebg .Annots =_caedg ;};_fbebg ._ggcgd =_cbeaee ;return _fbebg ,nil ;}; // GetNumComponents returns the number of input color components, i.e. that are input to the tint transform. func (_afdba *PdfColorspaceDeviceN )GetNumComponents ()int {return _afdba .ColorantNames .Len ()};func _gceee (_bcbd *_dfg .PdfObjectDictionary ){_bgab ,_caaaa :=_dfg .GetArray (_bcbd .Get ("\u0057\u0069\u0064\u0074\u0068\u0073"));_ggce ,_aaffb :=_dfg .GetIntVal (_bcbd .Get ("\u0046i\u0072\u0073\u0074\u0043\u0068\u0061r")); _bbbd ,_acgd :=_dfg .GetIntVal (_bcbd .Get ("\u004c\u0061\u0073\u0074\u0043\u0068\u0061\u0072"));if _caaaa &&_aaffb &&_acgd {_ddge :=_bgab .Len ();if _ddge !=_bbbd -_ggce +1{_egb .Log .Debug ("\u0055\u006e\u0065x\u0070\u0065\u0063\u0074\u0065\u0064\u0020\u0057\u0069\u0064\u0074\u0068\u0073\u0020\u006c\u0065\u006e\u0067\u0074\u0068\u003a\u0020\u0025\u0076\u002c\u0020\u004c\u0061\u0073t\u0043\u0068\u0061\u0072\u003a\u0020\u0025\u0076",_ddge ,_bbbd ); _gdacd :=_dfg .PdfObjectInteger (_ggce +_ddge -1);_bcbd .Set ("\u004c\u0061\u0073\u0074\u0043\u0068\u0061\u0072",&_gdacd );};};}; // SetDirection sets the value of the direction. func (_gacab *ViewerPreferences )SetDirection (direction Direction ){_gacab ._afddc =direction };func (_gdace *pdfFontType0 )subsetRegistered ()error {_fbaba ,_cfedc :=_gdace .DescendantFont ._fab .(*pdfCIDFontType2 );if !_cfedc {_egb .Log .Debug ("\u0046\u006fnt\u0020\u006e\u006ft\u0020\u0073\u0075\u0070por\u0074ed\u0020\u0066\u006f\u0072\u0020\u0073\u0075bs\u0065\u0074\u0074\u0069\u006e\u0067\u0020%\u0054",_gdace .DescendantFont ); return nil ;};if _fbaba ==nil {return nil ;};if _fbaba ._cebfd ==nil {_egb .Log .Debug ("\u004d\u0069\u0073si\u006e\u0067\u0020\u0066\u006f\u006e\u0074\u0020\u0064\u0065\u0073\u0063\u0072\u0069\u0070\u0074\u006f\u0072");return nil ;};if _gdace ._gbaf ==nil {_egb .Log .Debug ("\u004e\u006f\u0020e\u006e\u0063\u006f\u0064e\u0072\u0020\u002d\u0020\u0073\u0075\u0062s\u0065\u0074\u0074\u0069\u006e\u0067\u0020\u0069\u0067\u006e\u006f\u0072\u0065\u0064"); return nil ;};_fgdce ,_cfedc :=_dfg .GetStream (_fbaba ._cebfd .FontFile2 );if !_cfedc {_egb .Log .Debug ("\u0045\u006d\u0062\u0065\u0064\u0064\u0065\u0064\u0020\u0066\u006f\u006e\u0074\u0020\u006f\u0062\u006a\u0065c\u0074\u0020\u006e\u006f\u0074\u0020\u0066o\u0075\u006e\u0064\u0020\u002d\u002d\u0020\u0041\u0042\u004f\u0052T\u0020\u0073\u0075\u0062\u0073\u0065\u0074\u0074\u0069\u006e\u0067"); return _bd .New ("\u0066\u006f\u006e\u0074fi\u006c\u0065\u0032\u0020\u006e\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064");};_fcef ,_dgec :=_dfg .DecodeStream (_fgdce );if _dgec !=nil {_egb .Log .Debug ("\u0044\u0065c\u006f\u0064\u0065 \u0065\u0072\u0072\u006f\u0072\u003a\u0020\u0025\u0076",_dgec ); return _dgec ;};_cfgge ,_dgec :=_be .Parse (_cca .NewReader (_fcef ));if _dgec !=nil {_egb .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0070\u0061\u0072\u0073\u0069n\u0067\u0020\u0025\u0064\u0020\u0062\u0079\u0074\u0065\u0020f\u006f\u006e\u0074",len (_fgdce .Stream )); return _dgec ;};var _cfede []rune ;var _ccab *_be .Font ;switch _bgcae :=_gdace ._gbaf .(type ){case *_ff .TrueTypeFontEncoder :_cfede =_bgcae .RegisteredRunes ();_ccab ,_dgec =_cfgge .SubsetKeepRunes (_cfede );if _dgec !=nil {_egb .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a\u0020\u0025v",_dgec ); return _dgec ;};_bgcae .SubsetRegistered ();case *_ff .IdentityEncoder :_cfede =_bgcae .RegisteredRunes ();_abge :=make ([]_be .GlyphIndex ,len (_cfede ));for _bacfaf ,_geef :=range _cfede {_abge [_bacfaf ]=_be .GlyphIndex (_geef );};_ccab ,_dgec =_cfgge .SubsetKeepIndices (_abge ); if _dgec !=nil {_egb .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a\u0020\u0025v",_dgec );return _dgec ;};case _ff .SimpleEncoder :_efeff :=_bgcae .Charcodes ();for _ ,_eabcf :=range _efeff {_ccafa ,_befc :=_bgcae .CharcodeToRune (_eabcf );if !_befc {_egb .Log .Debug ("\u0045\u0052\u0052O\u0052\u003a\u0020\u0075\u006e\u0061\u0062\u006c\u0065\u0020\u0063\u006f\u006e\u0076\u0065\u0072\u0074\u0020\u0063\u0068\u0061\u0072\u0063\u006f\u0064\u0065\u0020\u0074\u006f \u0072\u0075\u006e\u0065\u003a\u0020\u0025\u0064",_eabcf ); continue ;};_cfede =append (_cfede ,_ccafa );};default:return _d .Errorf ("\u0075\u006e\u0073\u0075\u0070\u0070\u006f\u0072\u0074\u0065\u0064\u0020\u0065\u006e\u0063\u006f\u0064\u0065\u0072\u0020\u0066\u006f\u0072\u0020s\u0075\u0062\u0073\u0065\u0074t\u0069\u006eg\u003a\u0020\u0025\u0054",_gdace ._gbaf ); };var _fceba _cca .Buffer ;_dgec =_ccab .Write (&_fceba );if _dgec !=nil {_egb .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a\u0020\u0025v",_dgec );return _dgec ;};if _gdace ._bgdcbc !=nil {_egccgb :=make (map[_efg .CharCode ]rune ,len (_cfede ));for _ ,_adcef :=range _cfede {_ebadb ,_fegbb :=_gdace ._gbaf .RuneToCharcode (_adcef ); if !_fegbb {continue ;};_egccgb [_efg .CharCode (_ebadb )]=_adcef ;};_gdace ._bgdcbc =_efg .NewToUnicodeCMap (_egccgb );};_fgdce ,_dgec =_dfg .MakeStream (_fceba .Bytes (),_dfg .NewFlateEncoder ());if _dgec !=nil {_egb .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a\u0020\u0025v",_dgec ); return _dgec ;};_fgdce .Set ("\u004ce\u006e\u0067\u0074\u0068\u0031",_dfg .MakeInteger (int64 (_fceba .Len ())));if _gbgbf ,_edfaa :=_dfg .GetStream (_fbaba ._cebfd .FontFile2 );_edfaa {*_gbgbf =*_fgdce ;}else {_fbaba ._cebfd .FontFile2 =_fgdce ;};_ffef :=_bafgc (); if len (_gdace ._dbcbc )> 0{_gdace ._dbcbc =_faeg (_gdace ._dbcbc ,_ffef );};if len (_fbaba ._dbcbc )> 0{_fbaba ._dbcbc =_faeg (_fbaba ._dbcbc ,_ffef );};if len (_gdace ._gadbd )> 0{_gdace ._gadbd =_faeg (_gdace ._gadbd ,_ffef );};if _fbaba ._cebfd !=nil {_baeg ,_bacg :=_dfg .GetName (_fbaba ._cebfd .FontName ); if _bacg &&len (_baeg .String ())> 0{_fdaff :=_faeg (_baeg .String (),_ffef );_fbaba ._cebfd .FontName =_dfg .MakeName (_fdaff );};};return nil ;}; // PdfFunctionType3 defines stitching of the subdomains of several 1-input functions to produce // a single new 1-input function. type PdfFunctionType3 struct{Domain []float64 ;Range []float64 ;Functions []PdfFunction ;Bounds []float64 ;Encode []float64 ;_begcf *_dfg .PdfIndirectObject ;};func _gccag ()string {_dfbaa .Lock ();defer _dfbaa .Unlock ();return _geccfa };func (_gab *PdfReader )newPdfAnnotationInkFromDict (_dabca *_dfg .PdfObjectDictionary )(*PdfAnnotationInk ,error ){_fgdd :=PdfAnnotationInk {}; _fba ,_cab :=_gab .newPdfAnnotationMarkupFromDict (_dabca );if _cab !=nil {return nil ,_cab ;};_fgdd .PdfAnnotationMarkup =_fba ;_fgdd .InkList =_dabca .Get ("\u0049n\u006b\u004c\u0069\u0073\u0074");_fgdd .BS =_dabca .Get ("\u0042\u0053");return &_fgdd ,nil ; }; // SetOCProperties sets the optional content properties. func (_cagga *PdfWriter )SetOCProperties (ocProperties _dfg .PdfObject )error {_cggcd :=_cagga ._acgcc ;if ocProperties !=nil {_egb .Log .Trace ("\u0053e\u0074\u0074\u0069\u006e\u0067\u0020\u004f\u0043\u0020\u0050\u0072o\u0070\u0065\u0072\u0074\u0069\u0065\u0073\u002e\u002e\u002e"); _cggcd .Set ("\u004f\u0043\u0050r\u006f\u0070\u0065\u0072\u0074\u0069\u0065\u0073",ocProperties );return _cagga .addObjects (ocProperties );};return nil ;};func (_ageb *pdfFontType0 )bytesToCharcodes (_bggdd []byte )([]_ff .CharCode ,bool ){if _ageb ._dfec ==nil {return nil ,false ; };_ggeeb ,_fegb :=_ageb ._dfec .BytesToCharcodes (_bggdd );if !_fegb {return nil ,false ;};_cgaaf :=make ([]_ff .CharCode ,len (_ggeeb ));for _egafb ,_acdbe :=range _ggeeb {_cgaaf [_egafb ]=_ff .CharCode (_acdbe );};return _cgaaf ,true ;}; // AlphaMap performs mapping of alpha data for transformations. Allows custom filtering of alpha data etc. func (_bfgbe *Image )AlphaMap (mapFunc AlphaMapFunc ){for _cccb ,_bdgef :=range _bfgbe ._baeef {_bfgbe ._baeef [_cccb ]=mapFunc (_bdgef );};};func _dbfa (_dfeag _dfg .PdfObject )(*PdfColorspaceSpecialPattern ,error ){_egb .Log .Trace ("\u004e\u0065\u0077\u0020\u0050\u0061\u0074\u0074\u0065\u0072n\u0020\u0043\u0053\u0020\u0066\u0072\u006fm\u0020\u006f\u0062\u006a\u003a\u0020\u0025\u0073\u0020\u0025\u0054",_dfeag .String (),_dfeag ); _edc :=NewPdfColorspaceSpecialPattern ();if _bcbbd ,_aaeb :=_dfeag .(*_dfg .PdfIndirectObject );_aaeb {_edc ._fdea =_bcbbd ;};_dfeag =_dfg .TraceToDirectObject (_dfeag );if _ggef ,_dfcfa :=_dfeag .(*_dfg .PdfObjectName );_dfcfa {if *_ggef !="\u0050a\u0074\u0074\u0065\u0072\u006e"{return nil ,_d .Errorf ("\u0069\u006e\u0076a\u006c\u0069\u0064\u0020\u006e\u0061\u006d\u0065"); };return _edc ,nil ;};_gdbba ,_fedc :=_dfeag .(*_dfg .PdfObjectArray );if !_fedc {_egb .Log .Error ("\u0049\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0050\u0061t\u0074\u0065\u0072\u006e\u0020\u0043\u0053 \u004f\u0062\u006a\u0065\u0063\u0074\u003a\u0020\u0025\u0023\u0076",_dfeag ); return nil ,_d .Errorf ("\u0069n\u0076\u0061\u006c\u0069d\u0020\u0050\u0061\u0074\u0074e\u0072n\u0020C\u0053\u0020\u006f\u0062\u006a\u0065\u0063t");};if _gdbba .Len ()!=1&&_gdbba .Len ()!=2{_egb .Log .Error ("\u0049\u006ev\u0061\u006c\u0069\u0064\u0020\u0050\u0061\u0074\u0074\u0065\u0072\u006e\u0020\u0043\u0053\u0020\u0061\u0072\u0072\u0061\u0079\u003a %\u0023\u0076",_gdbba ); return nil ,_d .Errorf ("\u0069n\u0076\u0061\u006c\u0069\u0064\u0020\u0050\u0061\u0074\u0074\u0065r\u006e\u0020\u0043\u0053\u0020\u0061\u0072\u0072\u0061\u0079");};_dfeag =_gdbba .Get (0);if _edde ,_dbfd :=_dfeag .(*_dfg .PdfObjectName );_dbfd {if *_edde !="\u0050a\u0074\u0074\u0065\u0072\u006e"{_egb .Log .Error ("\u0049\u006e\u0076al\u0069\u0064\u0020\u0050\u0061\u0074\u0074\u0065\u0072n\u0020C\u0053 \u0061r\u0072\u0061\u0079\u0020\u006e\u0061\u006d\u0065\u003a\u0020\u0025\u0023\u0076",_edde ); return nil ,_d .Errorf ("\u0069\u006e\u0076a\u006c\u0069\u0064\u0020\u006e\u0061\u006d\u0065");};};if _gdbba .Len ()> 1{_dfeag =_gdbba .Get (1);_dfeag =_dfg .TraceToDirectObject (_dfeag );_fgcd ,_bacf :=NewPdfColorspaceFromPdfObject (_dfeag );if _bacf !=nil {return nil ,_bacf ; };_edc .UnderlyingCS =_fgcd ;};_egb .Log .Trace ("R\u0065\u0074\u0075\u0072\u006e\u0069\u006e\u0067\u0020\u0050\u0061\u0074\u0074\u0065\u0072\u006e\u0020\u0077i\u0074\u0068\u0020\u0075\u006e\u0064\u0065\u0072\u006c\u0079in\u0067\u0020\u0063s\u003a \u0025\u0054",_edc .UnderlyingCS ); return _edc ,nil ;}; // PdfOutputIntentType is the subtype of the given PdfOutputIntent. type PdfOutputIntentType int ; // NewPdfActionSetOCGState returns a new "named" action. func NewPdfActionSetOCGState ()*PdfActionSetOCGState {_cdfa :=NewPdfAction ();_cfe :=&PdfActionSetOCGState {};_cfe .PdfAction =_cdfa ;_cdfa .SetContext (_cfe );return _cfe ;}; // GetCatalogStructTreeRoot gets the catalog StructTreeRoot object. func (_daga *PdfReader )GetCatalogStructTreeRoot ()(_dfg .PdfObject ,bool ){_fgcab :=_dfg .ResolveReference (_daga ._fbfgb .Get ("\u0053\u0074\u0072\u0075\u0063\u0074\u0054\u0072\u0065e\u0052\u006f\u006f\u0074"));if _fgcab ==nil {return nil ,false ;};if !_daga ._bafba {_cfcdg :=_daga .traverseObjectData (_fgcab ); if _cfcdg !=nil {_egb .Log .Debug ("\u0045\u0052R\u004f\u0052\u003a\u0020\u0046a\u0069\u006c\u0065\u0064\u0020t\u006f\u0020\u0074\u0072\u0061\u0076\u0065\u0072\u0073\u0065\u0020\u0053\u0074\u0072\u0075\u0063\u0074\u0054\u0072\u0065\u0065\u0052\u006f\u006f\u0074\u0020\u006f\u0062\u006a\u0065\u0063\u0074\u0020\u0028\u0025\u0073\u0029",_cfcdg ); return nil ,false ;};};return _fgcab ,true ;}; // PdfAnnotationInk represents Ink annotations. // (Section 12.5.6.13). type PdfAnnotationInk struct{*PdfAnnotation ;*PdfAnnotationMarkup ;InkList _dfg .PdfObject ;BS _dfg .PdfObject ;}; // G returns the value of the green component of the color. func (_abcc *PdfColorDeviceRGB )G ()float64 {return _abcc [1]};func (_ddba *PdfPage )flattenFieldsWithOpts (_cdba FieldAppearanceGenerator ,_bgfac *FieldFlattenOpts ,_bbdg map[*PdfAnnotation ]bool )error {var _dfaa []*PdfAnnotation ;if _cdba !=nil {if _decbg :=_cdba .WrapContentStream (_ddba ); _decbg !=nil {return _decbg ;};};_cbea ,_abceg :=_ddba .GetAnnotations ();if _abceg !=nil {return _abceg ;};for _ ,_becda :=range _cbea {_cecd ,_ddcge :=_bbdg [_becda ];if !_ddcge &&_bgfac .AnnotFilterFunc !=nil {if _ ,_gffae :=_becda .GetContext ().(*PdfAnnotationWidget ); !_gffae {_ddcge =_bgfac .AnnotFilterFunc (_becda );};};if !_ddcge {_dfaa =append (_dfaa ,_becda );continue ;};switch _becda .GetContext ().(type ){case *PdfAnnotationPopup :continue ;case *PdfAnnotationLink :continue ;case *PdfAnnotationProjection :continue ; };_gbfdg ,_cagb ,_aeab :=_gdafa (_becda );if _aeab !=nil {if !_cecd {_egb .Log .Trace ("\u0046\u0069\u0065\u006c\u0064\u0020\u0077\u0069\u0074h\u006f\u0075\u0074\u0020\u0056\u0020\u002d\u003e\u0020\u0061\u006e\u006e\u006f\u0074\u0061\u0074\u0069\u006f\u006e\u0020\u0077\u0069\u0074h\u006f\u0075t\u0020\u0061p\u0070\u0065\u0061\u0072\u0061\u006e\u0063\u0065\u0020\u0073\u0074\u0072\u0065am\u0020\u002d\u0020\u0073\u006b\u0069\u0070\u0070\u0069n\u0067\u0020\u006f\u0076\u0065\u0072"); continue ;};_egb .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u0020\u0041\u006e\u006e\u006f\u0074\u0061\u0074\u0069\u006f\u006e\u0020\u0077\u0069\u0074h\u006f\u0075\u0074\u0020\u0061\u0070\u0070\u0065\u0061\u0072\u0061\u006e\u0063\u0065\u0020\u0073\u0074\u0072\u0065\u0061\u006d,\u0020\u0065\u0072\u0072\u0020\u003a\u0020\u0025\u0076\u0020\u002d\u0020\u0073\u006bi\u0070\u0070\u0069n\u0067\u0020\u006f\u0076\u0065\u0072",_aeab ); continue ;};if _gbfdg ==nil {continue ;};_fdade :=_ddba .Resources .GenerateXObjectName ();_ddba .Resources .SetXObjectFormByName (_fdade ,_gbfdg );_fdba ,_beee ,_aeab :=_gebfa (_gbfdg );if _aeab !=nil {_egb .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0063\u006f\u006e\u0076\u0065\u0072\u0074\u0069\u006e\u0067\u0020\u0061\u0070p\u0065\u0061\u0072\u0061\u006e\u0063\u0065\u0020\u004d\u0061\u0074\u0072\u0069\u0078\u002c\u0020s\u006b\u0069\u0070\u0070\u0069\u006e\u0067\u0020\u0078\u0066\u006f\u0072\u006d\u0020\u0062\u0062\u006f\u0078\u0020\u0061\u0064\u006a\u0075\u0073t\u006d\u0065\u006e\u0074\u003a \u0025\u0076",_aeab ); }else {_bgbff :=_eea .IdentityMatrix ();_bgbff =_bgbff .Translate (-_fdba .Llx ,-_fdba .Lly );if _beee {_aggfg :=1.0;if _fdba .Width ()> 0{_aggfg =_df .Round (_cagb .Width ()/_fdba .Width ());};_gbgc :=1.0;if _fdba .Height ()> 0{_gbgc =_df .Round (_cagb .Height ()/_fdba .Height ()); };_bgbff =_bgbff .Scale (_aggfg ,_gbgc );};_cagb .Transform (_bgbff );};_bfcca :=_df .Min (_cagb .Llx ,_cagb .Urx );_agdcb :=_df .Min (_cagb .Lly ,_cagb .Ury );var _fcadd []string ;_fcadd =append (_fcadd ,"\u0071");_fcadd =append (_fcadd ,_d .Sprintf ("\u0025\u002e\u0036\u0066\u0020\u0025\u002e\u0036\u0066\u0020\u0025\u002e\u0036\u0066\u0020%\u002e6\u0066\u0020\u0025\u002e\u0036\u0066\u0020\u0025\u002e\u0036\u0066\u0020\u0063\u006d",1.0,0.0,0.0,1.0,_bfcca ,_agdcb )); _fcadd =append (_fcadd ,_d .Sprintf ("\u002f\u0025\u0073\u0020\u0044\u006f",_fdade .String ()));_fcadd =append (_fcadd ,"\u0051");_bcea :=_af .Join (_fcadd ,"\u000a");_aeab =_ddba .AppendContentStream (_bcea );if _aeab !=nil {return _aeab ;};if _gbfdg .Resources !=nil {_edadbb ,_fbef :=_dfg .GetDict (_gbfdg .Resources .Font ); if _fbef {for _ ,_ecbd :=range _edadbb .Keys (){if !_ddba .Resources .HasFontByName (_ecbd ){_ddba .Resources .SetFontByName (_ecbd ,_edadbb .Get (_ecbd ));};};};};};if len (_dfaa )> 0{_ddba ._dbec =_dfaa ;}else {_ddba ._dbec =[]*PdfAnnotation {};};return nil ; }; // Fill populates `form` with values provided by `provider`. func (_dbaec *PdfAcroForm )Fill (provider FieldValueProvider )error {return _dbaec .fill (provider ,nil )}; // EncryptOptions represents encryption options for an output PDF. type EncryptOptions struct{Permissions _fc .Permissions ;Algorithm EncryptionAlgorithm ;};func (_acddg Image )getBase ()_ef .ImageBase {return _ef .NewImageBase (int (_acddg .Width ),int (_acddg .Height ),int (_acddg .BitsPerComponent ),_acddg .ColorComponents ,_acddg .Data ,_acddg ._baeef ,_acddg ._begcc ); }; // AddExtGState adds a graphics state to the XObject resources. func (_cccab *PdfPage )AddExtGState (name _dfg .PdfObjectName ,egs *_dfg .PdfObjectDictionary )error {if _cccab .Resources ==nil {_cccab .Resources =NewPdfPageResources ();};if _cccab .Resources .ExtGState ==nil {_cccab .Resources .ExtGState =_dfg .MakeDict (); };_efea ,_fefc :=_dfg .TraceToDirectObject (_cccab .Resources .ExtGState ).(*_dfg .PdfObjectDictionary );if !_fefc {_egb .Log .Debug ("\u0045\u0078\u0070\u0065\u0063\u0074\u0065\u0064\u0020\u0045\u0078t\u0047\u0053\u0074\u0061\u0074\u0065\u0020\u0064i\u0063t\u0069\u006f\u006e\u0061\u0072\u0079\u0020\u0069\u0073\u0020\u006e\u006f\u0074\u0020\u0061\u0020\u0064\u0069c\u0074\u0069\u006f\u006e\u0061\u0072\u0079\u003a\u0020\u0025\u0076",_dfg .TraceToDirectObject (_cccab .Resources .ExtGState )); return _bd .New ("\u0074\u0079p\u0065\u0020\u0063h\u0065\u0063\u006b\u0020\u0065\u0072\u0072\u006f\u0072");};_efea .Set (name ,egs );return nil ;}; // GetContentStreamObjs returns a slice of PDF objects containing the content // streams of the page. func (_dfadc *PdfPage )GetContentStreamObjs ()[]_dfg .PdfObject {if _dfadc .Contents ==nil {return nil ;};_fadd :=_dfg .TraceToDirectObject (_dfadc .Contents );if _bbecb ,_abbcf :=_fadd .(*_dfg .PdfObjectArray );_abbcf {return _bbecb .Elements ();};return []_dfg .PdfObject {_fadd }; }; // StructureType represents a standard structure type in a tagged PDF document. type StructureType string ; // ColorFromPdfObjects returns a new PdfColor based on the input slice of color // components. The slice should contain three PdfObjectFloat elements representing // the A, B and C components of the color. func (_ddeb *PdfColorspaceCalRGB )ColorFromPdfObjects (objects []_dfg .PdfObject )(PdfColor ,error ){if len (objects )!=3{return nil ,_bd .New ("r\u0061\u006e\u0067\u0065\u0020\u0063\u0068\u0065\u0063\u006b");};_cdbc ,_ceaf :=_dfg .GetNumbersAsFloat (objects ); if _ceaf !=nil {return nil ,_ceaf ;};return _ddeb .ColorFromFloats (_cdbc );};type pdfFontSimple struct{fontCommon ;_fdcbb *_dfg .PdfIndirectObject ;_aefba map[_ff .CharCode ]float64 ;_febca _ff .TextEncoder ;_eabff _ff .TextEncoder ;_gdegd *PdfFontDescriptor ; // Encoding is subject to limitations that are described in 9.6.6, "Character Encoding". // BaseFont is derived differently. FirstChar _dfg .PdfObject ;LastChar _dfg .PdfObject ;Widths _dfg .PdfObject ;Encoding _dfg .PdfObject ;_eecea *_bf .RuneCharSafeMap ;}; // PdfActionImportData represents a importData action. type PdfActionImportData struct{*PdfAction ;F *PdfFilespec ;}; // RemveTabOrder removes the tab order for the page. func (_abgab *PdfPage )RemoveTabOrder (){_abgab .Tabs =nil }; // ContentStreamWrapper wraps the Page's contentstream into q ... Q blocks. type ContentStreamWrapper interface{WrapContentStream (_cbgdg *PdfPage )error ;}; // ToPdfObject implements interface PdfModel. func (_egf *PdfActionSubmitForm )ToPdfObject ()_dfg .PdfObject {_egf .PdfAction .ToPdfObject ();_eeb :=_egf ._fe ;_acf :=_eeb .PdfObject .(*_dfg .PdfObjectDictionary );_acf .SetIfNotNil ("\u0053",_dfg .MakeName (string (ActionTypeSubmitForm )));if _egf .F !=nil {_acf .Set ("\u0046",_egf .F .ToPdfObject ()); };_acf .SetIfNotNil ("\u0046\u0069\u0065\u006c\u0064\u0073",_egf .Fields );_acf .SetIfNotNil ("\u0046\u006c\u0061g\u0073",_egf .Flags );return _eeb ;};func _bbfgg (_fgefge string )(map[_ff .CharCode ]_ff .GlyphName ,error ){_deeg :=_af .Split (_fgefge ,"\u000a"); _bbccd :=make (map[_ff .CharCode ]_ff .GlyphName );for _ ,_bcbef :=range _deeg {_fegdc :=_fggf .FindStringSubmatch (_bcbef );if _fegdc ==nil {continue ;};_fdaa ,_aedde :=_fegdc [1],_fegdc [2];_accg ,_gcgg :=_gg .Atoi (_fdaa );if _gcgg !=nil {_egb .Log .Debug ("\u0045\u0052\u0052\u004fR\u003a\u0020\u0042\u0061\u0064\u0020\u0065\u006e\u0063\u006fd\u0069n\u0067\u0020\u006c\u0069\u006e\u0065\u002e \u0025\u0071",_bcbef ); return nil ,_dfg .ErrTypeError ;};_bbccd [_ff .CharCode (_accg )]=_ff .GlyphName (_aedde );};_egb .Log .Trace ("g\u0065\u0074\u0045\u006e\u0063\u006fd\u0069\u006e\u0067\u0073\u003a\u0020\u006b\u0065\u0079V\u0061\u006c\u0075e\u0073=\u0025\u0023\u0076",_bbccd ); return _bbccd ,nil ;};func _agafd (_egdgf _bf .StdFont )pdfFontSimple {_aafae :=_egdgf .Descriptor ();return pdfFontSimple {fontCommon :fontCommon {_gdab :"\u0054\u0079\u0070e\u0031",_dbcbc :_egdgf .Name ()},_eecea :_egdgf .GetMetricsTable (),_gdegd :&PdfFontDescriptor {FontName :_dfg .MakeName (string (_aafae .Name )),FontFamily :_dfg .MakeName (_aafae .Family ),FontWeight :_dfg .MakeFloat (float64 (_aafae .Weight )),Flags :_dfg .MakeInteger (int64 (_aafae .Flags )),FontBBox :_dfg .MakeArrayFromFloats (_aafae .BBox [:]),ItalicAngle :_dfg .MakeFloat (_aafae .ItalicAngle ),Ascent :_dfg .MakeFloat (_aafae .Ascent ),Descent :_dfg .MakeFloat (_aafae .Descent ),CapHeight :_dfg .MakeFloat (_aafae .CapHeight ),XHeight :_dfg .MakeFloat (_aafae .XHeight ),StemV :_dfg .MakeFloat (_aafae .StemV ),StemH :_dfg .MakeFloat (_aafae .StemH )},_eabff :_egdgf .Encoder ()}; }; // SetPdfSubject sets the Subject attribute of the output PDF. func SetPdfSubject (subject string ){_dfbaa .Lock ();defer _dfbaa .Unlock ();_gabfe =subject };func (_gbef *PdfReader )lookupPageByObject (_ceefab _dfg .PdfObject )(*PdfPage ,error ){return nil ,_bd .New ("\u0070\u0061\u0067\u0065\u0020\u006e\u006f\u0074\u0020f\u006f\u0075\u006e\u0064"); }; // ToPdfObject implements interface PdfModel. func (_dfga *PdfAnnotationPrinterMark )ToPdfObject ()_dfg .PdfObject {_dfga .PdfAnnotation .ToPdfObject ();_bdfe :=_dfga ._afae ;_fdac :=_bdfe .PdfObject .(*_dfg .PdfObjectDictionary );_fdac .SetIfNotNil ("\u0053u\u0062\u0074\u0079\u0070\u0065",_dfg .MakeName ("P\u0072\u0069\u006e\u0074\u0065\u0072\u004d\u0061\u0072\u006b")); _fdac .SetIfNotNil ("\u004d\u004e",_dfga .MN );return _bdfe ;}; // IsTerminal returns true for terminal fields, false otherwise. // Terminal fields are fields whose descendants are only widget annotations. func (_dddead *PdfField )IsTerminal ()bool {return len (_dddead .Kids )==0}; // GetNumComponents returns the number of color components of the colorspace device. // Returns 3 for an RGB device. func (_gbgb *PdfColorspaceDeviceRGB )GetNumComponents ()int {return 3}; // RemoveChildAt removes a child at the specified index from the kChildren slice. func (_cbdb *KDict )RemoveChildAt (index int )bool {if index < 0||index >=len (_cbdb ._dcgedc ){return false ;};_cbdb ._dcgedc =append (_cbdb ._dcgedc [:index ],_cbdb ._dcgedc [index +1:]...);return true ;};func _cccge (_cafgf *_dfg .PdfIndirectObject )(*PdfOutline ,error ){_bedfg ,_bedag :=_cafgf .PdfObject .(*_dfg .PdfObjectDictionary ); if !_bedag {return nil ,_d .Errorf ("\u006f\u0075\u0074l\u0069\u006e\u0065\u0020o\u0062\u006a\u0065\u0063\u0074\u0020\u006eo\u0074\u0020\u0061\u0020\u0064\u0069\u0063\u0074\u0069\u006f\u006e\u0061\u0072\u0079");};_abaaca :=NewPdfOutline ();if _bdgd :=_bedfg .Get ("\u0054\u0079\u0070\u0065"); _bdgd !=nil {_fdbc ,_eacb :=_bdgd .(*_dfg .PdfObjectName );if _eacb {if *_fdbc !="\u004f\u0075\u0074\u006c\u0069\u006e\u0065\u0073"{_egb .Log .Debug ("E\u0052\u0052\u004f\u0052\u0020\u0054y\u0070\u0065\u0020\u0021\u003d\u0020\u004f\u0075\u0074l\u0069\u006e\u0065s\u0020(\u0025\u0073\u0029",*_fdbc ); };};};if _gdga :=_bedfg .Get ("\u0043\u006f\u0075n\u0074");_gdga !=nil {_abbb ,_beded :=_dfg .GetNumberAsInt64 (_gdga );if _beded !=nil {return nil ,_beded ;};_abaaca .Count =&_abbb ;};return _abaaca ,nil ;}; // FieldFilterFunc represents a PDF field filtering function. If the function // returns true, the PDF field is kept, otherwise it is discarded. type FieldFilterFunc func (*PdfField )bool ; // PdfAnnotationHighlight represents Highlight annotations. // (Section 12.5.6.10). type PdfAnnotationHighlight struct{*PdfAnnotation ;*PdfAnnotationMarkup ;QuadPoints _dfg .PdfObject ;}; // ToPdfObject implements interface PdfModel. func (_fgf *PdfActionNamed )ToPdfObject ()_dfg .PdfObject {_fgf .PdfAction .ToPdfObject ();_fgad :=_fgf ._fe ;_bgg :=_fgad .PdfObject .(*_dfg .PdfObjectDictionary );_bgg .SetIfNotNil ("\u0053",_dfg .MakeName (string (ActionTypeNamed )));_bgg .SetIfNotNil ("\u004e",_fgf .N ); return _fgad ;}; // GetContainingPdfObject returns the containing object for the PdfField, i.e. an indirect object // containing the field dictionary. func (_eeafd *PdfField )GetContainingPdfObject ()_dfg .PdfObject {return _eeafd ._caaa }; // ColorFromFloats returns a new PdfColor based on the input slice of color // components. The slice should contain three elements representing the // A, B and C components of the color. The values of the elements should be // between 0 and 1. func (_fgfa *PdfColorspaceCalRGB )ColorFromFloats (vals []float64 )(PdfColor ,error ){if len (vals )!=3{return nil ,_bd .New ("r\u0061\u006e\u0067\u0065\u0020\u0063\u0068\u0065\u0063\u006b");};_eggd :=vals [0];if _eggd < 0.0||_eggd > 1.0{_egb .Log .Debug ("\u0063\u006f\u006cor\u0020\u006f\u0075\u0074\u0020\u006f\u0066\u0020\u0043\u0053\u0020\u0072\u0061\u006e\u0067\u0065\u003a\u0020",_eggd ); return nil ,ErrColorOutOfRange ;};_eefg :=vals [1];if _eefg < 0.0||_eefg > 1.0{_egb .Log .Debug ("\u0063\u006f\u006cor\u0020\u006f\u0075\u0074\u0020\u006f\u0066\u0020\u0043\u0053\u0020\u0072\u0061\u006e\u0067\u0065\u003a\u0020",_eefg );return nil ,ErrColorOutOfRange ; };_ecgfc :=vals [2];if _ecgfc < 0.0||_ecgfc > 1.0{_egb .Log .Debug ("\u0063\u006f\u006cor\u0020\u006f\u0075\u0074\u0020\u006f\u0066\u0020\u0043\u0053\u0020\u0072\u0061\u006e\u0067\u0065\u003a\u0020",_ecgfc );return nil ,ErrColorOutOfRange ;};_bdfdg :=NewPdfColorCalRGB (_eggd ,_eefg ,_ecgfc ); return _bdfdg ,nil ;}; // PdfShadingType4 is a Free-form Gouraud-shaded triangle mesh. type PdfShadingType4 struct{*PdfShading ;BitsPerCoordinate *_dfg .PdfObjectInteger ;BitsPerComponent *_dfg .PdfObjectInteger ;BitsPerFlag *_dfg .PdfObjectInteger ;Decode *_dfg .PdfObjectArray ;Function []PdfFunction ;}; // Transform rectangle with the supplied matrix. func (_dgbbf *PdfRectangle )Transform (transformMatrix _eea .Matrix ){_dgbbf .Llx ,_dgbbf .Lly =transformMatrix .Transform (_dgbbf .Llx ,_dgbbf .Lly );_dgbbf .Urx ,_dgbbf .Ury =transformMatrix .Transform (_dgbbf .Urx ,_dgbbf .Ury );_dgbbf .Normalize (); }; // Write outputs the object as it is to be written to file. func (_gbegb *PdfTransformParamsDocMDP )Write ()[]byte {return _gbegb .ToPdfObject ().Write ()}; // Y returns the value of the yellow component of the color. func (_fbbg *PdfColorDeviceCMYK )Y ()float64 {return _fbbg [2]};const (ActionTypeGoTo PdfActionType ="\u0047\u006f\u0054\u006f";ActionTypeGoTo3DView PdfActionType ="\u0047\u006f\u0054\u006f\u0033\u0044\u0056\u0069\u0065\u0077";ActionTypeGoToE PdfActionType ="\u0047\u006f\u0054o\u0045"; ActionTypeGoToR PdfActionType ="\u0047\u006f\u0054o\u0052";ActionTypeHide PdfActionType ="\u0048\u0069\u0064\u0065";ActionTypeImportData PdfActionType ="\u0049\u006d\u0070\u006f\u0072\u0074\u0044\u0061\u0074\u0061";ActionTypeJavaScript PdfActionType ="\u004a\u0061\u0076\u0061\u0053\u0063\u0072\u0069\u0070\u0074"; ActionTypeLaunch PdfActionType ="\u004c\u0061\u0075\u006e\u0063\u0068";ActionTypeMovie PdfActionType ="\u004d\u006f\u0076i\u0065";ActionTypeNamed PdfActionType ="\u004e\u0061\u006de\u0064";ActionTypeRendition PdfActionType ="\u0052e\u006e\u0064\u0069\u0074\u0069\u006fn"; ActionTypeResetForm PdfActionType ="\u0052e\u0073\u0065\u0074\u0046\u006f\u0072m";ActionTypeSetOCGState PdfActionType ="S\u0065\u0074\u004f\u0043\u0047\u0053\u0074\u0061\u0074\u0065";ActionTypeSound PdfActionType ="\u0053\u006f\u0075n\u0064";ActionTypeSubmitForm PdfActionType ="\u0053\u0075\u0062\u006d\u0069\u0074\u0046\u006f\u0072\u006d"; ActionTypeThread PdfActionType ="\u0054\u0068\u0072\u0065\u0061\u0064";ActionTypeTrans PdfActionType ="\u0054\u0072\u0061n\u0073";ActionTypeURI PdfActionType ="\u0055\u0052\u0049";);func _bfdb (_fcgad *[]*PdfField ,_dcdc FieldFilterFunc ,_adff bool )[]*PdfField {if _fcgad ==nil {return nil ; };_caagd :=*_fcgad ;if len (*_fcgad )==0{return nil ;};_acddc :=_caagd [:0];if _dcdc ==nil {_dcdc =func (*PdfField )bool {return true };};var _cffb []*PdfField ;for _ ,_cfdea :=range _caagd {_afabc :=_dcdc (_cfdea );if _afabc {_cffb =append (_cffb ,_cfdea ); if len (_cfdea .Kids )> 0{_cffb =append (_cffb ,_bfdb (&_cfdea .Kids ,_dcdc ,_adff )...);};};if !_adff ||!_afabc ||len (_cfdea .Kids )> 0{_acddc =append (_acddc ,_cfdea );};};*_fcgad =_acddc ;return _cffb ;};func (_ede *PdfColorspaceLab )String ()string {return "\u004c\u0061\u0062"}; func _baba (_afaef _dfg .PdfObject )(*PdfColorspaceSpecialSeparation ,error ){_fgcg :=NewPdfColorspaceSpecialSeparation ();if _eeff ,_efgef :=_afaef .(*_dfg .PdfIndirectObject );_efgef {_fgcg ._fdcef =_eeff ;};_afaef =_dfg .TraceToDirectObject (_afaef ); _cdcce ,_caff :=_afaef .(*_dfg .PdfObjectArray );if !_caff {return nil ,_d .Errorf ("\u0073\u0065p\u0061\u0072\u0061\u0074\u0069\u006f\u006e\u0020\u0043\u0053\u003a\u0020\u0049\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u006f\u0062je\u0063\u0074");};if _cdcce .Len ()!=4{return nil ,_d .Errorf ("\u0073\u0065p\u0061\u0072\u0061\u0074i\u006f\u006e \u0043\u0053\u003a\u0020\u0049\u006e\u0063\u006fr\u0072\u0065\u0063\u0074\u0020\u0061\u0072\u0072\u0061\u0079\u0020\u006ce\u006e\u0067\u0074\u0068"); };_afaef =_cdcce .Get (0);_gabae ,_caff :=_afaef .(*_dfg .PdfObjectName );if !_caff {return nil ,_d .Errorf ("\u0073\u0065\u0070ar\u0061\u0074\u0069\u006f\u006e\u0020\u0043\u0053\u003a \u0069n\u0076a\u006ci\u0064\u0020\u0066\u0061\u006d\u0069\u006c\u0079\u0020\u006e\u0061\u006d\u0065"); };if *_gabae !="\u0053\u0065\u0070\u0061\u0072\u0061\u0074\u0069\u006f\u006e"{return nil ,_d .Errorf ("\u0073\u0065\u0070\u0061\u0072\u0061\u0074\u0069\u006f\u006e\u0020\u0043\u0053\u003a\u0020w\u0072o\u006e\u0067\u0020\u0066\u0061\u006d\u0069\u006c\u0079\u0020\u006e\u0061\u006d\u0065"); };_afaef =_cdcce .Get (1);_gabae ,_caff =_afaef .(*_dfg .PdfObjectName );if !_caff {return nil ,_d .Errorf ("\u0073\u0065pa\u0072\u0061\u0074i\u006f\u006e\u0020\u0043S: \u0049nv\u0061\u006c\u0069\u0064\u0020\u0063\u006flo\u0072\u0061\u006e\u0074\u0020\u006e\u0061m\u0065"); };_fgcg .ColorantName =_gabae ;_afaef =_cdcce .Get (2);_ffgc ,_gecg :=NewPdfColorspaceFromPdfObject (_afaef );if _gecg !=nil {return nil ,_gecg ;};_fgcg .AlternateSpace =_ffgc ;_gdbd ,_gecg :=_gbada (_cdcce .Get (3));if _gecg !=nil {return nil ,_gecg ; };_fgcg .TintTransform =_gdbd ;return _fgcg ,nil ;}; // PdfOutlineItem represents an outline item dictionary (Table 153 - pp. 376 - 377). type PdfOutlineItem struct{PdfOutlineTreeNode ;Title *_dfg .PdfObjectString ;Parent *PdfOutlineTreeNode ;Prev *PdfOutlineTreeNode ;Next *PdfOutlineTreeNode ;Count *int64 ;Dest _dfg .PdfObject ;A _dfg .PdfObject ;SE _dfg .PdfObject ;C _dfg .PdfObject ;F _dfg .PdfObject ; _fcecb *_dfg .PdfIndirectObject ;};func (_afed *PdfReader )newPdfAnnotationWidgetFromDict (_bbcab *_dfg .PdfObjectDictionary )(*PdfAnnotationWidget ,error ){_ecga :=PdfAnnotationWidget {};_ecga .H =_bbcab .Get ("\u0048");_ecga .MK =_bbcab .Get ("\u004d\u004b"); _ecga .A =_bbcab .Get ("\u0041");_ecga .AA =_bbcab .Get ("\u0041\u0041");_ecga .BS =_bbcab .Get ("\u0042\u0053");_ecga .Parent =_bbcab .Get ("\u0050\u0061\u0072\u0065\u006e\u0074");return &_ecga ,nil ;};type pdfSignDictionary struct{*_dfg .PdfObjectDictionary ; _adfa *SignatureHandler ;_abfbg *PdfSignature ;_dgead int64 ;_ffbffd int ;_ceffa int ;_fdfed int ;_gcdg int ;}; // ColorToRGB converts a DeviceN color to an RGB color. func (_fcfc *PdfColorspaceDeviceN )ColorToRGB (color PdfColor )(PdfColor ,error ){if _fcfc .AlternateSpace ==nil {return nil ,_bd .New ("\u0044\u0065\u0076\u0069\u0063\u0065N\u0020\u0061\u006c\u0074\u0065\u0072\u006e\u0061\u0074\u0065\u0020\u0073\u0070a\u0063\u0065\u0020\u0075\u006e\u0064\u0065f\u0069\u006e\u0065\u0064"); };return _fcfc .AlternateSpace .ColorToRGB (color );}; // GetPatternByName gets the pattern specified by keyName. Returns nil if not existing. // The bool flag indicated whether it was found or not. func (_bbcca *PdfPageResources )GetPatternByName (keyName _dfg .PdfObjectName )(*PdfPattern ,bool ){if _bbcca .Pattern ==nil {return nil ,false ;};_bfcge ,_egaae :=_dfg .TraceToDirectObject (_bbcca .Pattern ).(*_dfg .PdfObjectDictionary );if !_egaae {_egb .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0049\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0050\u0061\u0074t\u0065\u0072\u006e\u0020\u0065\u006e\u0074r\u0079\u0020\u002d\u0020\u006e\u006f\u0074\u0020\u0061\u0020\u0064i\u0063\u0074\u0020\u0028\u0067\u006f\u0074\u0020\u0025\u0054\u0029",_bbcca .Pattern ); return nil ,false ;};if _eeaeg :=_bfcge .Get (keyName );_eeaeg !=nil {_dgccc ,_ddbcb :=_beeb (_eeaeg );if _ddbcb !=nil {_egb .Log .Debug ("\u0045\u0052R\u004f\u0052\u003a\u0020f\u0061\u0069l\u0065\u0064\u0020\u0074\u006f\u0020\u006c\u006fa\u0064\u0020\u0070\u0064\u0066\u0020\u0070\u0061\u0074\u0074\u0065\u0072n\u003a\u0020\u0025\u0076",_ddbcb ); return nil ,false ;};return _dgccc ,true ;};return nil ,false ;};func _gdafa (_dfdc *PdfAnnotation )(*XObjectForm ,*PdfRectangle ,error ){_cfeab ,_aefe :=_dfg .GetDict (_dfdc .AP );if !_aefe {return nil ,nil ,_bd .New ("f\u0069\u0065\u006c\u0064\u0020\u006di\u0073\u0073\u0069\u006e\u0067\u0020\u0041\u0050\u0020d\u0069\u0063\u0074i\u006fn\u0061\u0072\u0079"); };if _cfeab ==nil {return nil ,nil ,nil ;};_fefeb ,_aefe :=_dfg .GetArray (_dfdc .Rect );if !_aefe ||_fefeb .Len ()!=4{return nil ,nil ,_bd .New ("\u0072\u0065\u0063t\u0020\u0069\u006e\u0076\u0061\u006c\u0069\u0064");};_ecedd ,_abcce :=NewPdfRectangle (*_fefeb ); if _abcce !=nil {return nil ,nil ,_abcce ;};_eggda :=_dfg .TraceToDirectObject (_cfeab .Get ("\u004e"));switch _defea :=_eggda .(type ){case *_dfg .PdfObjectStream :_ffcf :=_defea ;_gfgcc ,_bbbc :=NewXObjectFormFromStream (_ffcf );return _gfgcc ,_ecedd ,_bbbc ; case *_dfg .PdfObjectDictionary :_bfcg :=_defea ;if _bfcg ==nil {_egb .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0046\u0061\u0069\u006c\u0065\u0064\u0020\u0074\u006f\u0020\u0067e\u0074\u0020\u0061\u0070\u0070\u0065\u0061r\u0061\u006e\u0063\u0065\u002e\u0020\u0044\u0069\u0063\u0074\u0069o\u006e\u0061\u0072\u0079\u0020\u0069\u0073\u0020\u006e\u0069\u006c"); return nil ,nil ,nil ;};var _gcad _dfg .PdfObject ;_abacg ,_bgaf :=_dfg .GetName (_dfdc .AS );if _bgaf {_gcad =_bfcg .Get (*_abacg );}else {_fbfa :=_dfdc ._afae .PdfObject .(*_dfg .PdfObjectDictionary );if _fbfa ==nil {_egb .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020F\u0061\u0069\u006ce\u0064\u0020\u0074\u006f \u0067\u0065\u0074\u0020\u0061\u0070\u0070\u0065\u0061\u0072\u0061\u006e\u0063\u0065\u0020\u0066\u0072\u006f\u006d\u0020\u0076\u0061\u006c\u0075\u0065\u002e"); return nil ,nil ,nil ;};if _cabed :=_fbfa .Get ("\u0056");_cabed !=nil {_gcad =_bfcg .Get (_dfg .PdfObjectName (_cabed .String ()));};};if _gcad ==nil {_egb .Log .Debug ("\u0045\u0052\u0052\u004f\u0052:\u0020\u0041\u0053\u0020\u0073\u0074\u0061\u0074\u0065\u0020\u006e\u006f\u0074 \u0073\u0070\u0065\u0063\u0069\u0066\u0069\u0065\u0064\u0020\u0069\u006e\u0020\u0041\u0050\u0020\u0064\u0069\u0063\u0074\u0020\u002d\u0020\u0069\u0067\u006e\u006f\u0072\u0069\u006eg"); return nil ,nil ,nil ;};_bfcf ,_bgaf :=_dfg .GetStream (_gcad );if !_bgaf {_egb .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0055n\u0061\u0062\u006ce \u0074\u006f\u0020\u0061\u0063\u0063e\u0073\u0073\u0020\u0061\u0070\u0070\u0065\u0061\u0072\u0061\u006e\u0063\u0065\u0020\u0073t\u0072\u0065\u0061\u006d\u0020\u0066\u006f\u0072 \u0025\u0076",_abacg ); return nil ,nil ,_bd .New ("\u0073\u0074\u0072\u0065\u0061\u006d\u0020\u006d\u0069s\u0073\u0069\u006e\u0067");};_cfdfc ,_dbcbf :=NewXObjectFormFromStream (_bfcf );return _cfdfc ,_ecedd ,_dbcbf ;};_egb .Log .Debug ("\u0049\u006e\u0076\u0061li\u0064\u0020\u0074\u0079\u0070\u0065\u0020\u0066\u006f\u0072\u0020\u004e\u003a\u0020%\u0054",_eggda ); return nil ,nil ,_bd .New ("\u0074\u0079p\u0065\u0020\u0063h\u0065\u0063\u006b\u0020\u0065\u0072\u0072\u006f\u0072");}; // PdfAnnotationPolyLine represents PolyLine annotations. // (Section 12.5.6.9). type PdfAnnotationPolyLine struct{*PdfAnnotation ;*PdfAnnotationMarkup ;Vertices _dfg .PdfObject ;LE _dfg .PdfObject ;BS _dfg .PdfObject ;IC _dfg .PdfObject ;BE _dfg .PdfObject ;IT _dfg .PdfObject ;Measure _dfg .PdfObject ;}; // AppendContentBytes creates a PDF stream from `cs` and appends it to the // array of streams specified by the pages's Contents entry. // If `wrapContents` is true, the content stream of the page is wrapped using // a `q/Q` operator pair, so that its state does not affect the appended // content stream. func (_agbce *PdfPage )AppendContentBytes (cs []byte ,wrapContents bool )error {_ecefe :=_agbce .GetContentStreamObjs ();wrapContents =wrapContents &&len (_ecefe )> 0;_agfb :=_dfg .NewFlateEncoder ();_adgg :=_dfg .MakeArray ();if wrapContents {_fcbdd ,_ggddb :=_dfg .MakeStream ([]byte ("\u0071\u000a"),_agfb ); if _ggddb !=nil {return _ggddb ;};_adgg .Append (_fcbdd );};_adgg .Append (_ecefe ...);if wrapContents {_cbag ,_gdcdg :=_dfg .MakeStream ([]byte ("\u000a\u0051\u000a"),_agfb );if _gdcdg !=nil {return _gdcdg ;};_adgg .Append (_cbag );};_eddfe ,_cgaga :=_dfg .MakeStream (cs ,_agfb ); if _cgaga !=nil {return _cgaga ;};_adgg .Append (_eddfe );_agbce .Contents =_adgg ;return nil ;}; // NewStandardPdfOutputIntent creates a new standard PdfOutputIntent. func NewStandardPdfOutputIntent (outputCondition ,outputConditionIdentifier ,registryName string ,destOutputProfile []byte ,colorComponents int )*PdfOutputIntent {return &PdfOutputIntent {Type :"\u004f\u0075\u0074p\u0075\u0074\u0049\u006e\u0074\u0065\u006e\u0074",OutputCondition :outputCondition ,OutputConditionIdentifier :outputConditionIdentifier ,RegistryName :registryName ,DestOutputProfile :destOutputProfile ,ColorComponents :colorComponents ,_gacff :_dfg .MakeDict ()}; }; // GetAsTilingPattern returns a tiling pattern. Check with IsTiling() prior to using this. func (_ggfbd *PdfPattern )GetAsTilingPattern ()*PdfTilingPattern {return _ggfbd ._bfaedb .(*PdfTilingPattern );}; // ToPdfObject converts the K dictionary to a PDF object. func (_fdada *KValue )ToPdfObject ()_dfg .PdfObject {if _fdada ._badbf !=nil {return _dfg .MakeIndirectObject (_fdada ._badbf .ToPdfObject ());};if _fdada ._gbedc !=nil {return _fdada ._gbedc ;};if _fdada ._dddge !=nil {return _dfg .MakeInteger (int64 (*_fdada ._dddge )); };return nil ;}; // SetContext sets the specific fielddata type, e.g. would be PdfFieldButton for a button field. func (_fgbg *PdfField )SetContext (ctx PdfModel ){_fgbg ._agcfe =ctx }; // ToGoTime returns the date in time.Time format. func (_badfc PdfDate )ToGoTime ()_ge .Time {_bgede :=int (_badfc ._adgc *60*60+_badfc ._aaggg *60);switch _badfc ._fedac {case '-':_bgede =-_bgede ;case 'Z':_bgede =0;};_fccgeb :=_d .Sprintf ("\u0055\u0054\u0043\u0025\u0063\u0025\u002e\u0032\u0064\u0025\u002e\u0032\u0064",_badfc ._fedac ,_badfc ._adgc ,_badfc ._aaggg ); _cadaa :=_ge .FixedZone (_fccgeb ,_bgede );return _ge .Date (int (_badfc ._accga ),_ge .Month (_badfc ._fedabd ),int (_badfc ._agfc ),int (_badfc ._cgae ),int (_badfc ._abggb ),int (_badfc ._dbddf ),0,_cadaa );}; // FullName returns the full name of the field as in rootname.parentname.partialname. func (_gbce *PdfField )FullName ()(string ,error ){var _efae _cca .Buffer ;_cfbd :=[]string {};if _gbce .T !=nil {_cfbd =append (_cfbd ,_gbce .T .Decoded ());};_cfgb :=map[*PdfField ]bool {};_cfgb [_gbce ]=true ;_ggggdd :=_gbce .Parent ;for _ggggdd !=nil {if _ ,_dbbba :=_cfgb [_ggggdd ]; _dbbba {return _efae .String (),_bd .New ("\u0072\u0065\u0063\u0075rs\u0069\u0076\u0065\u0020\u0074\u0072\u0061\u0076\u0065\u0072\u0073\u0061\u006c");};if _ggggdd .T ==nil {return _efae .String (),_bd .New ("\u0066\u0069el\u0064\u0020\u0070a\u0072\u0074\u0069\u0061l n\u0061me\u0020\u0028\u0054\u0029\u0020\u006e\u006ft \u0073\u0070\u0065\u0063\u0069\u0066\u0069e\u0064"); };_cfbd =append (_cfbd ,_ggggdd .T .Decoded ());_cfgb [_ggggdd ]=true ;_ggggdd =_ggggdd .Parent ;};for _ffdc :=len (_cfbd )-1;_ffdc >=0;_ffdc --{_efae .WriteString (_cfbd [_ffdc ]);if _ffdc > 0{_efae .WriteString ("\u002e");};};return _efae .String (),nil ; }; // WriteToFile writes the Appender output to file specified by path. func (_ceed *PdfAppender )WriteToFile (outputPath string )error {_cddff ,_efagc :=_ga .Create (outputPath );if _efagc !=nil {return _efagc ;};defer _cddff .Close ();return _ceed .Write (_cddff );};func _eddb (_dcgg _dfg .PdfObject )(*PdfColorspaceICCBased ,error ){_dfad :=&PdfColorspaceICCBased {}; if _bdcf ,_fdffc :=_dcgg .(*_dfg .PdfIndirectObject );_fdffc {_dfad ._ggdb =_bdcf ;};_dcgg =_dfg .TraceToDirectObject (_dcgg );_ffc ,_fefg :=_dcgg .(*_dfg .PdfObjectArray );if !_fefg {return nil ,_d .Errorf ("\u0074\u0079\u0070\u0065\u0020\u0065\u0072\u0072\u006f\u0072"); };if _ffc .Len ()!=2{return nil ,_d .Errorf ("i\u006e\u0076\u0061\u006c\u0069\u0064 \u0049\u0043\u0043\u0042\u0061\u0073\u0065\u0064\u0020c\u006f\u006c\u006fr\u0073p\u0061\u0063\u0065");};_dcgg =_dfg .TraceToDirectObject (_ffc .Get (0));_cbgde ,_fefg :=_dcgg .(*_dfg .PdfObjectName ); if !_fefg {return nil ,_d .Errorf ("\u0049\u0043\u0043B\u0061\u0073\u0065\u0064 \u006e\u0061\u006d\u0065\u0020\u006e\u006ft\u0020\u0061\u0020\u004e\u0061\u006d\u0065\u0020\u006f\u0062\u006a\u0065\u0063\u0074");};if *_cbgde !="\u0049\u0043\u0043\u0042\u0061\u0073\u0065\u0064"{return nil ,_d .Errorf ("\u006e\u006f\u0074\u0020\u0061\u006e\u0020\u0049\u0043\u0043\u0042a\u0073\u0065\u0064\u0020\u0063\u006f\u006c\u006f\u0072\u0073p\u0061\u0063\u0065"); };_dcgg =_ffc .Get (1);_gedbc ,_fefg :=_dfg .GetStream (_dcgg );if !_fefg {_egb .Log .Error ("I\u0043\u0043\u0042\u0061\u0073\u0065d\u0020\u006e\u006f\u0074\u0020\u0070o\u0069\u006e\u0074\u0069\u006e\u0067\u0020t\u006f\u0020\u0073\u0074\u0072\u0065\u0061\u006d\u003a\u0020%\u0054",_dcgg ); return nil ,_d .Errorf ("\u0049\u0043\u0043Ba\u0073\u0065\u0064\u0020\u0073\u0074\u0072\u0065\u0061\u006d\u0020\u0069\u006e\u0076\u0061\u006c\u0069\u0064");};_baac :=_gedbc .PdfObjectDictionary ;_acde ,_fefg :=_baac .Get ("\u004e").(*_dfg .PdfObjectInteger ); if !_fefg {return nil ,_d .Errorf ("I\u0043\u0043\u0042\u0061\u0073\u0065d\u0020\u006d\u0069\u0073\u0073\u0069n\u0067\u0020\u004e\u0020\u0066\u0072\u006fm\u0020\u0073\u0074\u0072\u0065\u0061\u006d\u0020\u0064\u0069c\u0074");};if *_acde !=1&&*_acde !=3&&*_acde !=4{return nil ,_d .Errorf ("\u0049\u0043\u0043\u0042\u0061s\u0065\u0064\u0020\u0063\u006f\u006c\u006f\u0072\u0073\u0070\u0061\u0063\u0065 \u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u004e\u0020\u0028\u006e\u006f\u0074\u0020\u0031\u002c\u0033\u002c\u0034\u0029"); };_dfad .N =int (*_acde );if _gbgba :=_baac .Get ("\u0041l\u0074\u0065\u0072\u006e\u0061\u0074e");_gbgba !=nil {_debf ,_age :=NewPdfColorspaceFromPdfObject (_gbgba );if _age !=nil {return nil ,_age ;};_dfad .Alternate =_debf ;};if _aadg :=_baac .Get ("\u0052\u0061\u006eg\u0065"); _aadg !=nil {_aadg =_dfg .TraceToDirectObject (_aadg );_cdcf ,_gbbd :=_aadg .(*_dfg .PdfObjectArray );if !_gbbd {return nil ,_d .Errorf ("I\u0043\u0043\u0042\u0061\u0073\u0065d\u0020\u0052\u0061\u006e\u0067\u0065\u0020\u006e\u006ft\u0020\u0061\u006e \u0061r\u0072\u0061\u0079"); };if _cdcf .Len ()!=2*_dfad .N {return nil ,_d .Errorf ("\u0049\u0043\u0043\u0042\u0061\u0073\u0065\u0064\u0020\u0052\u0061\u006e\u0067e\u0020\u0077\u0072\u006f\u006e\u0067 \u006e\u0075\u006d\u0062\u0065\u0072\u0020\u006f\u0066\u0020\u0065\u006c\u0065m\u0065\u006e\u0074\u0073"); };_bdec ,_ccag :=_cdcf .GetAsFloat64Slice ();if _ccag !=nil {return nil ,_ccag ;};_dfad .Range =_bdec ;}else {_dfad .Range =make ([]float64 ,2*_dfad .N );for _bdaa :=0;_bdaa < _dfad .N ;_bdaa ++{_dfad .Range [2*_bdaa ]=0.0;_dfad .Range [2*_bdaa +1]=1.0; };};if _fedfg :=_baac .Get ("\u004d\u0065\u0074\u0061\u0064\u0061\u0074\u0061");_fedfg !=nil {_fageb ,_cefe :=_fedfg .(*_dfg .PdfObjectStream );if !_cefe {return nil ,_d .Errorf ("\u0049\u0043\u0043\u0042\u0061\u0073\u0065\u0064\u0020\u004de\u0074\u0061\u0064\u0061\u0074\u0061\u0020n\u006f\u0074\u0020\u0061\u0020\u0073\u0074\u0072\u0065\u0061\u006d"); };_dfad .Metadata =_fageb ;};_gdaf ,_agaeb :=_dfg .DecodeStream (_gedbc );if _agaeb !=nil {return nil ,_agaeb ;};_dfad .Data =_gdaf ;_dfad ._edadb =_gedbc ;return _dfad ,nil ;};func (_eggcb *PdfWriter )addObjects (_aaaba _dfg .PdfObject )error {_egb .Log .Trace ("\u0041d\u0064i\u006e\u0067\u0020\u006f\u0062\u006a\u0065\u0063\u0074\u0073\u0021"); if _gecag ,_cdccb :=_aaaba .(*_dfg .PdfIndirectObject );_cdccb {_egb .Log .Trace ("\u0049\u006e\u0064\u0069\u0072\u0065\u0063\u0074");_egb .Log .Trace ("\u002d \u0025\u0073\u0020\u0028\u0025\u0070)",_aaaba ,_gecag );_egb .Log .Trace ("\u002d\u0020\u0025\u0073",_gecag .PdfObject ); if _eggcb .addObject (_gecag ){_cggba :=_eggcb .addObjects (_gecag .PdfObject );if _cggba !=nil {return _cggba ;};};return nil ;};if _fffec ,_aaece :=_aaaba .(*_dfg .PdfObjectStream );_aaece {_egb .Log .Trace ("\u0053\u0074\u0072\u0065\u0061\u006d");_egb .Log .Trace ("\u002d \u0025\u0073\u0020\u0025\u0070",_aaaba ,_aaaba ); if _eggcb .addObject (_fffec ){_acdbf :=_eggcb .addObjects (_fffec .PdfObjectDictionary );if _acdbf !=nil {return _acdbf ;};};return nil ;};if _cggdd ,_aceac :=_aaaba .(*_dfg .PdfObjectDictionary );_aceac {_egb .Log .Trace ("\u0044\u0069\u0063\u0074"); _egb .Log .Trace ("\u002d\u0020\u0025\u0073",_aaaba );for _ ,_ecgaf :=range _cggdd .Keys (){_ecaab :=_cggdd .Get (_ecgaf );if _gecde ,_dbbgd :=_ecaab .(*_dfg .PdfObjectReference );_dbbgd {_ecaab =_gecde .Resolve ();_cggdd .Set (_ecgaf ,_ecaab );};if _ecgaf !="\u0050\u0061\u0072\u0065\u006e\u0074"{if _dccdf :=_eggcb .addObjects (_ecaab ); _dccdf !=nil {return _dccdf ;};}else {if _ ,_bgbfd :=_ecaab .(*_dfg .PdfObjectNull );_bgbfd {continue ;};if _dfbcdf :=_eggcb .hasObject (_ecaab );!_dfbcdf {_egb .Log .Debug ("P\u0061\u0072\u0065\u006e\u0074\u0020o\u0062\u006a\u0020\u006e\u006f\u0074 \u0061\u0064\u0064\u0065\u0064\u0020\u0079e\u0074\u0021\u0021\u0020\u0025\u0054\u0020\u0025\u0070\u0020%\u0076",_ecaab ,_ecaab ,_ecaab ); _eggcb ._fgebdb [_ecaab ]=append (_eggcb ._fgebdb [_ecaab ],_cggdd );};};};return nil ;};if _agdcba ,_eebgf :=_aaaba .(*_dfg .PdfObjectArray );_eebgf {_egb .Log .Trace ("\u0041\u0072\u0072a\u0079");_egb .Log .Trace ("\u002d\u0020\u0025\u0073",_aaaba ); if _agdcba ==nil {return _bd .New ("\u0061\u0072\u0072a\u0079\u0020\u0069\u0073\u0020\u006e\u0069\u006c");};for _bfebe ,_dafe :=range _agdcba .Elements (){if _gffb ,_ggcd :=_dafe .(*_dfg .PdfObjectReference );_ggcd {_dafe =_gffb .Resolve ();_agdcba .Set (_bfebe ,_dafe ); };if _fbdde :=_eggcb .addObjects (_dafe );_fbdde !=nil {return _fbdde ;};};return nil ;};if _ ,_ffdeb :=_aaaba .(*_dfg .PdfObjectReference );_ffdeb {_egb .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0043\u0061\u006e\u006e\u006f\u0074 \u0062\u0065\u0020\u0061\u0020\u0072e\u0066\u0065\u0072\u0065\u006e\u0063\u0065\u0020\u002d\u0020\u0067\u006f\u0074 \u0025\u0023\u0076\u0021",_aaaba ); return _bd .New ("r\u0065\u0066\u0065\u0072en\u0063e\u0020\u006e\u006f\u0074\u0020a\u006c\u006c\u006f\u0077\u0065\u0064");};return nil ;}; // ColorToRGB converts an Indexed color to an RGB color. func (_ggeec *PdfColorspaceSpecialIndexed )ColorToRGB (color PdfColor )(PdfColor ,error ){if _ggeec .Base ==nil {return nil ,_bd .New ("\u0069\u006e\u0064\u0065\u0078\u0065d\u0020\u0062\u0061\u0073\u0065\u0020\u0063\u006f\u006c\u006f\u0072\u0073\u0070a\u0063\u0065\u0020\u0075\u006e\u0064\u0065f\u0069\u006e\u0065\u0064"); };return _ggeec .Base .ColorToRGB (color );};func (_dfeae *PdfWriter )checkCrossReferenceStream ()bool {_gggef :=_dfeae ._cfbcb .Major > 1||(_dfeae ._cfbcb .Major ==1&&_dfeae ._cfbcb .Minor > 4);if _dfeae ._ecbad !=nil {_gggef =*_dfeae ._ecbad ;};return _gggef ; }; // NewPdfAction returns an initialized generic PDF action model. func NewPdfAction ()*PdfAction {_fg :=&PdfAction {};_fg ._fe =_dfg .MakeIndirectObject (_dfg .MakeDict ());return _fg ;};func (_gffc *PdfReader )newPdfActionTransFromDict (_bfcc *_dfg .PdfObjectDictionary )(*PdfActionTrans ,error ){return &PdfActionTrans {Trans :_bfcc .Get ("\u0054\u0072\u0061n\u0073")},nil ; }; // ColorFromFloats returns a new PdfColor based on the input slice of color // components. func (_fbed *PdfColorspaceICCBased )ColorFromFloats (vals []float64 )(PdfColor ,error ){if _fbed .Alternate ==nil {if _fbed .N ==1{_agea :=NewPdfColorspaceDeviceGray ();return _agea .ColorFromFloats (vals );}else if _fbed .N ==3{_bgbf :=NewPdfColorspaceDeviceRGB (); return _bgbf .ColorFromFloats (vals );}else if _fbed .N ==4{_egeg :=NewPdfColorspaceDeviceCMYK ();return _egeg .ColorFromFloats (vals );}else {return nil ,_bd .New ("I\u0043\u0043\u0020\u0042\u0061\u0073\u0065\u0064\u0020\u0063\u006f\u006c\u006f\u0072\u0073\u0070\u0061\u0063e\u0020\u006d\u0069\u0073\u0073\u0069\u006e\u0067\u0020\u0061lt\u0065\u0072\u006ea\u0074i\u0076\u0065"); };};return _fbed .Alternate .ColorFromFloats (vals );}; // NewPdfReaderWithOpts creates a new PdfReader for an input io.ReadSeeker interface // with a ReaderOpts. // If ReaderOpts is nil it will be set to default value from NewReaderOpts. func NewPdfReaderWithOpts (rs _edg .ReadSeeker ,opts *ReaderOpts )(*PdfReader ,error ){const _aacce ="\u006d\u006f\u0064\u0065\u006c\u003a\u004e\u0065\u0077\u0050\u0064f\u0052\u0065\u0061\u0064\u0065\u0072\u0057\u0069\u0074\u0068O\u0070\u0074\u0073";return _dafc (rs ,opts ,true ,_aacce ); }; // String implements interface PdfObject. func (_ece *PdfAction )String ()string {_ae ,_gdf :=_ece .ToPdfObject ().(*_dfg .PdfIndirectObject );if _gdf {return _d .Sprintf ("\u0025\u0054\u003a\u0020\u0025\u0073",_ece ._bdb ,_ae .PdfObject .String ());};return "";}; // GetNumPages returns the number of pages in the document. func (_gddaa *PdfReader )GetNumPages ()(int ,error ){if _gddaa ._agbcd .GetCrypter ()!=nil &&!_gddaa ._agbcd .IsAuthenticated (){return 0,_d .Errorf ("\u0066\u0069\u006ce\u0020\u006e\u0065\u0065d\u0020\u0074\u006f\u0020\u0062\u0065\u0020d\u0065\u0063\u0072\u0079\u0070\u0074\u0065\u0064\u0020\u0066\u0069\u0072\u0073\u0074"); };return len (_gddaa ._ggbf ),nil ;}; // NewPdfAnnotationStrikeOut returns a new text strikeout annotation. func NewPdfAnnotationStrikeOut ()*PdfAnnotationStrikeOut {_bea :=NewPdfAnnotation ();_fcea :=&PdfAnnotationStrikeOut {};_fcea .PdfAnnotation =_bea ;_fcea .PdfAnnotationMarkup =&PdfAnnotationMarkup {};_bea .SetContext (_fcea );return _fcea ;}; // SetName sets the `Name` field of the signature. func (_acbbg *PdfSignature )SetName (name string ){_acbbg .Name =_dfg .MakeEncodedString (name ,true )}; // GetOCProperties returns the optional content properties PdfObject. func (_efeab *PdfReader )GetOCProperties ()(_dfg .PdfObject ,error ){_gcfd :=_efeab ._fbfgb ;_gcaed :=_gcfd .Get ("\u004f\u0043\u0050r\u006f\u0070\u0065\u0072\u0074\u0069\u0065\u0073");_gcaed =_dfg .ResolveReference (_gcaed );if !_efeab ._bafba {_bccge :=_efeab .traverseObjectData (_gcaed ); if _bccge !=nil {return nil ,_bccge ;};};return _gcaed ,nil ;}; // PdfModel is a higher level PDF construct which can be collapsed into a PdfObject. // Each PdfModel has an underlying PdfObject and vice versa (one-to-one). // Under normal circumstances there should only be one copy of each. // Copies can be made, but care must be taken to do it properly. type PdfModel interface{ToPdfObject ()_dfg .PdfObject ;GetContainingPdfObject ()_dfg .PdfObject ;}; // PdfInfo holds document information that will overwrite // document information global variables defined above. type PdfInfo struct{Title *_dfg .PdfObjectString ;Author *_dfg .PdfObjectString ;Subject *_dfg .PdfObjectString ;Keywords *_dfg .PdfObjectString ;Creator *_dfg .PdfObjectString ;Producer *_dfg .PdfObjectString ;CreationDate *PdfDate ;ModifiedDate *PdfDate ; Trapped *_dfg .PdfObjectName ;_gdaaeb *_dfg .PdfObjectDictionary ;}; // ImageToRGB convert an indexed image to RGB. func (_eccb *PdfColorspaceSpecialIndexed )ImageToRGB (img Image )(Image ,error ){N :=_eccb .Base .GetNumComponents ();if N < 1{return Image {},_d .Errorf ("\u0062\u0061d \u0062\u0061\u0073e\u0020\u0063\u006f\u006cors\u0070ac\u0065\u0020\u004e\u0075\u006d\u0043\u006fmp\u006f\u006e\u0065\u006e\u0074\u0073\u003d%\u0064",N ); };_ebgf :=_ef .NewImageBase (int (img .Width ),int (img .Height ),8,N ,nil ,img ._baeef ,img ._begcc );_ffe :=_efe .NewReader (img .getBase ());_agfag :=_efe .NewWriter (_ebgf );var (_eceg uint32 ;_eaaef int ;_eeeg error ;);for {_eceg ,_eeeg =_ffe .ReadSample (); if _eeeg ==_edg .EOF {break ;}else if _eeeg !=nil {return img ,_eeeg ;};_eaaef =int (_eceg );_egb .Log .Trace ("\u0049\u006ed\u0065\u0078\u0065\u0064\u003a\u0020\u0069\u006e\u0064\u0065\u0078\u003d\u0025\u0064\u0020\u004e\u003d\u0025\u0064\u0020\u006c\u0075t=\u0025\u0064",_eaaef ,N ,len (_eccb ._gcee )); if (_eaaef +1)*N > len (_eccb ._gcee ){_eaaef =len (_eccb ._gcee )/N -1;_egb .Log .Trace ("C\u006c\u0069\u0070\u0070in\u0067 \u0074\u006f\u0020\u0069\u006ed\u0065\u0078\u003a\u0020\u0025\u0064",_eaaef );if _eaaef < 0{_egb .Log .Debug ("\u0045R\u0052\u004fR\u003a\u0020\u0043a\u006e\u0027\u0074\u0020\u0063\u006c\u0069p\u0020\u0069\u006e\u0064\u0065\u0078.\u0020\u0049\u0073\u0020\u0050\u0044\u0046\u0020\u0066\u0069\u006ce\u0020\u0064\u0061\u006d\u0061\u0067\u0065\u0064\u003f"); break ;};};for _aggb :=_eaaef *N ;_aggb < (_eaaef +1)*N ;_aggb ++{if _eeeg =_agfag .WriteSample (uint32 (_eccb ._gcee [_aggb ]));_eeeg !=nil {return img ,_eeeg ;};};};return _eccb .Base .ImageToRGB (_deba (&_ebgf ));}; // PdfFunctionType2 defines an exponential interpolation of one input value and n // output values: // // f(x) = y_0, ..., y_(n-1) // // y_j = C0_j + x^N * (C1_j - C0_j); for 0 <= j < n // When N=1 ; linear interpolation between C0 and C1. type PdfFunctionType2 struct{Domain []float64 ;Range []float64 ;C0 []float64 ;C1 []float64 ;N float64 ;_gggdd *_dfg .PdfIndirectObject ;}; // NewEmbeddedFileFromObject construct a new EmbeddedFile from supplied object. func NewEmbeddedFileFromObject (obj _dfg .PdfObject )(*EmbeddedFile ,error ){_cefag :=_dfg .TraceToDirectObject (obj );_ebcg ,_dafaa :=_cefag .(*_dfg .PdfObjectDictionary );if !_dafaa {return nil ,_bd .New ("\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u006fb\u006a\u0065\u0063\u0074"); };_eccf :=_dfg .TraceToDirectObject (_ebcg .Get ("\u0046"));if _eccf ==nil {return nil ,_bd .New ("\u0069n\u0076\u0061\u006c\u0069\u0064\u0020\u006f\u0062\u006a\u0065\u0063t\u0020\u0073\u0074\u0072\u0075\u0063\u0074\u0075\u0072\u0065");};_eadf ,_dafaa :=_eccf .(*_dfg .PdfObjectStream ); if !_dafaa {return nil ,_bd .New ("\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0073t\u0072\u0065\u0061\u006d");};_gfafa :=_eadf .PdfObjectDictionary ;_gfec :=_gfafa .Get ("\u0050\u0061\u0072\u0061\u006d\u0073");if _gfec ==nil {return nil ,_bd .New ("p\u0061\u0072\u0061\u006d\u0073\u0020o\u0062\u006a\u0065\u0063\u0074\u0020\u006e\u006f\u0074 \u0061\u0076\u0061i\u006ca\u0062\u006c\u0065"); };_aade ,_dafaa :=_gfec .(*_dfg .PdfObjectDictionary );if !_dafaa {return nil ,_bd .New ("i\u006e\u0076\u0061\u006cid\u0020P\u0061\u0072\u0061\u006d\u0073 \u006f\u0062\u006a\u0065\u0063\u0074");};_aceg :="";_ecdc :=_aade .Get ("\u0043\u0068\u0065\u0063\u006b\u0053\u0075\u006d"); if _ecdc !=nil {_aceg =_ecdc .(*_dfg .PdfObjectString ).Str ();};_cdgga ,_deeb :=_dfg .DecodeStream (_eadf );if _deeb !=nil {return nil ,_deeb ;};_afcd :=&EmbeddedFile {Content :_cdgga ,Hash :_aceg };return _afcd ,nil ;};func (_bebfce *PdfPattern )getDict ()*_dfg .PdfObjectDictionary {if _edcdb ,_defc :=_bebfce ._adcec .(*_dfg .PdfIndirectObject ); _defc {_abdff ,_edbcff :=_edcdb .PdfObject .(*_dfg .PdfObjectDictionary );if !_edbcff {return nil ;};return _abdff ;}else if _gfgbc ,_cebbb :=_bebfce ._adcec .(*_dfg .PdfObjectStream );_cebbb {return _gfgbc .PdfObjectDictionary ;}else {_egb .Log .Debug ("\u0054r\u0079\u0069\u006e\u0067\u0020\u0074\u006f a\u0063\u0063\u0065\u0073\u0073\u0020\u0070\u0061\u0074\u0074\u0065\u0072\u006e\u0020d\u0069\u0063t\u0069\u006f\u006ea\u0072\u0079\u0020\u006f\u0066\u0020\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u006f\u0062j\u0065\u0063t \u0074\u0079\u0070e\u0020\u0028\u0025\u0054\u0029",_bebfce ._adcec ); return nil ;};}; // PdfColorspaceSpecialSeparation is a Separation colorspace. // At the moment the colour space is set to a Separation space, the conforming reader shall determine whether the // device has an available colorant (e.g. dye) corresponding to the name of the requested space. If so, the conforming // reader shall ignore the alternateSpace and tintTransform parameters; subsequent painting operations within the // space shall apply the designated colorant directly, according to the tint values supplied. // // Format: [/Separation name alternateSpace tintTransform] type PdfColorspaceSpecialSeparation struct{ColorantName *_dfg .PdfObjectName ;AlternateSpace PdfColorspace ;TintTransform PdfFunction ;_fdcef *_dfg .PdfIndirectObject ;}; // ColorFromFloats returns a new PdfColor based on the input slice of color // components. The slice should contain a single element between 0 and 1. func (_dcaf *PdfColorspaceCalGray )ColorFromFloats (vals []float64 )(PdfColor ,error ){if len (vals )!=1{return nil ,_bd .New ("r\u0061\u006e\u0067\u0065\u0020\u0063\u0068\u0065\u0063\u006b");};_bcecf :=vals [0];if _bcecf < 0.0||_bcecf > 1.0{_egb .Log .Debug ("\u0063\u006f\u006cor\u0020\u006f\u0075\u0074\u0020\u006f\u0066\u0020\u0043\u0053\u0020\u0072\u0061\u006e\u0067\u0065\u003a\u0020",_bcecf ); return nil ,ErrColorOutOfRange ;};_bfbaa :=NewPdfColorCalGray (_bcecf );return _bfbaa ,nil ;}; // NewPdfDateFromTime will create a PdfDate based on the given time func NewPdfDateFromTime (timeObj _ge .Time )(PdfDate ,error ){_gddef :=timeObj .Format ("\u002d\u0030\u0037\u003a\u0030\u0030");_beede ,_ :=_gg .ParseInt (_gddef [1:3],10,32);_gfbfc ,_ :=_gg .ParseInt (_gddef [4:6],10,32);return PdfDate {_accga :int64 (timeObj .Year ()),_fedabd :int64 (timeObj .Month ()),_agfc :int64 (timeObj .Day ()),_cgae :int64 (timeObj .Hour ()),_abggb :int64 (timeObj .Minute ()),_dbddf :int64 (timeObj .Second ()),_fedac :_gddef [0],_adgc :_beede ,_aaggg :_gfbfc },nil ; }; // String returns string value of output intent for given type // ISO_19005-2 6.2.3: GTS_PDFA1 value should be used for PDF/A-1, A-2 and A-3 at least func (_fafb PdfOutputIntentType )String ()string {switch _fafb {case PdfOutputIntentTypeA1 :return "\u0047T\u0053\u005f\u0050\u0044\u0046\u00411";case PdfOutputIntentTypeA2 :return "\u0047T\u0053\u005f\u0050\u0044\u0046\u00411";case PdfOutputIntentTypeA3 :return "\u0047T\u0053\u005f\u0050\u0044\u0046\u00411"; case PdfOutputIntentTypeA4 :return "\u0047T\u0053\u005f\u0050\u0044\u0046\u00411";case PdfOutputIntentTypeX :return "\u0047\u0054\u0053\u005f\u0050\u0044\u0046\u0058";default:return "\u0055N\u0044\u0045\u0046\u0049\u004e\u0045D";};};func (_cddgcb *PdfWriter )hasObject (_cdfcgc _dfg .PdfObject )bool {_ ,_gedga :=_cddgcb ._bgbee [_cdfcgc ]; return _gedga ;};var _cbgbe =map[string ]struct{}{"\u0057i\u006eA\u006e\u0073\u0069\u0045\u006e\u0063\u006f\u0064\u0069\u006e\u0067":{},"\u004d\u0061c\u0052\u006f\u006da\u006e\u0045\u006e\u0063\u006f\u0064\u0069\u006e\u0067":{},"\u004d\u0061\u0063\u0045\u0078\u0070\u0065\u0072\u0074\u0045\u006e\u0063o\u0064\u0069\u006e\u0067":{},"\u0053\u0074a\u006e\u0064\u0061r\u0064\u0045\u006e\u0063\u006f\u0064\u0069\u006e\u0067":{}}; // GenerateHashMaps generates DSS hashmaps for Certificates, OCSPs and CRLs to make sure they are unique. func (_dgee *DSS )GenerateHashMaps ()error {_ccbe ,_gccdgg :=_dgee .generateHashMap (_dgee .Certs );if _gccdgg !=nil {return _gccdgg ;};_bgge ,_gccdgg :=_dgee .generateHashMap (_dgee .OCSPs );if _gccdgg !=nil {return _gccdgg ;};_fgcb ,_gccdgg :=_dgee .generateHashMap (_dgee .CRLs ); if _gccdgg !=nil {return _gccdgg ;};_dgee ._fbgf =_ccbe ;_dgee ._fecgg =_bgge ;_dgee ._cccc =_fgcb ;return nil ;};type pdfCIDFontType2 struct{fontCommon ;_dfgaa *_dfg .PdfIndirectObject ;_fbfb _ff .TextEncoder ; // Table 117 – Entries in a CIDFont dictionary (page 269) // Dictionary that defines the character collection of the CIDFont (required). // See Table 116. CIDSystemInfo *_dfg .PdfObjectDictionary ; // Glyph metrics fields (optional). DW _dfg .PdfObject ;W _dfg .PdfObject ;DW2 _dfg .PdfObject ;W2 _dfg .PdfObject ; // CIDs to glyph indices mapping (optional). CIDToGIDMap _dfg .PdfObject ;_gdebe map[_ff .CharCode ]float64 ;_cfcga float64 ;_cede map[rune ]int ;}; // GetPageNumber returns the page number that has been assigned to the K object. func (_fafeef *KDict )GetPageNumber ()int64 {return _fafeef ._gabf }; // NonFullScreenPageMode returns the value of the nonFullScreenPageMode. func (_fbbac *ViewerPreferences )NonFullScreenPageMode ()NonFullScreenPageMode {return _fbbac ._gbbce }; // NewPdfAnnotationLine returns a new line annotation. func NewPdfAnnotationLine ()*PdfAnnotationLine {_bacee :=NewPdfAnnotation ();_dfc :=&PdfAnnotationLine {};_dfc .PdfAnnotation =_bacee ;_dfc .PdfAnnotationMarkup =&PdfAnnotationMarkup {};_bacee .SetContext (_dfc );return _dfc ;}; // GetContext returns a reference to the subshading entry as represented by PdfShadingType1-7. func (_dcdcd *PdfShading )GetContext ()PdfModel {return _dcdcd ._fdbfb }; // ColorFromFloats returns a new PdfColor based on the input slice of color // components. func (_fbdg *PdfColorspaceSpecialPattern )ColorFromFloats (vals []float64 )(PdfColor ,error ){if _fbdg .UnderlyingCS ==nil {return nil ,_bd .New ("u\u006e\u0064\u0065\u0072\u006c\u0079i\u006e\u0067\u0020\u0043\u0053\u0020\u006e\u006f\u0074 \u0073\u0070\u0065c\u0069f\u0069\u0065\u0064"); };return _fbdg .UnderlyingCS .ColorFromFloats (vals );};func _afca (_caceb *_dfg .PdfObjectDictionary )(*PdfTilingPattern ,error ){_fedfc :=&PdfTilingPattern {};_geff :=_caceb .Get ("\u0050a\u0069\u006e\u0074\u0054\u0079\u0070e");if _geff ==nil {_egb .Log .Debug ("\u0050\u0061\u0069\u006e\u0074\u0054\u0079\u0070\u0065\u0020\u006d\u0069s\u0073\u0069\u006e\u0067"); return nil ,ErrRequiredAttributeMissing ;};_ggga ,_gfgcd :=_geff .(*_dfg .PdfObjectInteger );if !_gfgcd {_egb .Log .Debug ("\u0050\u0061\u0069\u006e\u0074\u0054y\u0070\u0065\u0020\u006e\u006f\u0074\u0020\u0061\u006e\u0020\u0069\u006e\u0074e\u0067\u0065\u0072\u0020\u0028\u0067\u006ft\u0020\u0025\u0054\u0029",_geff ); return nil ,_dfg .ErrTypeError ;};_fedfc .PaintType =_ggga ;_geff =_caceb .Get ("\u0054\u0069\u006c\u0069\u006e\u0067\u0054\u0079\u0070\u0065");if _geff ==nil {_egb .Log .Debug ("\u0054i\u006ci\u006e\u0067\u0054\u0079\u0070e\u0020\u006di\u0073\u0073\u0069\u006e\u0067"); return nil ,ErrRequiredAttributeMissing ;};_dbcd ,_gfgcd :=_geff .(*_dfg .PdfObjectInteger );if !_gfgcd {_egb .Log .Debug ("\u0054\u0069\u006cin\u0067\u0054\u0079\u0070\u0065\u0020\u006e\u006f\u0074 \u0061n\u0020i\u006et\u0065\u0067\u0065\u0072\u0020\u0028\u0067\u006f\u0074\u0020\u0025\u0054\u0029",_geff ); return nil ,_dfg .ErrTypeError ;};_fedfc .TilingType =_dbcd ;_geff =_caceb .Get ("\u0042\u0042\u006f\u0078");if _geff ==nil {_egb .Log .Debug ("\u0042\u0042\u006fx\u0020\u006d\u0069\u0073\u0073\u0069\u006e\u0067");return nil ,ErrRequiredAttributeMissing ; };_geff =_dfg .TraceToDirectObject (_geff );_agddd ,_gfgcd :=_geff .(*_dfg .PdfObjectArray );if !_gfgcd {_egb .Log .Debug ("\u0042B\u006f\u0078 \u0073\u0068\u006fu\u006c\u0064\u0020\u0062\u0065\u0020\u0073p\u0065\u0063\u0069\u0066\u0069\u0065d\u0020\u0062\u0079\u0020\u0061\u006e\u0020\u0061\u0072\u0072\u0061y\u0020\u0028\u0067\u006f\u0074\u0020\u0025\u0054\u0029",_geff ); return nil ,_dfg .ErrTypeError ;};_bcdcd ,_bgbg :=NewPdfRectangle (*_agddd );if _bgbg !=nil {_egb .Log .Debug ("\u0042\u0042\u006f\u0078\u0020\u0065\u0072\u0072\u006fr\u003a\u0020\u0025\u0076",_bgbg );return nil ,_bgbg ;};_fedfc .BBox =_bcdcd ;_geff =_caceb .Get ("\u0058\u0053\u0074e\u0070"); if _geff ==nil {_egb .Log .Debug ("\u0058\u0053\u0074\u0065\u0070\u0020\u006d\u0069\u0073\u0073\u0069\u006e\u0067");return nil ,ErrRequiredAttributeMissing ;};_effage ,_bgbg :=_dfg .GetNumberAsFloat (_geff );if _bgbg !=nil {_egb .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0067\u0065\u0074\u0074\u0069\u006e\u0067\u0020\u0058S\u0074e\u0070\u0020\u0061\u0073\u0020\u0066\u006c\u006f\u0061\u0074\u003a\u0020\u0025\u0076",_effage ); return nil ,_bgbg ;};_fedfc .XStep =_dfg .MakeFloat (_effage );_geff =_caceb .Get ("\u0059\u0053\u0074e\u0070");if _geff ==nil {_egb .Log .Debug ("\u0059\u0053\u0074\u0065\u0070\u0020\u006d\u0069\u0073\u0073\u0069\u006e\u0067");return nil ,ErrRequiredAttributeMissing ; };_dfaga ,_bgbg :=_dfg .GetNumberAsFloat (_geff );if _bgbg !=nil {_egb .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0067\u0065\u0074\u0074\u0069\u006e\u0067\u0020\u0059S\u0074e\u0070\u0020\u0061\u0073\u0020\u0066\u006c\u006f\u0061\u0074\u003a\u0020\u0025\u0076",_dfaga ); return nil ,_bgbg ;};_fedfc .YStep =_dfg .MakeFloat (_dfaga );_geff =_caceb .Get ("\u0052e\u0073\u006f\u0075\u0072\u0063\u0065s");if _geff ==nil {_egb .Log .Debug ("\u0052\u0065\u0073\u006f\u0075\u0072\u0063\u0065\u0073\u0020\u006d\u0069s\u0073\u0069\u006e\u0067"); return nil ,ErrRequiredAttributeMissing ;};_caceb ,_gfgcd =_dfg .TraceToDirectObject (_geff ).(*_dfg .PdfObjectDictionary );if !_gfgcd {return nil ,_d .Errorf ("\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0072\u0065\u0073\u006f\u0075\u0072\u0063e\u0020d\u0069\u0063\u0074\u0069\u006f\u006e\u0061\u0072\u0079\u0020\u0028\u0025\u0054\u0029",_geff ); };_caebg ,_bgbg :=NewPdfPageResourcesFromDict (_caceb );if _bgbg !=nil {return nil ,_bgbg ;};_fedfc .Resources =_caebg ;if _fbgee :=_caceb .Get ("\u004d\u0061\u0074\u0072\u0069\u0078");_fbgee !=nil {_ageg ,_gccee :=_fbgee .(*_dfg .PdfObjectArray );if !_gccee {_egb .Log .Debug ("\u004d\u0061\u0074\u0072i\u0078\u0020\u006e\u006f\u0074\u0020\u0061\u006e\u0020\u0061r\u0072a\u0079\u0020\u0028\u0067\u006f\u0074\u0020%\u0054\u0029",_fbgee ); return nil ,_dfg .ErrTypeError ;};_fedfc .Matrix =_ageg ;};return _fedfc ,nil ;};func (_gcb *PdfAnnotation )String ()string {_fae :="";_ged ,_cec :=_gcb .ToPdfObject ().(*_dfg .PdfIndirectObject );if _cec {_fae =_d .Sprintf ("\u0025\u0054\u003a\u0020\u0025\u0073",_gcb ._dga ,_ged .PdfObject .String ()); };return _fae ;}; // ToPdfObject converts rectangle to a PDF object. func (_fcdda *PdfRectangle )ToPdfObject ()_dfg .PdfObject {return _dfg .MakeArray (_dfg .MakeFloat (_fcdda .Llx ),_dfg .MakeFloat (_fcdda .Lly ),_dfg .MakeFloat (_fcdda .Urx ),_dfg .MakeFloat (_fcdda .Ury ));}; // ToInteger convert to an integer format. func (_ggfc *PdfColorDeviceCMYK )ToInteger (bits int )[4]uint32 {_dcgdf :=_df .Pow (2,float64 (bits ))-1;return [4]uint32 {uint32 (_dcgdf *_ggfc .C ()),uint32 (_dcgdf *_ggfc .M ()),uint32 (_dcgdf *_ggfc .Y ()),uint32 (_dcgdf *_ggfc .K ())};};func _daeg (_bbcagg *_dfg .PdfObjectDictionary )(*PdfShadingType1 ,error ){_abdd :=PdfShadingType1 {}; if _cedgd :=_bbcagg .Get ("\u0044\u006f\u006d\u0061\u0069\u006e");_cedgd !=nil {_cedgd =_dfg .TraceToDirectObject (_cedgd );_gcagf ,_ggcf :=_cedgd .(*_dfg .PdfObjectArray );if !_ggcf {_egb .Log .Debug ("\u0044\u006f\u006d\u0061i\u006e\u0020\u006e\u006f\u0074\u0020\u0061\u006e\u0020\u0061r\u0072a\u0079\u0020\u0028\u0067\u006f\u0074\u0020%\u0054\u0029",_cedgd ); return nil ,_bd .New ("\u0074\u0079p\u0065\u0020\u0063h\u0065\u0063\u006b\u0020\u0065\u0072\u0072\u006f\u0072");};_abdd .Domain =_gcagf ;};if _adggab :=_bbcagg .Get ("\u004d\u0061\u0074\u0072\u0069\u0078");_adggab !=nil {_adggab =_dfg .TraceToDirectObject (_adggab ); _ddgfb ,_ecefg :=_adggab .(*_dfg .PdfObjectArray );if !_ecefg {_egb .Log .Debug ("\u004d\u0061\u0074\u0072i\u0078\u0020\u006e\u006f\u0074\u0020\u0061\u006e\u0020\u0061r\u0072a\u0079\u0020\u0028\u0067\u006f\u0074\u0020%\u0054\u0029",_adggab );return nil ,_bd .New ("\u0074\u0079p\u0065\u0020\u0063h\u0065\u0063\u006b\u0020\u0065\u0072\u0072\u006f\u0072"); };_abdd .Matrix =_ddgfb ;};_bcaaf :=_bbcagg .Get ("\u0046\u0075\u006e\u0063\u0074\u0069\u006f\u006e");if _bcaaf ==nil {_egb .Log .Debug ("\u0052\u0065q\u0075\u0069\u0072\u0065d\u0020\u0061t\u0074\u0072\u0069\u0062\u0075\u0074\u0065\u0020m\u0069\u0073\u0073\u0069\u006e\u0067\u003a\u0020\u0020\u0046\u0075\u006ec\u0074\u0069\u006f\u006e"); return nil ,ErrRequiredAttributeMissing ;};_abdd .Function =[]PdfFunction {};if _caaaadb ,_fbcf :=_bcaaf .(*_dfg .PdfObjectArray );_fbcf {for _ ,_debfa :=range _caaaadb .Elements (){_dcgca ,_fcdfg :=_gbada (_debfa );if _fcdfg !=nil {_egb .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0070\u0061\u0072\u0073\u0069n\u0067\u0020\u0066\u0075\u006e\u0063\u0074\u0069\u006f\u006e:\u0020\u0025\u0076",_fcdfg ); return nil ,_fcdfg ;};_abdd .Function =append (_abdd .Function ,_dcgca );};}else {_aabge ,_ddbda :=_gbada (_bcaaf );if _ddbda !=nil {_egb .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0070\u0061\u0072\u0073\u0069n\u0067\u0020\u0066\u0075\u006e\u0063\u0074\u0069\u006f\u006e:\u0020\u0025\u0076",_ddbda ); return nil ,_ddbda ;};_abdd .Function =append (_abdd .Function ,_aabge );};return &_abdd ,nil ;}; // SetCatalogMetadata sets the catalog metadata (XMP) stream object. func (_cefcca *PdfWriter )SetCatalogMetadata (meta _dfg .PdfObject )error {if meta ==nil {_cefcca ._acgcc .Remove ("\u004d\u0065\u0074\u0061\u0064\u0061\u0074\u0061");return nil ;};_afaa ,_dggfaf :=_dfg .GetStream (meta );if !_dggfaf {return _bd .New ("\u0063\u0061\u0074\u0061\u006c\u006f\u0067\u0020\u006d\u0065\u0074\u0061\u0064a\u0074\u0061\u0020\u006d\u0075\u0073t\u0020\u0062\u0065\u0020\u0061\u0020\u0076\u0061\u006c\u0069\u0064\u0020\u0073t\u0072\u0065\u0061\u006d"); };_cefcca .addObject (_afaa );_cefcca ._acgcc .Set ("\u004d\u0065\u0074\u0061\u0064\u0061\u0074\u0061",_afaa );return nil ;};func (_ccce *PdfReader )newPdfAnnotationTextFromDict (_fcff *_dfg .PdfObjectDictionary )(*PdfAnnotationText ,error ){_cefd :=PdfAnnotationText {}; _beda ,_gdg :=_ccce .newPdfAnnotationMarkupFromDict (_fcff );if _gdg !=nil {return nil ,_gdg ;};_cefd .PdfAnnotationMarkup =_beda ;_cefd .Open =_fcff .Get ("\u004f\u0070\u0065\u006e");_cefd .Name =_fcff .Get ("\u004e\u0061\u006d\u0065");_cefd .State =_fcff .Get ("\u0053\u0074\u0061t\u0065"); _cefd .StateModel =_fcff .Get ("\u0053\u0074\u0061\u0074\u0065\u004d\u006f\u0064\u0065\u006c");return &_cefd ,nil ;};func (_cgeac *PdfWriter )writeAcroFormFields ()error {if _cgeac ._abcfe ==nil {return nil ;};_egb .Log .Trace ("\u0057r\u0069t\u0069\u006e\u0067\u0020\u0061c\u0072\u006f \u0066\u006f\u0072\u006d\u0073"); _ddcgd :=_cgeac ._abcfe .ToPdfObject ();_egb .Log .Trace ("\u0041\u0063\u0072\u006f\u0046\u006f\u0072\u006d\u003a\u0020\u0025\u002b\u0076",_ddcgd );_cgeac ._acgcc .Set ("\u0041\u0063\u0072\u006f\u0046\u006f\u0072\u006d",_ddcgd );_gdbgb :=_cgeac .addObjects (_ddcgd ); if _gdbgb !=nil {return _gdbgb ;};return nil ;}; // NewPdfShadingPatternType2 creates an empty shading pattern type 2 object. func NewPdfShadingPatternType2 ()*PdfShadingPatternType2 {_edag :=&PdfShadingPatternType2 {};_edag .Matrix =_dfg .MakeArrayFromIntegers ([]int {1,0,0,1,0,0});_edag .PdfPattern =&PdfPattern {};_edag .PdfPattern .PatternType =int64 (*_dfg .MakeInteger (2)); _edag .PdfPattern ._bfaedb =_edag ;_edag .PdfPattern ._adcec =_dfg .MakeIndirectObject (_dfg .MakeDict ());return _edag ;};func (_feec *PdfReader )newPdfAnnotationRedactFromDict (_cfa *_dfg .PdfObjectDictionary )(*PdfAnnotationRedact ,error ){_cdc :=PdfAnnotationRedact {}; _eecf ,_aabd :=_feec .newPdfAnnotationMarkupFromDict (_cfa );if _aabd !=nil {return nil ,_aabd ;};_cdc .PdfAnnotationMarkup =_eecf ;_cdc .QuadPoints =_cfa .Get ("\u0051\u0075\u0061\u0064\u0050\u006f\u0069\u006e\u0074\u0073");_cdc .IC =_cfa .Get ("\u0049\u0043"); _cdc .RO =_cfa .Get ("\u0052\u004f");_cdc .OverlayText =_cfa .Get ("O\u0076\u0065\u0072\u006c\u0061\u0079\u0054\u0065\u0078\u0074");_cdc .Repeat =_cfa .Get ("\u0052\u0065\u0070\u0065\u0061\u0074");_cdc .DA =_cfa .Get ("\u0044\u0041");_cdc .Q =_cfa .Get ("\u0051"); return &_cdc ,nil ;}; // GetColorspaces loads PdfPageResourcesColorspaces from `r.ColorSpace` and returns an error if there // is a problem loading. Once loaded, the same object is returned on multiple calls. func (_cagcf *PdfPageResources )GetColorspaces ()(*PdfPageResourcesColorspaces ,error ){if _cagcf ._fgfec !=nil {return _cagcf ._fgfec ,nil ;};if _cagcf .ColorSpace ==nil {return nil ,nil ;};_eageg ,_aedcc :=_ggffb (_cagcf .ColorSpace );if _aedcc !=nil {return nil ,_aedcc ; };_cagcf ._fgfec =_eageg ;return _cagcf ._fgfec ,nil ;}; // Optimizer is the interface that performs optimization of PDF object structure for output writing. // // Optimize receives a slice of input `objects`, performs optimization, including removing, replacing objects and // output the optimized slice of objects. type Optimizer interface{Optimize (_aaaf []_dfg .PdfObject )([]_dfg .PdfObject ,error );};func _bfbc ()string {_dfbaa .Lock ();defer _dfbaa .Unlock ();_gffcfc :=_gb .GetLicenseKey ();if len (_fgfff )> 0&&(_gffcfc .IsLicensed ()||_ecdba ){return _fgfff ; };return _d .Sprintf ("\u0055\u006e\u0069Do\u0063\u0020\u0076\u0025\u0073\u0020\u0028\u0025\u0073)\u0020-\u0020h\u0074t\u0070\u003a\u002f\u002f\u0075\u006e\u0069\u0064\u006f\u0063\u002e\u0069\u006f",_bfegf (),_gffcfc .TypeToString ());}; // NewPdfReader returns a new PdfReader for an input io.ReadSeeker interface. Can be used to read PDF from // memory or file. Immediately loads and traverses the PDF structure including pages and page contents (if // not encrypted). Loads entire document structure into memory. // Alternatively a lazy-loading reader can be created with NewPdfReaderLazy which loads only references, // and references are loaded from disk into memory on an as-needed basis. func NewPdfReader (rs _edg .ReadSeeker )(*PdfReader ,error ){const _ebgef ="\u006do\u0064e\u006c\u003a\u004e\u0065\u0077P\u0064\u0066R\u0065\u0061\u0064\u0065\u0072";return _dafc (rs ,&ReaderOpts {},false ,_ebgef );}; // PdfPageResourcesColorspaces contains the colorspace in the PdfPageResources. // Needs to have matching name and colorspace map entry. The Names define the order. type PdfPageResourcesColorspaces struct{Names []string ;Colorspaces map[string ]PdfColorspace ;_acbeg *_dfg .PdfIndirectObject ;}; // ToPdfObject converts colorspace to a PDF object. [/Indexed base hival lookup] func (_cbddf *PdfColorspaceSpecialIndexed )ToPdfObject ()_dfg .PdfObject {_ebdeca :=_dfg .MakeArray (_dfg .MakeName ("\u0049n\u0064\u0065\u0078\u0065\u0064"));_ebdeca .Append (_cbddf .Base .ToPdfObject ());_ebdeca .Append (_dfg .MakeInteger (int64 (_cbddf .HiVal ))); _ebdeca .Append (_cbddf .Lookup );if _cbddf ._dda !=nil {_cbddf ._dda .PdfObject =_ebdeca ;return _cbddf ._dda ;};return _ebdeca ;}; // ToPdfObject implements interface PdfModel. func (_fbb *PdfActionTrans )ToPdfObject ()_dfg .PdfObject {_fbb .PdfAction .ToPdfObject ();_fcb :=_fbb ._fe ;_ag :=_fcb .PdfObject .(*_dfg .PdfObjectDictionary );_ag .SetIfNotNil ("\u0053",_dfg .MakeName (string (ActionTypeTrans )));_ag .SetIfNotNil ("\u0054\u0072\u0061n\u0073",_fbb .Trans ); return _fcb ;}; // PdfAnnotation3D represents 3D annotations. // (Section 13.6.2). type PdfAnnotation3D struct{*PdfAnnotation ;T3DD _dfg .PdfObject ;T3DV _dfg .PdfObject ;T3DA _dfg .PdfObject ;T3DI _dfg .PdfObject ;T3DB _dfg .PdfObject ;};var _ pdfFont =(*pdfFontSimple )(nil ); // ValidateSignatures validates digital signatures in the document. func (_fgbca *PdfReader )ValidateSignatures (handlers []SignatureHandler )([]SignatureValidationResult ,error ){if _fgbca .AcroForm ==nil {return nil ,nil ;};if _fgbca .AcroForm .Fields ==nil {return nil ,nil ;};type sigFieldPair struct{_gfdfg *PdfSignature ; _cabeb *PdfField ;_cceb SignatureHandler ;};var _gcbdc []*sigFieldPair ;for _ ,_ggebc :=range _fgbca .AcroForm .AllFields (){if _ggebc .V ==nil {continue ;};if _agbaa ,_acfdg :=_dfg .GetDict (_ggebc .V );_acfdg {if _fgfbg ,_cfgcd :=_dfg .GetNameVal (_agbaa .Get ("\u0054\u0079\u0070\u0065")); _cfgcd &&(_fgfbg =="\u0053\u0069\u0067"||_fgfbg =="\u0044\u006f\u0063T\u0069\u006d\u0065\u0053\u0074\u0061\u006d\u0070"){_acga ,_ffeg :=_dfg .GetIndirect (_ggebc .V );if !_ffeg {_egb .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a \u0053\u0069\u0067\u006e\u0061\u0074\u0075\u0072\u0065\u0020\u0063\u006f\u006et\u0061\u0069\u006e\u0065\u0072\u0020\u0069s\u0020\u006e\u0069\u006c"); return nil ,ErrTypeCheck ;};_ceeba ,_dfefcf :=_fgbca .newPdfSignatureFromIndirect (_acga );if _dfefcf !=nil {return nil ,_dfefcf ;};var _acab SignatureHandler ;for _ ,_gdcae :=range handlers {if _gdcae .IsApplicable (_ceeba ){_acab =_gdcae ;break ;};}; _gcbdc =append (_gcbdc ,&sigFieldPair {_gfdfg :_ceeba ,_cabeb :_ggebc ,_cceb :_acab });};};};var _gcfdf []SignatureValidationResult ;for _ ,_agdff :=range _gcbdc {_edbcg :=SignatureValidationResult {IsSigned :true ,Fields :[]*PdfField {_agdff ._cabeb }}; if _agdff ._cceb ==nil {_edbcg .Errors =append (_edbcg .Errors ,"\u0068a\u006ed\u006c\u0065\u0072\u0020\u006e\u006f\u0074\u0020\u0073\u0065\u0074");_gcfdf =append (_gcfdf ,_edbcg );continue ;};_dccd ,_gcfbf :=_agdff ._cceb .NewDigest (_agdff ._gfdfg ); if _gcfbf !=nil {_edbcg .Errors =append (_edbcg .Errors ,"\u0064\u0069\u0067e\u0073\u0074\u0020\u0065\u0072\u0072\u006f\u0072",_gcfbf .Error ());_gcfdf =append (_gcfdf ,_edbcg );continue ;};_fcbbd :=_agdff ._gfdfg .ByteRange ;if _fcbbd ==nil {_edbcg .Errors =append (_edbcg .Errors ,"\u0042\u0079\u0074\u0065\u0052\u0061\u006e\u0067\u0065\u0020\u006e\u006ft\u0020\u0073\u0065\u0074"); _gcfdf =append (_gcfdf ,_edbcg );continue ;};for _fdgee :=0;_fdgee < _fcbbd .Len ();_fdgee =_fdgee +2{_bdcca ,_ :=_dfg .GetNumberAsInt64 (_fcbbd .Get (_fdgee ));_adabg ,_ :=_dfg .GetIntVal (_fcbbd .Get (_fdgee +1));if _ ,_aeef :=_fgbca ._cggac .Seek (_bdcca ,_edg .SeekStart ); _aeef !=nil {return nil ,_aeef ;};_dbcdg :=make ([]byte ,_adabg );if _ ,_dbebd :=_fgbca ._cggac .Read (_dbcdg );_dbebd !=nil {return nil ,_dbebd ;};_dccd .Write (_dbcdg );};var _debdc SignatureValidationResult ;if _bgcdb ,_dagab :=_agdff ._cceb .(SignatureHandlerDocMDP ); _dagab {_debdc ,_gcfbf =_bgcdb .ValidateWithOpts (_agdff ._gfdfg ,_dccd ,SignatureHandlerDocMDPParams {Parser :_fgbca ._agbcd });}else {_debdc ,_gcfbf =_agdff ._cceb .Validate (_agdff ._gfdfg ,_dccd );};if _gcfbf !=nil {_egb .Log .Debug ("E\u0052\u0052\u004f\u0052: \u0025v\u0020\u0028\u0025\u0054\u0029 \u002d\u0020\u0073\u006b\u0069\u0070",_gcfbf ,_agdff ._cceb ); _debdc .Errors =append (_debdc .Errors ,_gcfbf .Error ());};_debdc .Name =_agdff ._gfdfg .Name .Decoded ();_debdc .Reason =_agdff ._gfdfg .Reason .Decoded ();if _agdff ._gfdfg .M !=nil {_aabgc ,_gggfc :=NewPdfDate (_agdff ._gfdfg .M .String ());if _gggfc !=nil {_egb .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a\u0020\u0025v",_gggfc ); _debdc .Errors =append (_debdc .Errors ,_gggfc .Error ());continue ;};_debdc .Date =_aabgc ;};_debdc .ContactInfo =_agdff ._gfdfg .ContactInfo .Decoded ();_debdc .Location =_agdff ._gfdfg .Location .Decoded ();_debdc .Fields =_edbcg .Fields ;_gcfdf =append (_gcfdf ,_debdc ); };return _gcfdf ,nil ;}; // A PdfPattern can represent a Pattern, either a tiling pattern or a shading pattern. // Note that all patterns shall be treated as colours; a Pattern colour space shall be established with the CS or cs // operator just like other colour spaces, and a particular pattern shall be installed as the current colour with the // SCN or scn operator. type PdfPattern struct{ // Type: Pattern PatternType int64 ;_bfaedb PdfModel ;_adcec _dfg .PdfObject ;};func _acfab (_cdce *_dfg .PdfObjectDictionary ,_ecfc *fontCommon )(*pdfFontType3 ,error ){_ccdgf :=_ggdfc (_ecfc );_gdcad :=_cdce .Get ("\u0046i\u0072\u0073\u0074\u0043\u0068\u0061r");if _gdcad ==nil {_gdcad =_dfg .MakeInteger (0); };_ccdgf .FirstChar =_gdcad ;_fdbd ,_feced :=_dfg .GetIntVal (_gdcad );if !_feced {_egb .Log .Debug ("\u0045\u0052\u0052OR\u003a\u0020\u0049\u006e\u0076\u0061\u006c\u0069\u0064 \u0046i\u0072s\u0074C\u0068\u0061\u0072\u0020\u0074\u0079\u0070\u0065\u0020\u0028\u0025\u0054\u0029",_gdcad ); return nil ,_dfg .ErrTypeError ;};_cbbdd :=_ff .CharCode (_fdbd );_gdcad =_cdce .Get ("\u004c\u0061\u0073\u0074\u0043\u0068\u0061\u0072");if _gdcad ==nil {_gdcad =_dfg .MakeInteger (255);};_ccdgf .LastChar =_gdcad ;_fdbd ,_feced =_dfg .GetIntVal (_gdcad ); if !_feced {_egb .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a \u0049\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u004c\u0061\u0073\u0074\u0043h\u0061\u0072\u0020\u0074\u0079\u0070\u0065 \u0028\u0025\u0054\u0029",_gdcad );return nil ,_dfg .ErrTypeError ; };_fgadf :=_ff .CharCode (_fdbd );_gdcad =_cdce .Get ("\u0052e\u0073\u006f\u0075\u0072\u0063\u0065s");if _gdcad !=nil {_ccdgf .Resources =_gdcad ;};_gdcad =_cdce .Get ("\u0043h\u0061\u0072\u0050\u0072\u006f\u0063s");if _gdcad ==nil {_egb .Log .Debug ("\u0045\u0052R\u004f\u0052\u003a\u0020\u0049\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0043\u0068\u0061\u0072\u0050\u0072\u006f\u0063\u0073\u0020(%\u0076\u0029",_gdcad ); return nil ,_dfg .ErrNotSupported ;};_ccdgf .CharProcs =_gdcad ;_gdcad =_cdce .Get ("\u0046\u006f\u006e\u0074\u004d\u0061\u0074\u0072\u0069\u0078");if _gdcad ==nil {_egb .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0049\u006e\u0076a\u006c\u0069\u0064\u0020\u0046\u006f\u006et\u004d\u0061\u0074\u0072\u0069\u0078\u0020\u0028\u0025\u0076\u0029",_gdcad ); return nil ,_dfg .ErrNotSupported ;};_ccdgf .FontMatrix =_gdcad ;_ccdgf ._efgcd =make (map[_ff .CharCode ]float64 );_gdcad =_cdce .Get ("\u0057\u0069\u0064\u0074\u0068\u0073");if _gdcad !=nil {_ccdgf .Widths =_gdcad ;_gfdf ,_gfaa :=_dfg .GetArray (_gdcad ); if !_gfaa {_egb .Log .Debug ("\u0045\u0052R\u004f\u0052\u003a\u0020W\u0069\u0064t\u0068\u0073\u0020\u0061\u0074\u0074\u0072\u0069b\u0075\u0074\u0065\u0020\u0021\u003d\u0020\u0061\u0072\u0072\u0061\u0079 \u0028\u0025\u0054\u0029",_gdcad );return nil ,_dfg .ErrTypeError ; };_gfeed ,_bfab :=_gfdf .ToFloat64Array ();if _bfab !=nil {_egb .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a \u0063\u006f\u006e\u0076\u0065\u0072\u0074\u0069\u006e\u0067\u0020\u0077\u0069d\u0074\u0068\u0073\u0020\u0074\u006f\u0020a\u0072\u0072\u0061\u0079"); return nil ,_bfab ;};if len (_gfeed )!=int (_fgadf -_cbbdd +1){_egb .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0049\u006e\u0076\u0061\u006c\u0069d\u0020\u0077\u0069\u0064\u0074\u0068s\u0020\u006c\u0065\u006e\u0067\u0074\u0068\u0020\u0021\u003d\u0020\u0025\u0064 \u0028\u0025\u0064\u0029",_fgadf -_cbbdd +1,len (_gfeed )); return nil ,_dfg .ErrRangeError ;};_bfgg ,_gfaa :=_dfg .GetArray (_ccdgf .FontMatrix );if !_gfaa {_egb .Log .Debug ("\u0045\u0052\u0052\u004f\u0052:\u0020\u0046\u006f\u006e\u0074\u004d\u0061\u0074\u0072\u0069\u0078\u0020\u0061t\u0074\u0072\u0069\u0062\u0075\u0074\u0065\u0020\u0021\u003d\u0020\u0061\u0072\u0072\u0061\u0079\u0020\u0028\u0025\u0054\u0029",_bfgg ); return nil ,_bfab ;};_acefb ,_bfab :=_bfgg .ToFloat64Array ();if _bfab !=nil {_egb .Log .Debug ("\u0045\u0052R\u004f\u0052\u003a\u0020c\u006f\u006ev\u0065\u0072\u0074\u0069\u006e\u0067\u0020\u0046o\u006e\u0074\u004d\u0061\u0074\u0072\u0069\u0078\u0020\u0074\u006f\u0020a\u0072\u0072\u0061\u0079"); return nil ,_bfab ;};_ddbaa :=_eea .NewMatrix (_acefb [0],_acefb [1],_acefb [2],_acefb [3],_acefb [4],_acefb [5]);for _ecaf ,_bfbde :=range _gfeed {_gdecg ,_ :=_ddbaa .Transform (_bfbde ,_bfbde );_ccdgf ._efgcd [_cbbdd +_ff .CharCode (_ecaf )]=_gdecg ; };};_ccdgf .Encoding =_dfg .TraceToDirectObject (_cdce .Get ("\u0045\u006e\u0063\u006f\u0064\u0069\u006e\u0067"));_agggf :=_cdce .Get ("\u0054o\u0055\u006e\u0069\u0063\u006f\u0064e");if _agggf !=nil {_ccdgf ._eaaga =_dfg .TraceToDirectObject (_agggf ); _cedf ,_cbade :=_defa (_ccdgf ._eaaga ,&_ccdgf .fontCommon );if _cbade !=nil {return nil ,_cbade ;};_ccdgf ._bgdcbc =_cedf ;};if _cgaf :=_ccdgf ._bgdcbc ;_cgaf !=nil {_ccdgf ._bafca =_ff .NewCMapEncoder ("",nil ,_cgaf );}else {_ccdgf ._bafca =_ff .NewPdfDocEncoder (); };return _ccdgf ,nil ;};func _defa (_cdgfa _dfg .PdfObject ,_gbdebe *fontCommon )(*_efg .CMap ,error ){_aacc ,_dfcfe :=_dfg .GetStream (_cdgfa );if !_dfcfe {_egb .Log .Debug ("\u0045\u0052\u0052\u004f\u0052:\u0020\u0074\u006f\u0055\u006e\u0069\u0063\u006f\u0064\u0065\u0054\u006f\u0043m\u0061\u0070\u003a\u0020\u004e\u006f\u0074\u0020\u0061\u0020\u0073\u0074\u0072\u0065\u0061\u006d\u0020\u0028\u0025\u0054\u0029",_cdgfa ); return nil ,_dfg .ErrTypeError ;};_bdcd ,_dbeac :=_dfg .DecodeStream (_aacc );if _dbeac !=nil {return nil ,_dbeac ;};_edgae ,_dbeac :=_efg .LoadCmapFromData (_bdcd ,!_gbdebe .isCIDFont ());if _dbeac !=nil {_egb .Log .Debug ("\u0045\u0052R\u004f\u0052\u003a\u0020\u004f\u0062\u006a\u0065\u0063\u0074\u004e\u0075\u006d\u0062\u0065\u0072\u003d\u0025\u0064\u0020\u0065\u0072r=\u0025\u0076",_aacc .ObjectNumber ,_dbeac ); };return _edgae ,_dbeac ;}; // PdfAnnotationPolygon represents Polygon annotations. // (Section 12.5.6.9). type PdfAnnotationPolygon struct{*PdfAnnotation ;*PdfAnnotationMarkup ;Vertices _dfg .PdfObject ;LE _dfg .PdfObject ;BS _dfg .PdfObject ;IC _dfg .PdfObject ;BE _dfg .PdfObject ;IT _dfg .PdfObject ;Measure _dfg .PdfObject ;}; // ToPdfObject implements interface PdfModel. func (_cfd *PdfActionGoTo )ToPdfObject ()_dfg .PdfObject {_cfd .PdfAction .ToPdfObject ();_fb :=_cfd ._fe ;_cae :=_fb .PdfObject .(*_dfg .PdfObjectDictionary );_cae .SetIfNotNil ("\u0053",_dfg .MakeName (string (ActionTypeGoTo )));_cae .SetIfNotNil ("\u0044",_cfd .D ); return _fb ;}; // GetRuneMetrics returns the character metrics for the specified rune. // A bool flag is returned to indicate whether or not the entry was found. func (_edded pdfFontType3 )GetRuneMetrics (r rune )(_bf .CharMetrics ,bool ){_babdf :=_edded .Encoder ();if _babdf ==nil {_egb .Log .Debug ("\u004e\u006f\u0020en\u0063\u006f\u0064\u0065\u0072\u0020\u0066\u006f\u0072\u0020\u0066\u006f\u006e\u0074\u0073\u003d\u0025\u0073",_edded ); return _bf .CharMetrics {},false ;};_fdag ,_cdae :=_babdf .RuneToCharcode (r );if !_cdae {if r !=' '{_egb .Log .Trace ("\u004e\u006f\u0020c\u0068\u0061\u0072\u0063o\u0064\u0065\u0020\u0066\u006f\u0072\u0020r\u0075\u006e\u0065\u003d\u0025\u0076\u0020\u0066\u006f\u006e\u0074\u003d\u0025\u0073",r ,_edded ); };return _bf .CharMetrics {},false ;};_dabf ,_cgef :=_edded .GetCharMetrics (_fdag );return _dabf ,_cgef ;}; // Write writes the Appender output to io.Writer. // It can only be called once and further invocations will result in an error. func (_cfca *PdfAppender )Write (w _edg .Writer )error {if _cfca ._cfag {return _bd .New ("\u0061\u0070\u0070\u0065\u006e\u0064\u0065\u0072\u0020\u0077\u0072\u0069\u0074e\u0020\u0063\u0061\u006e\u0020\u006fn\u006c\u0079\u0020\u0062\u0065\u0020\u0069\u006e\u0076\u006f\u006b\u0065\u0064 \u006f\u006e\u0063\u0065"); };_bead :=NewPdfWriter ();_bedad ,_gbde :=_dfg .GetDict (_bead ._gdcdb );if !_gbde {return _bd .New ("\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0050\u0061g\u0065\u0073\u0020\u006f\u0062\u006a\u0020(\u006e\u006f\u0074\u0020\u0061\u0020\u0064\u0069\u0063\u0074\u0029"); };_becdf ,_gbde :=_bedad .Get ("\u004b\u0069\u0064\u0073").(*_dfg .PdfObjectArray );if !_gbde {return _bd .New ("\u0069\u006ev\u0061\u006c\u0069\u0064 \u0050\u0061g\u0065\u0073\u0020\u004b\u0069\u0064\u0073\u0020o\u0062\u006a\u0020\u0028\u006e\u006f\u0074\u0020\u0061\u006e\u0020\u0061r\u0072\u0061\u0079\u0029"); };_bga ,_gbde :=_bedad .Get ("\u0043\u006f\u0075n\u0074").(*_dfg .PdfObjectInteger );if !_gbde {return _bd .New ("\u0069\u006e\u0076\u0061\u006c\u0069\u0064 \u0050\u0061\u0067e\u0073\u0020\u0043\u006fu\u006e\u0074\u0020\u006f\u0062\u006a\u0065\u0063\u0074\u0020\u0028\u006e\u006f\u0074\u0020\u0061\u006e\u0020\u0069\u006e\u0074\u0065\u0067\u0065\u0072\u0029"); };_cccg :=_cfca ._eege ._agbcd ;_fdce :=_cccg .GetTrailer ();if _fdce ==nil {return _bd .New ("\u006di\u0073s\u0069\u006e\u0067\u0020\u0074\u0072\u0061\u0069\u006c\u0065\u0072");};_bgec ,_gbde :=_dfg .GetIndirect (_fdce .Get ("\u0052\u006f\u006f\u0074")); if !_gbde {return _bd .New ("c\u0061\u0074\u0061\u006c\u006f\u0067 \u0063\u006f\u006e\u0074\u0061\u0069\u006e\u0065\u0072 \u006e\u006f\u0074 \u0066o\u0075\u006e\u0064");};_gbdf ,_gbde :=_dfg .GetDict (_bgec );if !_gbde {_egb .Log .Debug ("\u0045\u0052R\u004f\u0052\u003a\u0020\u004d\u0069\u0073\u0073\u0069\u006e\u0067\u0020\u0063\u0061\u0074\u0061\u006c\u006f\u0067\u003a\u0020\u0028\u0072\u006f\u006f\u0074\u0020\u0025\u0071\u0029\u0020\u0028\u0074\u0072\u0061\u0069\u006c\u0065\u0072\u0020\u0025\u0073\u0029",_bgec ,*_fdce ); return _bd .New ("\u006di\u0073s\u0069\u006e\u0067\u0020\u0063\u0061\u0074\u0061\u006c\u006f\u0067");};_gddb :=false ;for _ ,_dbgf :=range _cfca ._eege .AcroForm .signatureFields (){if _dbgf .Lock !=nil {_gddb =true ;break ;};};if _gddb {_bead ._cbfagb =_bgec ; };for _ ,_gabaf :=range _gbdf .Keys (){if _bead ._acgcc .Get (_gabaf )==nil {_bffg :=_gbdf .Get (_gabaf );_bead ._acgcc .Set (_gabaf ,_bffg );};};if _cfca ._ebfe !=nil {if _cfca ._ebfe ._ecfa {if _cga :=_dfg .TraceToDirectObject (_cfca ._ebfe .ToPdfObject ()); !_dfg .IsNullObject (_cga ){_bead ._acgcc .Set ("\u0041\u0063\u0072\u006f\u0046\u006f\u0072\u006d",_cga );_cfca .updateObjectsDeep (_cga ,nil );}else {_egb .Log .Debug ("\u0055\u006e\u0061\u0062\u006c\u0065 \u0074\u006f\u0020t\u0072\u0061\u0063e\u0020\u0041\u0063\u0072\u006f\u0046\u006f\u0072\u006d\u0020o\u0062\u006a\u0065\u0063\u0074, \u0066\u0061\u0069\u006c\u0065\u0064\u0020\u0074\u006f\u0020\u0061\u0064\u0064\u0020\u0041\u0063\u0072\u006f\u0046\u006f\u0072\u006d\u002e"); };}else {_bead ._acgcc .Set ("\u0041\u0063\u0072\u006f\u0046\u006f\u0072\u006d",_cfca ._ebfe .ToPdfObject ());_cfca .updateObjectsDeep (_cfca ._ebfe .ToPdfObject (),nil );};};if _cfca ._caagc !=nil {_cfca .updateObjectsDeep (_cfca ._caagc .ToPdfObject (),nil ); _bead ._acgcc .Set ("\u0044\u0053\u0053",_cfca ._caagc .GetContainingPdfObject ());};if _cfca ._bcdg !=nil {_bead ._acgcc .Set ("\u0050\u0065\u0072m\u0073",_cfca ._bcdg .ToPdfObject ());_cfca .updateObjectsDeep (_cfca ._bcdg .ToPdfObject (),nil );};if _bead ._cfbcb .Major < 2{_bead .AddExtension ("\u0045\u0053\u0049\u0043","\u0031\u002e\u0037",5); _bead .AddExtension ("\u0041\u0044\u0042\u0045","\u0031\u002e\u0037",8);};if _cba ,_ggf :=_dfg .GetDict (_fdce .Get ("\u0049\u006e\u0066\u006f"));_ggf {if _bgaa ,_acge :=_dfg .GetDict (_bead ._acace );_acge {for _ ,_bfec :=range _cba .Keys (){if _bgaa .Get (_bfec )==nil {_bgaa .Set (_bfec ,_cba .Get (_bfec )); };};};};if _cfca ._ccf !=nil {_bead ._acace =_dfg .MakeIndirectObject (_cfca ._ccf .ToPdfObject ());};_cfca .updateObjectsDeep (_bead ._acace ,nil );_cfca .updateObjectsDeep (_bead ._cbfagb ,nil );_ggc :=false ;if len (_cfca ._eege .PageList )!=len (_cfca ._egfc ){_ggc =true ; }else {for _gcaf :=range _cfca ._eege .PageList {switch {case _cfca ._egfc [_gcaf ]==_cfca ._eege .PageList [_gcaf ]:case _cfca ._egfc [_gcaf ]==_cfca .Reader .PageList [_gcaf ]:default:_ggc =true ;};if _ggc {break ;};};};if _ggc {_cfca .updateObjectsDeep (_bead ._gdcdb ,nil ); }else {_cfca ._gadd [_bead ._gdcdb ]=struct{}{};};_bead ._gdcdb .ObjectNumber =_cfca .Reader ._ffdb .ObjectNumber ;_cfca ._effe [_bead ._gdcdb ]=_cfca .Reader ._ffdb .ObjectNumber ;_dcfc :=[]_dfg .PdfObjectName {"\u0052e\u0073\u006f\u0075\u0072\u0063\u0065s","\u004d\u0065\u0064\u0069\u0061\u0042\u006f\u0078","\u0043r\u006f\u0070\u0042\u006f\u0078","\u0052\u006f\u0074\u0061\u0074\u0065"}; for _ ,_cdbf :=range _cfca ._egfc {_cagg :=_cdbf .ToPdfObject ();*_bga =*_bga +1;if _caga ,_gbaac :=_cagg .(*_dfg .PdfIndirectObject );_gbaac &&_caga .GetParser ()==_cfca ._eege ._agbcd {_becdf .Append (&_caga .PdfObjectReference );continue ;};if _eabf ,_ggca :=_dfg .GetDict (_cagg ); _ggca {_aad ,_dceg :=_eabf .Get ("\u0050\u0061\u0072\u0065\u006e\u0074").(*_dfg .PdfIndirectObject );for _dceg {_egb .Log .Trace ("\u0050a\u0067e\u0020\u0050\u0061\u0072\u0065\u006e\u0074\u003a\u0020\u0025\u0054",_aad );_bdc ,_faef :=_aad .PdfObject .(*_dfg .PdfObjectDictionary ); if !_faef {return _bd .New ("i\u006e\u0076\u0061\u006cid\u0020P\u0061\u0072\u0065\u006e\u0074 \u006f\u0062\u006a\u0065\u0063\u0074");};for _ ,_gdac :=range _dcfc {_egb .Log .Trace ("\u0046\u0069\u0065\u006c\u0064\u0020\u0025\u0073",_gdac );if _edgdg :=_eabf .Get (_gdac ); _edgdg !=nil {_egb .Log .Trace ("\u002d \u0070a\u0067\u0065\u0020\u0068\u0061s\u0020\u0061l\u0072\u0065\u0061\u0064\u0079");if len (_cdbf ._fagbf .Keys ())> 0&&!_ggc {_fdff :=_cdbf ._fagbf ;if _dbca :=_fdff .Get (_gdac );_dbca !=nil {if _edgdg !=_dbca {_egb .Log .Trace ("\u0049\u006e\u0068\u0065\u0072\u0069\u0074\u0069\u006e\u0067\u0020\u006f\u0072\u0069\u0067i\u006ea\u006c\u0020\u0066\u0069\u0065\u006c\u0064\u0020\u0025\u0073\u002c\u0020\u0025\u0054",_gdac ,_dbca ); _eabf .Set (_gdac ,_dbca );};};};continue ;};if _cfde :=_bdc .Get (_gdac );_cfde !=nil {_egb .Log .Trace ("\u0049\u006e\u0068\u0065ri\u0074\u0069\u006e\u0067\u0020\u0066\u0069\u0065\u006c\u0064\u0020\u0025\u0073",_gdac );_eabf .Set (_gdac ,_cfde );};}; _aad ,_dceg =_bdc .Get ("\u0050\u0061\u0072\u0065\u006e\u0074").(*_dfg .PdfIndirectObject );_egb .Log .Trace ("\u004ee\u0078t\u0020\u0070\u0061\u0072\u0065\u006e\u0074\u003a\u0020\u0025\u0054",_bdc .Get ("\u0050\u0061\u0072\u0065\u006e\u0074"));};if _ggc {_eabf .Set ("\u0050\u0061\u0072\u0065\u006e\u0074",_bead ._gdcdb ); };};_cfca .updateObjectsDeep (_cagg ,nil );_becdf .Append (_cagg );};if _ ,_gfbf :=_cfca ._ggag .Seek (0,_edg .SeekStart );_gfbf !=nil {return _gfbf ;};_eebfc :=make (map[SignatureHandler ]_edg .Writer );_dgde :=_dfg .MakeArray ();for _ ,_gage :=range _cfca ._fbfcg {if _deab ,_gdece :=_dfg .GetIndirect (_gage ); _gdece {if _gacg ,_cdaf :=_deab .PdfObject .(*pdfSignDictionary );_cdaf {_fdcd :=*_gacg ._adfa ;var _abag error ;_eebfc [_fdcd ],_abag =_fdcd .NewDigest (_gacg ._abfbg );if _abag !=nil {return _abag ;};_dgde .Append (_dfg .MakeInteger (0xfffff),_dfg .MakeInteger (0xfffff)); };};};if _dgde .Len ()> 0{_dgde .Append (_dfg .MakeInteger (0xfffff),_dfg .MakeInteger (0xfffff));};for _ ,_gdda :=range _cfca ._fbfcg {if _cddfc ,_aacab :=_dfg .GetIndirect (_gdda );_aacab {if _ced ,_eegf :=_cddfc .PdfObject .(*pdfSignDictionary );_eegf {_ced .Set ("\u0042y\u0074\u0065\u0052\u0061\u006e\u0067e",_dgde ); };};};_cbdgb :=len (_eebfc )> 0;var _febad _edg .Reader =_cfca ._ggag ;if _cbdgb {_bfgd :=make ([]_edg .Writer ,0,len (_eebfc ));for _ ,_cdad :=range _eebfc {_bfgd =append (_bfgd ,_cdad );};_febad =_edg .TeeReader (_cfca ._ggag ,_edg .MultiWriter (_bfgd ...)); };_aaed ,_egbf :=_edg .Copy (w ,_febad );if _egbf !=nil {return _egbf ;};if len (_cfca ._fbfcg )==0{return nil ;};_bead ._fcacd =_aaed ;_bead .ObjNumOffset =_cfca ._edab ;_bead ._cddgg =true ;_bead ._accfg =_cfca ._bbcb ;_bead ._baeag =_cfca ._gcf ;_bead ._fgedaa =_cfca ._bgdc ; _bead ._cfbcb =_cfca ._eege .PdfVersion ();_bead ._dacf =_cfca ._effe ;_bead ._gbdfc =_cfca ._cggd .GetCrypter ();_bead ._bbbecb =_cfca ._cggd .GetEncryptObj ();_ddcc :=_cfca ._cggd .GetXrefType ();if _ddcc !=nil {_gebf :=*_ddcc ==_dfg .XrefTypeObjectStream ; _bead ._ecbad =&_gebf ;};_bead ._bgbee =map[_dfg .PdfObject ]struct{}{};_bead ._abcef =[]_dfg .PdfObject {};for _ ,_bbaff :=range _cfca ._fbfcg {if _ ,_daag :=_cfca ._gadd [_bbaff ];_daag {continue ;};_bead .addObject (_bbaff );};_ebag :=w ;if _cbdgb {_ebag =_cca .NewBuffer (nil ); };if _cfca ._bfb !=""&&_bead ._gbdfc ==nil {_bead .Encrypt ([]byte (_cfca ._bfb ),[]byte (_cfca ._bfb ),_cfca ._gefb );};if _ffga :=_fdce .Get ("\u0049\u0044");_ffga !=nil {if _bdff ,_fbge :=_dfg .GetArray (_ffga );_fbge {_bead ._beccf =_bdff ;};};if _ddcb :=_bead .Write (_ebag ); _ddcb !=nil {return _ddcb ;};if _cbdgb {_fddb :=_ebag .(*_cca .Buffer ).Bytes ();_cbbcd :=_dfg .MakeArray ();var _fgcf []*pdfSignDictionary ;var _gccc int64 ;for _ ,_bdeb :=range _bead ._abcef {if _gdgb ,_cbga :=_dfg .GetIndirect (_bdeb );_cbga {if _facbb ,_bdgf :=_gdgb .PdfObject .(*pdfSignDictionary ); _bdgf {_fgcf =append (_fgcf ,_facbb );_afde :=_facbb ._dgead +int64 (_facbb ._ffbffd );_cbbcd .Append (_dfg .MakeInteger (_gccc ),_dfg .MakeInteger (_afde -_gccc ));_gccc =_facbb ._dgead +int64 (_facbb ._ceffa );};};};_cbbcd .Append (_dfg .MakeInteger (_gccc ),_dfg .MakeInteger (_aaed +int64 (len (_fddb ))-_gccc )); _adfe :=_cbbcd .Write ();for _ ,_aggg :=range _fgcf {_aecg :=int (_aggg ._dgead -_aaed );for _aefb :=_aggg ._fdfed ;_aefb < _aggg ._gcdg ;_aefb ++{_fddb [_aecg +_aefb ]=' ';};_afgf :=_fddb [_aecg +_aggg ._fdfed :_aecg +_aggg ._gcdg ];copy (_afgf ,_adfe ); };var _fgcfd int ;for _ ,_ccgc :=range _fgcf {_aeaf :=int (_ccgc ._dgead -_aaed );_bgf :=_fddb [_fgcfd :_aeaf +_ccgc ._ffbffd ];_afab :=*_ccgc ._adfa ;_eebfc [_afab ].Write (_bgf );_fgcfd =_aeaf +_ccgc ._ceffa ;};for _ ,_abeg :=range _fgcf {_bcga :=_fddb [_fgcfd :]; _bfadf :=*_abeg ._adfa ;_eebfc [_bfadf ].Write (_bcga );};for _ ,_ceeb :=range _fgcf {_acbdd :=int (_ceeb ._dgead -_aaed );_dbdb :=*_ceeb ._adfa ;_gceb :=_eebfc [_dbdb ];if _abaa :=_dbdb .Sign (_ceeb ._abfbg ,_gceb );_abaa !=nil {return _abaa ;};_ceeb ._abfbg .ByteRange =_cbbcd ; _gddac :=_ceeb ._abfbg .Contents .Write ();for _befd :=_ceeb ._fdfed ;_befd < _ceeb ._gcdg ;_befd ++{_fddb [_acbdd +_befd ]=' ';};for _bebe :=_ceeb ._ffbffd ;_bebe < _ceeb ._ceffa ;_bebe ++{_fddb [_acbdd +_bebe ]=' ';};_fde :=_fddb [_acbdd +_ceeb ._fdfed :_acbdd +_ceeb ._gcdg ]; copy (_fde ,_adfe );_fde =_fddb [_acbdd +_ceeb ._ffbffd :_acbdd +_ceeb ._ceffa ];copy (_fde ,_gddac );};_ggeg :=_cca .NewBuffer (_fddb );_ ,_egbf =_edg .Copy (w ,_ggeg );if _egbf !=nil {return _egbf ;};};_cfca ._cfag =true ;return nil ;};func (_bac *PdfReader )newPdfActionGotoEFromDict (_ead *_dfg .PdfObjectDictionary )(*PdfActionGoToE ,error ){_ebde ,_cgf :=_dbga (_ead .Get ("\u0046")); if _cgf !=nil {return nil ,_cgf ;};return &PdfActionGoToE {D :_ead .Get ("\u0044"),NewWindow :_ead .Get ("\u004ee\u0077\u0057\u0069\u006e\u0064\u006fw"),T :_ead .Get ("\u0054"),F :_ebde },nil ;}; // NewPdfAnnotationMovie returns a new movie annotation. func NewPdfAnnotationMovie ()*PdfAnnotationMovie {_dgb :=NewPdfAnnotation ();_gdcd :=&PdfAnnotationMovie {};_gdcd .PdfAnnotation =_dgb ;_dgb .SetContext (_gdcd );return _gdcd ;}; // NewEmbeddedFile constructs a new EmbeddedFile object from supplied file. // The file type of the file would be detected automatically. func NewEmbeddedFile (path string )(*EmbeddedFile ,error ){_bdfgf ,_bcab :=_ga .ReadFile (path );if _bcab !=nil {return nil ,_bcab ;};_ffcd ,_bcab :=_ccaf .Match (_bdfgf );if _bcab !=nil {_egb .Log .Debug ("\u0046\u0061\u0069\u006c\u0065\u0064\u0020\u0074\u006f\u0020d\u0065\u0074\u0065\u0063\u0074\u0020\u0066i\u006c\u0065\u0020\u0074\u0079\u0070\u0065\u003a\u0020\u0025\u0076",_bcab ); };_fbedb :=_cd .Sum (_bdfgf );_fafc :=&EmbeddedFile {Name :_ac .Base (path ),Content :_bdfgf ,FileType :_ffcd .MIME .Value ,Hash :_bc .EncodeToString (_fbedb [:])};return _fafc ,nil ;};var (ErrRequiredAttributeMissing =_bd .New ("\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0064\u0020\u0061\u0074t\u0072\u0069\u0062\u0075\u0074\u0065\u0020\u006d\u0069\u0073s\u0069\u006e\u0067"); ErrInvalidAttribute =_bd .New ("\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0061\u0074\u0074\u0072i\u0062\u0075\u0074\u0065");ErrTypeCheck =_bd .New ("\u0074\u0079\u0070\u0065\u0020\u0063\u0068\u0065\u0063\u006b");_ceeeb =_bd .New ("\u0072\u0061\u006e\u0067\u0065\u0020\u0063\u0068\u0065\u0063\u006b\u0020e\u0072\u0072\u006f\u0072"); ErrEncrypted =_bd .New ("\u0066\u0069\u006c\u0065\u0020\u006e\u0065\u0065\u0064\u0073\u0020\u0074\u006f\u0020\u0062e\u0020d\u0065\u0063\u0072\u0079\u0070\u0074\u0065\u0064\u0020\u0066\u0069\u0072\u0073\u0074");ErrNoFont =_bd .New ("\u0066\u006fn\u0074\u0020\u006eo\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064"); ErrFontNotSupported =_gff .Errorf ("u\u006e\u0073\u0075\u0070po\u0072t\u0065\u0064\u0020\u0066\u006fn\u0074\u0020\u0028\u0025\u0077\u0029",_dfg .ErrNotSupported );ErrType1CFontNotSupported =_gff .Errorf ("\u0054y\u0070\u00651\u0043\u0020\u0066o\u006e\u0074\u0073\u0020\u0061\u0072\u0065 \u006e\u006f\u0074\u0020\u0063\u0075r\u0072\u0065\u006e\u0074\u006c\u0079\u0020\u0073\u0075\u0070\u0070o\u0072\u0074\u0065\u0064\u0020\u0028\u0025\u0077\u0029",_dfg .ErrNotSupported ); ErrType3FontNotSupported =_gff .Errorf ("\u0054y\u0070\u00653\u0020\u0066\u006f\u006et\u0073\u0020\u0061r\u0065\u0020\u006e\u006f\u0074\u0020\u0063\u0075\u0072re\u006e\u0074\u006cy\u0020\u0073u\u0070\u0070\u006f\u0072\u0074\u0065d\u0020\u0028%\u0077\u0029",_dfg .ErrNotSupported ); ErrTTCmapNotSupported =_gff .Errorf ("\u0075\u006es\u0075\u0070\u0070\u006fr\u0074\u0065d\u0020\u0054\u0072\u0075\u0065\u0054\u0079\u0070e\u0020\u0063\u006d\u0061\u0070\u0020\u0066\u006f\u0072\u006d\u0061\u0074 \u0028\u0025\u0077\u0029",_dfg .ErrNotSupported ); ErrSignNotEnoughSpace =_gff .Errorf ("\u0069\u006e\u0073\u0075\u0066\u0066\u0069c\u0069\u0065\u006et\u0020\u0073\u0070a\u0063\u0065 \u0061\u006c\u006c\u006f\u0063\u0061t\u0065d \u0066\u006f\u0072\u0020\u0074\u0068\u0065\u0020\u0073\u0069\u0067\u006e\u0061\u0074\u0075\u0072\u0065\u0020\u0063\u006f\u006e\u0074\u0065\u006e\u0074\u0073"); ErrSignNoCertificates =_gff .Errorf ("\u0063\u006ful\u0064\u0020\u006eo\u0074\u0020\u0072\u0065tri\u0065ve\u0020\u0063\u0065\u0072\u0074\u0069\u0066ic\u0061\u0074\u0065\u0020\u0063\u0068\u0061i\u006e");); // PrintPdfObjects is a helper function printing all objects in a given PDF file // It can be useful while debugging. Use os.Stdout as w io.Writer to print to console. func (_cgfb *PdfReader )PrintPdfObjects (w _edg .Writer )error {_abbgg :=_cgfb .GetObjectNums ();_d .Fprintf (w ,"\u0025\u0064 \u0050\u0044\u0046 \u006f\u0062\u006a\u0065\u0063\u0074\u0073\u003a\u000a",len (_abbgg ));for _ ,_cabaa :=range _abbgg {_d .Fprintln (w ,"\u003d\u003d\u003d\u003d=\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d=\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d=\u003d\u003d\u003d\u003d\u003d=\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"); if _egadb :=_cgfb .PrintPdfObject (w ,_cabaa );_egadb !=nil {return _egadb ;};};return nil ;}; // AddChild adds a child object. func (_feaa *KDict )AddChild (kv *KValue ){_feaa ._dcgedc =append (_feaa ._dcgedc ,kv )}; // NewPdfWriter initializes a new PdfWriter. func NewPdfWriter ()PdfWriter {_aedgfe :=PdfWriter {};_aedgfe ._bgbee =map[_dfg .PdfObject ]struct{}{};_aedgfe ._abcef =[]_dfg .PdfObject {};_aedgfe ._fgebdb =map[_dfg .PdfObject ][]*_dfg .PdfObjectDictionary {};_aedgfe ._faeee =map[_dfg .PdfObject ]struct{}{}; _aedgfe ._cfbcb .Major =1;_aedgfe ._cfbcb .Minor =3;_eegab :=_dfg .MakeDict ();_fffad :=[]struct{_becde _dfg .PdfObjectName ;_abgda string ;}{{"\u0050\u0072\u006f\u0064\u0075\u0063\u0065\u0072",_bfbc ()},{"\u0043r\u0065\u0061\u0074\u006f\u0072",_cead ()},{"\u0041\u0075\u0074\u0068\u006f\u0072",_agdbe ()},{"\u0053u\u0062\u006a\u0065\u0063\u0074",_ceeeg ()},{"\u0054\u0069\u0074l\u0065",_gccag ()},{"\u004b\u0065\u0079\u0077\u006f\u0072\u0064\u0073",_afbgd ()}}; for _ ,_abfc :=range _fffad {if _abfc ._abgda !=""{_eegab .Set (_abfc ._becde ,_dfg .MakeString (_abfc ._abgda ));};};if _dgfad :=_cfafa ();!_dgfad .IsZero (){if _fefca ,_ffeba :=NewPdfDateFromTime (_dgfad );_ffeba ==nil {_eegab .Set ("\u0043\u0072\u0065a\u0074\u0069\u006f\u006e\u0044\u0061\u0074\u0065",_fefca .ToPdfObject ()); };};if _gbcbc :=_ceead ();!_gbcbc .IsZero (){if _dcgbf ,_cagec :=NewPdfDateFromTime (_gbcbc );_cagec ==nil {_eegab .Set ("\u004do\u0064\u0044\u0061\u0074\u0065",_dcgbf .ToPdfObject ());};};_ebef :=_dfg .PdfIndirectObject {};_ebef .PdfObject =_eegab ;_aedgfe ._acace =&_ebef ; _aedgfe .addObject (&_ebef );_beecg :=_dfg .PdfIndirectObject {};_aeegg :=_dfg .MakeDict ();_aeegg .Set ("\u0054\u0079\u0070\u0065",_dfg .MakeName ("\u0043a\u0074\u0061\u006c\u006f\u0067"));_beecg .PdfObject =_aeegg ;_aedgfe ._cbfagb =&_beecg ;_aedgfe .addObject (_aedgfe ._cbfagb ); _beeda ,_ggefac :=_bdaaf ("\u0077");if _ggefac !=nil {_egb .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a\u0020\u0025v",_ggefac );};_aedgfe ._afacc =_beeda ;_cgfede :=_dfg .PdfIndirectObject {};_gbecf :=_dfg .MakeDict ();_gbecf .Set ("\u0054\u0079\u0070\u0065",_dfg .MakeName ("\u0050\u0061\u0067e\u0073")); _eggaa :=_dfg .PdfObjectArray {};_gbecf .Set ("\u004b\u0069\u0064\u0073",&_eggaa );_gbecf .Set ("\u0043\u006f\u0075n\u0074",_dfg .MakeInteger (0));_cgfede .PdfObject =_gbecf ;_aedgfe ._gdcdb =&_cgfede ;_aedgfe ._cbcacc =map[_dfg .PdfObject ]struct{}{}; _aedgfe ._cbccc =[]*_dfg .PdfIndirectObject {};_aedgfe .addObject (_aedgfe ._gdcdb );_aeegg .Set ("\u0050\u0061\u0067e\u0073",&_cgfede );_aedgfe ._acgcc =_aeegg ;_egb .Log .Trace ("\u0043\u0061\u0074\u0061\u006c\u006f\u0067\u0020\u0025\u0073",_beecg ); return _aedgfe ;};func (_bcca *PdfReader )newPdfSignatureReferenceFromDict (_bfcdg *_dfg .PdfObjectDictionary )(*PdfSignatureReference ,error ){if _baefd ,_bcbce :=_bcca ._acaed .GetModelFromPrimitive (_bfcdg ).(*PdfSignatureReference );_bcbce {return _baefd ,nil ; };_adffe :=&PdfSignatureReference {_bacgc :_bfcdg ,Data :_bfcdg .Get ("\u0044\u0061\u0074\u0061")};var _bbcad bool ;_adffe .Type ,_ =_dfg .GetName (_bfcdg .Get ("\u0054\u0079\u0070\u0065"));_adffe .TransformMethod ,_bbcad =_dfg .GetName (_bfcdg .Get ("\u0054r\u0061n\u0073\u0066\u006f\u0072\u006d\u004d\u0065\u0074\u0068\u006f\u0064")); if !_bbcad {_egb .Log .Error ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0053\u0069g\u006e\u0061\u0074\u0075\u0072\u0065\u0020\u0052\u0065\u0066\u0065\u0072\u0065\u006e\u0063\u0065\u0020\u0054\u0072\u0061\u006e\u0073\u0066o\u0072\u006dM\u0065\u0074h\u006f\u0064\u0020\u0061\u0074\u0074\u0072\u0069\u0062\u0075\u0074\u0065\u0020in\u0076\u0061\u006c\u0069\u0064\u0020\u006f\u0072\u0020m\u0069\u0073\u0073\u0069\u006e\u0067"); return nil ,ErrInvalidAttribute ;};_adffe .TransformParams ,_ =_dfg .GetDict (_bfcdg .Get ("\u0054r\u0061n\u0073\u0066\u006f\u0072\u006d\u0050\u0061\u0072\u0061\u006d\u0073"));_adffe .DigestMethod ,_ =_dfg .GetName (_bfcdg .Get ("\u0044\u0069\u0067e\u0073\u0074\u004d\u0065\u0074\u0068\u006f\u0064")); return _adffe ,nil ;}; // PdfBorderEffect represents a PDF border effect. type PdfBorderEffect struct{S *BorderEffect ;I *float64 ;};func (_cefeg *DSS )generateHashMap (_dbbgg []*_dfg .PdfObjectStream )(map[string ]*_dfg .PdfObjectStream ,error ){_ccbga :=map[string ]*_dfg .PdfObjectStream {};for _ ,_gfgc :=range _dbbgg {_cbfa ,_ggeff :=_dfg .DecodeStream (_gfgc ); if _ggeff !=nil {return nil ,_ggeff ;};_abbfe ,_ggeff :=_fcabf (_cbfa );if _ggeff !=nil {return nil ,_ggeff ;};_ccbga [string (_abbfe )]=_gfgc ;};return _ccbga ,nil ;};var _gefaf =map[string ]struct{}{"\u0046\u0054":{},"\u004b\u0069\u0064\u0073":{},"\u0054":{},"\u0054\u0055":{},"\u0054\u004d":{},"\u0046\u0066":{},"\u0056":{},"\u0044\u0056":{},"\u0041\u0041":{},"\u0044\u0041":{},"\u0051":{},"\u0044\u0053":{},"\u0052\u0056":{}}; // NewReaderOpts generates a default `ReaderOpts` instance. func NewReaderOpts ()*ReaderOpts {return &ReaderOpts {Password :"",LazyLoad :true }}; // GetContainingPdfObject returns the container of the image object (indirect object). func (_fcgde *XObjectImage )GetContainingPdfObject ()_dfg .PdfObject {return _fcgde ._gfgedd }; // ToPdfObject implements interface PdfModel. func (_cegg *PdfAnnotationPopup )ToPdfObject ()_dfg .PdfObject {_cegg .PdfAnnotation .ToPdfObject ();_dfab :=_cegg ._afae ;_faae :=_dfab .PdfObject .(*_dfg .PdfObjectDictionary );_faae .SetIfNotNil ("\u0053u\u0062\u0074\u0079\u0070\u0065",_dfg .MakeName ("\u0050\u006f\u0070u\u0070")); _faae .SetIfNotNil ("\u0050\u0061\u0072\u0065\u006e\u0074",_cegg .Parent );_faae .SetIfNotNil ("\u004f\u0070\u0065\u006e",_cegg .Open );return _dfab ;}; // ToPdfObject implements interface PdfModel. func (_cbb *PdfAnnotationSquiggly )ToPdfObject ()_dfg .PdfObject {_cbb .PdfAnnotation .ToPdfObject ();_ebe :=_cbb ._afae ;_cefa :=_ebe .PdfObject .(*_dfg .PdfObjectDictionary );_cbb .appendToPdfDictionary (_cefa );_cefa .SetIfNotNil ("\u0053u\u0062\u0074\u0079\u0070\u0065",_dfg .MakeName ("\u0053\u0071\u0075\u0069\u0067\u0067\u006c\u0079")); _cefa .SetIfNotNil ("\u0051\u0075\u0061\u0064\u0050\u006f\u0069\u006e\u0074\u0073",_cbb .QuadPoints );return _ebe ;}; // GetAsShadingPattern returns a shading pattern. Check with IsShading() prior to using this. func (_dadddc *PdfPattern )GetAsShadingPattern ()*PdfShadingPattern {return _dadddc ._bfaedb .(*PdfShadingPattern );}; // SetLocation sets the `Location` field of the signature. func (_fdfdb *PdfSignature )SetLocation (location string ){_fdfdb .Location =_dfg .MakeEncodedString (location ,true );}; // ToPdfObject returns a stream object. func (_egedg *XObjectImage )ToPdfObject ()_dfg .PdfObject {_dbdgff :=_egedg ._gfgedd ;if _egedg ._fbegd {return _dbdgff ;};_acafa :=_dbdgff .PdfObjectDictionary ;if _egedg .Filter !=nil {_acafa =_egedg .Filter .MakeStreamDict ();_dbdgff .PdfObjectDictionary =_acafa ; };_acafa .Set ("\u0054\u0079\u0070\u0065",_dfg .MakeName ("\u0058O\u0062\u006a\u0065\u0063\u0074"));_acafa .Set ("\u0053u\u0062\u0074\u0079\u0070\u0065",_dfg .MakeName ("\u0049\u006d\u0061g\u0065"));_acafa .Set ("\u0057\u0069\u0064t\u0068",_dfg .MakeInteger (*(_egedg .Width ))); _acafa .Set ("\u0048\u0065\u0069\u0067\u0068\u0074",_dfg .MakeInteger (*(_egedg .Height )));if _egedg .BitsPerComponent !=nil {_acafa .Set ("\u0042\u0069t\u0073\u0050\u0065r\u0043\u006f\u006d\u0070\u006f\u006e\u0065\u006e\u0074",_dfg .MakeInteger (*(_egedg .BitsPerComponent ))); };if _egedg .ColorSpace !=nil {_acafa .SetIfNotNil ("\u0043\u006f\u006c\u006f\u0072\u0053\u0070\u0061\u0063\u0065",_egedg .ColorSpace .ToPdfObject ());};_acafa .SetIfNotNil ("\u0049\u006e\u0074\u0065\u006e\u0074",_egedg .Intent );_acafa .SetIfNotNil ("\u0049m\u0061\u0067\u0065\u004d\u0061\u0073k",_egedg .ImageMask ); _acafa .SetIfNotNil ("\u004d\u0061\u0073\u006b",_egedg .Mask );_baafc :=_acafa .Get ("\u0044\u0065\u0063\u006f\u0064\u0065")!=nil ;if _egedg .Decode ==nil &&_baafc {_acafa .Remove ("\u0044\u0065\u0063\u006f\u0064\u0065");}else if _egedg .Decode !=nil {_acafa .Set ("\u0044\u0065\u0063\u006f\u0064\u0065",_egedg .Decode ); };_acafa .SetIfNotNil ("I\u006e\u0074\u0065\u0072\u0070\u006f\u006c\u0061\u0074\u0065",_egedg .Interpolate );_acafa .SetIfNotNil ("\u0041\u006c\u0074e\u0072\u006e\u0061\u0074\u0069\u0076\u0065\u0073",_egedg .Alternatives );_acafa .SetIfNotNil ("\u0053\u004d\u0061s\u006b",_egedg .SMask ); _acafa .SetIfNotNil ("S\u004d\u0061\u0073\u006b\u0049\u006e\u0044\u0061\u0074\u0061",_egedg .SMaskInData );_acafa .SetIfNotNil ("\u004d\u0061\u0074t\u0065",_egedg .Matte );_acafa .SetIfNotNil ("\u004e\u0061\u006d\u0065",_egedg .Name );_acafa .SetIfNotNil ("\u0053\u0074\u0072u\u0063\u0074\u0050\u0061\u0072\u0065\u006e\u0074",_egedg .StructParent ); _acafa .SetIfNotNil ("\u0049\u0044",_egedg .ID );_acafa .SetIfNotNil ("\u004f\u0050\u0049",_egedg .OPI );_acafa .SetIfNotNil ("\u004d\u0065\u0074\u0061\u0064\u0061\u0074\u0061",_egedg .Metadata );_acafa .SetIfNotNil ("\u004f\u0043",_egedg .OC );_acafa .Set ("\u004c\u0065\u006e\u0067\u0074\u0068",_dfg .MakeInteger (int64 (len (_egedg .Stream )))); _dbdgff .Stream =_egedg .Stream ;_egedg ._fbegd =true ;return _dbdgff ;}; // GetCatalogMarkInfo gets catalog MarkInfo object. func (_abcf *PdfReader )GetCatalogMarkInfo ()(_dfg .PdfObject ,bool ){if _abcf ._fbfgb ==nil {return nil ,false ;};_cffd :=_abcf ._fbfgb .Get ("\u004d\u0061\u0072\u006b\u0049\u006e\u0066\u006f");return _cffd ,_cffd !=nil ;}; // ImageToGray returns a new grayscale image based on the passed in RGB image. func (_dega *PdfColorspaceDeviceRGB )ImageToGray (img Image )(Image ,error ){if img .ColorComponents !=3{return img ,_bd .New ("\u0070\u0072\u006f\u0076\u0069\u0064e\u0064\u0020\u0069\u006d\u0061\u0067\u0065\u0020\u0069\u0073\u0020\u006e\u006ft\u0020\u0061\u0020\u0044\u0065\u0076\u0069c\u0065\u0052\u0047\u0042"); };_cfed ,_fbggf :=_ef .NewImage (int (img .Width ),int (img .Height ),int (img .BitsPerComponent ),img .ColorComponents ,img .Data ,img ._baeef ,img ._begcc );if _fbggf !=nil {return img ,_fbggf ;};_gfaf ,_fbggf :=_ef .GrayConverter .Convert (_cfed );if _fbggf !=nil {return img ,_fbggf ; };return _deba (_gfaf .Base ()),nil ;}; // ToPdfObject converts the pdfFontSimple to its PDF representation for outputting. func (_fcccg *pdfFontSimple )ToPdfObject ()_dfg .PdfObject {if _fcccg ._fdcbb ==nil {_fcccg ._fdcbb =&_dfg .PdfIndirectObject {};};_acdg :=_fcccg .baseFields ().asPdfObjectDictionary ("");_fcccg ._fdcbb .PdfObject =_acdg ;if _fcccg .FirstChar !=nil {_acdg .Set ("\u0046i\u0072\u0073\u0074\u0043\u0068\u0061r",_fcccg .FirstChar ); };if _fcccg .LastChar !=nil {_acdg .Set ("\u004c\u0061\u0073\u0074\u0043\u0068\u0061\u0072",_fcccg .LastChar );};if _fcccg .Widths !=nil {_acdg .Set ("\u0057\u0069\u0064\u0074\u0068\u0073",_fcccg .Widths );};if _fcccg .Encoding !=nil {_acdg .Set ("\u0045\u006e\u0063\u006f\u0064\u0069\u006e\u0067",_fcccg .Encoding ); }else if _fcccg ._febca !=nil {_aagg :=_fcccg ._febca .ToPdfObject ();if _aagg !=nil {_acdg .Set ("\u0045\u006e\u0063\u006f\u0064\u0069\u006e\u0067",_aagg );};};return _fcccg ._fdcbb ;}; // SetPdfKeywords sets the Keywords attribute of the output PDF. func SetPdfKeywords (keywords string ){_dfbaa .Lock ();defer _dfbaa .Unlock ();_bdbaed =keywords }; // ToPdfObject implements interface PdfModel. func (_dbd *PdfAnnotationLine )ToPdfObject ()_dfg .PdfObject {_dbd .PdfAnnotation .ToPdfObject ();_afafc :=_dbd ._afae ;_gca :=_afafc .PdfObject .(*_dfg .PdfObjectDictionary );_dbd .appendToPdfDictionary (_gca );_gca .SetIfNotNil ("\u0053u\u0062\u0074\u0079\u0070\u0065",_dfg .MakeName ("\u004c\u0069\u006e\u0065")); _gca .SetIfNotNil ("\u004c",_dbd .L );_gca .SetIfNotNil ("\u0042\u0053",_dbd .BS );_gca .SetIfNotNil ("\u004c\u0045",_dbd .LE );_gca .SetIfNotNil ("\u0049\u0043",_dbd .IC );_gca .SetIfNotNil ("\u004c\u004c",_dbd .LL );_gca .SetIfNotNil ("\u004c\u004c\u0045",_dbd .LLE ); _gca .SetIfNotNil ("\u0043\u0061\u0070",_dbd .Cap );_gca .SetIfNotNil ("\u0049\u0054",_dbd .IT );_gca .SetIfNotNil ("\u004c\u004c\u004f",_dbd .LLO );_gca .SetIfNotNil ("\u0043\u0050",_dbd .CP );_gca .SetIfNotNil ("\u004de\u0061\u0073\u0075\u0072\u0065",_dbd .Measure ); _gca .SetIfNotNil ("\u0043\u004f",_dbd .CO );return _afafc ;}; // AddOutlineTree adds outlines to a PDF file. func (_gdeeg *PdfWriter )AddOutlineTree (outlineTree *PdfOutlineTreeNode ){_gdeeg ._fdged =outlineTree }; // ApplyStandard is used to apply changes required on the document to match the rules required by the input standard. // The writer's content would be changed after all the document parts are already established during the Write method. // A good example of the StandardApplier could be a PDF/A Profile (i.e.: pdfa.Profile1A). In such a case PdfWriter would // set up all rules required by that Profile. func (_ccfff *PdfWriter )ApplyStandard (optimizer StandardApplier ){_ccfff ._fbafb =optimizer }; // PdfAppender appends new PDF content to an existing PDF document via incremental updates. type PdfAppender struct{_ggag _edg .ReadSeeker ;_cggd *_dfg .PdfParser ;_eege *PdfReader ;Reader *PdfReader ;_egfc []*PdfPage ;_ebfe *PdfAcroForm ;_caagc *DSS ;_bcdg *Permissions ;_bbcb _dfg .XrefTable ;_gcf int64 ;_edab int ;_fbfcg []_dfg .PdfObject ; _dadd map[_dfg .PdfObject ]struct{};_effe map[_dfg .PdfObject ]int64 ;_gadd map[_dfg .PdfObject ]struct{};_bbf map[_dfg .PdfObject ]struct{};_bgdc int64 ;_cfag bool ;_bfb string ;_gefb *EncryptOptions ;_ccf *PdfInfo ;}; // AnnotFilterFunc represents a PDF annotation filtering function. If the function // returns true, the annotation is kept, otherwise it is discarded. type AnnotFilterFunc func (*PdfAnnotation )bool ;func (_acedc *PdfWriter )copyObjects (){_ffdbb :=make (map[_dfg .PdfObject ]_dfg .PdfObject );_gcede :=make ([]_dfg .PdfObject ,0,len (_acedc ._abcef ));_efdeb :=make (map[_dfg .PdfObject ]struct{},len (_acedc ._abcef )); _bbbgg :=make (map[_dfg .PdfObject ]struct{});for _ ,_adcfe :=range _acedc ._abcef {_geacg :=_acedc .copyObject (_adcfe ,_ffdbb ,_bbbgg ,false );if _ ,_aabcb :=_bbbgg [_adcfe ];_aabcb {continue ;};_gcede =append (_gcede ,_geacg );_efdeb [_geacg ]=struct{}{}; };_acedc ._abcef =_gcede ;_acedc ._bgbee =_efdeb ;_acedc ._acace =_acedc .copyObject (_acedc ._acace ,_ffdbb ,nil ,false ).(*_dfg .PdfIndirectObject );_acedc ._cbfagb =_acedc .copyObject (_acedc ._cbfagb ,_ffdbb ,nil ,false ).(*_dfg .PdfIndirectObject ); if _acedc ._bbbecb !=nil {_acedc ._bbbecb =_acedc .copyObject (_acedc ._bbbecb ,_ffdbb ,nil ,false ).(*_dfg .PdfIndirectObject );};if _acedc ._cddgg {_becgc :=make (map[_dfg .PdfObject ]int64 );for _cbabf ,_fcbcf :=range _acedc ._dacf {if _fcefe ,_acgccb :=_ffdbb [_cbabf ]; _acgccb {_becgc [_fcefe ]=_fcbcf ;}else {_egb .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020a\u0070\u0070\u0065n\u0064\u0020\u006d\u006fd\u0065\u0020\u002d\u0020\u006f\u0062\u006a\u0065\u0063\u0074\u0020\u0063\u006f\u0070\u0079\u0020\u006e\u006f\u0074\u0020\u0069\u006e\u0020\u006d\u0061\u0070"); };};_acedc ._dacf =_becgc ;};}; // NewPdfField returns an initialized PdfField. func NewPdfField ()*PdfField {return &PdfField {_caaa :_dfg .MakeIndirectObject (_dfg .MakeDict ())}}; // ToPdfObject implements interface PdfModel. // Note: Call the sub-annotation's ToPdfObject to set both the generic and non-generic information. func (_gdaa *PdfAnnotation )ToPdfObject ()_dfg .PdfObject {_cegc :=_gdaa ._afae ;_efbdg :=_cegc .PdfObject .(*_dfg .PdfObjectDictionary );_efbdg .Clear ();_efbdg .Set ("\u0054\u0079\u0070\u0065",_dfg .MakeName ("\u0041\u006e\u006eo\u0074"));_efbdg .SetIfNotNil ("\u0052\u0065\u0063\u0074",_gdaa .Rect ); _efbdg .SetIfNotNil ("\u0043\u006f\u006e\u0074\u0065\u006e\u0074\u0073",_gdaa .Contents );_efbdg .SetIfNotNil ("\u0050",_gdaa .P );_efbdg .SetIfNotNil ("\u004e\u004d",_gdaa .NM );_efbdg .SetIfNotNil ("\u004d",_gdaa .M );_efbdg .SetIfNotNil ("\u0046",_gdaa .F ); _efbdg .SetIfNotNil ("\u0041\u0050",_gdaa .AP );_efbdg .SetIfNotNil ("\u0041\u0053",_gdaa .AS );_efbdg .SetIfNotNil ("\u0042\u006f\u0072\u0064\u0065\u0072",_gdaa .Border );_efbdg .SetIfNotNil ("\u0043",_gdaa .C );_efbdg .SetIfNotNil ("\u0053\u0074\u0072u\u0063\u0074\u0050\u0061\u0072\u0065\u006e\u0074",_gdaa .StructParent ); _efbdg .SetIfNotNil ("\u004f\u0043",_gdaa .OC );return _cegc ;}; // NewPdfAnnotationInk returns a new ink annotation. func NewPdfAnnotationInk ()*PdfAnnotationInk {_dba :=NewPdfAnnotation ();_eecc :=&PdfAnnotationInk {};_eecc .PdfAnnotation =_dba ;_eecc .PdfAnnotationMarkup =&PdfAnnotationMarkup {};_dba .SetContext (_eecc );return _eecc ;}; // PdfActionURI represents an URI action. type PdfActionURI struct{*PdfAction ;URI _dfg .PdfObject ;IsMap _dfg .PdfObject ;}; // ToPdfObject returns the PDF representation of the shading pattern. func (_fbgcg *PdfShadingPatternType3 )ToPdfObject ()_dfg .PdfObject {_fbgcg .PdfPattern .ToPdfObject ();_dfbb :=_fbgcg .getDict ();if _fbgcg .Shading !=nil {_dfbb .Set ("\u0053h\u0061\u0064\u0069\u006e\u0067",_fbgcg .Shading .ToPdfObject ());};if _fbgcg .Matrix !=nil {_dfbb .Set ("\u004d\u0061\u0074\u0072\u0069\u0078",_fbgcg .Matrix ); };if _fbgcg .ExtGState !=nil {_dfbb .Set ("\u0045x\u0074\u0047\u0053\u0074\u0061\u0074e",_fbgcg .ExtGState );};return _fbgcg ._adcec ;}; // StructureTagInfo represents a tagged structure in a PDF document that used by Drawable components. type StructureTagInfo struct{ // Marked Content ID, if applicable. Mcid int64 ; // Structure type, a name object identifying the nature of the object and its role within the document. StructureType StructureType ; // AnnotObjs is used to reference annotation objects in structure elements AnnotObjs []_dfg .PdfObject ; // Whether the component that has StructureTagInfo is tagged for accessibility. ApplyTag bool ; // Parent K object for the component structure that also act as a parent node. ParentKObj *KDict ; // The page number where the structure element for this component is located. StructPageNumber *int64 ; // K object for the component. ComponentKObj *KDict ;}; // SetXObjectImageByName adds the provided XObjectImage to the page resources. // The added XObjectImage is identified by the specified name. func (_adfee *PdfPageResources )SetXObjectImageByName (keyName _dfg .PdfObjectName ,ximg *XObjectImage )error {_bdfdd :=ximg .ToPdfObject ().(*_dfg .PdfObjectStream );_bgea :=_adfee .SetXObjectByName (keyName ,_bdfdd );return _bgea ;}; // FontDescriptor returns font's PdfFontDescriptor. This may be a builtin descriptor for standard 14 // fonts but must be an explicit descriptor for other fonts. func (_cdafc *PdfFont )FontDescriptor ()*PdfFontDescriptor {if _cdafc .baseFields ()._cebfd !=nil {return _cdafc .baseFields ()._cebfd ;};if _dbdf :=_cdafc ._fab .getFontDescriptor ();_dbdf !=nil {return _dbdf ;};_egb .Log .Error ("\u0041\u006cl \u0066\u006f\u006et\u0073\u0020\u0068\u0061ve \u0061 D\u0065\u0073\u0063\u0072\u0069\u0070\u0074or\u002e\u0020\u0066\u006f\u006e\u0074\u003d%\u0073",_cdafc ); return nil ;};func (_agg *PdfReader )newPdfAnnotationPrinterMarkFromDict (_fdab *_dfg .PdfObjectDictionary )(*PdfAnnotationPrinterMark ,error ){_bgbd :=PdfAnnotationPrinterMark {};_bgbd .MN =_fdab .Get ("\u004d\u004e");return &_bgbd ,nil ;}; // UpdateObject marks `obj` as updated and to be included in the following revision. func (_ceecc *PdfAppender )UpdateObject (obj _dfg .PdfObject ){_ceecc .replaceObject (obj ,obj );if _ ,_gdca :=_ceecc ._dadd [obj ];!_gdca {_ceecc ._fbfcg =append (_ceecc ._fbfcg ,obj );_ceecc ._dadd [obj ]=struct{}{};};}; // GetAnnotations returns the list of page annotations for `page`. If not loaded attempts to load the // annotations, otherwise returns the loaded list. func (_aeccg *PdfPage )GetAnnotations ()([]*PdfAnnotation ,error ){if _aeccg ._dbec !=nil {return _aeccg ._dbec ,nil ;};if _aeccg .Annots ==nil {_aeccg ._dbec =[]*PdfAnnotation {};return nil ,nil ;};if _aeccg ._ggcgd ==nil {_aeccg ._dbec =[]*PdfAnnotation {}; return nil ,nil ;};_aagec ,_cdedd :=_aeccg ._ggcgd .loadAnnotations (_aeccg .Annots );if _cdedd !=nil {return nil ,_cdedd ;};if _aagec ==nil {_aeccg ._dbec =[]*PdfAnnotation {};};_aeccg ._dbec =_aagec ;return _aeccg ._dbec ,nil ;};var (ArtifactAttachPositionTop ArtifactAttachPosition ="\u0054\u006f\u0070"; ArtifactAttachPositionBottom ArtifactAttachPosition ="\u0042\u006f\u0074\u0074\u006f\u006d";ArtifactAttachPositionLeft ArtifactAttachPosition ="\u004c\u0065\u0066\u0074";ArtifactAttachPositionRight ArtifactAttachPosition ="\u0052\u0069\u0067h\u0074";); // WatermarkTextOptions contains options for configuring the text watermark process. type WatermarkTextOptions struct{ // opacity, 0.5 by default. Alpha float64 ; // font size, 20 by default. FontSize float64 ; // it is mandatory to set FontPath to the path of .ttf font file you would like to use for drawing. FontPath string ; // font color, black by default. FontColor _dc .Color ; // rotation angle in degrees, 0 by default. Angle float64 ;}; // ToPdfObject returns the PDF representation of the shading dictionary. func (_aedgf *PdfShadingType4 )ToPdfObject ()_dfg .PdfObject {_aedgf .PdfShading .ToPdfObject ();_gacb ,_gbddc :=_aedgf .getShadingDict ();if _gbddc !=nil {_egb .Log .Error ("\u0055\u006ea\u0062\u006c\u0065\u0020\u0074\u006f\u0020\u0061\u0063\u0063\u0065\u0073\u0073\u0020\u0073\u0068\u0061\u0064\u0069\u006e\u0067\u0020di\u0063\u0074"); return nil ;};if _aedgf .BitsPerCoordinate !=nil {_gacb .Set ("\u0042\u0069\u0074\u0073\u0050\u0065\u0072\u0043\u006f\u006f\u0072\u0064i\u006e\u0061\u0074\u0065",_aedgf .BitsPerCoordinate );};if _aedgf .BitsPerComponent !=nil {_gacb .Set ("\u0042\u0069t\u0073\u0050\u0065r\u0043\u006f\u006d\u0070\u006f\u006e\u0065\u006e\u0074",_aedgf .BitsPerComponent ); };if _aedgf .BitsPerFlag !=nil {_gacb .Set ("B\u0069\u0074\u0073\u0050\u0065\u0072\u0046\u006c\u0061\u0067",_aedgf .BitsPerFlag );};if _aedgf .Decode !=nil {_gacb .Set ("\u0044\u0065\u0063\u006f\u0064\u0065",_aedgf .Decode );};if _aedgf .Function !=nil {if len (_aedgf .Function )==1{_gacb .Set ("\u0046\u0075\u006e\u0063\u0074\u0069\u006f\u006e",_aedgf .Function [0].ToPdfObject ()); }else {_ecaeb :=_dfg .MakeArray ();for _ ,_edgbf :=range _aedgf .Function {_ecaeb .Append (_edgbf .ToPdfObject ());};_gacb .Set ("\u0046\u0075\u006e\u0063\u0074\u0069\u006f\u006e",_ecaeb );};};return _aedgf ._gdfdg ;}; // SetMCID sets the MCID for the KValue. func (_ccfcb *KValue )SetMCID (mcid int ){_ccfcb .Clear ();_ccfcb ._dddge =&mcid }; // SetContentStream updates the content stream with specified encoding. // If encoding is null, will use the xform.Filter object or Raw encoding if not set. func (_gecac *XObjectForm )SetContentStream (content []byte ,encoder _dfg .StreamEncoder )error {_ceedf :=content ;if encoder ==nil {if _gecac .Filter !=nil {encoder =_gecac .Filter ;}else {encoder =_dfg .NewRawEncoder ();};};_abbfg ,_ddbgbc :=encoder .EncodeBytes (_ceedf ); if _ddbgbc !=nil {return _ddbgbc ;};_ceedf =_abbfg ;_gecac .Stream =_ceedf ;_gecac .Filter =encoder ;return nil ;}; // ColorToRGB converts a CMYK32 color to an RGB color. func (_edfb *PdfColorspaceDeviceCMYK )ColorToRGB (color PdfColor )(PdfColor ,error ){_daddd ,_cdag :=color .(*PdfColorDeviceCMYK );if !_cdag {_egb .Log .Debug ("I\u006e\u0070\u0075\u0074\u0020\u0063o\u006c\u006f\u0072\u0020\u006e\u006f\u0074\u0020\u0064e\u0076\u0069\u0063e\u0020c\u006d\u0079\u006b"); return nil ,_bd .New ("\u0074\u0079p\u0065\u0020\u0063h\u0065\u0063\u006b\u0020\u0065\u0072\u0072\u006f\u0072");};_afea :=_daddd .C ();_fegg :=_daddd .M ();_eebd :=_daddd .Y ();_ebec :=_daddd .K ();_afea =_afea *(1-_ebec )+_ebec ;_fegg =_fegg *(1-_ebec )+_ebec ; _eebd =_eebd *(1-_ebec )+_ebec ;_ddcf :=1-_afea ;_agcdg :=1-_fegg ;_cafg :=1-_eebd ;return NewPdfColorDeviceRGB (_ddcf ,_agcdg ,_cafg ),nil ;};func _ffed (_bcbad _dfg .PdfObject )(*_dfg .PdfObjectDictionary ,*fontCommon ,error ){_bcce :=&fontCommon {}; if _dfabf ,_acae :=_bcbad .(*_dfg .PdfIndirectObject );_acae {_bcce ._egggc =_dfabf .ObjectNumber ;};_gegcag ,_abaef :=_dfg .GetDict (_bcbad );if !_abaef {_egb .Log .Debug ("\u0045\u0052\u0052O\u0052\u003a\u0020\u0046\u006f\u006e\u0074\u0020\u006e\u006f\u0074\u0020\u0067\u0069\u0076\u0065\u006e\u0020\u0062\u0079\u0020\u0061\u0020\u0064\u0069\u0063\u0074\u0069\u006fn\u0061\u0072\u0079\u0020\u0028\u0025\u0054\u0029",_bcbad ); return nil ,nil ,ErrFontNotSupported ;};_cded ,_abaef :=_dfg .GetNameVal (_gegcag .Get ("\u0054\u0079\u0070\u0065"));if !_abaef {_egb .Log .Debug ("\u0045\u0052R\u004f\u0052\u003a\u0020\u0046o\u006e\u0074\u0020\u0049\u006ec\u006f\u006d\u0070\u0061\u0074\u0069\u0062\u0069\u006c\u0069\u0074\u0079\u002e\u0020\u0054\u0079\u0070\u0065\u0020\u0028\u0052\u0065\u0071\u0075\u0069\u0072\u0065\u0064\u0029\u0020\u006d\u0069\u0073\u0073\u0069\u006e\u0067"); return nil ,nil ,ErrRequiredAttributeMissing ;};if _cded !="\u0046\u006f\u006e\u0074"{_egb .Log .Debug ("\u0045\u0052\u0052\u004f\u0052:\u0020\u0046\u006f\u006e\u0074\u0020\u0049\u006e\u0063\u006f\u006d\u0070\u0061t\u0069\u0062\u0069\u006c\u0069\u0074\u0079\u002e\u0020\u0054\u0079\u0070\u0065\u003d\u0025\u0071\u002e\u0020\u0053\u0068\u006f\u0075\u006c\u0064\u0020\u0062\u0065\u0020\u0025\u0071.",_cded ,"\u0046\u006f\u006e\u0074"); return nil ,nil ,_dfg .ErrTypeError ;};_bbbce ,_abaef :=_dfg .GetNameVal (_gegcag .Get ("\u0053u\u0062\u0074\u0079\u0070\u0065"));if !_abaef {_egb .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020F\u006f\u006e\u0074 \u0049\u006e\u0063o\u006d\u0070a\u0074\u0069\u0062\u0069\u006c\u0069t\u0079. \u0053\u0075\u0062\u0074\u0079\u0070\u0065\u0020\u0028\u0052\u0065\u0071\u0075\u0069\u0072\u0065\u0064\u0029\u0020\u006d\u0069\u0073\u0073\u0069\u006e\u0067"); return nil ,nil ,ErrRequiredAttributeMissing ;};_bcce ._gdab =_bbbce ;_ggbb ,_abaef :=_dfg .GetNameVal (_gegcag .Get ("\u004e\u0061\u006d\u0065"));if _abaef {_bcce ._gadbd =_ggbb ;};_decfg :=_gegcag .Get ("\u0054o\u0055\u006e\u0069\u0063\u006f\u0064e"); if _decfg !=nil {_bcce ._eaaga =_dfg .TraceToDirectObject (_decfg );_dbgad ,_cacd :=_defa (_bcce ._eaaga ,_bcce );if _cacd !=nil {return _gegcag ,_bcce ,_cacd ;};_bcce ._bgdcbc =_dbgad ;}else if _bbbce =="\u0043\u0049\u0044F\u006f\u006e\u0074\u0054\u0079\u0070\u0065\u0030"||_bbbce =="\u0043\u0049\u0044F\u006f\u006e\u0074\u0054\u0079\u0070\u0065\u0032"{_cdeg ,_abcdf :=_efg .NewCIDSystemInfo (_gegcag .Get ("\u0043\u0049\u0044\u0053\u0079\u0073\u0074\u0065\u006d\u0049\u006e\u0066\u006f")); if _abcdf !=nil {return _gegcag ,_bcce ,_abcdf ;};_ddfec :=_d .Sprintf ("\u0025\u0073\u002d\u0025\u0073\u002d\u0055\u0043\u0053\u0032",_cdeg .Registry ,_cdeg .Ordering );if _efg .IsPredefinedCMap (_ddfec ){_bcce ._bgdcbc ,_abcdf =_efg .LoadPredefinedCMap (_ddfec ); if _abcdf !=nil {_egb .Log .Debug ("\u0057\u0041\u0052\u004e\u003a\u0020\u0063o\u0075\u006c\u0064 \u006e\u006f\u0074\u0020l\u006f\u0061\u0064\u0020\u0070\u0072\u0065\u0064\u0065\u0066\u0069\u006e\u0065\u0064\u0020\u0043\u004d\u0061\u0070\u0020\u0025\u0073\u003a\u0020\u0025\u0076",_ddfec ,_abcdf ); };};};_cgfe :=_gegcag .Get ("\u0046\u006f\u006e\u0074\u0044\u0065\u0073\u0063\u0072i\u0070\u0074\u006f\u0072");if _cgfe !=nil {_efcee ,_adeaa :=_geaf (_cgfe );if _adeaa !=nil {_egb .Log .Debug ("\u0045\u0052\u0052OR\u003a\u0020\u0042\u0061\u0064\u0020\u0066\u006f\u006et\u0020d\u0065s\u0063r\u0069\u0070\u0074\u006f\u0072\u002e\u0020\u0065\u0072\u0072\u003d\u0025\u0076",_adeaa ); return _gegcag ,_bcce ,_adeaa ;};_bcce ._cebfd =_efcee ;};if _bbbce !="\u0054\u0079\u0070e\u0033"{_beac ,_baafg :=_dfg .GetNameVal (_gegcag .Get ("\u0042\u0061\u0073\u0065\u0046\u006f\u006e\u0074"));if !_baafg {_egb .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a \u0046\u006f\u006et\u0020\u0049\u006ec\u006f\u006d\u0070\u0061\u0074\u0069\u0062\u0069\u006c\u0069t\u0079\u002e\u0020\u0042\u0061se\u0046\u006f\u006e\u0074\u0020\u0028\u0052\u0065\u0071\u0075\u0069\u0072\u0065\u0064\u0029\u0020\u006d\u0069\u0073\u0073\u0069\u006e\u0067"); return _gegcag ,_bcce ,ErrRequiredAttributeMissing ;};_bcce ._dbcbc =_beac ;};return _gegcag ,_bcce ,nil ;};func _bgbfb (_acbe _dfg .PdfObject )(string ,error ){_acbe =_dfg .TraceToDirectObject (_acbe );switch _fbac :=_acbe .(type ){case *_dfg .PdfObjectString :return _fbac .Str (),nil ; case *_dfg .PdfObjectStream :_dcgb ,_gbda :=_dfg .DecodeStream (_fbac );if _gbda !=nil {return "",_gbda ;};return string (_dcgb ),nil ;};return "",_d .Errorf ("\u0069\u006e\u0076\u0061\u006ci\u0064\u0020\u0063\u006f\u006e\u0074\u0065\u006e\u0074\u0020\u0073\u0074\u0072e\u0061\u006d\u0020\u006f\u0062\u006a\u0065\u0063\u0074\u0020\u0068\u006f\u006c\u0064\u0065\u0072\u0020\u0028\u0025\u0054\u0029",_acbe ); }; // ToPdfObject returns a PDF object representation of the outline destination. func (_fcbda OutlineDest )ToPdfObject ()_dfg .PdfObject {if (_fcbda .PageObj ==nil &&_fcbda .Page < 0)||_fcbda .Mode ==""{return _dfg .MakeNull ();};_cbdde :=_dfg .MakeArray ();if _fcbda .PageObj !=nil {_cbdde .Append (_fcbda .PageObj );}else {_cbdde .Append (_dfg .MakeInteger (_fcbda .Page )); };_cbdde .Append (_dfg .MakeName (_fcbda .Mode ));switch _fcbda .Mode {case "\u0046\u0069\u0074","\u0046\u0069\u0074\u0042":case "\u0046\u0069\u0074\u0048","\u0046\u0069\u0074B\u0048":_cbdde .Append (_dfg .MakeFloat (_fcbda .Y ));case "\u0046\u0069\u0074\u0056","\u0046\u0069\u0074B\u0056":_cbdde .Append (_dfg .MakeFloat (_fcbda .X )); case "\u0058\u0059\u005a":_cbdde .Append (_dfg .MakeFloat (_fcbda .X ));_cbdde .Append (_dfg .MakeFloat (_fcbda .Y ));_cbdde .Append (_dfg .MakeFloat (_fcbda .Zoom ));default:_cbdde .Set (1,_dfg .MakeName ("\u0046\u0069\u0074"));};return _cbdde ;}; // PdfOutline represents a PDF outline dictionary (Table 152 - p. 376). type PdfOutline struct{PdfOutlineTreeNode ;Parent *PdfOutlineTreeNode ;Count *int64 ;_gcdeg *_dfg .PdfIndirectObject ;}; // NewPdfActionJavaScript returns a new "javaScript" action. func NewPdfActionJavaScript ()*PdfActionJavaScript {_ecge :=NewPdfAction ();_dabc :=&PdfActionJavaScript {};_dabc .PdfAction =_ecge ;_ecge .SetContext (_dabc );return _dabc ;}; // Evaluate runs the function on the passed in slice and returns the results. func (_gagfgc *PdfFunctionType0 )Evaluate (x []float64 )([]float64 ,error ){if len (x )!=_gagfgc .NumInputs {_egb .Log .Error ("\u004eu\u006d\u0062e\u0072\u0020\u006f\u0066 \u0069\u006e\u0070u\u0074\u0073\u0020\u006e\u006f\u0074\u0020\u006d\u0061tc\u0068\u0069\u006eg\u0020\u0077h\u0061\u0074\u0020\u0069\u0073\u0020n\u0065\u0065d\u0065\u0064"); return nil ,_bd .New ("\u0072\u0061\u006e\u0067\u0065\u0020\u0063\u0068\u0065\u0063\u006b\u0020e\u0072\u0072\u006f\u0072");};if _gagfgc ._aabea ==nil {_dceaa :=_gagfgc .processSamples ();if _dceaa !=nil {return nil ,_dceaa ;};};_ebdeb :=_gagfgc .Encode ; if _ebdeb ==nil {_ebdeb =[]float64 {};for _ddgff :=0;_ddgff < len (_gagfgc .Size );_ddgff ++{_ebdeb =append (_ebdeb ,0);_ebdeb =append (_ebdeb ,float64 (_gagfgc .Size [_ddgff ]-1));};};_dcdcf :=_gagfgc .Decode ;if _dcdcf ==nil {_dcdcf =_gagfgc .Range ; };_bfcff :=make ([]int ,len (x ));for _bafcc :=0;_bafcc < len (x );_bafcc ++{_egdd :=x [_bafcc ];_fagdb :=_df .Min (_df .Max (_egdd ,_gagfgc .Domain [2*_bafcc ]),_gagfgc .Domain [2*_bafcc +1]);_egacdb :=_ef .LinearInterpolate (_fagdb ,_gagfgc .Domain [2*_bafcc ],_gagfgc .Domain [2*_bafcc +1],_ebdeb [2*_bafcc ],_ebdeb [2*_bafcc +1]); _cgdbb :=_df .Min (_df .Max (_egacdb ,0),float64 (_gagfgc .Size [_bafcc ]-1));_gaedc :=int (_df .Floor (_cgdbb +0.5));if _gaedc < 0{_gaedc =0;}else if _gaedc > _gagfgc .Size [_bafcc ]{_gaedc =_gagfgc .Size [_bafcc ]-1;};_bfcff [_bafcc ]=_gaedc ;};_afgca :=_bfcff [0]; for _cabeda :=1;_cabeda < _gagfgc .NumInputs ;_cabeda ++{_efeba :=_bfcff [_cabeda ];for _bebfc :=0;_bebfc < _cabeda ;_bebfc ++{_efeba *=_gagfgc .Size [_bebfc ];};_afgca +=_efeba ;};_afgca *=_gagfgc .NumOutputs ;var _ggfcb []float64 ;for _edbbg :=0;_edbbg < _gagfgc .NumOutputs ; _edbbg ++{_bfade :=_afgca +_edbbg ;if _bfade >=len (_gagfgc ._aabea ){_egb .Log .Debug ("\u0057\u0041\u0052\u004e\u003a \u006e\u006ft\u0020\u0065\u006eo\u0075\u0067\u0068\u0020\u0069\u006ep\u0075\u0074\u0020sa\u006dp\u006c\u0065\u0073\u0020\u0074\u006f\u0020d\u0065\u0074\u0065\u0072\u006d\u0069\u006e\u0065\u0020\u006f\u0075\u0074\u0070\u0075\u0074\u0020\u0076\u0061lu\u0065\u0073\u002e\u0020\u004f\u0075\u0074\u0070\u0075\u0074\u0020\u006d\u0061\u0079\u0020\u0062\u0065\u0020\u0069\u006e\u0063\u006f\u0072\u0072\u0065\u0063\u0074\u002e"); continue ;};_cfgd :=_gagfgc ._aabea [_bfade ];_edadcf :=_ef .LinearInterpolate (float64 (_cfgd ),0,_df .Pow (2,float64 (_gagfgc .BitsPerSample )),_dcdcf [2*_edbbg ],_dcdcf [2*_edbbg +1]);_adgag :=_df .Min (_df .Max (_edadcf ,_gagfgc .Range [2*_edbbg ]),_gagfgc .Range [2*_edbbg +1]); _ggfcb =append (_ggfcb ,_adgag );};return _ggfcb ,nil ;}; // PdfColorDeviceCMYK is a CMYK32 color, where each component is defined in the range 0.0 - 1.0 where 1.0 is the primary intensity. type PdfColorDeviceCMYK [4]float64 ;func (_ggacb *PdfWriter )writeOutputIntents ()error {if len (_ggacb ._ebgdb )==0{return nil ;};_bcbff :=make ([]_dfg .PdfObject ,len (_ggacb ._ebgdb ));for _bdgfg ,_ebdd :=range _ggacb ._ebgdb {_ffacf :=_ebdd .ToPdfObject (); _bcbff [_bdgfg ]=_dfg .MakeIndirectObject (_ffacf );};_affed :=_dfg .MakeIndirectObject (_dfg .MakeArray (_bcbff ...));_ggacb ._acgcc .Set ("\u004f\u0075\u0074\u0070\u0075\u0074\u0049\u006e\u0074\u0065\u006e\u0074\u0073",_affed );if _gaede :=_ggacb .addObjects (_affed ); _gaede !=nil {return _gaede ;};return nil ;};func (_ebeab *PdfWriter )optimize ()error {if _ebeab ._gface ==nil {return nil ;};var _edbfd error ;_ebeab ._abcef ,_edbfd =_ebeab ._gface .Optimize (_ebeab ._abcef );if _edbfd !=nil {return _edbfd ;};_dabge :=make (map[_dfg .PdfObject ]struct{},len (_ebeab ._abcef )); for _ ,_gddacc :=range _ebeab ._abcef {_dabge [_gddacc ]=struct{}{};};_ebeab ._bgbee =_dabge ;return nil ;}; // ToPdfObject sets the common field elements. // Note: Call the more field context's ToPdfObject to set both the generic and // non-generic information. func (_cefaeb *PdfField )ToPdfObject ()_dfg .PdfObject {_bfge :=_cefaeb ._caaa ;_dbbfa :=_bfge .PdfObject .(*_dfg .PdfObjectDictionary );_gbca :=_dfg .MakeArray ();for _ ,_cfeecd :=range _cefaeb .Kids {_gbca .Append (_cfeecd .ToPdfObject ());};for _ ,_gabb :=range _cefaeb .Annotations {if _gabb ._afae !=_cefaeb ._caaa {_gbca .Append (_gabb .GetContext ().ToPdfObject ()); };};if _cefaeb .Parent !=nil {_dbbfa .SetIfNotNil ("\u0050\u0061\u0072\u0065\u006e\u0074",_cefaeb .Parent .GetContainingPdfObject ());};if _gbca .Len ()> 0{_dbbfa .Set ("\u004b\u0069\u0064\u0073",_gbca );};_dbbfa .SetIfNotNil ("\u0046\u0054",_cefaeb .FT ); _dbbfa .SetIfNotNil ("\u0054",_cefaeb .T );_dbbfa .SetIfNotNil ("\u0054\u0055",_cefaeb .TU );_dbbfa .SetIfNotNil ("\u0054\u004d",_cefaeb .TM );_dbbfa .SetIfNotNil ("\u0046\u0066",_cefaeb .Ff );_dbbfa .SetIfNotNil ("\u0056",_cefaeb .V );_dbbfa .SetIfNotNil ("\u0044\u0056",_cefaeb .DV ); _dbbfa .SetIfNotNil ("\u0041\u0041",_cefaeb .AA );if _cefaeb .VariableText !=nil {_dbbfa .SetIfNotNil ("\u0044\u0041",_cefaeb .VariableText .DA );_dbbfa .SetIfNotNil ("\u0051",_cefaeb .VariableText .Q );_dbbfa .SetIfNotNil ("\u0044\u0053",_cefaeb .VariableText .DS ); _dbbfa .SetIfNotNil ("\u0052\u0056",_cefaeb .VariableText .RV );};return _bfge ;};func (_bafe *Names )addEmbeddedFile (_gfgbe *EmbeddedFile )error {if _bafe .EmbeddedFiles ==nil {_bafe .EmbeddedFiles =_dfg .MakeDict ();_bafe .EmbeddedFiles .Set ("\u004e\u0061\u006de\u0073",_dfg .MakeArray ()); };_fbbdb :=NewPdfFileSpecFromEmbeddedFile (_gfgbe );_bcbeg :=_bafe .EmbeddedFiles .Get ("\u004e\u0061\u006de\u0073");_faaca ,_ebadc :=_bcbeg .(*_dfg .PdfObjectArray );if !_ebadc {return _bd .New ("\u0049\u006e\u0076\u0061li\u0064\u0020\u004e\u0061\u006d\u0065\u0073\u0020\u0061\u0072\u0072\u0061\u0079"); };type FileSpecMap struct{_aeee string ;_bbcbe *PdfFilespec ;};_agebf :=[]FileSpecMap {};for _aafbb :=0;_aafbb < len (_faaca .Elements ());_aafbb +=2{if _aafbb %2==0{_cfcaf :=_faaca .Get (_aafbb );if _cfcaf !=nil {_fbbdf :=_cfcaf .(*_dfg .PdfObjectString ); _acebb :=_faaca .Get (_aafbb +1);_cfbdd ,_agdg :=NewPdfFilespecFromObj (_acebb );if _agdg !=nil {return _agdg ;};_agebf =append (_agebf ,FileSpecMap {_aeee :_fbbdf .String (),_bbcbe :_cfbdd });};};};_agebf =append (_agebf ,FileSpecMap {_aeee :_gfgbe .Name ,_bbcbe :_fbbdb }); _ed .Slice (_agebf ,func (_edffg ,_baace int )bool {return _agebf [_edffg ]._aeee < _agebf [_baace ]._aeee });_faaca =_dfg .MakeArray ();for _ ,_caaaf :=range _agebf {_faaca .Append (_dfg .MakeString (_caaaf ._aeee ));_faaca .Append (_caaaf ._bbcbe .ToPdfObject ()); };_bafe .EmbeddedFiles .Set ("\u004e\u0061\u006de\u0073",_faaca );return nil ;};func (_addfe *fontFile )loadFromSegments (_aecd ,_cedac []byte )error {_egb .Log .Trace ("\u006c\u006f\u0061dF\u0072\u006f\u006d\u0053\u0065\u0067\u006d\u0065\u006e\u0074\u0073\u003a\u0020\u0025\u0064\u0020\u0025\u0064",len (_aecd ),len (_cedac )); _bcbe :=_addfe .parseASCIIPart (_aecd );if _bcbe !=nil {return _bcbe ;};_egb .Log .Trace ("f\u006f\u006e\u0074\u0066\u0069\u006c\u0065\u003d\u0025\u0073",_addfe );if len (_cedac )==0{return nil ;};_egb .Log .Trace ("f\u006f\u006e\u0074\u0066\u0069\u006c\u0065\u003d\u0025\u0073",_addfe ); return nil ;}; // GetContainingPdfObject returns the container of the outline tree node (indirect object). func (_efcda *PdfOutlineTreeNode )GetContainingPdfObject ()_dfg .PdfObject {return _efcda .GetContext ().GetContainingPdfObject ();}; // PdfVersion returns version of the PDF file. func (_bcgce *PdfReader )PdfVersion ()_dfg .Version {return _bcgce ._agbcd .PdfVersion ()}; // DSS represents a Document Security Store dictionary. // The DSS dictionary contains both global and signature specific validation // information. The certificates and revocation data in the `Certs`, `OCSPs`, // and `CRLs` fields can be used to validate any signature in the document. // Additionally, the VRI entry contains validation data per signature. // The keys in the VRI entry are calculated as upper(hex(sha1(sig.Contents))). // The values are VRI dictionaries containing certificates and revocation // information used for validating a single signature. // See ETSI TS 102 778-4 V1.1.1 for more information. type DSS struct{_beab *_dfg .PdfIndirectObject ;Certs []*_dfg .PdfObjectStream ;OCSPs []*_dfg .PdfObjectStream ;CRLs []*_dfg .PdfObjectStream ;VRI map[string ]*VRI ;_fbgf map[string ]*_dfg .PdfObjectStream ;_fecgg map[string ]*_dfg .PdfObjectStream ;_cccc map[string ]*_dfg .PdfObjectStream ; }; // DecodeArray returns the range of color component values in DeviceCMYK colorspace. func (_bage *PdfColorspaceDeviceCMYK )DecodeArray ()[]float64 {return []float64 {0.0,1.0,0.0,1.0,0.0,1.0,0.0,1.0};};func _aafa (_gdcba *_dfg .PdfObjectDictionary )(*PdfFieldText ,error ){_gbad :=&PdfFieldText {};_gbad .DA ,_ =_dfg .GetString (_gdcba .Get ("\u0044\u0041")); _gbad .Q ,_ =_dfg .GetInt (_gdcba .Get ("\u0051"));_gbad .DS ,_ =_dfg .GetString (_gdcba .Get ("\u0044\u0053"));_gbad .RV =_gdcba .Get ("\u0052\u0056");_gbad .MaxLen ,_ =_dfg .GetInt (_gdcba .Get ("\u004d\u0061\u0078\u004c\u0065\u006e"));return _gbad ,nil ; }; // ToGoImage converts the unidoc Image to a golang Image structure. func (_afgeg *Image )ToGoImage ()(_gf .Image ,error ){_egb .Log .Trace ("\u0043\u006f\u006e\u0076er\u0074\u0069\u006e\u0067\u0020\u0074\u006f\u0020\u0067\u006f\u0020\u0069\u006d\u0061g\u0065");_gbbb ,_efceaa :=_ef .NewImage (int (_afgeg .Width ),int (_afgeg .Height ),int (_afgeg .BitsPerComponent ),_afgeg .ColorComponents ,_afgeg .Data ,_afgeg ._baeef ,_afgeg ._begcc ); if _efceaa !=nil {return nil ,_efceaa ;};return _gbbb ,nil ;}; // NewPdfActionImportData returns a new "import data" action. func NewPdfActionImportData ()*PdfActionImportData {_gee :=NewPdfAction ();_egbc :=&PdfActionImportData {};_egbc .PdfAction =_gee ;_gee .SetContext (_egbc );return _egbc ;};func (_acadf *PdfWriter )writeNamesDictionary ()error {if _acadf ._baeae ==nil {return nil ; };_cfab :=_acadf ._baeae .ToPdfObject ();_acadf ._acgcc .Set ("\u004e\u0061\u006de\u0073",_cfab );_adaf :=_acadf .addObjects (_cfab );if _adaf !=nil {return _adaf ;};return nil ;}; // ToPdfObject implements interface PdfModel. func (_gabe *PdfBorderStyle )ToPdfObject ()_dfg .PdfObject {_cdgb :=_dfg .MakeDict ();if _gabe ._gcac !=nil {if _beb ,_cffgc :=_gabe ._gcac .(*_dfg .PdfIndirectObject );_cffgc {_beb .PdfObject =_cdgb ;};};_cdgb .Set ("\u0053u\u0062\u0074\u0079\u0070\u0065",_dfg .MakeName ("\u0042\u006f\u0072\u0064\u0065\u0072")); if _gabe .W !=nil {_cdgb .Set ("\u0057",_dfg .MakeFloat (*_gabe .W ));};if _gabe .S !=nil {_cdgb .Set ("\u0053",_dfg .MakeName (_gabe .S .GetPdfName ()));};if _gabe .D !=nil {_cdgb .Set ("\u0044",_dfg .MakeArrayFromIntegers (*_gabe .D ));};if _gabe ._gcac !=nil {return _gabe ._gcac ; };return _cdgb ;};func (_gcca *PdfReader )newPdfAnnotationStampFromDict (_dcb *_dfg .PdfObjectDictionary )(*PdfAnnotationStamp ,error ){_cafd :=PdfAnnotationStamp {};_ffd ,_gdec :=_gcca .newPdfAnnotationMarkupFromDict (_dcb );if _gdec !=nil {return nil ,_gdec ; };_cafd .PdfAnnotationMarkup =_ffd ;_cafd .Name =_dcb .Get ("\u004e\u0061\u006d\u0065");return &_cafd ,nil ;}; // CharcodesToStrings returns the unicode strings corresponding to `charcodes`. // The int returns are the number of strings and the number of unconvereted codes. // NOTE: The number of strings returned is equal to the number of charcodes func (_ffcg *PdfFont )CharcodesToStrings (charcodes []_ff .CharCode ,replacementText string )([]string ,int ,int ){_bbef :=_ffcg .baseFields ();_dbba :=make ([]string ,0,len (charcodes ));_eeaeb :=0;_cgeb :=_ffcg .Encoder ();_dfbe :=_bbef ._bgdcbc !=nil &&_ffcg .IsSimple ()&&_ffcg .Subtype ()=="\u0054\u0072\u0075\u0065\u0054\u0079\u0070\u0065"&&!_af .Contains (_bbef ._bgdcbc .Name (),"\u0049d\u0065\u006e\u0074\u0069\u0074\u0079-"); if !_dfbe &&_cgeb !=nil {switch _ebbg :=_cgeb .(type ){case _ff .SimpleEncoder :_gbdfb :=_ebbg .BaseName ();if _ ,_fbbae :=_cbgbe [_gbdfb ];_fbbae {for _ ,_gfecc :=range charcodes {if _efcbf ,_dbcad :=_cgeb .CharcodeToRune (_gfecc );_dbcad {_dbba =append (_dbba ,string (_efcbf )); }else {_egb .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u004e\u006f\u0020\u0072u\u006e\u0065\u002e\u0020\u0063\u006f\u0064\u0065=\u0030x\u0025\u0030\u0034\u0078\u0020\u0063\u0068\u0061\u0072\u0063\u006f\u0064\u0065\u0073\u003d\u005b\u0025\u00200\u0034\u0078\u005d\u0020\u0043\u0049\u0044\u003d\u0025\u0074\u000a"+"\t\u0066\u006f\u006e\u0074=%\u0073\n\u0009\u0065\u006e\u0063\u006fd\u0069\u006e\u0067\u003d\u0025\u0073",_gfecc ,charcodes ,_bbef .isCIDFont (),_ffcg ,_cgeb ); _eeaeb ++;_dbba =append (_dbba ,_efg .MissingCodeString );};};return _dbba ,len (_dbba ),_eeaeb ;};};};for _ ,_efabe :=range charcodes {if _bbef ._bgdcbc !=nil {if _agdf ,_bcdd :=_bbef ._bgdcbc .CharcodeToUnicode (_efg .CharCode (_efabe ));_bcdd {_bdaca ,_ :=_ee .DecodeLastRuneInString (_agdf ); _cdfge :=_ggbfb (_bdaca );if _cdfge !="\u0043\u006f"{_dbba =append (_dbba ,_agdf );continue ;};_egb .Log .Debug ("E\u0052\u0052\u004fR\u003a\u0020\u0054\u006f\u0055\u006e\u0069\u0063\u006f\u0064\u0065\u0020\u0043\u006d\u0061p\u0020\u0068\u0061\u0073\u0020\u0069\u006e\u0063\u006f\u0072\u0072\u0065\u0063t\u0020\u006d\u0061\u0070\u0070\u0069\u006e\u0067.\u0020\u0063\u006f\u0064\u0065\u003d\u0030\u0078\u0025\u0030\u0034\u0078\u0020\u0069\u0073\u0020m\u0061\u0070\u0070\u0065\u0064 \u0074\u006f\u0020\u0061\u006e\u0020\u0069\u006e\u0076\u0061\u006c\u0069\u0064 \u0063\u006f\u0064\u0065 \u0070\u006f\u0069\u006e\u0074\u0020\u0025\u0073",_efabe ,_agdf ); };};if _cgeb !=nil {if _gaag ,_cgebf :=_cgeb .CharcodeToRune (_efabe );_cgebf {_bebc :=_ggbfb (_gaag );if _bebc !="\u0043\u006f"{_dbba =append (_dbba ,string (_gaag ));continue ;};_egb .Log .Debug ("\u0045\u0052R\u004f\u0052\u003a\u0020\u0065\u006e\u0063\u006f\u0064\u0065\u0072\u0020\u0066\u0061\u0069\u006c\u0065\u0064\u002e \u0063\u006f\u0064\u0065\u003d\u0030x\u0025\u0030\u0034\u0078\u0020\u0069\u0073\u0020\u0064\u0065\u0063\u006f\u0064\u0065d\u0020\u0074o\u0020\u0061\u006e\u0020i\u006e\u0076\u0061\u006c\u0069d\u0020\u0072\u0075\u006e\u0020\u0025\u0073",_efabe ,string (_gaag )); };};if replacementText !=""{_dbba =append (_dbba ,replacementText );}else {_egb .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u004e\u006f\u0020\u0072u\u006e\u0065\u002e\u0020\u0063\u006f\u0064\u0065=\u0030x\u0025\u0030\u0034\u0078\u0020\u0063\u0068\u0061\u0072\u0063\u006f\u0064\u0065\u0073\u003d\u005b\u0025\u00200\u0034\u0078\u005d\u0020\u0043\u0049\u0044\u003d\u0025\u0074\u000a"+"\t\u0066\u006f\u006e\u0074=%\u0073\n\u0009\u0065\u006e\u0063\u006fd\u0069\u006e\u0067\u003d\u0025\u0073",_efabe ,charcodes ,_bbef .isCIDFont (),_ffcg ,_cgeb ); _eeaeb ++;_dbba =append (_dbba ,_efg .MissingCodeString );};};if _eeaeb !=0{_egb .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a \u0043\u006f\u0075\u006c\u0064\u006e\u0027\u0074\u0020\u0063\u006f\u006e\u0076\u0065\u0072\u0074\u0020\u0074\u006f\u0020u\u006e\u0069\u0063\u006f\u0064\u0065\u002e\u0020\u0055\u0073\u0069\u006e\u0067\u0020i\u006ep\u0075\u0074\u002e\u000a"+"\u0009\u006e\u0075\u006d\u0043\u0068\u0061\u0072\u0073\u003d\u0025d\u0020\u006e\u0075\u006d\u004d\u0069\u0073\u0073\u0065\u0073=\u0025\u0064\u000a"+"\u0009\u0066\u006f\u006e\u0074\u003d\u0025\u0073",len (charcodes ),_eeaeb ,_ffcg ); };return _dbba ,len (_dbba ),_eeaeb ;};func _cbbce (_edbda *_dfg .PdfObjectDictionary )(*PdfFieldButton ,error ){_gbdebc :=&PdfFieldButton {};_gbdebc .PdfField =NewPdfField ();_gbdebc .SetContext (_gbdebc );_gbdebc .Opt ,_ =_dfg .GetArray (_edbda .Get ("\u004f\u0070\u0074")); _gdag :=NewPdfAnnotationWidget ();_gdag .A ,_ =_dfg .GetDict (_edbda .Get ("\u0041"));_gdag .AP ,_ =_dfg .GetDict (_edbda .Get ("\u0041\u0050"));_gdag .SetContext (_gbdebc );_gbdebc .Annotations =append (_gbdebc .Annotations ,_gdag );return _gbdebc ,nil ; }; // ToPdfObject implements interface PdfModel. func (_cdfaf *PdfAnnotationTrapNet )ToPdfObject ()_dfg .PdfObject {_cdfaf .PdfAnnotation .ToPdfObject ();_efaa :=_cdfaf ._afae ;_ffbf :=_efaa .PdfObject .(*_dfg .PdfObjectDictionary );_ffbf .SetIfNotNil ("\u0053u\u0062\u0074\u0079\u0070\u0065",_dfg .MakeName ("\u0054r\u0061\u0070\u004e\u0065\u0074")); return _efaa ;}; // String returns a string representation of PdfTransformParamsDocMDP. func (_dccbc *PdfTransformParamsDocMDP )String ()string {return _d .Sprintf ("\u0025\u0073\u0020\u0050\u003a\u0020\u0025\u0073\u0020V\u003a\u0020\u0025\u0073",_dccbc .Type ,_dccbc .P ,_dccbc .V );}; // SetStructParentsKey sets the StructParents key. func (_caggga *PdfPage )SetStructParentsKey (key int ){if key ==-1{_caggga .StructParents =nil ;}else {_caggga .StructParents =_dfg .MakeInteger (int64 (key ));};}; // ToPdfObject returns a PdfObject representation of PdfColorspaceDeviceNAttributes as a PdfObjectDictionary directly // or indirectly within an indirect object container. func (_fedfd *PdfColorspaceDeviceNAttributes )ToPdfObject ()_dfg .PdfObject {_acca :=_dfg .MakeDict ();if _fedfd .Subtype !=nil {_acca .Set ("\u0053u\u0062\u0074\u0079\u0070\u0065",_fedfd .Subtype );};_acca .SetIfNotNil ("\u0043o\u006c\u006f\u0072\u0061\u006e\u0074s",_fedfd .Colorants ); _acca .SetIfNotNil ("\u0050r\u006f\u0063\u0065\u0073\u0073",_fedfd .Process );_acca .SetIfNotNil ("M\u0069\u0078\u0069\u006e\u0067\u0048\u0069\u006e\u0074\u0073",_fedfd .MixingHints );if _fedfd ._bfddg !=nil {_fedfd ._bfddg .PdfObject =_acca ;return _fedfd ._bfddg ; };return _acca ;}; // EnableChain adds the specified certificate chain and validation data (OCSP // and CRL information) for it to the global scope of the document DSS. The // added data is used for validating any of the signatures present in the // document. The LTV client attempts to build the certificate chain up to a // trusted root by downloading any missing certificates. func (_aegag *LTV )EnableChain (chain []*_de .Certificate )error {return _aegag .enable (nil ,chain ,"")}; // ColorFromFloats returns a new PdfColor based on input color components. func (_bbcf *PdfColorspaceDeviceN )ColorFromFloats (vals []float64 )(PdfColor ,error ){if len (vals )!=_bbcf .GetNumComponents (){return nil ,_bd .New ("r\u0061\u006e\u0067\u0065\u0020\u0063\u0068\u0065\u0063\u006b");};_fccf ,_ebeb :=_bbcf .TintTransform .Evaluate (vals ); if _ebeb !=nil {return nil ,_ebeb ;};_dbgcf ,_ebeb :=_bbcf .AlternateSpace .ColorFromFloats (_fccf );if _ebeb !=nil {return nil ,_ebeb ;};return _dbgcf ,nil ;}; // C returns the value of the cyan component of the color. func (_fefe *PdfColorDeviceCMYK )C ()float64 {return _fefe [0]}; // GetOptimizer returns current PDF optimizer. func (_bdfgbc *PdfWriter )GetOptimizer ()Optimizer {return _bdfgbc ._gface }; // SetNonFullScreenPageMode sets the value of the nonFullScreenPageMode. func (_fdcfe *ViewerPreferences )SetNonFullScreenPageMode (nonFullScreenPageMode NonFullScreenPageMode ){_fdcfe ._gbbce =nonFullScreenPageMode ;};func (_gddda *PdfWriter )setHashIDs (_faec _g .Hash )error {_adcdf :=_faec .Sum (nil );if _gddda ._baeaee ==""{_gddda ._baeaee =_bc .EncodeToString (_adcdf [:8]); };_gddda .setDocumentIDs (_gddda ._baeaee ,_bc .EncodeToString (_adcdf [8:]));return nil ;}; // NewPdfColorspaceFromPdfObject loads a PdfColorspace from a PdfObject. Returns an error if there is // a failure in loading. func NewPdfColorspaceFromPdfObject (obj _dfg .PdfObject )(PdfColorspace ,error ){if obj ==nil {return nil ,nil ;};var _faag *_dfg .PdfIndirectObject ;var _cgca *_dfg .PdfObjectName ;var _bgdca *_dfg .PdfObjectArray ;if _babfa ,_bdbe :=obj .(*_dfg .PdfIndirectObject ); _bdbe {_faag =_babfa ;};obj =_dfg .TraceToDirectObject (obj );switch _fcaca :=obj .(type ){case *_dfg .PdfObjectArray :_bgdca =_fcaca ;case *_dfg .PdfObjectName :_cgca =_fcaca ;};if _cgca !=nil {switch *_cgca {case "\u0044\u0065\u0076\u0069\u0063\u0065\u0047\u0072\u0061\u0079":return NewPdfColorspaceDeviceGray (),nil ; case "\u0044e\u0076\u0069\u0063\u0065\u0052\u0047B":return NewPdfColorspaceDeviceRGB (),nil ;case "\u0044\u0065\u0076\u0069\u0063\u0065\u0043\u004d\u0059\u004b":return NewPdfColorspaceDeviceCMYK (),nil ;case "\u0050a\u0074\u0074\u0065\u0072\u006e":return NewPdfColorspaceSpecialPattern (),nil ; default:_egb .Log .Debug ("\u0045\u0052\u0052\u004fR\u003a\u0020\u0055\u006e\u006b\u006e\u006f\u0077\u006e\u0020c\u006fl\u006f\u0072\u0073\u0070\u0061\u0063\u0065 \u0025\u0073",*_cgca );return nil ,_ceeeb ;};};if _bgdca !=nil &&_bgdca .Len ()> 0{var _abad _dfg .PdfObject =_faag ; if _faag ==nil {_abad =_bgdca ;};if _feab ,_agcf :=_dfg .GetName (_bgdca .Get (0));_agcf {switch _feab .String (){case "\u0044\u0065\u0076\u0069\u0063\u0065\u0047\u0072\u0061\u0079":if _bgdca .Len ()==1{return NewPdfColorspaceDeviceGray (),nil ;};case "\u0044e\u0076\u0069\u0063\u0065\u0052\u0047B":if _bgdca .Len ()==1{return NewPdfColorspaceDeviceRGB (),nil ; };case "\u0044\u0065\u0076\u0069\u0063\u0065\u0043\u004d\u0059\u004b":if _bgdca .Len ()==1{return NewPdfColorspaceDeviceCMYK (),nil ;};case "\u0043a\u006c\u0047\u0072\u0061\u0079":return _abbg (_abad );case "\u0043\u0061\u006c\u0052\u0047\u0042":return _bdfaa (_abad ); case "\u004c\u0061\u0062":return _bacbd (_abad );case "\u0049\u0043\u0043\u0042\u0061\u0073\u0065\u0064":return _eddb (_abad );case "\u0050a\u0074\u0074\u0065\u0072\u006e":return _dbfa (_abad );case "\u0049n\u0064\u0065\u0078\u0065\u0064":return _dddea (_abad ); case "\u0053\u0065\u0070\u0061\u0072\u0061\u0074\u0069\u006f\u006e":return _baba (_abad );case "\u0044e\u0076\u0069\u0063\u0065\u004e":return _daad (_abad );default:_egb .Log .Debug ("A\u0072\u0072\u0061\u0079\u0020\u0077i\u0074\u0068\u0020\u0069\u006e\u0076\u0061\u006c\u0069d\u0020\u006e\u0061m\u0065:\u0020\u0025\u0073",*_feab ); };};};_egb .Log .Debug ("\u0050\u0044\u0046\u0020\u0046i\u006c\u0065\u0020\u0045\u0072\u0072\u006f\u0072\u003a\u0020\u0043\u006f\u006co\u0072\u0073\u0070\u0061\u0063\u0065\u0020\u0074\u0079\u0070\u0065\u0020\u0065\u0072\u0072\u006f\u0072\u003a\u0020\u0025\u0073",obj .String ()); return nil ,ErrTypeCheck ;}; // ToGray returns a PdfColorDeviceGray color based on the current RGB color. func (_bdga *PdfColorDeviceRGB )ToGray ()*PdfColorDeviceGray {_ccfe :=0.3*_bdga .R ()+0.59*_bdga .G ()+0.11*_bdga .B ();_ccfe =_df .Min (_df .Max (_ccfe ,0.0),1.0);return NewPdfColorDeviceGray (_ccfe );}; // SetDate sets the `M` field of the signature. func (_fdagb *PdfSignature )SetDate (date _ge .Time ,format string ){if format ==""{format ="\u0044\u003a\u003200\u0036\u0030\u0031\u0030\u0032\u0031\u0035\u0030\u0034\u0030\u0035\u002d\u0030\u0037\u0027\u0030\u0030\u0027";};_fdagb .M =_dfg .MakeString (date .Format (format )); };func (_ebc *PdfReader )newPdfActionNamedFromDict (_edac *_dfg .PdfObjectDictionary )(*PdfActionNamed ,error ){return &PdfActionNamed {N :_edac .Get ("\u004e")},nil ;}; // ToPdfObject implements interface PdfModel. func (_ccbgf *PdfAnnotationCircle )ToPdfObject ()_dfg .PdfObject {_ccbgf .PdfAnnotation .ToPdfObject ();_ffgb :=_ccbgf ._afae ;_bagg :=_ffgb .PdfObject .(*_dfg .PdfObjectDictionary );_ccbgf .appendToPdfDictionary (_bagg );_bagg .SetIfNotNil ("\u0053u\u0062\u0074\u0079\u0070\u0065",_dfg .MakeName ("\u0043\u0069\u0072\u0063\u006c\u0065")); _bagg .SetIfNotNil ("\u0042\u0053",_ccbgf .BS );_bagg .SetIfNotNil ("\u0049\u0043",_ccbgf .IC );_bagg .SetIfNotNil ("\u0042\u0045",_ccbgf .BE );_bagg .SetIfNotNil ("\u0052\u0044",_ccbgf .RD );return _ffgb ;};func _gccaa (_begae *PdfPage )_dfg .PdfObject {_feegd :=_gb .GetLicenseKey (); if _feegd !=nil &&_feegd .IsLicensed (){return _begae .ToPdfObject ();};_eggab :=_dfg .PdfObjectName ("\u0055\u0046\u0031");if !_begae .Resources .HasFontByName (_eggab ){_begae .Resources .SetFontByName (_eggab ,DefaultFont ().ToPdfObject ());};var _eaega []string ; _eaega =append (_eaega ,"\u0071");_eaega =append (_eaega ,"\u0042\u0054");_eaega =append (_eaega ,_d .Sprintf ("\u002f%\u0073\u0020\u0031\u0034\u0020\u0054f",_eggab .String ()));_eaega =append (_eaega ,"\u0031\u0020\u0030\u0020\u0030\u0020\u0072\u0067"); _eaega =append (_eaega ,"\u0031\u0030\u0020\u0031\u0030\u0020\u0054\u0064");_dgdgc :="\u0055\u006e\u006c\u0069\u0063\u0065\u006e\u0073\u0065\u0064\u0020\u0055\u006e\u0069\u0044o\u0063\u0020\u002d\u0020\u0047\u0065\u0074\u0020\u0061\u0020\u006c\u0069\u0063e\u006e\u0073\u0065\u0020\u006f\u006e\u0020\u0068\u0074\u0074\u0070\u0073:/\u002f\u0075\u006e\u0069\u0064\u006f\u0063\u002e\u0069\u006f"; _eaega =append (_eaega ,_d .Sprintf ("\u0028%\u0073\u0029\u0020\u0054\u006a",_dgdgc ));_eaega =append (_eaega ,"\u0045\u0054");_eaega =append (_eaega ,"\u0051");_abgca :=_af .Join (_eaega ,"\u000a");_begae .AddContentStreamByString (_abgca );return _begae .ToPdfObject (); };func (_bace *PdfReader )newPdfActionThreadFromDict (_edaf *_dfg .PdfObjectDictionary )(*PdfActionThread ,error ){_gad ,_fgag :=_dbga (_edaf .Get ("\u0046"));if _fgag !=nil {return nil ,_fgag ;};return &PdfActionThread {D :_edaf .Get ("\u0044"),B :_edaf .Get ("\u0042"),F :_gad },nil ; }; // SetPrintClip sets the value of the printClip. func (_ffeb *ViewerPreferences )SetPrintClip (printClip PageBoundary ){_ffeb ._cdbee =printClip };func (_bgcaa *PdfColorspaceSpecialSeparation )String ()string {return "\u0053\u0065\u0070\u0061\u0072\u0061\u0074\u0069\u006f\u006e";}; // GetMediaBox gets the inheritable media box value, either from the page // or a higher up page/pages struct. func (_bgeba *PdfPage )GetMediaBox ()(*PdfRectangle ,error ){if _bgeba .MediaBox !=nil {return _bgeba .MediaBox ,nil ;};_bbefa :=_bgeba .Parent ;for _bbefa !=nil {_addb ,_edgc :=_dfg .GetDict (_bbefa );if !_edgc {return nil ,_bd .New ("\u0069\u006e\u0076\u0061\u006c\u0069d\u0020\u0070\u0061\u0072\u0065\u006e\u0074\u0020\u006f\u0062\u006a\u0065\u0063t\u0073\u0020\u0064\u0069\u0063\u0074\u0069o\u006e\u0061\u0072\u0079"); };if _gadea :=_addb .Get ("\u004d\u0065\u0064\u0069\u0061\u0042\u006f\u0078");_gadea !=nil {_cgfg ,_adgbf :=_dfg .GetArray (_gadea );if !_adgbf {return nil ,_bd .New ("\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u006d\u0065\u0064\u0069a\u0020\u0062\u006f\u0078"); };_degf ,_bcgfg :=NewPdfRectangle (*_cgfg );if _bcgfg !=nil {return nil ,_bcgfg ;};return _degf ,nil ;};_bbefa =_addb .Get ("\u0050\u0061\u0072\u0065\u006e\u0074");};return nil ,_bd .New ("m\u0065\u0064\u0069\u0061 b\u006fx\u0020\u006e\u006f\u0074\u0020d\u0065\u0066\u0069\u006e\u0065\u0064"); }; // ToImage converts an object to an Image which can be transformed or saved out. // The image data is decoded and the Image returned. func (_ddcga *XObjectImage )ToImage ()(*Image ,error ){_dacbb :=&Image {};if _ddcga .Height ==nil {return nil ,_bd .New ("\u0068e\u0069\u0067\u0068\u0074\u0020\u0061\u0074\u0074\u0072\u0069\u0062u\u0074\u0065\u0020\u006d\u0069\u0073\u0073\u0069\u006e\u0067"); };_dacbb .Height =*_ddcga .Height ;if _ddcga .Width ==nil {return nil ,_bd .New ("\u0077\u0069\u0064th\u0020\u0061\u0074\u0074\u0072\u0069\u0062\u0075\u0074\u0065\u0020\u006d\u0069\u0073\u0073\u0069\u006e\u0067");};_dacbb .Width =*_ddcga .Width ;if _ddcga .BitsPerComponent ==nil {switch _ddcga .Filter .(type ){case *_dfg .CCITTFaxEncoder ,*_dfg .JBIG2Encoder :_dacbb .BitsPerComponent =1; case *_dfg .LZWEncoder ,*_dfg .RunLengthEncoder :_dacbb .BitsPerComponent =8;default:return nil ,_bd .New ("\u0062\u0069\u0074\u0073\u0020\u0070\u0065\u0072\u0020\u0063\u006fm\u0070\u006f\u006e\u0065\u006e\u0074\u0020\u006d\u0069\u0073s\u0069\u006e\u0067"); };}else {_dacbb .BitsPerComponent =*_ddcga .BitsPerComponent ;};_dacbb .ColorComponents =_ddcga .ColorSpace .GetNumComponents ();_ddcga ._gfgedd .Set ("\u0043o\u006co\u0072\u0043\u006f\u006d\u0070\u006f\u006e\u0065\u006e\u0074\u0073",_dfg .MakeInteger (int64 (_dacbb .ColorComponents ))); _baade ,_fgfbb :=_dfg .DecodeStream (_ddcga ._gfgedd );if _fgfbb !=nil {return nil ,_fgfbb ;};_dacbb .Data =_baade ;if _ddcga .Decode !=nil {_acee ,_fcgfd :=_ddcga .Decode .(*_dfg .PdfObjectArray );if !_fcgfd {_egb .Log .Debug ("I\u006e\u0076\u0061\u006cid\u0020D\u0065\u0063\u006f\u0064\u0065 \u006f\u0062\u006a\u0065\u0063\u0074"); return nil ,_bd .New ("\u0069\u006e\u0076a\u006c\u0069\u0064\u0020\u0074\u0079\u0070\u0065");};_acgf ,_bcdfe :=_acee .ToFloat64Array ();if _bcdfe !=nil {return nil ,_bcdfe ;};switch _ddcga .ColorSpace .(type ){case *PdfColorspaceDeviceCMYK :_fbaegd :=_ddcga .ColorSpace .DecodeArray (); if _fbaegd [0]==_acgf [0]&&_fbaegd [1]==_acgf [1]&&_fbaegd [2]==_acgf [2]&&_fbaegd [3]==_acgf [3]{_dacbb ._begcc =_acgf ;};default:_dacbb ._begcc =_acgf ;};};return _dacbb ,nil ;};func (_efddf *PdfShading )getShadingDict ()(*_dfg .PdfObjectDictionary ,error ){_afedb :=_efddf ._gdfdg ; if _gbfda ,_bbaa :=_afedb .(*_dfg .PdfIndirectObject );_bbaa {_fgeda ,_deggf :=_gbfda .PdfObject .(*_dfg .PdfObjectDictionary );if !_deggf {return nil ,_dfg .ErrTypeError ;};return _fgeda ,nil ;}else if _gbgbe ,_fgcbe :=_afedb .(*_dfg .PdfObjectStream ); _fgcbe {return _gbgbe .PdfObjectDictionary ,nil ;}else if _cgbafc ,_ggacg :=_afedb .(*_dfg .PdfObjectDictionary );_ggacg {return _cgbafc ,nil ;}else {_egb .Log .Debug ("U\u006e\u0061\u0062\u006c\u0065\u0020t\u006f\u0020\u0061\u0063\u0063\u0065s\u0073\u0020\u0073\u0068\u0061\u0064\u0069n\u0067\u0020\u0064\u0069\u0063\u0074\u0069\u006f\u006e\u0061r\u0079"); return nil ,_dfg .ErrTypeError ;};}; // Set sets the colorspace corresponding to key. Add to Names if not set. func (_aabdef *PdfPageResourcesColorspaces )Set (key _dfg .PdfObjectName ,val PdfColorspace ){if _ ,_efed :=_aabdef .Colorspaces [string (key )];!_efed {_aabdef .Names =append (_aabdef .Names ,string (key ));};_aabdef .Colorspaces [string (key )]=val ; }; // GetPageIndirectObject returns the indirect object of page for the specified page number. func (_acfb *PdfWriter )GetPageIndirectObject (pageNum int )(*_dfg .PdfIndirectObject ,error ){if pageNum < 0||pageNum >=len (_acfb ._cbccc ){return nil ,_bd .New ("\u0070a\u0067\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020\u006fu\u0074\u0020\u006f\u0066\u0020\u0072\u0061\u006e\u0067\u0065"); };return _acfb ._cbccc [pageNum ],nil ;}; // SetPrintPageRange sets the value of the printPageRange. func (_dddf *ViewerPreferences )SetPrintPageRange (printPageRange []int ){_dddf ._gbdfbf =printPageRange ;};func (_agef *PdfColorspaceSpecialIndexed )String ()string {return "\u0049n\u0064\u0065\u0078\u0065\u0064";}; // Inspect inspects the object types, subtypes and content in the PDF file returning a map of // object type to number of instances of each. func (_ecefc *PdfReader )Inspect ()(map[string ]int ,error ){return _ecefc ._agbcd .Inspect ()}; // Duplex returns the value of the duplex. func (_fbacc *ViewerPreferences )Duplex ()Duplex {return _fbacc ._adeg }; // NewPdfAnnotationRichMedia returns a new rich media annotation. func NewPdfAnnotationRichMedia ()*PdfAnnotationRichMedia {_bfe :=NewPdfAnnotation ();_aceb :=&PdfAnnotationRichMedia {};_aceb .PdfAnnotation =_bfe ;_bfe .SetContext (_aceb );return _aceb ;}; // PdfAnnotationSquare represents Square annotations. // (Section 12.5.6.8). type PdfAnnotationSquare struct{*PdfAnnotation ;*PdfAnnotationMarkup ;BS _dfg .PdfObject ;IC _dfg .PdfObject ;BE _dfg .PdfObject ;RD _dfg .PdfObject ;};func _eaade (_cagd *PdfField ,_gfege _dfg .PdfObject )error {switch _cagd .GetContext ().(type ){case *PdfFieldText :switch _aabc :=_gfege .(type ){case *_dfg .PdfObjectName :_eabda :=_aabc ; _egb .Log .Debug ("\u0055\u006e\u0065\u0078\u0070\u0065\u0063\u0074\u0065\u0064\u003a\u0020\u0047\u006f\u0074 \u0056\u0020\u0061\u0073\u0020\u006e\u0061\u006d\u0065\u0020\u002d\u003e\u0020c\u006f\u006e\u0076\u0065\u0072\u0074\u0069\u006e\u0067\u0020\u0074\u006f s\u0074\u0072\u0069\u006e\u0067\u0020\u0027\u0025\u0073\u0027",_eabda .String ()); _cagd .V =_dfg .MakeEncodedString (_aabc .String (),true );case *_dfg .PdfObjectString :_cagd .V =_dfg .MakeEncodedString (_aabc .String (),true );default:_egb .Log .Debug ("\u0045\u0052R\u004f\u0052\u003a\u0020\u0055\u006e\u0073\u0075\u0070\u0070\u006f\u0072\u0074\u0065\u0064\u0020\u0074\u0065\u0078\u0074\u0020\u0066\u0069\u0065\u006c\u0064\u0020\u0056\u0020\u0074\u0079\u0070\u0065\u003a\u0020\u0025\u0054\u0020\u0028\u0025\u0023\u0076\u0029",_aabc ,_aabc ); };case *PdfFieldButton :switch _gfege .(type ){case *_dfg .PdfObjectName :if len (_gfege .String ())> 0{_cagd .V =_gfege ;_fgagc (_cagd ,_gfege );};case *_dfg .PdfObjectString :if len (_gfege .String ())> 0{_cagd .V =_dfg .MakeName (_gfege .String ()); _fgagc (_cagd ,_cagd .V );};default:_egb .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0055\u004e\u0045\u0058P\u0045\u0043\u0054\u0045\u0044\u0020\u0025\u0073\u0020\u002d>\u0020\u0025\u0076",_cagd .PartialName (),_gfege );_cagd .V =_gfege ; };case *PdfFieldChoice :switch _gfege .(type ){case *_dfg .PdfObjectName :if len (_gfege .String ())> 0{_cagd .V =_dfg .MakeString (_gfege .String ());_fgagc (_cagd ,_gfege );};case *_dfg .PdfObjectString :if len (_gfege .String ())> 0{_cagd .V =_gfege ; _fgagc (_cagd ,_dfg .MakeName (_gfege .String ()));};default:_egb .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0055\u004e\u0045\u0058P\u0045\u0043\u0054\u0045\u0044\u0020\u0025\u0073\u0020\u002d>\u0020\u0025\u0076",_cagd .PartialName (),_gfege ); _cagd .V =_gfege ;};case *PdfFieldSignature :_egb .Log .Debug ("\u0054\u004f\u0044\u004f\u003a \u0053\u0069\u0067\u006e\u0061\u0074\u0075\u0072\u0065\u0020\u0061\u0070\u0070e\u0061\u0072\u0061\u006e\u0063\u0065\u0020\u006e\u006f\u0074\u0020\u0073\u0075\u0070\u0070\u006f\u0072\u0074\u0065\u0064\u0020\u0079\u0065\u0074\u003a\u0020\u0025\u0073\u002f\u0025v",_cagd .PartialName (),_gfege ); };return nil ;}; // Encrypt encrypts the output file with a specified user/owner password. func (_dbag *PdfWriter )Encrypt (userPass ,ownerPass []byte ,options *EncryptOptions )error {_bffae :=RC4_128bit ;if options !=nil {_bffae =options .Algorithm ;};_ebefb :=_fc .PermOwner ;if options !=nil {_ebefb =options .Permissions ;};var _abeecg _edb .Filter ; switch _bffae {case RC4_128bit :_abeecg =_edb .NewFilterV2 (16);case AES_128bit :_abeecg =_edb .NewFilterAESV2 ();case AES_256bit :_abeecg =_edb .NewFilterAESV3 ();default:return _d .Errorf ("\u0075n\u0073\u0075\u0070\u0070o\u0072\u0074\u0065\u0064\u0020a\u006cg\u006fr\u0069\u0074\u0068\u006d\u003a\u0020\u0025v",options .Algorithm ); };_eecfa ,_bedff ,_abdgg :=_dfg .PdfCryptNewEncrypt (_abeecg ,userPass ,ownerPass ,_ebefb );if _abdgg !=nil {return _abdgg ;};_dbag ._gbdfc =_eecfa ;if _bedff .Major !=0{_dbag .SetVersion (_bedff .Major ,_bedff .Minor );};_dbag ._ecgcc =_bedff .Encrypt ; _dbag ._baeaee ,_dbag ._dbddd =_bedff .ID0 ,_bedff .ID1 ;_aebgaf :=_dfg .MakeIndirectObject (_bedff .Encrypt );_dbag ._bbbecb =_aebgaf ;_dbag .addObject (_aebgaf );return nil ;};const (BorderEffectNoEffect BorderEffect =iota ;BorderEffectCloudy BorderEffect =iota ; ); // Hasher is the interface that wraps the basic Write method. type Hasher interface{Write (_eeddf []byte )(_eabea int ,_accee error );}; // PdfAnnotationMovie represents Movie annotations. // (Section 12.5.6.17). type PdfAnnotationMovie struct{*PdfAnnotation ;T _dfg .PdfObject ;Movie _dfg .PdfObject ;A _dfg .PdfObject ;}; // SetViewClip sets the value of the viewClip. func (_bdcb *ViewerPreferences )SetViewClip (viewClip PageBoundary ){_bdcb ._cfbeg =viewClip }; // GetContainingPdfObject returns the container of the shading object (indirect object). func (_ggfff *PdfShading )GetContainingPdfObject ()_dfg .PdfObject {return _ggfff ._gdfdg }; // PdfFunction interface represents the common methods of a function in PDF. type PdfFunction interface{Evaluate ([]float64 )([]float64 ,error );ToPdfObject ()_dfg .PdfObject ;};func _ggffb (_faeb _dfg .PdfObject )(*PdfPageResourcesColorspaces ,error ){_gfeee :=&PdfPageResourcesColorspaces {};if _gcebd ,_bfebd :=_faeb .(*_dfg .PdfIndirectObject ); _bfebd {_gfeee ._acbeg =_gcebd ;_faeb =_gcebd .PdfObject ;};_bcfgf ,_fefdc :=_dfg .GetDict (_faeb );if !_fefdc {return nil ,_bd .New ("\u0043\u0053\u0020at\u0074\u0072\u0069\u0062\u0075\u0074\u0065\u0020\u0074\u0079\u0070\u0065\u0020\u0065\u0072\u0072\u006f\u0072"); };_gfeee .Names =[]string {};_gfeee .Colorspaces =map[string ]PdfColorspace {};for _ ,_gbed :=range _bcfgf .Keys (){_dabdb :=_bcfgf .Get (_gbed );_gfeee .Names =append (_gfeee .Names ,string (_gbed ));_cfbbce ,_fcabc :=NewPdfColorspaceFromPdfObject (_dabdb ); if _fcabc !=nil {return nil ,_fcabc ;};_gfeee .Colorspaces [string (_gbed )]=_cfbbce ;};return _gfeee ,nil ;}; // GetPrimitiveFromModel returns the primitive object corresponding to the input `model`. func (_eaaec *modelManager )GetPrimitiveFromModel (model PdfModel )_dfg .PdfObject {_eaaec ._febac .RLock ();defer _eaaec ._febac .RUnlock ();_dfdgc ,_aafda :=_eaaec ._cddd [model ];if !_aafda {return nil ;};return _dfdgc ;};func (_aeca *PdfReader )newPdfAnnotation3DFromDict (_facc *_dfg .PdfObjectDictionary )(*PdfAnnotation3D ,error ){_bdbf :=PdfAnnotation3D {}; _bdbf .T3DD =_facc .Get ("\u0033\u0044\u0044");_bdbf .T3DV =_facc .Get ("\u0033\u0044\u0056");_bdbf .T3DA =_facc .Get ("\u0033\u0044\u0041");_bdbf .T3DI =_facc .Get ("\u0033\u0044\u0049");_bdbf .T3DB =_facc .Get ("\u0033\u0044\u0042");return &_bdbf ,nil ; };func (_gdffb *PdfWriter )copyObject (_affcc _dfg .PdfObject ,_edebb map[_dfg .PdfObject ]_dfg .PdfObject ,_ggcdc map[_dfg .PdfObject ]struct{},_ebaff bool )_dfg .PdfObject {_addcc :=!_gdffb ._cddgg &&_ggcdc !=nil ;if _gccdd ,_cbadc :=_edebb [_affcc ]; _cbadc {if _addcc &&!_ebaff {delete (_ggcdc ,_affcc );};return _gccdd ;};if _affcc ==nil {_aeacbc :=_dfg .MakeNull ();return _aeacbc ;};_bbbfg :=_affcc ;switch _acddb :=_affcc .(type ){case *_dfg .PdfObjectArray :_fbddf :=_dfg .MakeArray ();_bbbfg =_fbddf ; _edebb [_affcc ]=_bbbfg ;for _ ,_efaef :=range _acddb .Elements (){_fbddf .Append (_gdffb .copyObject (_efaef ,_edebb ,_ggcdc ,_ebaff ));};case *_dfg .PdfObjectStreams :_dbdfe :=&_dfg .PdfObjectStreams {PdfObjectReference :_acddb .PdfObjectReference }; _bbbfg =_dbdfe ;_edebb [_affcc ]=_bbbfg ;for _ ,_geacb :=range _acddb .Elements (){_dbdfe .Append (_gdffb .copyObject (_geacb ,_edebb ,_ggcdc ,_ebaff ));};case *_dfg .PdfObjectStream :_ddcde :=&_dfg .PdfObjectStream {Stream :_acddb .Stream ,PdfObjectReference :_acddb .PdfObjectReference ,Lazy :_acddb .Lazy ,TempFile :_acddb .TempFile }; _bbbfg =_ddcde ;_edebb [_affcc ]=_bbbfg ;_ddcde .PdfObjectDictionary =_gdffb .copyObject (_acddb .PdfObjectDictionary ,_edebb ,_ggcdc ,_ebaff ).(*_dfg .PdfObjectDictionary );case *_dfg .PdfObjectDictionary :var _eegag bool ;if _addcc &&!_ebaff {if _acdcd ,_ :=_dfg .GetNameVal (_acddb .Get ("\u0054\u0079\u0070\u0065")); _acdcd =="\u0050\u0061\u0067\u0065"{_ ,_ccge :=_gdffb ._cbcacc [_acddb ];_ebaff =!_ccge ;_eegag =_ebaff ;};};_eabdc :=_dfg .MakeDict ();_bbbfg =_eabdc ;_edebb [_affcc ]=_bbbfg ;for _ ,_dbfg :=range _acddb .Keys (){_eabdc .Set (_dbfg ,_gdffb .copyObject (_acddb .Get (_dbfg ),_edebb ,_ggcdc ,_ebaff )); };if _eegag {_bbbfg =_dfg .MakeNull ();_ebaff =false ;};case *_dfg .PdfIndirectObject :_afedc :=&_dfg .PdfIndirectObject {PdfObjectReference :_acddb .PdfObjectReference };_bbbfg =_afedc ;_edebb [_affcc ]=_bbbfg ;_afedc .PdfObject =_gdffb .copyObject (_acddb .PdfObject ,_edebb ,_ggcdc ,_ebaff ); case *_dfg .PdfObjectString :_aeccee :=*_acddb ;_bbbfg =&_aeccee ;_edebb [_affcc ]=_bbbfg ;case *_dfg .PdfObjectName :_cdeb :=*_acddb ;_bbbfg =&_cdeb ;_edebb [_affcc ]=_bbbfg ;case *_dfg .PdfObjectNull :_bbbfg =_dfg .MakeNull ();_edebb [_affcc ]=_bbbfg ; case *_dfg .PdfObjectInteger :_aggge :=*_acddb ;_bbbfg =&_aggge ;_edebb [_affcc ]=_bbbfg ;case *_dfg .PdfObjectReference :_gdabc :=*_acddb ;_bbbfg =&_gdabc ;_edebb [_affcc ]=_bbbfg ;case *_dfg .PdfObjectFloat :_cgfeb :=*_acddb ;_bbbfg =&_cgfeb ;_edebb [_affcc ]=_bbbfg ; case *_dfg .PdfObjectBool :_gfdea :=*_acddb ;_bbbfg =&_gfdea ;_edebb [_affcc ]=_bbbfg ;case *pdfSignDictionary :_ebecebd :=&pdfSignDictionary {PdfObjectDictionary :_dfg .MakeDict (),_adfa :_acddb ._adfa ,_abfbg :_acddb ._abfbg };_bbbfg =_ebecebd ;_edebb [_affcc ]=_bbbfg ; for _ ,_beaba :=range _acddb .Keys (){_ebecebd .Set (_beaba ,_gdffb .copyObject (_acddb .Get (_beaba ),_edebb ,_ggcdc ,_ebaff ));};default:_egb .Log .Info ("\u0054\u004f\u0044\u004f\u0028\u0061\u0035\u0069\u0029\u003a\u0020\u0069\u006dp\u006c\u0065\u006d\u0065\u006e\u0074 \u0063\u006f\u0070\u0079\u004f\u0062\u006a\u0065\u0063\u0074\u0020\u0066\u006fr\u0020\u0025\u002b\u0076",_affcc ); };if _addcc &&_ebaff {_ggcdc [_affcc ]=struct{}{};};return _bbbfg ;}; // NewPdfActionGoToE returns a new "go to embedded" action. func NewPdfActionGoToE ()*PdfActionGoToE {_ccb :=NewPdfAction ();_aa :=&PdfActionGoToE {};_aa .PdfAction =_ccb ;_ccb .SetContext (_aa );return _aa ;};func _bebg (_gbcag []byte )[]byte {const _bdeag =52845;const _dbafc =22719;_defaa :=55665;for _ ,_caad :=range _gbcag [:4]{_defaa =(int (_caad )+_defaa )*_bdeag +_dbafc ; };_bfged :=make ([]byte ,len (_gbcag )-4);for _beaga ,_ccgg :=range _gbcag [4:]{_bfged [_beaga ]=byte (int (_ccgg )^_defaa >>8);_defaa =(int (_ccgg )+_defaa )*_bdeag +_dbafc ;};return _bfged ;}; // ToPdfObject returns the PDF representation of the pattern. func (_ebdee *PdfPattern )ToPdfObject ()_dfg .PdfObject {_deead :=_ebdee .getDict ();_deead .Set ("\u0054\u0079\u0070\u0065",_dfg .MakeName ("\u0050a\u0074\u0074\u0065\u0072\u006e"));_deead .Set ("P\u0061\u0074\u0074\u0065\u0072\u006e\u0054\u0079\u0070\u0065",_dfg .MakeInteger (_ebdee .PatternType )); return _ebdee ._adcec ;}; // NewCustomPdfOutputIntent creates a new custom PdfOutputIntent. func NewCustomPdfOutputIntent (outputCondition ,outputConditionIdentifier ,info string ,destOutputProfile []byte ,colorComponents int )*PdfOutputIntent {return &PdfOutputIntent {Type :"\u004f\u0075\u0074p\u0075\u0074\u0049\u006e\u0074\u0065\u006e\u0074",OutputCondition :outputCondition ,OutputConditionIdentifier :outputConditionIdentifier ,Info :info ,DestOutputProfile :destOutputProfile ,_gacff :_dfg .MakeDict (),ColorComponents :colorComponents }; };func _daad (_edcd _dfg .PdfObject )(*PdfColorspaceDeviceN ,error ){_cbgdef :=NewPdfColorspaceDeviceN ();if _aecc ,_gdea :=_edcd .(*_dfg .PdfIndirectObject );_gdea {_cbgdef ._fbae =_aecc ;};_edcd =_dfg .TraceToDirectObject (_edcd );_afdcf ,_afce :=_edcd .(*_dfg .PdfObjectArray ); if !_afce {return nil ,_d .Errorf ("\u0064\u0065\u0076\u0069\u0063\u0065\u004e\u0020\u0043\u0053\u003a \u0049\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u006f\u0062j\u0065\u0063\u0074");};if _afdcf .Len ()!=4&&_afdcf .Len ()!=5{return nil ,_d .Errorf ("\u0064\u0065\u0076ic\u0065\u004e\u0020\u0043\u0053\u003a\u0020\u0049\u006ec\u006fr\u0072e\u0063t\u0020\u0061\u0072\u0072\u0061\u0079\u0020\u006c\u0065\u006e\u0067\u0074\u0068"); };_edcd =_afdcf .Get (0);_aecad ,_afce :=_edcd .(*_dfg .PdfObjectName );if !_afce {return nil ,_d .Errorf ("\u0064\u0065\u0076i\u0063\u0065\u004e\u0020C\u0053\u003a\u0020\u0069\u006e\u0076\u0061l\u0069\u0064\u0020\u0066\u0061\u006d\u0069\u006c\u0079\u0020\u006e\u0061\u006d\u0065"); };if *_aecad !="\u0044e\u0076\u0069\u0063\u0065\u004e"{return nil ,_d .Errorf ("\u0064\u0065v\u0069\u0063\u0065\u004e\u0020\u0043\u0053\u003a\u0020\u0077\u0072\u006f\u006e\u0067\u0020\u0066\u0061\u006d\u0069\u006c\u0079\u0020na\u006d\u0065");};_edcd =_afdcf .Get (1); _edcd =_dfg .TraceToDirectObject (_edcd );_eaed ,_afce :=_edcd .(*_dfg .PdfObjectArray );if !_afce {return nil ,_d .Errorf ("\u0064\u0065\u0076i\u0063\u0065\u004e\u0020C\u0053\u003a\u0020\u0049\u006e\u0076\u0061l\u0069\u0064\u0020\u006e\u0061\u006d\u0065\u0073\u0020\u0061\u0072\u0072\u0061\u0079"); };_cbgdef .ColorantNames =_eaed ;_edcd =_afdcf .Get (2);_bfgc ,_edacb :=NewPdfColorspaceFromPdfObject (_edcd );if _edacb !=nil {return nil ,_edacb ;};_cbgdef .AlternateSpace =_bfgc ;_baacd ,_edacb :=_gbada (_afdcf .Get (3));if _edacb !=nil {return nil ,_edacb ; };_cbgdef .TintTransform =_baacd ;if _afdcf .Len ()==5{_bccc ,_bbgag :=_cgdf (_afdcf .Get (4));if _bbgag !=nil {return nil ,_bbgag ;};_cbgdef .Attributes =_bccc ;};return _cbgdef ,nil ;}; // NewPdfPageResources returns a new PdfPageResources object. func NewPdfPageResources ()*PdfPageResources {_afdad :=&PdfPageResources {};_afdad ._gffaff =_dfg .MakeDict ();return _afdad ;}; // SetPdfTitle sets the Title attribute of the output PDF. func SetPdfTitle (title string ){_dfbaa .Lock ();defer _dfbaa .Unlock ();_geccfa =title }; // PdfColorDeviceGray represents a grayscale color value that shall be represented by a single number in the // range 0.0 to 1.0 where 0.0 corresponds to black and 1.0 to white. type PdfColorDeviceGray float64 ;func (_bada *PdfWriter )writeTrailer (_efeeeg int ){_bada .writeString ("\u0078\u0072\u0065\u0066\u000d\u000a");for _edgbfg :=0;_edgbfg <=_efeeeg ;{for ;_edgbfg <=_efeeeg ;_edgbfg ++{_cgebd ,_gfgec :=_bada ._effg [_edgbfg ]; if _gfgec &&(!_bada ._cddgg ||_bada ._cddgg &&(_cgebd .Type ==1&&_cgebd .Offset >=_bada ._fgedaa ||_cgebd .Type ==0)){break ;};};var _bcafcg int ;for _bcafcg =_edgbfg +1;_bcafcg <=_efeeeg ;_bcafcg ++{_gafgg ,_edaff :=_bada ._effg [_bcafcg ];if _edaff &&(!_bada ._cddgg ||_bada ._cddgg &&(_gafgg .Type ==1&&_gafgg .Offset > _bada ._fgedaa )){continue ; };break ;};_adcc :=_d .Sprintf ("\u0025d\u0020\u0025\u0064\u000d\u000a",_edgbfg ,_bcafcg -_edgbfg );_bada .writeString (_adcc );for _cfeg :=_edgbfg ;_cfeg < _bcafcg ;_cfeg ++{_eeefa :=_bada ._effg [_cfeg ];switch _eeefa .Type {case 0:_adcc =_d .Sprintf ("\u0025\u002e\u0031\u0030\u0064\u0020\u0025\u002e\u0035d\u0020\u0066\u000d\u000a",0,65535); _bada .writeString (_adcc );case 1:_adcc =_d .Sprintf ("\u0025\u002e\u0031\u0030\u0064\u0020\u0025\u002e\u0035d\u0020\u006e\u000d\u000a",_eeefa .Offset ,0);_bada .writeString (_adcc );};};_edgbfg =_bcafcg +1;};_bffde :=_dfg .MakeDict ();_bffde .Set ("\u0049\u006e\u0066\u006f",_bada ._acace ); _bffde .Set ("\u0052\u006f\u006f\u0074",_bada ._cbfagb );_bffde .Set ("\u0053\u0069\u007a\u0065",_dfg .MakeInteger (int64 (_efeeeg +1)));if _bada ._cddgg &&_bada ._baeag > 0{_bffde .Set ("\u0050\u0072\u0065\u0076",_dfg .MakeInteger (_bada ._baeag ));}; if _bada ._gbdfc !=nil {_bffde .Set ("\u0045n\u0063\u0072\u0079\u0070\u0074",_bada ._bbbecb );};if _bada ._beccf ==nil &&_bada ._baeaee !=""&&_bada ._dbddd !=""{_bada ._beccf =_dfg .MakeArray (_dfg .MakeHexString (_bada ._baeaee ),_dfg .MakeHexString (_bada ._dbddd )); };if _bada ._beccf !=nil {_bffde .Set ("\u0049\u0044",_bada ._beccf );_egb .Log .Trace ("\u0049d\u0073\u003a\u0020\u0025\u0073",_bada ._beccf );};_bada .writeString ("\u0074\u0072\u0061\u0069\u006c\u0065\u0072\u000a");_bada .writeBytes (_bffde .Write ()); _bada .writeString ("\u000a");}; // ReaderOpts defines options for creating PdfReader instances. type ReaderOpts struct{ // Password password of the PDF file encryption. // Default: empty (""). Password string ; // LazyLoad set if the PDF file would be loaded using lazy-loading mode. // Default: true. LazyLoad bool ; // ComplianceMode set if parsed PDF file should contain meta information for the verifiers of the compliance standards like PDF/A. ComplianceMode bool ; // RelaxedMode indicates whether the parser should operate in a relaxed mode, ignoring certain insignificant errors and continuing to parse the PDF file. // For example, it skips AcroForm loading errors and proceeds with the rest of the file if no form-related processing is required. RelaxedMode bool ;}; // ToPdfObject implements interface PdfModel. func (_fa *PdfActionGoToE )ToPdfObject ()_dfg .PdfObject {_fa .PdfAction .ToPdfObject ();_efgg :=_fa ._fe ;_geb :=_efgg .PdfObject .(*_dfg .PdfObjectDictionary );_geb .SetIfNotNil ("\u0053",_dfg .MakeName (string (ActionTypeGoToE )));if _fa .F !=nil {_geb .Set ("\u0046",_fa .F .ToPdfObject ()); };_geb .SetIfNotNil ("\u0044",_fa .D );_geb .SetIfNotNil ("\u004ee\u0077\u0057\u0069\u006e\u0064\u006fw",_fa .NewWindow );_geb .SetIfNotNil ("\u0054",_fa .T );return _efgg ;}; // Flags returns the field flags for the field accounting for any inherited flags. func (_ecgac *PdfField )Flags ()FieldFlag {var _aacf FieldFlag ;_ccfbb ,_abdg :=_ecgac .inherit (func (_egde *PdfField )bool {if _egde .Ff !=nil {_aacf =FieldFlag (*_egde .Ff );return true ;};return false ;});if _abdg !=nil {_egb .Log .Debug ("\u0045\u0072\u0072o\u0072\u0020\u0065\u0076\u0061\u006c\u0075\u0061\u0074\u0069\u006e\u0067\u0020\u0066\u006c\u0061\u0067\u0073\u0020\u0076\u0069\u0061\u0020\u0069\u006e\u0068\u0065\u0072\u0069t\u0061\u006e\u0063\u0065\u003a\u0020\u0025\u0076",_abdg ); };if !_ccfbb {_egb .Log .Trace ("N\u006f\u0020\u0066\u0069\u0065\u006cd\u0020\u0066\u006c\u0061\u0067\u0073 \u0066\u006f\u0075\u006e\u0064\u0020\u002d \u0061\u0073\u0073\u0075\u006d\u0065\u0020\u0063\u006c\u0065a\u0072");};return _aacf ;}; // Insert adds an outline item as a child of the current outline item, // at the specified index. func (_eeffd *OutlineItem )Insert (index uint ,item *OutlineItem ){_fbfcgd :=uint (len (_eeffd .Entries ));if index > _fbfcgd {index =_fbfcgd ;};_eeffd .Entries =append (_eeffd .Entries [:index ],append ([]*OutlineItem {item },_eeffd .Entries [index :]...)...); };func _aacg (_degac *_dfg .PdfObjectDictionary )(*PdfShadingType3 ,error ){_eefe :=PdfShadingType3 {};_aegfg :=_degac .Get ("\u0043\u006f\u006f\u0072\u0064\u0073");if _aegfg ==nil {_egb .Log .Debug ("\u0052\u0065\u0071ui\u0072\u0065\u0064\u0020\u0061\u0074\u0074\u0072\u0069b\u0075t\u0065 \u006di\u0073\u0073\u0069\u006e\u0067\u003a\u0020\u0043\u006f\u006f\u0072\u0064\u0073"); return nil ,ErrRequiredAttributeMissing ;};_eedg ,_ffeec :=_aegfg .(*_dfg .PdfObjectArray );if !_ffeec {_egb .Log .Debug ("\u0043\u006f\u006f\u0072d\u0073\u0020\u006e\u006f\u0074\u0020\u0061\u006e\u0020\u0061r\u0072a\u0079\u0020\u0028\u0067\u006f\u0074\u0020%\u0054\u0029",_aegfg ); return nil ,_dfg .ErrTypeError ;};if _eedg .Len ()!=6{_egb .Log .Debug ("\u0043\u006f\u006f\u0072d\u0073\u0020\u006c\u0065\u006e\u0067\u0074\u0068\u0020\u006eo\u0074 \u0036\u0020\u0028\u0067\u006f\u0074\u0020%\u0064\u0029",_eedg .Len ());return nil ,ErrInvalidAttribute ; };_eefe .Coords =_eedg ;if _bcbdb :=_degac .Get ("\u0044\u006f\u006d\u0061\u0069\u006e");_bcbdb !=nil {_bcbdb =_dfg .TraceToDirectObject (_bcbdb );_bfgba ,_bfcdc :=_bcbdb .(*_dfg .PdfObjectArray );if !_bfcdc {_egb .Log .Debug ("\u0044\u006f\u006d\u0061i\u006e\u0020\u006e\u006f\u0074\u0020\u0061\u006e\u0020\u0061r\u0072a\u0079\u0020\u0028\u0067\u006f\u0074\u0020%\u0054\u0029",_bcbdb ); return nil ,_dfg .ErrTypeError ;};_eefe .Domain =_bfgba ;};_aegfg =_degac .Get ("\u0046\u0075\u006e\u0063\u0074\u0069\u006f\u006e");if _aegfg ==nil {_egb .Log .Debug ("\u0052\u0065q\u0075\u0069\u0072\u0065d\u0020\u0061t\u0074\u0072\u0069\u0062\u0075\u0074\u0065\u0020m\u0069\u0073\u0073\u0069\u006e\u0067\u003a\u0020\u0020\u0046\u0075\u006ec\u0074\u0069\u006f\u006e"); return nil ,ErrRequiredAttributeMissing ;};_eefe .Function =[]PdfFunction {};if _ffaec ,_cbgg :=_aegfg .(*_dfg .PdfObjectArray );_cbgg {for _ ,_ccbbf :=range _ffaec .Elements (){_fagbdg ,_agaga :=_gbada (_ccbbf );if _agaga !=nil {_egb .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0070\u0061\u0072\u0073\u0069n\u0067\u0020\u0066\u0075\u006e\u0063\u0074\u0069\u006f\u006e:\u0020\u0025\u0076",_agaga ); return nil ,_agaga ;};_eefe .Function =append (_eefe .Function ,_fagbdg );};}else {_adeef ,_bgbgd :=_gbada (_aegfg );if _bgbgd !=nil {_egb .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0070\u0061\u0072\u0073\u0069n\u0067\u0020\u0066\u0075\u006e\u0063\u0074\u0069\u006f\u006e:\u0020\u0025\u0076",_bgbgd ); return nil ,_bgbgd ;};_eefe .Function =append (_eefe .Function ,_adeef );};if _egdcb :=_degac .Get ("\u0045\u0078\u0074\u0065\u006e\u0064");_egdcb !=nil {_egdcb =_dfg .TraceToDirectObject (_egdcb );_dffgeb ,_bbgcac :=_egdcb .(*_dfg .PdfObjectArray );if !_bbgcac {_egb .Log .Debug ("\u004d\u0061\u0074\u0072i\u0078\u0020\u006e\u006f\u0074\u0020\u0061\u006e\u0020\u0061r\u0072a\u0079\u0020\u0028\u0067\u006f\u0074\u0020%\u0054\u0029",_egdcb ); return nil ,_dfg .ErrTypeError ;};if _dffgeb .Len ()!=2{_egb .Log .Debug ("\u0045\u0078\u0074\u0065n\u0064\u0020\u006c\u0065\u006e\u0067\u0074\u0068\u0020\u006eo\u0074 \u0032\u0020\u0028\u0067\u006f\u0074\u0020%\u0064\u0029",_dffgeb .Len ());return nil ,ErrInvalidAttribute ; };_eefe .Extend =_dffgeb ;};return &_eefe ,nil ;}; // PdfShadingType2 is an Axial shading. type PdfShadingType2 struct{*PdfShading ;Coords *_dfg .PdfObjectArray ;Domain *_dfg .PdfObjectArray ;Function []PdfFunction ;Extend *_dfg .PdfObjectArray ;};func _adbgf (_dgaee *PdfField )[]*PdfField {_ggggf :=[]*PdfField {_dgaee };for _ ,_gdfg :=range _dgaee .Kids {_ggggf =append (_ggggf ,_adbgf (_gdfg )...); };return _ggggf ;}; // PdfShadingPatternType2 is shading patterns that will use a Type 2 shading pattern (Axial). type PdfShadingPatternType2 struct{*PdfPattern ;Shading *PdfShadingType2 ;Matrix *_dfg .PdfObjectArray ;ExtGState _dfg .PdfObject ;}; // ColorFromFloats returns a new PdfColor based on the input slice of color // components. The slice should contain a single element. func (_ggbda *PdfColorspaceSpecialSeparation )ColorFromFloats (vals []float64 )(PdfColor ,error ){if len (vals )!=1{return nil ,_bd .New ("r\u0061\u006e\u0067\u0065\u0020\u0063\u0068\u0065\u0063\u006b");};_gdeb :=vals [0];_dgae :=[]float64 {_gdeb };_ddbcc ,_ecceg :=_ggbda .TintTransform .Evaluate (_dgae ); if _ecceg !=nil {_egb .Log .Debug ("\u0045\u0072r\u006f\u0072\u002c\u0020\u0066\u0061\u0069\u006c\u0065\u0064\u0020\u0074\u006f\u0020\u0065\u0076\u0061\u006c\u0075\u0061\u0074\u0065: \u0025\u0076",_ecceg );_egb .Log .Trace ("\u0054\u0069\u006e\u0074 t\u0072\u0061\u006e\u0073\u0066\u006f\u0072\u006d\u003a\u0020\u0025\u002b\u0076",_ggbda .TintTransform ); return nil ,_ecceg ;};_egb .Log .Trace ("\u0050\u0072\u006f\u0063\u0065\u0073\u0073\u0069\u006e\u0067\u0020\u0043\u006f\u006c\u006fr\u0046\u0072\u006f\u006d\u0046\u006c\u006f\u0061\u0074\u0073\u0028\u0025\u002bv\u0029\u0020\u006f\u006e\u0020\u0041\u006c\u0074\u0065\u0072\u006e\u0061te\u0053\u0070\u0061\u0063\u0065\u003a\u0020\u0025\u0023\u0076",_ddbcc ,_ggbda .AlternateSpace ); _geab ,_ecceg :=_ggbda .AlternateSpace .ColorFromFloats (_ddbcc );if _ecceg !=nil {_egb .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u002c\u0020\u0066a\u0069\u006c\u0065d \u0074\u006f\u0020\u0065\u0076\u0061l\u0075\u0061\u0074\u0065\u0020\u0069\u006e\u0020\u0061\u006c\u0074\u0065\u0072\u006e\u0061t\u0065\u0020\u0073\u0070\u0061\u0063\u0065\u003a \u0025\u0076",_ecceg ); return nil ,_ecceg ;};return _geab ,nil ;};func _cebfb ()*modelManager {_fbbf :=modelManager {};_fbbf ._cddd =map[PdfModel ]_dfg .PdfObject {};_fbbf ._gdcgg =map[_dfg .PdfObject ]PdfModel {};_fbbf ._febac =_b .RWMutex {};_fbbf ._feeaf =_b .RWMutex {};return &_fbbf ; };func (_ddbcf *PdfWriter )mapObjectStreams (_cceba bool )(map[_dfg .PdfObject ]bool ,bool ){_cafdb :=make (map[_dfg .PdfObject ]bool );for _ ,_bbgcb :=range _ddbcf ._abcef {if _ebbgc ,_gdfbf :=_bbgcb .(*_dfg .PdfObjectStreams );_gdfbf {_cceba =true ;for _ ,_dcdce :=range _ebbgc .Elements (){_cafdb [_dcdce ]=true ; if _cgcgc ,_gaefb :=_dcdce .(*_dfg .PdfIndirectObject );_gaefb {_cafdb [_cgcgc .PdfObject ]=true ;};};};};return _cafdb ,_cceba ;}; // CustomKeys returns all custom info keys as list. func (_bfbed *PdfInfo )CustomKeys ()[]string {if _bfbed ._gdaaeb ==nil {return nil ;};_fdafg :=make ([]string ,len (_bfbed ._gdaaeb .Keys ()));for _ ,_decde :=range _bfbed ._gdaaeb .Keys (){_fdafg =append (_fdafg ,_decde .String ());};return _fdafg ;}; // Register registers (caches) a model to primitive object relationship. func (_defdfg *modelManager )Register (primitive _dfg .PdfObject ,model PdfModel ){_defdfg ._febac .Lock ();defer _defdfg ._febac .Unlock ();_defdfg ._feeaf .Lock ();defer _defdfg ._feeaf .Unlock ();_defdfg ._cddd [model ]=primitive ;_defdfg ._gdcgg [primitive ]=model ; };func _cgdf (_egcc _dfg .PdfObject )(*PdfColorspaceDeviceNAttributes ,error ){_gcgd :=&PdfColorspaceDeviceNAttributes {};var _gebdc *_dfg .PdfObjectDictionary ;switch _cafc :=_egcc .(type ){case *_dfg .PdfIndirectObject :_gcgd ._bfddg =_cafc ;var _fdbg bool ; _gebdc ,_fdbg =_cafc .PdfObject .(*_dfg .PdfObjectDictionary );if !_fdbg {_egb .Log .Error ("\u0044\u0065\u0076\u0069c\u0065\u004e\u0020\u0061\u0074\u0074\u0072\u0069\u0062\u0075t\u0065 \u0074\u0079\u0070\u0065\u0020\u0065\u0072r\u006f\u0072");return nil ,_bd .New ("\u0074\u0079\u0070\u0065\u0020\u0065\u0072\u0072\u006f\u0072"); };case *_dfg .PdfObjectDictionary :_gebdc =_cafc ;case *_dfg .PdfObjectReference :_agbag :=_cafc .Resolve ();return _cgdf (_agbag );default:_egb .Log .Error ("\u0044\u0065\u0076\u0069c\u0065\u004e\u0020\u0061\u0074\u0074\u0072\u0069\u0062\u0075t\u0065 \u0074\u0079\u0070\u0065\u0020\u0065\u0072r\u006f\u0072"); return nil ,_bd .New ("\u0074\u0079\u0070\u0065\u0020\u0065\u0072\u0072\u006f\u0072");};if _dbaa :=_gebdc .Get ("\u0053u\u0062\u0074\u0079\u0070\u0065");_dbaa !=nil {_efbc ,_cabef :=_dfg .TraceToDirectObject (_dbaa ).(*_dfg .PdfObjectName );if !_cabef {_egb .Log .Error ("\u0044\u0065vi\u0063\u0065\u004e \u0061\u0074\u0074\u0072ibu\u0074e \u0053\u0075\u0062\u0074\u0079\u0070\u0065 t\u0079\u0070\u0065\u0020\u0065\u0072\u0072o\u0072"); return nil ,_bd .New ("\u0074\u0079\u0070\u0065\u0020\u0065\u0072\u0072\u006f\u0072");};_gcgd .Subtype =_efbc ;};if _beba :=_gebdc .Get ("\u0043o\u006c\u006f\u0072\u0061\u006e\u0074s");_beba !=nil {_gcgd .Colorants =_beba ;};if _eggg :=_gebdc .Get ("\u0050r\u006f\u0063\u0065\u0073\u0073"); _eggg !=nil {_gcgd .Process =_eggg ;};if _geca :=_gebdc .Get ("M\u0069\u0078\u0069\u006e\u0067\u0048\u0069\u006e\u0074\u0073");_geca !=nil {_gcgd .MixingHints =_geca ;};return _gcgd ,nil ;}; // GetFillImage get attached model.Image in push button. func (_bafd *PdfFieldButton )GetFillImage ()*Image {if _bafd .IsPush (){return _bafd ._geade ;};return nil ;}; // DecodeArray returns the range of color component values in DeviceRGB colorspace. func (_ebad *PdfColorspaceDeviceRGB )DecodeArray ()[]float64 {return []float64 {0.0,1.0,0.0,1.0,0.0,1.0};}; // NewPdfAnnotationPopup returns a new popup annotation. func NewPdfAnnotationPopup ()*PdfAnnotationPopup {_acef :=NewPdfAnnotation ();_fgd :=&PdfAnnotationPopup {};_fgd .PdfAnnotation =_acef ;_acef .SetContext (_fgd );return _fgd ;}; // GetXObjectImageByName returns the XObjectImage with the specified name from the // page resources, if it exists. func (_defce *PdfPageResources )GetXObjectImageByName (keyName _dfg .PdfObjectName )(*XObjectImage ,error ){_gcdca ,_eadffb :=_defce .GetXObjectByName (keyName );if _gcdca ==nil {return nil ,nil ;};if _eadffb !=XObjectTypeImage {return nil ,_bd .New ("\u006e\u006f\u0074 \u0061\u006e\u0020\u0069\u006d\u0061\u0067\u0065"); };_aeabc ,_fegcb :=NewXObjectImageFromStream (_gcdca );if _fegcb !=nil {return nil ,_fegcb ;};return _aeabc ,nil ;}; // GetRuneMetrics returns the character metrics for the specified rune. // A bool flag is returned to indicate whether or not the entry was found. func (_bfcgc pdfFontType0 )GetRuneMetrics (r rune )(_bf .CharMetrics ,bool ){if _bfcgc .DescendantFont ==nil {_egb .Log .Debug ("\u0045\u0052R\u004f\u0052\u003a\u0020\u004e\u006f\u0020\u0064\u0065\u0073\u0063\u0065\u006e\u0064\u0061\u006e\u0074\u002e\u0020\u0066\u006f\u006et=\u0025\u0073",_bfcgc ); return _bf .CharMetrics {},false ;};return _bfcgc .DescendantFont .GetRuneMetrics (r );}; // SetHideToolbar sets the value of the hideToolbar flag. func (_cdadg *ViewerPreferences )SetHideToolbar (hideToolbar bool ){_cdadg ._dcdcg =&hideToolbar }; // FlattenFieldsWithOpts flattens the AcroForm fields of the reader using the // provided field appearance generator and the specified options. If no options // are specified, all form fields are flattened. // If a filter function is provided using the opts parameter, only the filtered // fields are flattened. Otherwise, all form fields are flattened. // At the end of the process, the AcroForm contains all the fields which were // not flattened. If all fields are flattened, the reader's AcroForm field // is set to nil. func (_faaba *PdfReader )FlattenFieldsWithOpts (appgen FieldAppearanceGenerator ,opts *FieldFlattenOpts )error {return _faaba .flattenFieldsWithOpts (false ,appgen ,opts );};func (_fbbeef *PdfWriter )setCatalogVersion (){_fbbeef ._acgcc .Set ("\u0056e\u0072\u0073\u0069\u006f\u006e",_dfg .MakeName (_d .Sprintf ("\u0025\u0064\u002e%\u0064",_fbbeef ._cfbcb .Major ,_fbbeef ._cfbcb .Minor ))); };func (_fcce *PdfReader )newPdfActionMovieFromDict (_dcgd *_dfg .PdfObjectDictionary )(*PdfActionMovie ,error ){return &PdfActionMovie {Annotation :_dcgd .Get ("\u0041\u006e\u006e\u006f\u0074\u0061\u0074\u0069\u006f\u006e"),T :_dcgd .Get ("\u0054"),Operation :_dcgd .Get ("\u004fp\u0065\u0072\u0061\u0074\u0069\u006fn")},nil ; };func _cead ()string {_dfbaa .Lock ();defer _dfbaa .Unlock ();if len (_gecfb )> 0{return _gecfb ;};return "\u0055n\u0069\u0044\u006f\u0063 \u002d\u0020\u0068\u0074\u0074p\u003a/\u002fu\u006e\u0069\u0064\u006f\u0063\u002e\u0069o";};func (_ebgd *fontFile )parseASCIIPart (_ffae []byte )error {if len (_ffae )< 2||string (_ffae [:2])!="\u0025\u0021"{return _bd .New ("\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0073\u0074a\u0072\u0074\u0020\u006f\u0066\u0020\u0041S\u0043\u0049\u0049\u0020\u0073\u0065\u0067\u006d\u0065\u006e\u0074"); };_dcfb ,_dgdgf ,_dbdea :=_ecedbf (_ffae );if _dbdea !=nil {return _dbdea ;};_agff :=_gggbc (_dcfb );_ebgd ._agcb =_agff ["\u0046\u006f\u006e\u0074\u004e\u0061\u006d\u0065"];if _ebgd ._agcb ==""{_egb .Log .Debug ("\u0020\u0046\u006f\u006e\u0074\u0046\u0069\u006c\u0065\u0020\u0068a\u0073\u0020\u006e\u006f\u0020\u002f\u0046\u006f\u006e\u0074N\u0061\u006d\u0065"); };if _dgdgf !=""{_egef ,_efabb :=_bbfgg (_dgdgf );if _efabb !=nil {return _efabb ;};_fgfb ,_efabb :=_ff .NewCustomSimpleTextEncoder (_egef ,nil );if _efabb !=nil {_egb .Log .Debug ("\u0045\u0052\u0052\u004fR\u0020\u003a\u0055\u004e\u004b\u004e\u004f\u0057\u004e\u0020G\u004cY\u0050\u0048\u003a\u0020\u0065\u0072\u0072=\u0025\u0076",_efabb ); return nil ;};_ebgd ._adbgd =_fgfb ;};return nil ;}; // PickTrayByPDFSize returns the value of the pickTrayByPDFSize flag. func (_ffabff *ViewerPreferences )PickTrayByPDFSize ()bool {if _ffabff ._cdgcd ==nil {return false ;};return *_ffabff ._cdgcd ;}; // PdfActionNamed represents a named action. type PdfActionNamed struct{*PdfAction ;N _dfg .PdfObject ;};func _dddea (_dbaeb _dfg .PdfObject )(*PdfColorspaceSpecialIndexed ,error ){_baab :=NewPdfColorspaceSpecialIndexed ();if _cbcae ,_gbgea :=_dbaeb .(*_dfg .PdfIndirectObject );_gbgea {_baab ._dda =_cbcae ; };_dbaeb =_dfg .TraceToDirectObject (_dbaeb );_bggcg ,_dadgc :=_dbaeb .(*_dfg .PdfObjectArray );if !_dadgc {return nil ,_d .Errorf ("\u0074\u0079\u0070\u0065\u0020\u0065\u0072\u0072\u006f\u0072");};if _bggcg .Len ()!=4{return nil ,_d .Errorf ("\u0069\u006e\u0064\u0065\u0078\u0065\u0064\u0020\u0043\u0053\u003a\u0020\u0069\u006e\u0076a\u006ci\u0064\u0020\u0061\u0072\u0072\u0061\u0079\u0020\u006c\u0065\u006e\u0067\u0074\u0068"); };_dbaeb =_bggcg .Get (0);_fdaf ,_dadgc :=_dbaeb .(*_dfg .PdfObjectName );if !_dadgc {return nil ,_d .Errorf ("\u0069n\u0064\u0065\u0078\u0065\u0064\u0020\u0043\u0053\u003a\u0020\u0069n\u0076\u0061\u006c\u0069\u0064\u0020\u006e\u0061\u006d\u0065");};if *_fdaf !="\u0049n\u0064\u0065\u0078\u0065\u0064"{return nil ,_d .Errorf ("\u0069\u006e\u0064\u0065xe\u0064\u0020\u0043\u0053\u003a\u0020\u0077\u0072\u006f\u006e\u0067\u0020\u006e\u0061m\u0065"); };_dbaeb =_bggcg .Get (1);_dcea ,_dfca :=DetermineColorspaceNameFromPdfObject (_dbaeb );if _dfca !=nil {return nil ,_dfca ;};if _dcea =="\u0049n\u0064\u0065\u0078\u0065\u0064"||_dcea =="\u0050a\u0074\u0074\u0065\u0072\u006e"{_egb .Log .Debug ("E\u0072\u0072o\u0072\u003a\u0020\u0049\u006e\u0064\u0065\u0078\u0065\u0064\u0020\u0063\u006f\u006c\u006f\u0072\u0073\u0070\u0061\u0063e\u0020\u0063\u0061\u006e\u006e\u006f\u0074\u0020\u0068\u0061\u0076\u0065\u0020\u0049\u006e\u0064e\u0078\u0065\u0064\u002f\u0050\u0061\u0074\u0074\u0065\u0072\u006e\u0020\u0043S\u0020\u0061\u0073\u0020\u0062\u0061\u0073\u0065\u0020\u0028\u0025v\u0029",_dcea ); return nil ,_ceeeb ;};_afbge ,_dfca :=NewPdfColorspaceFromPdfObject (_dbaeb );if _dfca !=nil {return nil ,_dfca ;};_baab .Base =_afbge ;_dbaeb =_bggcg .Get (2);_dcdb ,_dfca :=_dfg .GetNumberAsInt64 (_dbaeb );if _dfca !=nil {return nil ,_dfca ;};if _dcdb > 255{return nil ,_d .Errorf ("\u0069n\u0064\u0065\u0078\u0065d\u0020\u0043\u0053\u003a\u0020I\u006ev\u0061l\u0069\u0064\u0020\u0068\u0069\u0076\u0061l"); };_baab .HiVal =int (_dcdb );_dbaeb =_bggcg .Get (3);_baab .Lookup =_dbaeb ;_dbaeb =_dfg .TraceToDirectObject (_dbaeb );var _babb []byte ;if _ccdd ,_dffe :=_dbaeb .(*_dfg .PdfObjectString );_dffe {_babb =_ccdd .Bytes ();_egb .Log .Trace ("\u0049\u006e\u0064\u0065\u0078\u0065\u0064\u0020\u0073\u0074r\u0069\u006e\u0067\u0020\u0063\u006f\u006co\u0072\u0020\u0064\u0061\u0074\u0061\u003a\u0020\u0025\u0020\u0064",_babb ); }else if _ecf ,_aceff :=_dbaeb .(*_dfg .PdfObjectStream );_aceff {_egb .Log .Trace ("\u0049n\u0064e\u0078\u0065\u0064\u0020\u0073t\u0072\u0065a\u006d\u003a\u0020\u0025\u0073",_dbaeb .String ());_egb .Log .Trace ("\u0045\u006e\u0063\u006fde\u0064\u0020\u0028\u0025\u0064\u0029\u0020\u003a\u0020\u0025\u0023\u0020\u0078",len (_ecf .Stream ),_ecf .Stream ); _bdda ,_badg :=_dfg .DecodeStream (_ecf );if _badg !=nil {return nil ,_badg ;};_egb .Log .Trace ("\u0044e\u0063o\u0064\u0065\u0064\u0020\u0028%\u0064\u0029 \u003a\u0020\u0025\u0020\u0058",len (_bdda ),_bdda );_babb =_bdda ;}else {_egb .Log .Debug ("\u0054\u0079\u0070\u0065\u003a\u0020\u0025\u0054",_dbaeb ); return nil ,_d .Errorf ("\u0069\u006e\u0064\u0065\u0078\u0065\u0064\u0020\u0043\u0053\u003a\u0020\u0049\u006e\u0076a\u006ci\u0064\u0020\u0074\u0061\u0062\u006c\u0065\u0020\u0066\u006f\u0072\u006d\u0061\u0074");};if len (_babb )< _baab .Base .GetNumComponents ()*(_baab .HiVal +1){_egb .Log .Debug ("\u0050\u0044\u0046\u0020\u0049\u006e\u0063o\u006d\u0070\u0061t\u0069\u0062\u0069\u006ci\u0074\u0079\u003a\u0020\u0049\u006e\u0064\u0065\u0078\u0020\u0073\u0074\u0072\u0065\u0061\u006d\u0020\u0074\u006f\u006f\u0020\u0073\u0068\u006f\u0072\u0074"); _egb .Log .Debug ("\u0046\u0061i\u006c\u002c\u0020\u006c\u0065\u006e\u0028\u0064\u0061\u0074\u0061\u0029\u003a\u0020\u0025\u0064\u002c\u0020\u0063\u006f\u006d\u0070\u006f\u006e\u0065\u006e\u0074\u0073\u003a\u0020\u0025\u0064\u002c\u0020\u0068\u0069\u0056\u0061\u006c\u003a\u0020\u0025\u0064",len (_babb ),_baab .Base .GetNumComponents (),_baab .HiVal ); }else {_babb =_babb [:_baab .Base .GetNumComponents ()*(_baab .HiVal +1)];};_baab ._gcee =_babb ;return _baab ,nil ;}; // NewPdfAnnotationWatermark returns a new watermark annotation. func NewPdfAnnotationWatermark ()*PdfAnnotationWatermark {_ege :=NewPdfAnnotation ();_bggb :=&PdfAnnotationWatermark {};_bggb .PdfAnnotation =_ege ;_ege .SetContext (_bggb );return _bggb ;}; // GetRuneMetrics returns the character metrics for the specified rune. // A bool flag is returned to indicate whether or not the entry was found. func (_deag pdfCIDFontType0 )GetRuneMetrics (r rune )(_bf .CharMetrics ,bool ){return _bf .CharMetrics {Wx :_deag ._ebfc },true ;}; // ColorFromFloats returns a new PdfColor based on the input slice of color // components. The slice should contain a single element. func (_feeg *PdfColorspaceSpecialIndexed )ColorFromFloats (vals []float64 )(PdfColor ,error ){if len (vals )!=1{return nil ,_bd .New ("r\u0061\u006e\u0067\u0065\u0020\u0063\u0068\u0065\u0063\u006b");};N :=_feeg .Base .GetNumComponents ();_cddgcg :=int (vals [0])*N ; if _cddgcg < 0||(_cddgcg +N -1)>=len (_feeg ._gcee ){_egb .Log .Debug ("\u0063\u006f\u006cor\u0020\u006f\u0075\u0074\u0020\u006f\u0066\u0020\u0043\u0053\u0020\u0072\u0061\u006e\u0067\u0065\u003a\u0020",_cddgcg );return nil ,ErrColorOutOfRange ;};_dedc :=_feeg ._gcee [_cddgcg :_cddgcg +N ]; var _edff []float64 ;for _ ,_agec :=range _dedc {_edff =append (_edff ,float64 (_agec )/255.0);};_dbde ,_ddad :=_feeg .Base .ColorFromFloats (_edff );if _ddad !=nil {return nil ,_ddad ;};return _dbde ,nil ;}; // ToPdfObject implements interface PdfModel. func (_fedf *PdfAnnotationFileAttachment )ToPdfObject ()_dfg .PdfObject {_fedf .PdfAnnotation .ToPdfObject ();_edbd :=_fedf ._afae ;_dffb :=_edbd .PdfObject .(*_dfg .PdfObjectDictionary );_fedf .appendToPdfDictionary (_dffb );_dffb .SetIfNotNil ("\u0053u\u0062\u0074\u0079\u0070\u0065",_dfg .MakeName ("\u0046\u0069\u006c\u0065\u0041\u0074\u0074\u0061\u0063h\u006d\u0065\u006e\u0074")); _dffb .SetIfNotNil ("\u0046\u0053",_fedf .FS );_dffb .SetIfNotNil ("\u004e\u0061\u006d\u0065",_fedf .Name );return _edbd ;}; // PdfShadingPattern is a Shading patterns that provide a smooth transition between colors across an area to be painted, // i.e. color(x,y) = f(x,y) at each point. // It is a type 2 pattern (PatternType = 2). type PdfShadingPattern struct{*PdfPattern ;Shading *PdfShading ;Matrix *_dfg .PdfObjectArray ;ExtGState _dfg .PdfObject ;}; // SetCatalogViewerPreferences sets the catalog ViewerPreferences dictionary. func (_baeagd *PdfWriter )SetCatalogViewerPreferences (pref _dfg .PdfObject )error {if pref ==nil {_baeagd ._acgcc .Remove ("\u0056\u0069\u0065\u0077\u0065\u0072\u0050\u0072\u0065\u0066\u0065\u0072e\u006e\u0063\u0065\u0073");return nil ;};if _fddgae ,_adfac :=pref .(*_dfg .PdfObjectReference ); _adfac {pref =_fddgae .Resolve ();if pref ==nil {_baeagd ._acgcc .Remove ("\u0056\u0069\u0065\u0077\u0065\u0072\u0050\u0072\u0065\u0066\u0065\u0072e\u006e\u0063\u0065\u0073");return nil ;};};if _ ,_dfddgg :=pref .(*_dfg .PdfIndirectObject );_dfddgg {_baeagd .addObject (pref ); };_baeagd ._acgcc .Set ("\u0056\u0069\u0065\u0077\u0065\u0072\u0050\u0072\u0065\u0066\u0065\u0072e\u006e\u0063\u0065\u0073",pref );return nil ;}; // ToPdfObject returns the PDF representation of the shading dictionary. func (_fbaad *PdfShadingType5 )ToPdfObject ()_dfg .PdfObject {_fbaad .PdfShading .ToPdfObject ();_eedcge ,_dbebg :=_fbaad .getShadingDict ();if _dbebg !=nil {_egb .Log .Error ("\u0055\u006ea\u0062\u006c\u0065\u0020\u0074\u006f\u0020\u0061\u0063\u0063\u0065\u0073\u0073\u0020\u0073\u0068\u0061\u0064\u0069\u006e\u0067\u0020di\u0063\u0074"); return nil ;};if _fbaad .BitsPerCoordinate !=nil {_eedcge .Set ("\u0042\u0069\u0074\u0073\u0050\u0065\u0072\u0043\u006f\u006f\u0072\u0064i\u006e\u0061\u0074\u0065",_fbaad .BitsPerCoordinate );};if _fbaad .BitsPerComponent !=nil {_eedcge .Set ("\u0042\u0069t\u0073\u0050\u0065r\u0043\u006f\u006d\u0070\u006f\u006e\u0065\u006e\u0074",_fbaad .BitsPerComponent ); };if _fbaad .VerticesPerRow !=nil {_eedcge .Set ("\u0056\u0065\u0072\u0074\u0069\u0063\u0065\u0073\u0050e\u0072\u0052\u006f\u0077",_fbaad .VerticesPerRow );};if _fbaad .Decode !=nil {_eedcge .Set ("\u0044\u0065\u0063\u006f\u0064\u0065",_fbaad .Decode ); };if _fbaad .Function !=nil {if len (_fbaad .Function )==1{_eedcge .Set ("\u0046\u0075\u006e\u0063\u0074\u0069\u006f\u006e",_fbaad .Function [0].ToPdfObject ());}else {_abcdc :=_dfg .MakeArray ();for _ ,_gfad :=range _fbaad .Function {_abcdc .Append (_gfad .ToPdfObject ()); };_eedcge .Set ("\u0046\u0075\u006e\u0063\u0074\u0069\u006f\u006e",_abcdc );};};return _fbaad ._gdfdg ;}; // PdfActionLaunch represents a launch action. type PdfActionLaunch struct{*PdfAction ;F *PdfFilespec ;Win _dfg .PdfObject ;Mac _dfg .PdfObject ;Unix _dfg .PdfObject ;NewWindow _dfg .PdfObject ;}; // PrintClip returns the value of the printClip. func (_bfaab *ViewerPreferences )PrintClip ()PageBoundary {return _bfaab ._cdbee };func _ggabd (_cbgb StdFontName )(pdfFontSimple ,error ){_gdfcc ,_fbdb :=_bf .NewStdFontByName (_cbgb );if !_fbdb {return pdfFontSimple {},ErrFontNotSupported ;};_efgc :=_agafd (_gdfcc ); return _efgc ,nil ;}; // ToPdfObject returns the PdfFontDescriptor as a PDF dictionary inside an indirect object. func (_febb *PdfFontDescriptor )ToPdfObject ()_dfg .PdfObject {_cfdga :=_dfg .MakeDict ();if _febb ._cdab ==nil {_febb ._cdab =&_dfg .PdfIndirectObject {};};_febb ._cdab .PdfObject =_cfdga ;_cfdga .Set ("\u0054\u0079\u0070\u0065",_dfg .MakeName ("\u0046\u006f\u006e\u0074\u0044\u0065\u0073\u0063\u0072i\u0070\u0074\u006f\u0072")); if _febb .FontName !=nil {_cfdga .Set ("\u0046\u006f\u006e\u0074\u004e\u0061\u006d\u0065",_febb .FontName );};if _febb .FontFamily !=nil {_cfdga .Set ("\u0046\u006f\u006e\u0074\u0046\u0061\u006d\u0069\u006c\u0079",_febb .FontFamily );};if _febb .FontStretch !=nil {_cfdga .Set ("F\u006f\u006e\u0074\u0053\u0074\u0072\u0065\u0074\u0063\u0068",_febb .FontStretch ); };if _febb .FontWeight !=nil {_cfdga .Set ("\u0046\u006f\u006e\u0074\u0057\u0065\u0069\u0067\u0068\u0074",_febb .FontWeight );};if _febb .Flags !=nil {_cfdga .Set ("\u0046\u006c\u0061g\u0073",_febb .Flags );};if _febb .FontBBox !=nil {_cfdga .Set ("\u0046\u006f\u006e\u0074\u0042\u0042\u006f\u0078",_febb .FontBBox ); };if _febb .ItalicAngle !=nil {_cfdga .Set ("I\u0074\u0061\u006c\u0069\u0063\u0041\u006e\u0067\u006c\u0065",_febb .ItalicAngle );};if _febb .Ascent !=nil {_cfdga .Set ("\u0041\u0073\u0063\u0065\u006e\u0074",_febb .Ascent );};if _febb .Descent !=nil {_cfdga .Set ("\u0044e\u0073\u0063\u0065\u006e\u0074",_febb .Descent ); };if _febb .Leading !=nil {_cfdga .Set ("\u004ce\u0061\u0064\u0069\u006e\u0067",_febb .Leading );};if _febb .CapHeight !=nil {_cfdga .Set ("\u0043a\u0070\u0048\u0065\u0069\u0067\u0068t",_febb .CapHeight );};if _febb .XHeight !=nil {_cfdga .Set ("\u0058H\u0065\u0069\u0067\u0068\u0074",_febb .XHeight ); };if _febb .StemV !=nil {_cfdga .Set ("\u0053\u0074\u0065m\u0056",_febb .StemV );};if _febb .StemH !=nil {_cfdga .Set ("\u0053\u0074\u0065m\u0048",_febb .StemH );};if _febb .AvgWidth !=nil {_cfdga .Set ("\u0041\u0076\u0067\u0057\u0069\u0064\u0074\u0068",_febb .AvgWidth ); };if _febb .MaxWidth !=nil {_cfdga .Set ("\u004d\u0061\u0078\u0057\u0069\u0064\u0074\u0068",_febb .MaxWidth );};if _febb .MissingWidth !=nil {_cfdga .Set ("\u004d\u0069\u0073s\u0069\u006e\u0067\u0057\u0069\u0064\u0074\u0068",_febb .MissingWidth );};if _febb .FontFile !=nil {_cfdga .Set ("\u0046\u006f\u006e\u0074\u0046\u0069\u006c\u0065",_febb .FontFile ); };if _febb .FontFile2 !=nil {_cfdga .Set ("\u0046o\u006e\u0074\u0046\u0069\u006c\u00652",_febb .FontFile2 );};if _febb .FontFile3 !=nil {_cfdga .Set ("\u0046o\u006e\u0074\u0046\u0069\u006c\u00653",_febb .FontFile3 );};if _febb .CharSet !=nil {_cfdga .Set ("\u0043h\u0061\u0072\u0053\u0065\u0074",_febb .CharSet ); };if _febb .Style !=nil {_cfdga .Set ("\u0046\u006f\u006e\u0074\u004e\u0061\u006d\u0065",_febb .FontName );};if _febb .Lang !=nil {_cfdga .Set ("\u004c\u0061\u006e\u0067",_febb .Lang );};if _febb .FD !=nil {_cfdga .Set ("\u0046\u0044",_febb .FD );};if _febb .CIDSet !=nil {_cfdga .Set ("\u0043\u0049\u0044\u0053\u0065\u0074",_febb .CIDSet ); };return _febb ._cdab ;}; // SetObjAttrib adds an object attribute to the structure tag info. // This is commonly used to associate annotations with structure elements. func (_cefba *StructureTagInfo )SetObjAttrib (obj _dfg .PdfObject ){if _cefba .AnnotObjs ==nil {_cefba .AnnotObjs =make ([]_dfg .PdfObject ,0);};_cefba .AnnotObjs =append (_cefba .AnnotObjs ,obj );}; // GetContext returns the annotation context which contains the specific type-dependent context. // The context represents the subannotation. func (_deb *PdfAnnotation )GetContext ()PdfModel {if _deb ==nil {return nil ;};return _deb ._dga ;}; // ReaderToWriterOpts options used to generate a PdfWriter. type ReaderToWriterOpts struct{SkipAcroForm bool ;SkipInfo bool ;SkipNameDictionary bool ;SkipNamedDests bool ;SkipOCProperties bool ;SkipOutlines bool ;SkipPageLabels bool ;SkipRotation bool ;SkipMetadata bool ;SkipMarkInfo bool ;SkipViewerPreferences bool ; SkipLanguage bool ;PageProcessCallback PageProcessCallback ; // Deprecated: will be removed in v4. Use PageProcessCallback instead. PageCallback PageCallback ;}; // ColorToRGB converts a CalRGB color to an RGB color. func (_faad *PdfColorspaceCalRGB )ColorToRGB (color PdfColor )(PdfColor ,error ){_bacd ,_gbgf :=color .(*PdfColorCalRGB );if !_gbgf {_egb .Log .Debug ("\u0049\u006e\u0070ut\u0020\u0063\u006f\u006c\u006f\u0072\u0020\u006e\u006f\u0074\u0020\u0063\u0061\u006c\u0020\u0072\u0067\u0062"); return nil ,_bd .New ("\u0074\u0079p\u0065\u0020\u0063h\u0065\u0063\u006b\u0020\u0065\u0072\u0072\u006f\u0072");};_afgb :=_bacd .A ();_aaag :=_bacd .B ();_fagc :=_bacd .C ();X :=_faad .Matrix [0]*_df .Pow (_afgb ,_faad .Gamma [0])+_faad .Matrix [3]*_df .Pow (_aaag ,_faad .Gamma [1])+_faad .Matrix [6]*_df .Pow (_fagc ,_faad .Gamma [2]); Y :=_faad .Matrix [1]*_df .Pow (_afgb ,_faad .Gamma [0])+_faad .Matrix [4]*_df .Pow (_aaag ,_faad .Gamma [1])+_faad .Matrix [7]*_df .Pow (_fagc ,_faad .Gamma [2]);Z :=_faad .Matrix [2]*_df .Pow (_afgb ,_faad .Gamma [0])+_faad .Matrix [5]*_df .Pow (_aaag ,_faad .Gamma [1])+_faad .Matrix [8]*_df .Pow (_fagc ,_faad .Gamma [2]); _bgdb :=3.240479*X +-1.537150*Y +-0.498535*Z ;_efbdd :=-0.969256*X +1.875992*Y +0.041556*Z ;_bcc :=0.055648*X +-0.204043*Y +1.057311*Z ;_bgdb =_df .Min (_df .Max (_bgdb ,0),1.0);_efbdd =_df .Min (_df .Max (_efbdd ,0),1.0);_bcc =_df .Min (_df .Max (_bcc ,0),1.0); return NewPdfColorDeviceRGB (_bgdb ,_efbdd ,_bcc ),nil ;}; // NewPdfColorspaceCalGray returns a new CalGray colorspace object. func NewPdfColorspaceCalGray ()*PdfColorspaceCalGray {_aege :=&PdfColorspaceCalGray {};_aege .BlackPoint =[]float64 {0.0,0.0,0.0};_aege .Gamma =1;return _aege ;}; // NewPdfReaderLazy creates a new PdfReader for `rs` in lazy-loading mode. The difference // from NewPdfReader is that in lazy-loading mode, objects are only loaded into memory when needed // rather than entire structure being loaded into memory on reader creation. // Note that it may make sense to use the lazy-load reader when processing only parts of files, // rather than loading entire file into memory. Example: splitting a few pages from a large PDF file. func NewPdfReaderLazy (rs _edg .ReadSeeker )(*PdfReader ,error ){const _fbbe ="\u006d\u006f\u0064\u0065l:\u004e\u0065\u0077\u0050\u0064\u0066\u0052\u0065\u0061\u0064\u0065\u0072\u004c\u0061z\u0079";return _dafc (rs ,&ReaderOpts {LazyLoad :true },false ,_fbbe ); };func (_dadcd *Image )getSuitableEncoder ()(_dfg .StreamEncoder ,error ){var (_ccda ,_efbed =int (_dadcd .Width ),int (_dadcd .Height );_bedfe =make (map[string ]bool );_cabce =true ;_ddbga =false ;_aagb =func ()*_dfg .DCTEncoder {return _dfg .NewDCTEncoder ()}; _geec =func ()*_dfg .DCTEncoder {_ecfb :=_dfg .NewDCTEncoder ();_ecfb .BitsPerComponent =16;return _ecfb };);for _afdag :=0;_afdag < _efbed ;_afdag ++{for _aged :=0;_aged < _ccda ;_aged ++{_cfgca ,_ebff :=_dadcd .ColorAt (_aged ,_afdag );if _ebff !=nil {return nil ,_ebff ; };_ecdd ,_ceebb ,_cfdgg ,_caaaad :=_cfgca .RGBA ();if _cabce &&(_ecdd !=_ceebb ||_ecdd !=_cfdgg ||_ceebb !=_cfdgg ){_cabce =false ;};if !_ddbga {switch _cfgca .(type ){case _dc .NRGBA :_ddbga =_caaaad > 0;};};_bedfe [_d .Sprintf ("\u0025\u0064\u002c\u0025\u0064\u002c\u0025\u0064",_ecdd ,_ceebb ,_cfdgg )]=true ; if len (_bedfe )> 2&&_ddbga {return _geec (),nil ;};};};if _ddbga ||len (_dadcd ._baeef )> 0{return _dfg .NewFlateEncoder (),nil ;};if len (_bedfe )<=2{_ecbaa :=_dadcd .ConvertToBinary ();if _ecbaa !=nil {return nil ,_ecbaa ;};return _dfg .NewJBIG2Encoder (),nil ; };if _cabce {return _aagb (),nil ;};if _dadcd .ColorComponents ==1{if _dadcd .BitsPerComponent ==1{return _dfg .NewJBIG2Encoder (),nil ;}else if _dadcd .BitsPerComponent ==8{_ebgb :=_dfg .NewDCTEncoder ();_ebgb .ColorComponents =1;return _ebgb ,nil ;}; }else if _dadcd .ColorComponents ==3{if _dadcd .BitsPerComponent ==8{return _aagb (),nil ;}else if _dadcd .BitsPerComponent ==16{return _geec (),nil ;};}else if _dadcd .ColorComponents ==4{_babg :=_geec ();_babg .ColorComponents =4;return _babg ,nil ;}; return _geec (),nil ;};var (StructureTypeParagraph StructureType ="\u0050";StructureTypeHeader StructureType ="\u0048";StructureTypeHeading1 StructureType ="\u0048\u0031";StructureTypeHeading2 StructureType ="\u0048\u0032";StructureTypeHeading3 StructureType ="\u0048\u0033"; StructureTypeHeading4 StructureType ="\u0048\u0034";StructureTypeHeading5 StructureType ="\u0048\u0035";StructureTypeHeading6 StructureType ="\u0048\u0036";StructureTypeList StructureType ="\u004c";StructureTypeListItem StructureType ="\u004c\u0049";StructureTypeLabel StructureType ="\u004c\u0062\u006c"; StructureTypeListBody StructureType ="\u004c\u0042\u006fd\u0079";StructureTypeTable StructureType ="\u0054\u0061\u0062l\u0065";StructureTypeTableRow StructureType ="\u0054\u0052";StructureTypeTableHeaderCell StructureType ="\u0054\u0048";StructureTypeTableData StructureType ="\u0054\u0044"; StructureTypeTableHead StructureType ="\u0054\u0048\u0065a\u0064";StructureTypeTableBody StructureType ="\u0054\u0042\u006fd\u0079";StructureTypeTableFooter StructureType ="\u0054\u0046\u006fo\u0074";); // GetCatalogViewerPreferences gets catalog ViewerPreferences object. func (_cbbac *PdfReader )GetCatalogViewerPreferences ()(_dfg .PdfObject ,bool ){if _cbbac ._fbfgb ==nil {return nil ,false ;};_ffbbg :=_cbbac ._fbfgb .Get ("\u0056\u0069\u0065\u0077\u0065\u0072\u0050\u0072\u0065\u0066\u0065\u0072e\u006e\u0063\u0065\u0073"); return _ffbbg ,_ffbbg !=nil ;}; // HasFontByName checks whether a font is defined by the specified keyName. func (_ddfcf *PdfPageResources )HasFontByName (keyName _dfg .PdfObjectName )bool {_ ,_abdc :=_ddfcf .GetFontByName (keyName );return _abdc ;}; // ToPdfOutline returns a low level PdfOutline object, based on the current // instance. func (_dffec *Outline )ToPdfOutline ()*PdfOutline {_bbaga :=NewPdfOutline ();var _eecg []*PdfOutlineItem ;var _fegbd int64 ;var _agbfc *PdfOutlineItem ;for _ ,_ebea :=range _dffec .Entries {_gcbae ,_gdaffa :=_ebea .ToPdfOutlineItem ();_gcbae .Parent =&_bbaga .PdfOutlineTreeNode ; if _agbfc !=nil {_agbfc .Next =&_gcbae .PdfOutlineTreeNode ;_gcbae .Prev =&_agbfc .PdfOutlineTreeNode ;};_eecg =append (_eecg ,_gcbae );_fegbd +=_gdaffa ;_agbfc =_gcbae ;};_eefd :=int64 (len (_eecg ));_fegbd +=_eefd ;if _eefd > 0{_bbaga .First =&_eecg [0].PdfOutlineTreeNode ; _bbaga .Last =&_eecg [_eefd -1].PdfOutlineTreeNode ;_bbaga .Count =&_fegbd ;};return _bbaga ;};func (_cbd *PdfReader )newPdfAnnotationHighlightFromDict (_efab *_dfg .PdfObjectDictionary )(*PdfAnnotationHighlight ,error ){_gecc :=PdfAnnotationHighlight {}; _bfaf ,_agc :=_cbd .newPdfAnnotationMarkupFromDict (_efab );if _agc !=nil {return nil ,_agc ;};_gecc .PdfAnnotationMarkup =_bfaf ;_gecc .QuadPoints =_efab .Get ("\u0051\u0075\u0061\u0064\u0050\u006f\u0069\u006e\u0074\u0073");return &_gecc ,nil ;}; // PdfShadingPatternType3 is shading patterns that will use a Type 3 shading pattern (Radial). type PdfShadingPatternType3 struct{*PdfPattern ;Shading *PdfShadingType3 ;Matrix *_dfg .PdfObjectArray ;ExtGState _dfg .PdfObject ;}; // SetPdfModifiedDate sets the ModDate attribute of the output PDF. func SetPdfModifiedDate (modifiedDate _ge .Time ){_dfbaa .Lock ();defer _dfbaa .Unlock ();_agfff =modifiedDate ;};func _geaf (_agcdf _dfg .PdfObject )(*PdfFontDescriptor ,error ){_fbafa :=&PdfFontDescriptor {};_agcdf =_dfg .ResolveReference (_agcdf );if _dcead ,_aedbe :=_agcdf .(*_dfg .PdfIndirectObject ); _aedbe {_fbafa ._cdab =_dcead ;_agcdf =_dcead .PdfObject ;};_ecgff ,_ccceb :=_dfg .GetDict (_agcdf );if !_ccceb {_egb .Log .Debug ("\u0045\u0052R\u004f\u0052\u003a\u0020\u0046o\u006e\u0074\u0044\u0065\u0073c\u0072\u0069\u0070\u0074\u006f\u0072\u0020\u006e\u006f\u0074\u0020\u0067\u0069\u0076\u0065\u006e\u0020\u0062\u0079\u0020\u0061\u0020\u0064\u0069\u0063\u0074\u0069\u006f\u006e\u0061\u0072\u0079\u0020\u0028\u0025\u0054\u0029",_agcdf ); return nil ,_dfg .ErrTypeError ;};if _abed :=_ecgff .Get ("\u0046\u006f\u006e\u0074\u004e\u0061\u006d\u0065");_abed !=nil {_fbafa .FontName =_abed ;}else {_egb .Log .Debug ("\u0049n\u0063\u006fm\u0070\u0061\u0074\u0069b\u0069\u006c\u0069t\u0079\u003a\u0020\u0046\u006f\u006e\u0074\u004e\u0061me\u0020\u0028\u0052e\u0071\u0075i\u0072\u0065\u0064\u0029\u0020\u006di\u0073\u0073i\u006e\u0067"); };_cfddg ,_ :=_dfg .GetName (_fbafa .FontName );if _befa :=_ecgff .Get ("\u0054\u0079\u0070\u0065");_befa !=nil {_dgbf ,_affd :=_befa .(*_dfg .PdfObjectName );if !_affd ||string (*_dgbf )!="\u0046\u006f\u006e\u0074\u0044\u0065\u0073\u0063\u0072i\u0070\u0074\u006f\u0072"{_egb .Log .Debug ("I\u006e\u0063\u006f\u006d\u0070\u0061\u0074\u0069\u0062\u0069\u006c\u0069\u0074\u0079\u003a\u0020\u0046\u006f\u006e\u0074\u0020\u0064\u0065\u0073\u0063\u0072i\u0070t\u006f\u0072\u0020\u0054y\u0070\u0065 \u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0028\u0025\u0054\u0029\u0020\u0066\u006f\u006e\u0074\u003d\u0025\u0071\u0020\u0025\u0054",_befa ,_cfddg ,_fbafa .FontName ); };}else {_egb .Log .Trace ("\u0049\u006ec\u006f\u006d\u0070\u0061\u0074i\u0062\u0069\u006c\u0069\u0074y\u003a\u0020\u0054\u0079\u0070\u0065\u0020\u0028\u0052\u0065\u0071\u0075\u0069\u0072\u0065\u0064\u0029\u0020\u006d\u0069\u0073\u0073\u0069\u006e\u0067\u002e\u0020\u0066\u006f\u006e\u0074\u003d\u0025\u0071\u0020\u0025\u0054",_cfddg ,_fbafa .FontName ); };_fbafa .FontFamily =_ecgff .Get ("\u0046\u006f\u006e\u0074\u0046\u0061\u006d\u0069\u006c\u0079");_fbafa .FontStretch =_ecgff .Get ("F\u006f\u006e\u0074\u0053\u0074\u0072\u0065\u0074\u0063\u0068");_fbafa .FontWeight =_ecgff .Get ("\u0046\u006f\u006e\u0074\u0057\u0065\u0069\u0067\u0068\u0074"); _fbafa .Flags =_ecgff .Get ("\u0046\u006c\u0061g\u0073");_fbafa .FontBBox =_ecgff .Get ("\u0046\u006f\u006e\u0074\u0042\u0042\u006f\u0078");_fbafa .ItalicAngle =_ecgff .Get ("I\u0074\u0061\u006c\u0069\u0063\u0041\u006e\u0067\u006c\u0065");_fbafa .Ascent =_ecgff .Get ("\u0041\u0073\u0063\u0065\u006e\u0074"); _fbafa .Descent =_ecgff .Get ("\u0044e\u0073\u0063\u0065\u006e\u0074");_fbafa .Leading =_ecgff .Get ("\u004ce\u0061\u0064\u0069\u006e\u0067");_fbafa .CapHeight =_ecgff .Get ("\u0043a\u0070\u0048\u0065\u0069\u0067\u0068t");_fbafa .XHeight =_ecgff .Get ("\u0058H\u0065\u0069\u0067\u0068\u0074"); _fbafa .StemV =_ecgff .Get ("\u0053\u0074\u0065m\u0056");_fbafa .StemH =_ecgff .Get ("\u0053\u0074\u0065m\u0048");_fbafa .AvgWidth =_ecgff .Get ("\u0041\u0076\u0067\u0057\u0069\u0064\u0074\u0068");_fbafa .MaxWidth =_ecgff .Get ("\u004d\u0061\u0078\u0057\u0069\u0064\u0074\u0068"); _fbafa .MissingWidth =_ecgff .Get ("\u004d\u0069\u0073s\u0069\u006e\u0067\u0057\u0069\u0064\u0074\u0068");_fbafa .FontFile =_ecgff .Get ("\u0046\u006f\u006e\u0074\u0046\u0069\u006c\u0065");_fbafa .FontFile2 =_ecgff .Get ("\u0046o\u006e\u0074\u0046\u0069\u006c\u00652"); _fbafa .FontFile3 =_ecgff .Get ("\u0046o\u006e\u0074\u0046\u0069\u006c\u00653");_fbafa .CharSet =_ecgff .Get ("\u0043h\u0061\u0072\u0053\u0065\u0074");_fbafa .Style =_ecgff .Get ("\u0053\u0074\u0079l\u0065");_fbafa .Lang =_ecgff .Get ("\u004c\u0061\u006e\u0067"); _fbafa .FD =_ecgff .Get ("\u0046\u0044");_fbafa .CIDSet =_ecgff .Get ("\u0043\u0049\u0044\u0053\u0065\u0074");if _fbafa .Flags !=nil {if _dcbf ,_bgfe :=_dfg .GetIntVal (_fbafa .Flags );_bgfe {_fbafa ._dffgf =_dcbf ;};};if _fbafa .MissingWidth !=nil {if _fbeff ,_fgca :=_dfg .GetNumberAsFloat (_fbafa .MissingWidth ); _fgca ==nil {_fbafa ._decbb =_fbeff ;};};if _fbafa .FontFile !=nil {_dagc ,_cdbcf :=_agcg (_fbafa .FontFile );if _cdbcf !=nil {return _fbafa ,_cdbcf ;};_egb .Log .Trace ("f\u006f\u006e\u0074\u0046\u0069\u006c\u0065\u003d\u0025\u0073",_dagc );_fbafa .fontFile =_dagc ; };if _fbafa .FontFile2 !=nil {_aadc ,_agbac :=_bf .NewFontFile2FromPdfObject (_fbafa .FontFile2 );if _agbac !=nil {return _fbafa ,_agbac ;};_egb .Log .Trace ("\u0066\u006f\u006et\u0046\u0069\u006c\u0065\u0032\u003d\u0025\u0073",_aadc .String ());_fbafa ._gcge =&_aadc ; };return _fbafa ,nil ;}; // ToPdfObject implements interface PdfModel. func (_edd *PdfActionResetForm )ToPdfObject ()_dfg .PdfObject {_edd .PdfAction .ToPdfObject ();_ecd :=_edd ._fe ;_gac :=_ecd .PdfObject .(*_dfg .PdfObjectDictionary );_gac .SetIfNotNil ("\u0053",_dfg .MakeName (string (ActionTypeResetForm )));_gac .SetIfNotNil ("\u0046\u0069\u0065\u006c\u0064\u0073",_edd .Fields ); _gac .SetIfNotNil ("\u0046\u006c\u0061g\u0073",_edd .Flags );return _ecd ;}; // GetBorderWidth returns the border style's width. func (_fbga *PdfBorderStyle )GetBorderWidth ()float64 {if _fbga .W ==nil {return 1;};return *_fbga .W ;}; // NewMultipleFontEncoder returns instantiates a new *MultipleFontEncoder func NewMultipleFontEncoder (fonts []*PdfFont )*MultipleFontEncoder {return &MultipleFontEncoder {_ceede :fonts ,CurrentFont :fonts [0]};}; // ToPdfObject recursively builds the Outline tree PDF object. func (_fgdgd *PdfOutlineItem )ToPdfObject ()_dfg .PdfObject {_gcead :=_fgdgd ._fcecb ;_bfaee :=_gcead .PdfObject .(*_dfg .PdfObjectDictionary );_bfaee .Set ("\u0054\u0069\u0074l\u0065",_fgdgd .Title );if _fgdgd .A !=nil {_bfaee .Set ("\u0041",_fgdgd .A ); };if _fgebd :=_bfaee .Get ("\u0053\u0045");_fgebd !=nil {_bfaee .Remove ("\u0053\u0045");};if _fgdgd .C !=nil {_bfaee .Set ("\u0043",_fgdgd .C );};if _fgdgd .Dest !=nil {_bfaee .Set ("\u0044\u0065\u0073\u0074",_fgdgd .Dest );};if _fgdgd .F !=nil {_bfaee .Set ("\u0046",_fgdgd .F ); };if _fgdgd .Count !=nil {_bfaee .Set ("\u0043\u006f\u0075n\u0074",_dfg .MakeInteger (*_fgdgd .Count ));};if _fgdgd .Next !=nil {_bfaee .Set ("\u004e\u0065\u0078\u0074",_fgdgd .Next .ToPdfObject ());};if _fgdgd .First !=nil {_bfaee .Set ("\u0046\u0069\u0072s\u0074",_fgdgd .First .ToPdfObject ()); };if _fgdgd .Prev !=nil {_bfaee .Set ("\u0050\u0072\u0065\u0076",_fgdgd .Prev .GetContext ().GetContainingPdfObject ());};if _fgdgd .Last !=nil {_bfaee .Set ("\u004c\u0061\u0073\u0074",_fgdgd .Last .GetContext ().GetContainingPdfObject ());};if _fgdgd .Parent !=nil {_bfaee .Set ("\u0050\u0061\u0072\u0065\u006e\u0074",_fgdgd .Parent .GetContext ().GetContainingPdfObject ()); };return _gcead ;};func (_fbfd *PdfReader )newPdfAcroFormFromDict (_adag *_dfg .PdfIndirectObject ,_aabde *_dfg .PdfObjectDictionary )(*PdfAcroForm ,error ){_gdbe :=NewPdfAcroForm ();if _adag !=nil {_gdbe ._gddd =_adag ;_adag .PdfObject =_dfg .MakeDict (); };if _fbdfc :=_aabde .Get ("\u0046\u0069\u0065\u006c\u0064\u0073");_fbdfc !=nil &&!_dfg .IsNullObject (_fbdfc ){_gefad ,_bcee :=_dfg .GetArray (_fbdfc );if !_bcee {return nil ,_d .Errorf ("\u0066i\u0065\u006c\u0064\u0073\u0020\u006e\u006f\u0074\u0020\u0061\u006e \u0061\u0072\u0072\u0061\u0079\u0020\u0028\u0025\u0054\u0029",_fbdfc ); };var _efcba []*PdfField ;for _ ,_efgge :=range _gefad .Elements (){_ddccb ,_eaef :=_dfg .GetIndirect (_efgge );if !_eaef {if _ ,_cfaa :=_efgge .(*_dfg .PdfObjectNull );_cfaa {_egb .Log .Trace ("\u0053k\u0069\u0070\u0070\u0069\u006e\u0067\u0020\u006f\u0076\u0065\u0072 \u006e\u0075\u006c\u006c\u0020\u0066\u0069\u0065\u006c\u0064"); continue ;};_egb .Log .Debug ("\u0046\u0069\u0065\u006c\u0064 \u006e\u006f\u0074\u0020\u0063\u006f\u006e\u0074\u0061\u0069\u006e\u0065\u0064 \u0069\u006e\u0020\u0069\u006e\u0064\u0069\u0072\u0065\u0063\u0074\u0020\u006f\u0062\u006a\u0065\u0063\u0074\u0020\u0025\u0054",_efgge ); return nil ,_d .Errorf ("\u0066\u0069\u0065l\u0064\u0020\u006e\u006ft\u0020\u0069\u006e\u0020\u0061\u006e\u0020i\u006e\u0064\u0069\u0072\u0065\u0063\u0074\u0020\u006f\u0062\u006a\u0065\u0063\u0074");};_ceef ,_dabcf :=_fbfd .newPdfFieldFromIndirectObject (_ddccb ,nil ); if _dabcf !=nil {return nil ,_dabcf ;};_egb .Log .Trace ("\u0041\u0063\u0072\u006fFo\u0072\u006d\u0020\u0046\u0069\u0065\u006c\u0064\u003a\u0020\u0025\u002b\u0076",*_ceef );_efcba =append (_efcba ,_ceef );};_gdbe .Fields =&_efcba ;};if _gggfe :=_aabde .Get ("\u004ee\u0065d\u0041\u0070\u0070\u0065\u0061\u0072\u0061\u006e\u0063\u0065\u0073"); _gggfe !=nil {_ddcac ,_cgaafe :=_dfg .GetBool (_gggfe );if _cgaafe {_gdbe .NeedAppearances =_ddcac ;}else {_egb .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u004e\u0065\u0065\u0064\u0041\u0070p\u0065\u0061\u0072\u0061\u006e\u0063e\u0073\u0020\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0028\u0067\u006ft\u0020\u0025\u0054\u0029",_gggfe ); };};if _eedb :=_aabde .Get ("\u0053\u0069\u0067\u0046\u006c\u0061\u0067\u0073");_eedb !=nil {_eeaea ,_cagaf :=_dfg .GetInt (_eedb );if _cagaf {_gdbe .SigFlags =_eeaea ;}else {_egb .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0053\u0069\u0067\u0046\u006c\u0061\u0067\u0073 \u0069n\u0076\u0061\u006c\u0069\u0064\u0020\u0028\u0067\u006f\u0074\u0020\u0025\u0054\u0029",_eedb ); };};if _fggg :=_aabde .Get ("\u0043\u004f");_fggg !=nil {_fdaaf ,_afgfg :=_dfg .GetArray (_fggg );if _afgfg {_gdbe .CO =_fdaaf ;}else {_egb .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0043\u004f\u0020\u0069n\u0076\u0061\u006c\u0069\u0064\u0020\u0028\u0067\u006f\u0074 \u0025\u0054\u0029",_fggg ); };};if _bedac :=_aabde .Get ("\u0044\u0052");_bedac !=nil {if _dgfee ,_dgcc :=_dfg .GetDict (_bedac );_dgcc {_cacb ,_ecaa :=NewPdfPageResourcesFromDict (_dgfee );if _ecaa !=nil {_egb .Log .Error ("\u0049\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0044R\u003a\u0020\u0025\u0076",_ecaa ); return nil ,_ecaa ;};_gdbe .DR =_cacb ;}else {_egb .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0044\u0052\u0020\u0069n\u0076\u0061\u006c\u0069\u0064\u0020\u0028\u0067\u006f\u0074 \u0025\u0054\u0029",_bedac );};};if _baea :=_aabde .Get ("\u0044\u0041"); _baea !=nil {_ebbc ,_bbab :=_dfg .GetString (_baea );if _bbab {_gdbe .DA =_ebbc ;}else {_egb .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0044\u0041\u0020\u0069n\u0076\u0061\u006c\u0069\u0064\u0020\u0028\u0067\u006f\u0074 \u0025\u0054\u0029",_baea ); };};if _caecg :=_aabde .Get ("\u0051");_caecg !=nil {_ddfef ,_defdfe :=_dfg .GetInt (_caecg );if _defdfe {_gdbe .Q =_ddfef ;}else {_egb .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a \u0051\u0020\u0069\u006e\u0076a\u006ci\u0064 \u0028\u0067\u006f\u0074\u0020\u0025\u0054)",_caecg ); };};if _agafdf :=_aabde .Get ("\u0058\u0046\u0041");_agafdf !=nil {_gdbe .XFA =_agafdf ;};if _ggbc :=_aabde .Get ("\u0041\u0044\u0042\u0045\u005f\u0045\u0063\u0068\u006f\u0053\u0069\u0067\u006e");_ggbc !=nil {_gdbe .ADBEEchoSign =_ggbc ;};_gdbe .ToPdfObject (); return _gdbe ,nil ;}; // SignatureValidationResult defines the response from the signature validation handler. type SignatureValidationResult struct{ // List of errors when validating the signature. Errors []string ;IsSigned bool ;IsVerified bool ;IsTrusted bool ;Fields []*PdfField ;Name string ;Date PdfDate ;Reason string ;Location string ;ContactInfo string ;DiffResults *_bba .DiffResults ;IsCrlFound bool ;IsOcspFound bool ; // GeneralizedTime is the time at which the time-stamp token has been created by the TSA (RFC 3161). GeneralizedTime _ge .Time ;}; // ColorFromPdfObjects returns a new PdfColor based on the input slice of color // components. The slice should contain a single PdfObjectFloat element in // range 0-1. func (_gede *PdfColorspaceCalGray )ColorFromPdfObjects (objects []_dfg .PdfObject )(PdfColor ,error ){if len (objects )!=1{return nil ,_bd .New ("r\u0061\u006e\u0067\u0065\u0020\u0063\u0068\u0065\u0063\u006b");};_cdcc ,_dgac :=_dfg .GetNumbersAsFloat (objects ); if _dgac !=nil {return nil ,_dgac ;};return _gede .ColorFromFloats (_cdcc );}; // ToInteger convert to an integer format. func (_gfdc *PdfColorDeviceRGB )ToInteger (bits int )[3]uint32 {_gbff :=_df .Pow (2,float64 (bits ))-1;return [3]uint32 {uint32 (_gbff *_gfdc .R ()),uint32 (_gbff *_gfdc .G ()),uint32 (_gbff *_gfdc .B ())};}; // ColorFromFloats returns a new PdfColor based on the input slice of color // components. The slice should contain three elements representing the // red, green and blue components of the color. The values of the elements // should be between 0 and 1. func (_ggggd *PdfColorspaceDeviceRGB )ColorFromFloats (vals []float64 )(PdfColor ,error ){if len (vals )!=3{return nil ,_bd .New ("r\u0061\u006e\u0067\u0065\u0020\u0063\u0068\u0065\u0063\u006b");};_bcecb :=vals [0];if _bcecb < 0.0||_bcecb > 1.0{_egb .Log .Debug ("\u0063\u006f\u006cor\u0020\u006f\u0075\u0074\u0020\u006f\u0066\u0020\u0043\u0053\u0020\u0072\u0061\u006e\u0067\u0065\u003a\u0020",_bcecb ); return nil ,ErrColorOutOfRange ;};_bfbe :=vals [1];if _bfbe < 0.0||_bfbe > 1.0{_egb .Log .Debug ("\u0063\u006f\u006cor\u0020\u006f\u0075\u0074\u0020\u006f\u0066\u0020\u0043\u0053\u0020\u0072\u0061\u006e\u0067\u0065\u003a\u0020",_bcecb );return nil ,ErrColorOutOfRange ; };_feae :=vals [2];if _feae < 0.0||_feae > 1.0{_egb .Log .Debug ("\u0063\u006f\u006cor\u0020\u006f\u0075\u0074\u0020\u006f\u0066\u0020\u0043\u0053\u0020\u0072\u0061\u006e\u0067\u0065\u003a\u0020",_bcecb );return nil ,ErrColorOutOfRange ;};_dbcb :=NewPdfColorDeviceRGB (_bcecb ,_bfbe ,_feae ); return _dbcb ,nil ;}; // PdfActionThread represents a thread action. type PdfActionThread struct{*PdfAction ;F *PdfFilespec ;D _dfg .PdfObject ;B _dfg .PdfObject ;}; // GetCharMetrics returns the char metrics for character code `code`. func (_bcabd pdfFontType0 )GetCharMetrics (code _ff .CharCode )(_bf .CharMetrics ,bool ){if _bcabd .DescendantFont ==nil {_egb .Log .Debug ("\u0045\u0052R\u004f\u0052\u003a\u0020\u004e\u006f\u0020\u0064\u0065\u0073\u0063\u0065\u006e\u0064\u0061\u006e\u0074\u002e\u0020\u0066\u006f\u006et=\u0025\u0073",_bcabd ); return _bf .CharMetrics {},false ;};return _bcabd .DescendantFont .GetCharMetrics (code );}; // SetViewArea sets the value of the viewArea. func (_cecda *ViewerPreferences )SetViewArea (viewArea PageBoundary ){_cecda ._gaeae =viewArea }; // ToPdfObject convert PdfInfo to pdf object. func (_dgfd *PdfInfo )ToPdfObject ()_dfg .PdfObject {_acaf :=_dfg .MakeDict ();_acaf .SetIfNotNil ("\u0054\u0069\u0074l\u0065",_dgfd .Title );_acaf .SetIfNotNil ("\u0041\u0075\u0074\u0068\u006f\u0072",_dgfd .Author );_acaf .SetIfNotNil ("\u0053u\u0062\u006a\u0065\u0063\u0074",_dgfd .Subject ); _acaf .SetIfNotNil ("\u004b\u0065\u0079\u0077\u006f\u0072\u0064\u0073",_dgfd .Keywords );_acaf .SetIfNotNil ("\u0043r\u0065\u0061\u0074\u006f\u0072",_dgfd .Creator );_acaf .SetIfNotNil ("\u0050\u0072\u006f\u0064\u0075\u0063\u0065\u0072",_dgfd .Producer ); _acaf .SetIfNotNil ("\u0054r\u0061\u0070\u0070\u0065\u0064",_dgfd .Trapped );if _dgfd .CreationDate !=nil {_acaf .SetIfNotNil ("\u0043\u0072\u0065a\u0074\u0069\u006f\u006e\u0044\u0061\u0074\u0065",_dgfd .CreationDate .ToPdfObject ());};if _dgfd .ModifiedDate !=nil {_acaf .SetIfNotNil ("\u004do\u0064\u0044\u0061\u0074\u0065",_dgfd .ModifiedDate .ToPdfObject ()); };for _ ,_fcec :=range _dgfd ._gdaaeb .Keys (){_acaf .SetIfNotNil (_fcec ,_dgfd ._gdaaeb .Get (_fcec ));};return _acaf ;}; // GetStructRoot gets the StructTreeRoot object func (_gbffcb *PdfPage )GetStructTreeRoot ()(*_dfg .PdfObject ,bool ){_ccece ,_ecfbg :=_gbffcb ._ggcgd .GetCatalogStructTreeRoot ();return &_ccece ,_ecfbg ;}; // SetPickTrayByPDFSize sets the value of the pickTrayByPDFSize flag. func (_cfada *ViewerPreferences )SetPickTrayByPDFSize (pickTrayByPDFSize bool ){_cfada ._cdgcd =&pickTrayByPDFSize ;};func _agcg (_caaad _dfg .PdfObject )(*fontFile ,error ){_egb .Log .Trace ("\u006e\u0065\u0077\u0046\u006f\u006e\u0074\u0046\u0069\u006c\u0065\u0046\u0072\u006f\u006dP\u0064f\u004f\u0062\u006a\u0065\u0063\u0074\u003a\u0020\u006f\u0062\u006a\u003d\u0025\u0073",_caaad ); _accca :=&fontFile {};_caaad =_dfg .TraceToDirectObject (_caaad );_gcga ,_edcbf :=_caaad .(*_dfg .PdfObjectStream );if !_edcbf {_egb .Log .Debug ("\u0045\u0052R\u004f\u0052\u003a\u0020F\u006f\u006et\u0046\u0069\u006c\u0065\u0020\u006d\u0075\u0073t\u0020\u0062\u0065\u0020\u0061\u0020\u0073\u0074\u0072\u0065\u0061\u006d \u0028\u0025\u0054\u0029",_caaad ); return nil ,_dfg .ErrTypeError ;};_dfbec :=_gcga .PdfObjectDictionary ;_geccf ,_edef :=_dfg .DecodeStream (_gcga );if _edef !=nil {return nil ,_edef ;};_feda ,_edcbf :=_dfg .GetNameVal (_dfbec .Get ("\u0053u\u0062\u0074\u0079\u0070\u0065"));if !_edcbf {_accca ._adfbf =_feda ; if _feda =="\u0054\u0079\u0070\u0065\u0031\u0043"{_egb .Log .Debug ("T\u0079\u0070\u0065\u0031\u0043\u0020\u0066\u006f\u006e\u0074\u0073\u0020\u0061\u0072\u0065\u0020\u0063\u0075r\u0072\u0065\u006e\u0074\u006c\u0079\u0020\u006e\u006f\u0074 s\u0075\u0070\u0070o\u0072t\u0065\u0064"); return nil ,ErrType1CFontNotSupported ;};};_fdfbb ,_ :=_dfg .GetIntVal (_dfbec .Get ("\u004ce\u006e\u0067\u0074\u0068\u0031"));_bccfg ,_ :=_dfg .GetIntVal (_dfbec .Get ("\u004ce\u006e\u0067\u0074\u0068\u0032"));if _fdfbb > len (_geccf ){_fdfbb =len (_geccf ); };if _fdfbb +_bccfg > len (_geccf ){_bccfg =len (_geccf )-_fdfbb ;};_caabf :=_geccf [:_fdfbb ];var _gagc []byte ;if _bccfg > 0{_gagc =_geccf [_fdfbb :_fdfbb +_bccfg ];};if _fdfbb > 0&&_bccfg > 0{_edbdg :=_accca .loadFromSegments (_caabf ,_gagc );if _edbdg !=nil {return nil ,_edbdg ; };};return _accca ,nil ;};func (_ecdbe *pdfFontType0 )getFontDescriptor ()*PdfFontDescriptor {if _ecdbe ._cebfd ==nil &&_ecdbe .DescendantFont !=nil {return _ecdbe .DescendantFont .FontDescriptor ();};return _ecdbe ._cebfd ;}; // NewPdfActionSubmitForm returns a new "submit form" action. func NewPdfActionSubmitForm ()*PdfActionSubmitForm {_eefb :=NewPdfAction ();_bcd :=&PdfActionSubmitForm {};_bcd .PdfAction =_eefb ;_eefb .SetContext (_bcd );return _bcd ;}; // K returns the value of the key component of the color. func (_ggagg *PdfColorDeviceCMYK )K ()float64 {return _ggagg [3]}; // B returns the value of the B component of the color. func (_dcgf *PdfColorLab )B ()float64 {return _dcgf [2]}; // GetOutlineTree returns the outline tree. func (_efbdgb *PdfReader )GetOutlineTree ()*PdfOutlineTreeNode {return _efbdgb ._dagg }; // NewPdfAnnotation3D returns a new 3d annotation. func NewPdfAnnotation3D ()*PdfAnnotation3D {_gde :=NewPdfAnnotation ();_aabf :=&PdfAnnotation3D {};_aabf .PdfAnnotation =_gde ;_gde .SetContext (_aabf );return _aabf ;}; // SetBorderWidth sets the style's border width. func (_cbfe *PdfBorderStyle )SetBorderWidth (width float64 ){_cbfe .W =&width }; // NewPdfDate returns a new PdfDate object from a PDF date string (see 7.9.4 Dates). // format: "D: YYYYMMDDHHmmSSOHH'mm" func NewPdfDate (dateStr string )(PdfDate ,error ){_facca ,_dacbc :=_ea .ParsePdfTime (dateStr );if _dacbc !=nil {return PdfDate {},_dacbc ;};return NewPdfDateFromTime (_facca );}; // Items returns all children outline items. func (_bcedd *OutlineItem )Items ()[]*OutlineItem {return _bcedd .Entries }; // ToPdfObject returns the PDF representation of the shading dictionary. func (_ddcceb *PdfShading )ToPdfObject ()_dfg .PdfObject {_cdaea :=_ddcceb ._gdfdg ;_bcccb ,_bgdef :=_ddcceb .getShadingDict ();if _bgdef !=nil {_egb .Log .Error ("\u0055\u006ea\u0062\u006c\u0065\u0020\u0074\u006f\u0020\u0061\u0063\u0063\u0065\u0073\u0073\u0020\u0073\u0068\u0061\u0064\u0069\u006e\u0067\u0020di\u0063\u0074"); return nil ;};if _ddcceb .ShadingType !=nil {_bcccb .Set ("S\u0068\u0061\u0064\u0069\u006e\u0067\u0054\u0079\u0070\u0065",_ddcceb .ShadingType );};if _ddcceb .ColorSpace !=nil {_bcccb .Set ("\u0043\u006f\u006c\u006f\u0072\u0053\u0070\u0061\u0063\u0065",_ddcceb .ColorSpace .ToPdfObject ()); };if _ddcceb .Background !=nil {_bcccb .Set ("\u0042\u0061\u0063\u006b\u0067\u0072\u006f\u0075\u006e\u0064",_ddcceb .Background );};if _ddcceb .BBox !=nil {_bcccb .Set ("\u0042\u0042\u006f\u0078",_ddcceb .BBox .ToPdfObject ());};if _ddcceb .AntiAlias !=nil {_bcccb .Set ("\u0041n\u0074\u0069\u0041\u006c\u0069\u0061s",_ddcceb .AntiAlias ); };return _cdaea ;}; // FieldValueProvider provides field values from a data source such as FDF, JSON or any other. type FieldValueProvider interface{FieldValues ()(map[string ]_dfg .PdfObject ,error );};func _faadcf (_fedce _dfg .PdfObject )(*PdfFunctionType2 ,error ){_gcbb :=&PdfFunctionType2 {};var _abda *_dfg .PdfObjectDictionary ;if _gdcdc ,_eagc :=_fedce .(*_dfg .PdfIndirectObject ); _eagc {_fdgfg ,_fbca :=_gdcdc .PdfObject .(*_dfg .PdfObjectDictionary );if !_fbca {return nil ,_bd .New ("\u0074\u0079p\u0065\u0020\u0063h\u0065\u0063\u006b\u0020\u0065\u0072\u0072\u006f\u0072");};_gcbb ._gggdd =_gdcdc ;_abda =_fdgfg ;}else if _dfag ,_faabe :=_fedce .(*_dfg .PdfObjectDictionary ); _faabe {_abda =_dfag ;}else {return nil ,_bd .New ("\u0074\u0079p\u0065\u0020\u0063h\u0065\u0063\u006b\u0020\u0065\u0072\u0072\u006f\u0072");};_egb .Log .Trace ("\u0046U\u004e\u0043\u0032\u003a\u0020\u0025s",_abda .String ());_abaac ,_cege :=_dfg .TraceToDirectObject (_abda .Get ("\u0044\u006f\u006d\u0061\u0069\u006e")).(*_dfg .PdfObjectArray ); if !_cege {_egb .Log .Error ("D\u006fm\u0061\u0069\u006e\u0020\u006e\u006f\u0074\u0020s\u0070\u0065\u0063\u0069fi\u0065\u0064");return nil ,_bd .New ("\u0072\u0065q\u0075\u0069\u0072\u0065d\u0020\u0061t\u0074\u0072\u0069\u0062\u0075\u0074\u0065\u0020m\u0069\u0073\u0073\u0069\u006e\u0067\u0020\u006f\u0072\u0020\u0069\u006ev\u0061\u006c\u0069\u0064"); };if _abaac .Len ()< 0||_abaac .Len ()%2!=0{_egb .Log .Error ("D\u006fm\u0061\u0069\u006e\u0020\u0072\u0061\u006e\u0067e\u0020\u0069\u006e\u0076al\u0069\u0064");return nil ,_bd .New ("i\u006ev\u0061\u006c\u0069\u0064\u0020\u0064\u006f\u006da\u0069\u006e\u0020\u0072an\u0067\u0065"); };_eaacd ,_eacd :=_abaac .ToFloat64Array ();if _eacd !=nil {return nil ,_eacd ;};_gcbb .Domain =_eaacd ;_abaac ,_cege =_dfg .TraceToDirectObject (_abda .Get ("\u0052\u0061\u006eg\u0065")).(*_dfg .PdfObjectArray );if _cege {if _abaac .Len ()< 0||_abaac .Len ()%2!=0{return nil ,_bd .New ("\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0072\u0061\u006e\u0067\u0065"); };_efff ,_dcde :=_abaac .ToFloat64Array ();if _dcde !=nil {return nil ,_dcde ;};_gcbb .Range =_efff ;};_abaac ,_cege =_dfg .TraceToDirectObject (_abda .Get ("\u0043\u0030")).(*_dfg .PdfObjectArray );if _cege {_dfgag ,_gfdfd :=_abaac .ToFloat64Array (); if _gfdfd !=nil {return nil ,_gfdfd ;};_gcbb .C0 =_dfgag ;};_abaac ,_cege =_dfg .TraceToDirectObject (_abda .Get ("\u0043\u0031")).(*_dfg .PdfObjectArray );if _cege {_gggc ,_bcfb :=_abaac .ToFloat64Array ();if _bcfb !=nil {return nil ,_bcfb ;};_gcbb .C1 =_gggc ; };if len (_gcbb .C0 )!=len (_gcbb .C1 ){_egb .Log .Error ("\u0043\u0030\u0020\u0061nd\u0020\u0043\u0031\u0020\u006e\u006f\u0074\u0020\u006d\u0061\u0074\u0063\u0068\u0069n\u0067");return nil ,_dfg .ErrRangeError ;};N ,_eacd :=_dfg .GetNumberAsFloat (_dfg .TraceToDirectObject (_abda .Get ("\u004e"))); if _eacd !=nil {_egb .Log .Error ("\u004e\u0020\u006d\u0069\u0073\u0073\u0069\u006e\u0067\u0020o\u0072\u0020\u0069\u006e\u0076\u0061\u006ci\u0064\u002c\u0020\u0064\u0069\u0063\u0074\u003a\u0020\u0025\u0073",_abda .String ());return nil ,_eacd ;};_gcbb .N =N ; return _gcbb ,nil ;}; // SetType sets the field button's type. Can be one of: // - PdfFieldButtonPush for push button fields // - PdfFieldButtonCheckbox for checkbox fields // - PdfFieldButtonRadio for radio button fields // This sets the field's flag appropriately. func (_ggcc *PdfFieldButton )SetType (btype ButtonType ){_fced :=uint32 (0);if _ggcc .Ff !=nil {_fced =uint32 (*_ggcc .Ff );};switch btype {case ButtonTypePush :_fced |=FieldFlagPushbutton .Mask ();case ButtonTypeRadio :_fced |=FieldFlagRadio .Mask (); };_ggcc .Ff =_dfg .MakeInteger (int64 (_fced ));}; // M returns the value of the magenta component of the color. func (_dade *PdfColorDeviceCMYK )M ()float64 {return _dade [1]}; // NewPdfActionGoTo returns a new "go to" action. func NewPdfActionGoTo ()*PdfActionGoTo {_bfg :=NewPdfAction ();_dab :=&PdfActionGoTo {};_dab .PdfAction =_bfg ;_bfg .SetContext (_dab );return _dab ;}; // NewKValue creates a new K value object. func NewKValue ()*KValue {return &KValue {}}; // SetRotation sets the rotation of all pages added to writer. The rotation is // specified in degrees and must be a multiple of 90. // The Rotate field of individual pages has priority over the global rotation. func (_edaae *PdfWriter )SetRotation (rotate int64 )error {_dbabb ,_afdfd :=_dfg .GetDict (_edaae ._gdcdb );if !_afdfd {return ErrTypeCheck ;};_dbabb .Set ("\u0052\u006f\u0074\u0061\u0074\u0065",_dfg .MakeInteger (rotate ));return nil ;}; // ToInteger convert to an integer format. func (_deda *PdfColorCalRGB )ToInteger (bits int )[3]uint32 {_aedb :=_df .Pow (2,float64 (bits ))-1;return [3]uint32 {uint32 (_aedb *_deda .A ()),uint32 (_aedb *_deda .B ()),uint32 (_aedb *_deda .C ())};}; // GetNumComponents returns the number of color components of the underlying // colorspace device. func (_edfe *PdfColorspaceSpecialPattern )GetNumComponents ()int {return _edfe .UnderlyingCS .GetNumComponents ();}; // PdfFieldButton represents a button field which includes push buttons, checkboxes, and radio buttons. type PdfFieldButton struct{*PdfField ;Opt *_dfg .PdfObjectArray ;_geade *Image ;}; // GetRevisionNumber returns the version of the current Pdf document func (_abbdb *PdfReader )GetRevisionNumber ()int {return _abbdb ._agbcd .GetRevisionNumber ()}; // ToPdfObject implements interface PdfModel. func (_bfcd *PdfAnnotationInk )ToPdfObject ()_dfg .PdfObject {_bfcd .PdfAnnotation .ToPdfObject ();_fdfb :=_bfcd ._afae ;_efabg :=_fdfb .PdfObject .(*_dfg .PdfObjectDictionary );_bfcd .appendToPdfDictionary (_efabg );_efabg .SetIfNotNil ("\u0053u\u0062\u0074\u0079\u0070\u0065",_dfg .MakeName ("\u0049\u006e\u006b")); _efabg .SetIfNotNil ("\u0049n\u006b\u004c\u0069\u0073\u0074",_bfcd .InkList );_efabg .SetIfNotNil ("\u0042\u0053",_bfcd .BS );return _fdfb ;}; // RemoveWatermarkImage removes watermark. // If you don't know exact name of watermark PDF object, pass empty string as an argument. func (_ddgb *PdfPage )RemoveWatermarkImage (name string )error {if _ddgb .Resources !=nil &&_ddgb .Resources .XObject !=nil {if _cade ,_daaeb :=_dfg .GetDict (_ddgb .Resources .XObject );_daaeb {for _ ,_bcgaab :=range _cade .Keys (){if name ==_bcgaab .String (){_ddgb .removeXObj (_cade ,_bcgaab ); continue ;};_ecac ,_cgdfe :=_dfg .GetStream (_cade .Get (_bcgaab ));if !_cgdfe {continue ;};_eggf ,_cgdfe :=_dfg .GetDict (_ecac .Get ("\u0050i\u0065\u0063\u0065\u0049\u006e\u0066o"));if !_cgdfe {continue ;};_agaef ,_cgdfe :=_dfg .GetDict (_eggf .Get ("\u0041\u0044\u0042\u0045\u005f\u0043\u006f\u006d\u0070\u006f\u0075\u006ed\u0054\u0079\u0070\u0065")); if !_cgdfe {continue ;};if _agaef .Get ("\u0050r\u0069\u0076\u0061\u0074\u0065")!=nil &&_agaef .Get ("\u0050r\u0069\u0076\u0061\u0074\u0065").String ()=="\u0057a\u0074\u0065\u0072\u006d\u0061\u0072k"{_ddgb .removeXObj (_cade ,_bcgaab );};};};};_gfbcf ,_faceb :=_ddgb .GetAnnotations (); if _faceb ==nil {_ggbee :=make ([]*PdfAnnotation ,0);for _ ,_bfbac :=range _gfbcf {switch _bfbac .GetContext ().(type ){case *PdfAnnotationWatermark :default:_ggbee =append (_ggbee ,_bfbac );};};_ddgb .SetAnnotations (_ggbee );};return nil ;}; // RemoveStructParentsKey removes the StructParents key. func (_eddee *PdfPage )RemoveStructParentsKey (){_eddee .StructParents =nil }; // AddCustomInfo adds a custom info into document info dictionary. func (_affef *PdfInfo )AddCustomInfo (name string ,value string )error {if _affef ._gdaaeb ==nil {_affef ._gdaaeb =_dfg .MakeDict ();};if _ ,_ffbgc :=_gbffc [name ];_ffbgc {return _d .Errorf ("\u0063\u0061\u006e\u006e\u006ft\u0020\u0075\u0073\u0065\u0020\u0073\u0074\u0061\u006e\u0064\u0061\u0072\u0064 \u0069\u006e\u0066\u006f\u0020\u006b\u0065\u0079\u0020\u0025\u0073\u0020\u0061\u0073\u0020\u0063\u0075\u0073\u0074\u006f\u006d\u0020\u0066\u0069\u0065\u006c\u0064\u0020\u006b\u0065y",name ); };_affef ._gdaaeb .SetIfNotNil (*_dfg .MakeName (name ),_dfg .MakeString (value ));return nil ;}; // SetFitWindow sets the value of the fitWindow flag. func (_ggbcb *ViewerPreferences )SetFitWindow (fitWindow bool ){_ggbcb ._abea =&fitWindow }; // AddAnnotation appends `annot` to the list of page annotations. func (_cccdd *PdfPage )AddAnnotation (annot *PdfAnnotation ){if _cccdd ._dbec ==nil {_cccdd .GetAnnotations ();};_cccdd ._dbec =append (_cccdd ._dbec ,annot );}; // ParserMetadata gets the parser metadata. func (_ggbdg *CompliancePdfReader )ParserMetadata ()_dfg .ParserMetadata {if _ggbdg ._gdcg ==(_dfg .ParserMetadata {}){_ggbdg ._gdcg ,_ =_ggbdg ._agbcd .ParserMetadata ();};return _ggbdg ._gdcg ;}; // NewXObjectImageFromImage creates a new XObject Image from an image object // with default options. If encoder is nil, uses raw encoding (none). func NewXObjectImageFromImage (img *Image ,cs PdfColorspace ,encoder _dfg .StreamEncoder )(*XObjectImage ,error ){_edbab :=NewXObjectImage ();return UpdateXObjectImageFromImage (_edbab ,img ,cs ,encoder );}; // GenerateKDict generates a K dictionary object from the StructureTagInfo. func (_egcbf *StructureTagInfo )GenerateKDict ()*KDict {_geagd :=&KDict {S :_dfg .MakeName (string (_egcbf .StructureType ))};if _egcbf .StructPageNumber !=nil {_geagd .SetPageNumber (*_egcbf .StructPageNumber );};if len (_egcbf .AnnotObjs )==0{_geagd .K =_dfg .MakeInteger (_egcbf .Mcid ); return _geagd ;};_dbdge :=_dfg .MakeArray ();_dbdge .Append (_dfg .MakeInteger (_egcbf .Mcid ));for _ ,_dabbe :=range _egcbf .AnnotObjs {_aegdf :=_dfg .MakeDict ();_aegdf .Set ("\u0054\u0079\u0070\u0065",_dfg .MakeName ("\u004f\u0042\u004a\u0052"));_aegdf .Set ("\u004f\u0062\u006a",_dabbe ); _dbdge .Append (_aegdf );};_geagd .K =_dbdge ;return _geagd ;}; // PrintPageRange returns the value of the printPageRange. func (_ggceae *ViewerPreferences )PrintPageRange ()[]int {return _ggceae ._gbdfbf };var _ pdfFont =(*pdfCIDFontType2 )(nil ); // SetKDict sets the KDict for the KValue. func (_dbda *KValue )SetKDict (kDict *KDict ){_dbda .Clear ();_dbda ._badbf =kDict }; // BaseFont returns the font's "BaseFont" field. func (_fgdb *PdfFont )BaseFont ()string {return _fgdb .baseFields ()._dbcbc };func _gccdg (_bdaaa *_dfg .PdfObjectDictionary )*VRI {_bcaf ,_ :=_dfg .GetString (_bdaaa .Get ("\u0054\u0055"));_ffge ,_ :=_dfg .GetString (_bdaaa .Get ("\u0054\u0053"));return &VRI {Cert :_fccef (_bdaaa .Get ("\u0043\u0065\u0072\u0074")),OCSP :_fccef (_bdaaa .Get ("\u004f\u0043\u0053\u0050")),CRL :_fccef (_bdaaa .Get ("\u0043\u0052\u004c")),TU :_bcaf ,TS :_ffge }; }; // SetBoundingBox sets the bounding box in the attribute object. func (_gbcf *KDict )SetBoundingBox (x ,y ,width ,height float64 ){_gbcf ._abfe =&PdfRectangle {Llx :x ,Lly :y ,Urx :x +width ,Ury :y +height };};func (_ecdcg *PdfWriter )writeString (_babbe string ){if _ecdcg ._afgfcg !=nil {return ;};_gabbf ,_fafa :=_ecdcg ._bfdbg .WriteString (_babbe ); _ecdcg ._cffge +=int64 (_gabbf );_ecdcg ._afgfcg =_fafa ;}; // KDict represents a K dictionary object. type KDict struct{ // The structure type, a name object identifying the nature of the // structure element and its role within the document, // such as a chapter, paragraph, or footnote S _dfg .PdfObject ; // The structure element that is the immediate parent of this one // in the structure hierarchy. P _dfg .PdfObject ; // The element identifier, a byte string designating this structure element. ID *_dfg .PdfObjectString ; // A page object representing a page on which some or all of the content // items designated by the K entry shall be rendered. Pg _dfg .PdfObject ; // The children of this structure element. K _dfg .PdfObject ; // A single attribute object or array of attribute objects associated // with this structure element. A _dfg .PdfObject ; // An attribute class name or array of class names associated with // this structure element. C _dfg .PdfObject ; // The current revision number of this structure element R *_dfg .PdfObjectInteger ; // The title of the structure element, a text string representing // it in human-readable form. T *_dfg .PdfObjectString ; // A language identifier specifying the natural language for all text // in the structure element except where overridden by // language specifications for nested structure elements or marked content. Lang *_dfg .PdfObjectString ; // An alternate description of the structure element and its // children in human-readable form, which is useful when extracting // the document’s contents in support of accessibility to users with // disabilities or for other purposes. Alt *_dfg .PdfObjectString ; // The expanded form of an abbreviation. E *_dfg .PdfObjectString ; // Text that is an exact replacement for the structure element and its children. ActualText *_dfg .PdfObjectString ;_dcgedc []*KValue ;_gabf int64 ;_abfe *PdfRectangle ;};func _gbada (_aefc _dfg .PdfObject )(PdfFunction ,error ){_aefc =_dfg .ResolveReference (_aefc );if _cfcgd ,_adfdf :=_aefc .(*_dfg .PdfObjectStream );_adfdf {_aega :=_cfcgd .PdfObjectDictionary ; _fbegc ,_babae :=_aega .Get ("\u0046\u0075\u006ec\u0074\u0069\u006f\u006e\u0054\u0079\u0070\u0065").(*_dfg .PdfObjectInteger );if !_babae {_egb .Log .Error ("F\u0075\u006e\u0063\u0074\u0069\u006fn\u0054\u0079\u0070\u0065\u0020\u006e\u0075\u006d\u0062e\u0072\u0020\u006di\u0073s\u0069\u006e\u0067"); return nil ,_bd .New ("\u0069\u006e\u0076\u0061l\u0069\u0064\u0020\u0070\u0061\u0072\u0061\u006d\u0065\u0074e\u0072 \u006f\u0072\u0020\u006d\u0069\u0073\u0073i\u006e\u0067");};if *_fbegc ==0{return _agfe (_cfcgd );}else if *_fbegc ==4{return _eaagaf (_cfcgd ); }else {return nil ,_bd .New ("i\u006e\u0076\u0061\u006cid\u0020f\u0075\u006e\u0063\u0074\u0069o\u006e\u0020\u0074\u0079\u0070\u0065");};}else if _ffcc ,_gdeff :=_aefc .(*_dfg .PdfIndirectObject );_gdeff {_bbgagf ,_afdbe :=_ffcc .PdfObject .(*_dfg .PdfObjectDictionary ); if !_afdbe {_egb .Log .Error ("\u0046\u0075\u006e\u0063\u0074\u0069\u006f\u006e\u0020\u0049\u006e\u0064\u0069\u0072\u0065\u0063\u0074\u0020o\u0062\u006a\u0065\u0063\u0074\u0020\u006eo\u0074\u0020\u0063\u006f\u006e\u0074\u0061\u0069\u006e\u0069\u006eg\u0020\u0064\u0069\u0063\u0074\u0069\u006f\u006e\u0061\u0072\u0079"); return nil ,_bd .New ("\u0069\u006e\u0076\u0061l\u0069\u0064\u0020\u0070\u0061\u0072\u0061\u006d\u0065\u0074e\u0072 \u006f\u0072\u0020\u006d\u0069\u0073\u0073i\u006e\u0067");};_fcbb ,_afdbe :=_bbgagf .Get ("\u0046\u0075\u006ec\u0074\u0069\u006f\u006e\u0054\u0079\u0070\u0065").(*_dfg .PdfObjectInteger ); if !_afdbe {_egb .Log .Error ("F\u0075\u006e\u0063\u0074\u0069\u006fn\u0054\u0079\u0070\u0065\u0020\u006e\u0075\u006d\u0062e\u0072\u0020\u006di\u0073s\u0069\u006e\u0067");return nil ,_bd .New ("\u0069\u006e\u0076\u0061l\u0069\u0064\u0020\u0070\u0061\u0072\u0061\u006d\u0065\u0074e\u0072 \u006f\u0072\u0020\u006d\u0069\u0073\u0073i\u006e\u0067"); };if *_fcbb ==2{return _faadcf (_ffcc );}else if *_fcbb ==3{return _befee (_ffcc );}else {return nil ,_bd .New ("i\u006e\u0076\u0061\u006cid\u0020f\u0075\u006e\u0063\u0074\u0069o\u006e\u0020\u0074\u0079\u0070\u0065");};}else if _dgfdb ,_befcf :=_aefc .(*_dfg .PdfObjectDictionary ); _befcf {_fcfg ,_fecbb :=_dgfdb .Get ("\u0046\u0075\u006ec\u0074\u0069\u006f\u006e\u0054\u0079\u0070\u0065").(*_dfg .PdfObjectInteger );if !_fecbb {_egb .Log .Error ("F\u0075\u006e\u0063\u0074\u0069\u006fn\u0054\u0079\u0070\u0065\u0020\u006e\u0075\u006d\u0062e\u0072\u0020\u006di\u0073s\u0069\u006e\u0067"); return nil ,_bd .New ("\u0069\u006e\u0076\u0061l\u0069\u0064\u0020\u0070\u0061\u0072\u0061\u006d\u0065\u0074e\u0072 \u006f\u0072\u0020\u006d\u0069\u0073\u0073i\u006e\u0067");};if *_fcfg ==2{return _faadcf (_dgfdb );}else if *_fcfg ==3{return _befee (_dgfdb ); }else {return nil ,_bd .New ("i\u006e\u0076\u0061\u006cid\u0020f\u0075\u006e\u0063\u0074\u0069o\u006e\u0020\u0074\u0079\u0070\u0065");};}else {_egb .Log .Debug ("\u0046u\u006e\u0063\u0074\u0069\u006f\u006e\u0020\u0054\u0079\u0070\u0065 \u0065\u0072\u0072\u006f\u0072\u003a\u0020\u0025\u0023\u0076",_aefc ); return nil ,_bd .New ("\u0074\u0079\u0070\u0065\u0020\u0065\u0072\u0072\u006f\u0072");};}; // HasXObjectByName checks if has XObject resource by name. func (_bacce *PdfPage )HasXObjectByName (name _dfg .PdfObjectName )bool {_gegcd ,_edcdg :=_bacce .Resources .XObject .(*_dfg .PdfObjectDictionary );if !_edcdg {return false ;};if _cccf :=_gegcd .Get (name );_cccf !=nil {return true ;};return false ;}; // GetPdfName returns the PDF name used to indicate the border style. // (Table 166 p. 395). func (_fgaa *BorderStyle )GetPdfName ()string {switch *_fgaa {case BorderStyleSolid :return "\u0053";case BorderStyleDashed :return "\u0044";case BorderStyleBeveled :return "\u0042";case BorderStyleInset :return "\u0049";case BorderStyleUnderline :return "\u0055"; };return "";}; // PdfFunctionType4 is a Postscript calculator functions. type PdfFunctionType4 struct{Domain []float64 ;Range []float64 ;Program *_cb .PSProgram ;_adgdc *_cb .PSExecutor ;_gbgcb []byte ;_gbaed *_dfg .PdfObjectStream ;}; // SetPdfAuthor sets the Author attribute of the output PDF. func SetPdfAuthor (author string ){_dfbaa .Lock ();defer _dfbaa .Unlock ();_eebage =author }; // PdfPage represents a page in a PDF document. (7.7.3.3 - Table 30). type PdfPage struct{Parent _dfg .PdfObject ;LastModified *PdfDate ;Resources *PdfPageResources ;CropBox *PdfRectangle ;MediaBox *PdfRectangle ;BleedBox *PdfRectangle ;TrimBox *PdfRectangle ;ArtBox *PdfRectangle ;BoxColorInfo _dfg .PdfObject ;Contents _dfg .PdfObject ; Rotate *int64 ;Group _dfg .PdfObject ;Thumb _dfg .PdfObject ;B _dfg .PdfObject ;Dur _dfg .PdfObject ;Trans _dfg .PdfObject ;AA _dfg .PdfObject ;Metadata _dfg .PdfObject ;PieceInfo _dfg .PdfObject ;StructParents _dfg .PdfObject ;ID _dfg .PdfObject ;PZ _dfg .PdfObject ; SeparationInfo _dfg .PdfObject ;Tabs _dfg .PdfObject ;TemplateInstantiated _dfg .PdfObject ;PresSteps _dfg .PdfObject ;UserUnit _dfg .PdfObject ;VP _dfg .PdfObject ;Annots _dfg .PdfObject ;_dbec []*PdfAnnotation ;_daae *_dfg .PdfObjectDictionary ;_bdeee *_dfg .PdfIndirectObject ; _fagbf _dfg .PdfObjectDictionary ;_ggcgd *PdfReader ;}; // ToPdfObject implements interface PdfModel. func (_edbb *PdfAnnotationRedact )ToPdfObject ()_dfg .PdfObject {_edbb .PdfAnnotation .ToPdfObject ();_faga :=_edbb ._afae ;_dfb :=_faga .PdfObject .(*_dfg .PdfObjectDictionary );_edbb .appendToPdfDictionary (_dfb );_dfb .SetIfNotNil ("\u0053u\u0062\u0074\u0079\u0070\u0065",_dfg .MakeName ("\u0052\u0065\u0064\u0061\u0063\u0074")); _dfb .SetIfNotNil ("\u0051\u0075\u0061\u0064\u0050\u006f\u0069\u006e\u0074\u0073",_edbb .QuadPoints );_dfb .SetIfNotNil ("\u0049\u0043",_edbb .IC );_dfb .SetIfNotNil ("\u0052\u004f",_edbb .RO );_dfb .SetIfNotNil ("O\u0076\u0065\u0072\u006c\u0061\u0079\u0054\u0065\u0078\u0074",_edbb .OverlayText ); _dfb .SetIfNotNil ("\u0052\u0065\u0070\u0065\u0061\u0074",_edbb .Repeat );_dfb .SetIfNotNil ("\u0044\u0041",_edbb .DA );_dfb .SetIfNotNil ("\u0051",_edbb .Q );return _faga ;}; // GetContainingPdfObject returns the container of the PdfAcroForm (indirect object). func (_bcadg *PdfAcroForm )GetContainingPdfObject ()_dfg .PdfObject {return _bcadg ._gddd }; // NewPdfAnnotationUnderline returns a new text underline annotation. func NewPdfAnnotationUnderline ()*PdfAnnotationUnderline {_caab :=NewPdfAnnotation ();_bce :=&PdfAnnotationUnderline {};_bce .PdfAnnotation =_caab ;_bce .PdfAnnotationMarkup =&PdfAnnotationMarkup {};_caab .SetContext (_bce );return _bce ;};func (_edga *PdfAppender )replaceObject (_geeb ,_dcee _dfg .PdfObject ){switch _ddcg :=_geeb .(type ){case *_dfg .PdfIndirectObject :_edga ._effe [_dcee ]=_ddcg .ObjectNumber ; case *_dfg .PdfObjectStream :_edga ._effe [_dcee ]=_ddcg .ObjectNumber ;};}; // ParsePdfObject parses input pdf object into given output intent. func (_gdde *PdfOutputIntent )ParsePdfObject (object _dfg .PdfObject )error {_cebb ,_fbeed :=_dfg .GetDict (object );if !_fbeed {_egb .Log .Error ("\u0055\u006e\u006bno\u0077\u006e\u0020\u0074\u0079\u0070\u0065\u003a\u0020%\u0054 \u0066o\u0072 \u006f\u0075\u0074\u0070\u0075\u0074\u0020\u0069\u006e\u0074\u0065\u006e\u0074",object ); return _bd .New ("\u0075\u006e\u006b\u006e\u006fw\u006e\u0020\u0070\u0064\u0066\u0020\u006f\u0062\u006a\u0065\u0063\u0074\u0020t\u0079\u0070\u0065\u0020\u0066\u006f\u0072\u0020\u006f\u0075\u0074\u0070\u0075\u0074\u0020\u0069\u006e\u0074\u0065\u006e\u0074"); };_gdde ._gacff =_cebb ;_gdde .Type ,_ =_cebb .GetString ("\u0054\u0079\u0070\u0065");_edefb ,_fbeed :=_cebb .GetString ("\u0053");if _fbeed {switch _edefb {case "\u0047T\u0053\u005f\u0050\u0044\u0046\u00411":_gdde .S =PdfOutputIntentTypeA1 ;case "\u0047T\u0053\u005f\u0050\u0044\u0046\u00412":_gdde .S =PdfOutputIntentTypeA2 ; case "\u0047T\u0053\u005f\u0050\u0044\u0046\u00413":_gdde .S =PdfOutputIntentTypeA3 ;case "\u0047T\u0053\u005f\u0050\u0044\u0046\u00414":_gdde .S =PdfOutputIntentTypeA4 ;case "\u0047\u0054\u0053\u005f\u0050\u0044\u0046\u0058":_gdde .S =PdfOutputIntentTypeX ; };};_gdde .OutputCondition ,_ =_cebb .GetString ("\u004fu\u0074p\u0075\u0074\u0043\u006f\u006e\u0064\u0069\u0074\u0069\u006f\u006e");_gdde .OutputConditionIdentifier ,_ =_cebb .GetString ("\u004fu\u0074\u0070\u0075\u0074C\u006f\u006e\u0064\u0069\u0074i\u006fn\u0049d\u0065\u006e\u0074\u0069\u0066\u0069\u0065r"); _gdde .RegistryName ,_ =_cebb .GetString ("\u0052\u0065\u0067i\u0073\u0074\u0072\u0079\u004e\u0061\u006d\u0065");_gdde .Info ,_ =_cebb .GetString ("\u0049\u006e\u0066\u006f");if _afbgcb ,_fcfa :=_dfg .GetStream (_cebb .Get ("\u0044\u0065\u0073\u0074\u004f\u0075\u0074\u0070\u0075\u0074\u0050\u0072o\u0066\u0069\u006c\u0065")); _fcfa {_gdde .ColorComponents ,_ =_dfg .GetIntVal (_afbgcb .Get ("\u004e"));_addcb ,_eccef :=_dfg .DecodeStream (_afbgcb );if _eccef !=nil {return _eccef ;};_gdde .DestOutputProfile =_addcb ;};return nil ;}; // Duplicate creates a duplicate page based on the current one and returns it. func (_gcbf *PdfPage )Duplicate ()*PdfPage {_bbagc :=*_gcbf ;_bbagc ._daae =_dfg .MakeDict ();_bbagc ._bdeee =_dfg .MakeIndirectObject (_bbagc ._daae );_bbagc ._fagbf =*_bbagc ._daae ;return &_bbagc ;}; // GetIndirectObjectByNumber retrieves and returns a specific PdfObject by object number. func (_febade *PdfReader )GetIndirectObjectByNumber (number int )(_dfg .PdfObject ,error ){_cfbaf ,_fcbc :=_febade ._agbcd .LookupByNumber (number );return _cfbaf ,_fcbc ;};func (_daccd *PdfWriter )adjustXRefAffectedVersion (_ecegd bool ){if _ecegd &&_daccd ._cfbcb .Major ==1&&_daccd ._cfbcb .Minor < 5{_daccd ._cfbcb .Minor =5; };}; // NewPdfTransformParamsDocMDP create a PdfTransformParamsDocMDP with the specific permissions. func NewPdfTransformParamsDocMDP (permission _bba .DocMDPPermission )*PdfTransformParamsDocMDP {return &PdfTransformParamsDocMDP {Type :_dfg .MakeName ("\u0054r\u0061n\u0073\u0066\u006f\u0072\u006d\u0050\u0061\u0072\u0061\u006d\u0073"),P :_dfg .MakeInteger (int64 (permission )),V :_dfg .MakeName ("\u0031\u002e\u0032")}; }; // SetAnnotations sets the annotations list. func (_cddfag *PdfPage )SetAnnotations (annotations []*PdfAnnotation ){_cddfag ._dbec =annotations }; // ToPdfObject converts the K dictionary to a PDF object. func (_beea *KDict )ToPdfObject ()_dfg .PdfObject {_bgadea :=_dfg .MakeDict ();if _beea .ID !=nil {_bgadea .Set ("\u0049\u0044",_beea .ID );};if _beea .K !=nil {_bgadea .Set ("\u004b",_beea .K );}else if len (_beea ._dcgedc )> 0{if len (_beea ._dcgedc )==1{_beea .K =_beea ._dcgedc [0].ToPdfObject (); }else {_abdbd :=_dfg .MakeArray ();for _ ,_eeead :=range _beea ._dcgedc {_abdbd .Append (_eeead .ToPdfObject ());};_beea .K =_abdbd ;};_bgadea .Set ("\u004b",_beea .K );};if _beea .S !=nil {_bgadea .Set ("\u0053",_beea .S );};if _beea .P !=nil {_bgadea .Set ("\u0050",_beea .P ); };if _beea .Pg !=nil {_bgadea .Set ("\u0050\u0067",_beea .Pg );};if _beea .C !=nil {_bgadea .Set ("\u0043",_beea .C );};if _beea .R !=nil {_bgadea .Set ("\u0052",_beea .R );};if _beea .T !=nil {_bgadea .Set ("\u0054",_beea .T );};if _beea .Lang !=nil {_bgadea .Set ("\u004c\u0061\u006e\u0067",_beea .Lang ); };if _beea .Alt !=nil {_bgadea .Set ("\u0041\u006c\u0074",_beea .Alt );};if _beea .E !=nil {_bgadea .Set ("\u0045",_beea .E );};if _beea .A !=nil {_bgadea .Set ("\u0041",_beea .A );}else if _beea ._abfe !=nil {_bfgbac :=_dfg .MakeArrayFromFloats ([]float64 {_beea ._abfe .Llx ,_beea ._abfe .Lly ,_beea ._abfe .Urx ,_beea ._abfe .Ury }); _cgafe :=_dfg .MakeDict ();_cgafe .Set ("\u0042\u0042\u006f\u0078",_bfgbac );_cgafe .Set ("\u004f",_dfg .MakeString ("\u004c\u0061\u0079\u006f\u0075\u0074"));_bgadea .Set ("\u0041",_dfg .MakeIndirectObject (_cgafe ));};if _beea .ActualText !=nil {_bgadea .Set ("\u0041\u0063\u0074\u0075\u0061\u006c\u0054\u0065\u0078\u0074",_beea .ActualText ); };if _beea .E !=nil {_bgadea .Set ("\u0045",_beea .E );};if _beea .Alt !=nil {_bgadea .Set ("\u0041\u006c\u0074",_beea .Alt );};return _bgadea ;};func (_bgecg *PdfColorspaceICCBased )String ()string {return "\u0049\u0043\u0043\u0042\u0061\u0073\u0065\u0064"; }; // ToPdfObject implements interface PdfModel. func (_acb *PdfAction )ToPdfObject ()_dfg .PdfObject {_gecf :=_acb ._fe ;_cg :=_gecf .PdfObject .(*_dfg .PdfObjectDictionary );_cg .Clear ();_cg .Set ("\u0054\u0079\u0070\u0065",_dfg .MakeName ("\u0041\u0063\u0074\u0069\u006f\u006e"));_cg .SetIfNotNil ("\u0053",_acb .S ); _cg .SetIfNotNil ("\u004e\u0065\u0078\u0074",_acb .Next );return _gecf ;}; // ToPdfObject returns the choice field dictionary within an indirect object (container). func (_eaad *PdfFieldChoice )ToPdfObject ()_dfg .PdfObject {_eaad .PdfField .ToPdfObject ();_dbff :=_eaad ._caaa ;_gfae :=_dbff .PdfObject .(*_dfg .PdfObjectDictionary );_gfae .Set ("\u0046\u0054",_dfg .MakeName ("\u0043\u0068"));if _eaad .Opt !=nil {_gfae .Set ("\u004f\u0070\u0074",_eaad .Opt ); };if _eaad .TI !=nil {_gfae .Set ("\u0054\u0049",_eaad .TI );};if _eaad .I !=nil {_gfae .Set ("\u0049",_eaad .I );};return _dbff ;};func (_ccafb *PdfReader )newPdfAnnotationProjectionFromDict (_eafe *_dfg .PdfObjectDictionary )(*PdfAnnotationProjection ,error ){_aag :=&PdfAnnotationProjection {}; _gffa ,_dgga :=_ccafb .newPdfAnnotationMarkupFromDict (_eafe );if _dgga !=nil {return nil ,_dgga ;};_aag .PdfAnnotationMarkup =_gffa ;return _aag ,nil ;};func _agbff (_ebfdd *_dfg .PdfObjectDictionary )(*PdfShadingType5 ,error ){_bcfcb :=PdfShadingType5 {}; _cecdd :=_ebfdd .Get ("\u0042\u0069\u0074\u0073\u0050\u0065\u0072\u0043\u006f\u006f\u0072\u0064i\u006e\u0061\u0074\u0065");if _cecdd ==nil {_egb .Log .Debug ("\u0052e\u0071\u0075i\u0072\u0065\u0064 \u0061\u0074\u0074\u0072\u0069\u0062\u0075t\u0065\u0020\u006d\u0069\u0073\u0073i\u006e\u0067\u003a\u0020\u0042\u0069\u0074\u0073\u0050\u0065\u0072C\u006f\u006f\u0072\u0064\u0069\u006e\u0061\u0074\u0065"); return nil ,ErrRequiredAttributeMissing ;};_eefae ,_bfaedbg :=_cecdd .(*_dfg .PdfObjectInteger );if !_bfaedbg {_egb .Log .Debug ("\u0042\u0069\u0074\u0073\u0050e\u0072\u0043\u006f\u006f\u0072\u0064\u0069\u006e\u0061\u0074\u0065\u0020\u006eo\u0074\u0020\u0061\u006e\u0020\u0069\u006e\u0074\u0065\u0067\u0065\u0072\u0020\u0028\u0067\u006f\u0074\u0020\u0025\u0054\u0029",_cecdd ); return nil ,_dfg .ErrTypeError ;};_bcfcb .BitsPerCoordinate =_eefae ;_cecdd =_ebfdd .Get ("\u0042\u0069t\u0073\u0050\u0065r\u0043\u006f\u006d\u0070\u006f\u006e\u0065\u006e\u0074");if _cecdd ==nil {_egb .Log .Debug ("\u0052e\u0071\u0075i\u0072\u0065\u0064\u0020a\u0074\u0074\u0072i\u0062\u0075\u0074\u0065\u0020\u006d\u0069\u0073\u0073in\u0067\u003a\u0020B\u0069\u0074s\u0050\u0065\u0072\u0043\u006f\u006dp\u006f\u006ee\u006e\u0074"); return nil ,ErrRequiredAttributeMissing ;};_eefae ,_bfaedbg =_cecdd .(*_dfg .PdfObjectInteger );if !_bfaedbg {_egb .Log .Debug ("B\u0069\u0074\u0073\u0050\u0065\u0072\u0043\u006f\u006d\u0070\u006f\u006e\u0065\u006e\u0074\u0020\u006e\u006ft\u0020\u0061\u006e\u0020\u0069\u006e\u0074\u0065\u0067\u0065r \u0028\u0067\u006ft\u0020%\u0054\u0029",_cecdd ); return nil ,_dfg .ErrTypeError ;};_bcfcb .BitsPerComponent =_eefae ;_cecdd =_ebfdd .Get ("\u0056\u0065\u0072\u0074\u0069\u0063\u0065\u0073\u0050e\u0072\u0052\u006f\u0077");if _cecdd ==nil {_egb .Log .Debug ("\u0052\u0065\u0071u\u0069\u0072\u0065\u0064\u0020\u0061\u0074\u0074\u0072\u0069\u0062\u0075\u0074\u0065\u0020\u006d\u0069\u0073\u0073\u0069\u006e\u0067\u003a\u0020\u0056\u0065\u0072\u0074\u0069c\u0065\u0073\u0050\u0065\u0072\u0052\u006f\u0077"); return nil ,ErrRequiredAttributeMissing ;};_eefae ,_bfaedbg =_cecdd .(*_dfg .PdfObjectInteger );if !_bfaedbg {_egb .Log .Debug ("\u0056\u0065\u0072\u0074\u0069\u0063\u0065\u0073\u0050\u0065\u0072\u0052\u006f\u0077\u0020\u006e\u006f\u0074\u0020\u0061\u006e\u0020\u0069\u006et\u0065\u0067\u0065\u0072\u0020(\u0067\u006ft\u0020\u0025\u0054\u0029",_cecdd ); return nil ,_dfg .ErrTypeError ;};_bcfcb .VerticesPerRow =_eefae ;_cecdd =_ebfdd .Get ("\u0044\u0065\u0063\u006f\u0064\u0065");if _cecdd ==nil {_egb .Log .Debug ("\u0052\u0065\u0071ui\u0072\u0065\u0064\u0020\u0061\u0074\u0074\u0072\u0069b\u0075t\u0065 \u006di\u0073\u0073\u0069\u006e\u0067\u003a\u0020\u0044\u0065\u0063\u006f\u0064\u0065"); return nil ,ErrRequiredAttributeMissing ;};_cgbd ,_bfaedbg :=_cecdd .(*_dfg .PdfObjectArray );if !_bfaedbg {_egb .Log .Debug ("\u0044\u0065\u0063\u006fd\u0065\u0020\u006e\u006f\u0074\u0020\u0061\u006e\u0020\u0061r\u0072a\u0079\u0020\u0028\u0067\u006f\u0074\u0020%\u0054\u0029",_cecdd ); return nil ,_dfg .ErrTypeError ;};_bcfcb .Decode =_cgbd ;if _cggbg :=_ebfdd .Get ("\u0046\u0075\u006e\u0063\u0074\u0069\u006f\u006e");_cggbg !=nil {_bcfcb .Function =[]PdfFunction {};if _cgce ,_gcgfe :=_cggbg .(*_dfg .PdfObjectArray );_gcgfe {for _ ,_adaba :=range _cgce .Elements (){_gefbc ,_aeabd :=_gbada (_adaba ); if _aeabd !=nil {_egb .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0070\u0061\u0072\u0073\u0069n\u0067\u0020\u0066\u0075\u006e\u0063\u0074\u0069\u006f\u006e:\u0020\u0025\u0076",_aeabd );return nil ,_aeabd ;};_bcfcb .Function =append (_bcfcb .Function ,_gefbc ); };}else {_cfebf ,_dcbeg :=_gbada (_cggbg );if _dcbeg !=nil {_egb .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0070\u0061\u0072\u0073\u0069n\u0067\u0020\u0066\u0075\u006e\u0063\u0074\u0069\u006f\u006e:\u0020\u0025\u0076",_dcbeg );return nil ,_dcbeg ; };_bcfcb .Function =append (_bcfcb .Function ,_cfebf );};};return &_bcfcb ,nil ;}; // PdfFont represents an underlying font structure which can be of type: // - Type0 // - Type1 // - TrueType // etc. type PdfFont struct{_fab pdfFont }; // GetContainingPdfObject implements interface PdfModel. func (_fd *PdfAction )GetContainingPdfObject ()_dfg .PdfObject {return _fd ._fe }; // Encoder returns the font's text encoder. func (_bccddf *PdfFont )Encoder ()_ff .TextEncoder {_abcd :=_bccddf .actualFont ();if _abcd ==nil {_egb .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0045n\u0063\u006f\u0064er\u0020\u006e\u006f\u0074\u0020\u0069m\u0070\u006c\u0065\u006d\u0065\u006e\u0074\u0065\u0064\u0020\u0066\u006f\u0072\u0020\u0066o\u006e\u0074\u0020\u0074\u0079\u0070\u0065\u003d%\u0023\u0054",_bccddf ._fab ); return nil ;};return _abcd .Encoder ();}; // NewPdfColorspaceCalRGB returns a new CalRGB colorspace object. func NewPdfColorspaceCalRGB ()*PdfColorspaceCalRGB {_aafd :=&PdfColorspaceCalRGB {};_aafd .BlackPoint =[]float64 {0.0,0.0,0.0};_aafd .Gamma =[]float64 {1.0,1.0,1.0};_aafd .Matrix =[]float64 {1,0,0,0,1,0,0,0,1};return _aafd ;}; // GetChildren returns the children of the K dictionary object. func (_geeag *KDict )GetChildren ()[]*KValue {return _geeag ._dcgedc }; // SetPatternByName sets a pattern resource specified by keyName. func (_agfbd *PdfPageResources )SetPatternByName (keyName _dfg .PdfObjectName ,pattern _dfg .PdfObject )error {if _agfbd .Pattern ==nil {_agfbd .Pattern =_dfg .MakeDict ();};_gbee ,_ffgd :=_dfg .GetDict (_agfbd .Pattern );if !_ffgd {return _dfg .ErrTypeError ; };_gbee .Set (keyName ,pattern );return nil ;}; // BorderStyle defines border type, typically used for annotations. type BorderStyle int ;