diff options
Diffstat (limited to 'unipdf/model/model.go')
| -rw-r--r-- | unipdf/model/model.go | 5805 |
1 files changed, 5805 insertions, 0 deletions
diff --git a/unipdf/model/model.go b/unipdf/model/model.go new file mode 100644 index 0000000..cbfba0d --- /dev/null +++ b/unipdf/model/model.go @@ -0,0 +1,5805 @@ +// +// 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 ;
\ No newline at end of file |
