unipdf/render/render.go
2020-09-28 23:18:17 +00:00

25 lines
31 KiB
Go

//
// Copyright 2020 FoxyUtils ehf. All rights reserved.
//
// This is a commercial product and requires a license to operate.
// A trial license can be obtained at https://unidoc.io
//
// DO NOT EDIT: generated by unitwist Go source code obfuscator.
//
// Use of this source code is governed by the UniDoc End User License Agreement
// terms that can be accessed at https://unidoc.io/eula/
package render ;import (_e "errors";_b "fmt";_bc "github.com/adrg/sysfont";_add "github.com/unidoc/unipdf/v3/common";_d "github.com/unidoc/unipdf/v3/contentstream";_eg "github.com/unidoc/unipdf/v3/core";_ba "github.com/unidoc/unipdf/v3/internal/transform";_fac "github.com/unidoc/unipdf/v3/model";_ee "github.com/unidoc/unipdf/v3/render/internal/context";_da "github.com/unidoc/unipdf/v3/render/internal/context/imagerender";_fa "image";_ag "image/draw";_ff "image/jpeg";_ad "image/png";_f "os";_gd "path/filepath";_g "strings";);
// NewImageDevice returns a new image device.
func NewImageDevice ()*ImageDevice {return &ImageDevice {}};
// RenderToPath converts the specified PDF page into an image and saves the
// result at the specified location.
func (_bcd *ImageDevice )RenderToPath (page *_fac .PdfPage ,outputPath string )error {_ecb ,_ea :=_bcd .Render (page );if _ea !=nil {return _ea ;};_gf :=_g .ToLower (_gd .Ext (outputPath ));if _gf ==""{return _e .New ("\u0063\u006ful\u0064\u0020\u006eo\u0074\u0020\u0072\u0065cog\u006eiz\u0065\u0020\u006f\u0075\u0074\u0070\u0075t \u0066\u0069\u006c\u0065\u0020\u0074\u0079p\u0065");};switch _gf {case "\u002e\u0070\u006e\u0067":return _fb (outputPath ,_ecb );case "\u002e\u006a\u0070\u0067","\u002e\u006a\u0070e\u0067":return _ggc (outputPath ,_ecb ,100);};return _b .Errorf ("\u0075\u006e\u0072\u0065\u0063\u006fg\u006e\u0069\u007a\u0065\u0064\u0020\u006f\u0075\u0074\u0070\u0075\u0074\u0020f\u0069\u006c\u0065\u0020\u0074\u0079\u0070e\u003a\u0020\u0025\u0073",_gf );};var (_dde =_e .New ("\u0074\u0079p\u0065\u0020\u0063h\u0065\u0063\u006b\u0020\u0065\u0072\u0072\u006f\u0072");_be =_e .New ("\u0072\u0061\u006e\u0067\u0065\u0020\u0063\u0068\u0065\u0063\u006b\u0020e\u0072\u0072\u006f\u0072"););
// Render converts the specified PDF page into an image and returns the result.
func (_dd *ImageDevice )Render (page *_fac .PdfPage )(_fa .Image ,error ){_ege ,_dg :=page .GetMediaBox ();if _dg !=nil {return nil ,_dg ;};_ec ,_ga :=_ege .Llx +_ege .Width (),_ege .Lly +_ege .Height ();_fe :=_da .NewContext (int (_ec ),int (_ga ));if _bca :=_dd .renderPage (_fe ,page );_bca !=nil {return nil ,_bca ;};_adde :=_fe .Image ();if _gb :=page .CropBox ;_gb !=nil {_fc :=_fa .Rect (0,0,int (_gb .Width ()),int (_gb .Height ()));_ef :=_fa .Pt (int (_gb .Llx ),int (_ga -_gb .Ury ));_af :=_fa .NewRGBA (_fc );_ag .Draw (_af ,_fc ,_adde ,_ef ,_ag .Src );_adde =_af ;};return _adde ,nil ;};func _ggc (_gdb string ,_efa _fa .Image ,_gga int )error {_df ,_acd :=_f .Create (_gdb );if _acd !=nil {return _acd ;};defer _df .Close ();return _ff .Encode (_df ,_efa ,&_ff .Options {Quality :_gga });};func _fb (_addee string ,_ac _fa .Image )error {_gbe ,_gg :=_f .Create (_addee );if _gg !=nil {return _gg ;};defer _gbe .Close ();return _ad .Encode (_gbe ,_ac );};type renderer struct{};func (_fae renderer )renderPage (_gc _ee .Context ,_agg *_fac .PdfPage )error {_eb ,_ab :=_agg .GetAllContentStreams ();if _ab !=nil {return _ab ;};_gc .Translate (0,float64 (_gc .Height ()));_gc .Scale (1,-1);_gc .Push ();_gc .SetRGBA (1,1,1,1);_gc .DrawRectangle (0,0,float64 (_gc .Width ()),float64 (_gc .Height ()));_gc .Fill ();_gc .Pop ();_gc .SetLineWidth (1.0);_gc .SetRGBA (0,0,0,1);return _fae .renderContentStream (_gc ,_eb ,_agg .Resources );};func (_bf renderer )renderContentStream (_c _ee .Context ,_bag string ,_db *_fac .PdfPageResources )error {_cd ,_fd :=_d .NewContentStreamParser (_bag ).Parse ();if _fd !=nil {return _fd ;};_ffc :=_c .TextState ();_ace :=map[string ]*_ee .TextFont {};_faa :=_bc .NewFinder (&_bc .FinderOpts {Extensions :[]string {"\u002e\u0074\u0074\u0066","\u002e\u0074\u0074\u0063"}});_dc :=_d .NewContentStreamProcessor (*_cd );_dc .AddHandler (_d .HandlerConditionEnumAllOperands ,"",func (_dac *_d .ContentStreamOperation ,_ffg _d .GraphicsState ,_dcf *_fac .PdfPageResources )error {_add .Log .Debug ("\u0050\u0072\u006f\u0063\u0065\u0073\u0073\u0069\u006e\u0067\u0020\u0025\u0073",_dac .Operand );switch _dac .Operand {case "\u0071":_c .Push ();case "\u0051":_c .Pop ();case "\u0063\u006d":if len (_dac .Params )!=6{return _be ;};_eca ,_fff :=_eg .GetNumbersAsFloat (_dac .Params );if _fff !=nil {return _fff ;};_gbeg :=_ba .NewMatrix (_eca [0],_eca [1],_eca [2],_eca [3],_eca [4],_eca [5]);_add .Log .Debug ("\u0047\u0072\u0061\u0070\u0068\u0069\u0063\u0073\u0020\u0073\u0074a\u0074\u0065\u0020\u006d\u0061\u0074\u0072\u0069\u0078\u003a \u0025\u002b\u0076",_gbeg );_c .SetMatrix (_c .Matrix ().Mult (_gbeg ));_cb :=(_ffg .CTM .ScalingFactorX ()+_ffg .CTM .ScalingFactorY ())/2.0;_c .SetLineWidth (_cb *_c .LineWidth ());case "\u0077":if len (_dac .Params )!=1{return _be ;};_bb ,_eee :=_eg .GetNumbersAsFloat (_dac .Params );if _eee !=nil {return _eee ;};_cdb :=(_ffg .CTM .ScalingFactorX ()+_ffg .CTM .ScalingFactorY ())/2.0;_c .SetLineWidth (_cdb *_bb [0]);case "\u004a":if len (_dac .Params )!=1{return _be ;};_acg ,_ebf :=_eg .GetIntVal (_dac .Params [0]);if !_ebf {return _dde ;};switch _acg {case 0:_c .SetLineCap (_ee .LineCapButt );case 1:_c .SetLineCap (_ee .LineCapRound );case 2:_c .SetLineCap (_ee .LineCapSquare );default:_add .Log .Debug ("\u0049\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u006c\u0069\u006ee\u0020\u0063\u0061\u0070\u0020\u0073\u0074\u0079\u006c\u0065:\u0020\u0025\u0064",_acg );return _be ;};case "\u006a":if len (_dac .Params )!=1{return _be ;};_efb ,_bfb :=_eg .GetIntVal (_dac .Params [0]);if !_bfb {return _dde ;};switch _efb {case 0:_c .SetLineJoin (_ee .LineJoinBevel );case 1:_c .SetLineJoin (_ee .LineJoinRound );case 2:_c .SetLineJoin (_ee .LineJoinBevel );default:_add .Log .Debug ("I\u006e\u0076\u0061\u006c\u0069\u0064 \u006c\u0069\u006e\u0065\u0020\u006a\u006f\u0069\u006e \u0073\u0074\u0079l\u0065:\u0020\u0025\u0064",_efb );return _be ;};case "\u004d":if len (_dac .Params )!=1{return _be ;};_fbf ,_bd :=_eg .GetNumbersAsFloat (_dac .Params );if _bd !=nil {return _bd ;};_ =_fbf ;_add .Log .Debug ("\u004di\u0074\u0065\u0072\u0020l\u0069\u006d\u0069\u0074\u0020n\u006ft\u0020s\u0075\u0070\u0070\u006f\u0072\u0074\u0065d");case "\u0064":if len (_dac .Params )!=2{return _be ;};_bba ,_eff :=_eg .GetArray (_dac .Params [0]);if !_eff {return _dde ;};_efc ,_eff :=_eg .GetIntVal (_dac .Params [1]);if !_eff {return _dde ;};_ddee ,_gag :=_eg .GetNumbersAsFloat (_bba .Elements ());if _gag !=nil {return _gag ;};_c .SetDash (_ddee ...);_ =_efc ;_add .Log .Debug ("\u004c\u0069n\u0065\u0020\u0064\u0061\u0073\u0068\u0020\u0070\u0068\u0061\u0073\u0065\u0020\u006e\u006f\u0074\u0020\u0073\u0075\u0070\u0070\u006frt\u0065\u0064");case "\u0072\u0069":_add .Log .Debug ("\u0052\u0065\u006e\u0064\u0065\u0072\u0069\u006e\u0067\u0020i\u006e\u0074\u0065\u006e\u0074\u0020\u006eo\u0074\u0020\u0073\u0075\u0070\u0070\u006f\u0072\u0074\u0065\u0064");case "\u0069":_add .Log .Debug ("\u0046\u006c\u0061\u0074\u006e\u0065\u0073\u0073\u0020\u0074\u006f\u006c\u0065\u0072\u0061n\u0063e\u0020\u006e\u006f\u0074\u0020\u0073\u0075\u0070\u0070\u006f\u0072\u0074\u0065\u0064");case "\u0067\u0073":if len (_dac .Params )!=1{return _be ;};_efcf ,_bdb :=_eg .GetName (_dac .Params [0]);if !_bdb {return _dde ;};if _efcf ==nil {return _be ;};_ecbf ,_bdb :=_dcf .GetExtGState (*_efcf );if !_bdb {_add .Log .Debug ("\u0045\u0052\u0052OR\u003a\u0020\u0063\u006f\u0075\u006c\u0064\u0020\u006eo\u0074 \u0066i\u006ed\u0020\u0072\u0065\u0073\u006f\u0075\u0072\u0063\u0065\u003a\u0020\u0025\u0073",*_efcf );return _e .New ("\u0072e\u0073o\u0075\u0072\u0063\u0065\u0020n\u006f\u0074 \u0066\u006f\u0075\u006e\u0064");};_efg ,_bdb :=_eg .GetDict (_ecbf );if !_bdb {_add .Log .Debug ("\u0045\u0052RO\u0052\u003a\u0020c\u006f\u0075\u006c\u0064 ge\u0074 g\u0072\u0061\u0070\u0068\u0069\u0063\u0073 s\u0074\u0061\u0074\u0065\u0020\u0064\u0069c\u0074");return _dde ;};_add .Log .Debug ("G\u0053\u0020\u0064\u0069\u0063\u0074\u003a\u0020\u0025\u0073",_efg .String ());case "\u006d":if len (_dac .Params )!=2{_add .Log .Debug ("\u0057\u0041\u0052\u004e\u003a\u0020\u0065\u0072\u0072o\u0072\u0020\u0077\u0068\u0069\u006c\u0065\u0020\u0070\u0072\u006f\u0063\u0065\u0073\u0073\u0069\u006e\u0067\u0020\u0060\u006d\u0060\u0020o\u0070\u0065r\u0061\u0074o\u0072\u003a\u0020\u0025\u0073\u002e\u0020\u004f\u0075\u0074\u0070\u0075\u0074 m\u0061\u0079\u0020\u0062\u0065\u0020\u0069\u006e\u0063o\u0072\u0072\u0065\u0063\u0074\u002e",_be );return nil ;};_ge ,_bce :=_eg .GetNumbersAsFloat (_dac .Params );if _bce !=nil {return _bce ;};_add .Log .Debug ("M\u006f\u0076\u0065\u0020\u0074\u006f\u003a\u0020\u0025\u0076",_ge );_c .NewSubPath ();_c .MoveTo (_ge [0],_ge [1]);case "\u006c":if len (_dac .Params )!=2{_add .Log .Debug ("\u0057\u0041\u0052\u004e\u003a\u0020\u0065\u0072\u0072o\u0072\u0020\u0077\u0068\u0069\u006c\u0065\u0020\u0070\u0072\u006f\u0063\u0065\u0073\u0073\u0069\u006e\u0067\u0020\u0060\u006c\u0060\u0020o\u0070\u0065r\u0061\u0074o\u0072\u003a\u0020\u0025\u0073\u002e\u0020\u004f\u0075\u0074\u0070\u0075\u0074 m\u0061\u0079\u0020\u0062\u0065\u0020\u0069\u006e\u0063o\u0072\u0072\u0065\u0063\u0074\u002e",_be );return nil ;};_ce ,_ca :=_eg .GetNumbersAsFloat (_dac .Params );if _ca !=nil {return _ca ;};_c .LineTo (_ce [0],_ce [1]);case "\u0063":if len (_dac .Params )!=6{return _be ;};_dce ,_fbe :=_eg .GetNumbersAsFloat (_dac .Params );if _fbe !=nil {return _fbe ;};_add .Log .Debug ("\u0043u\u0062\u0069\u0063\u0020\u0062\u0065\u007a\u0069\u0065\u0072\u0020p\u0061\u0072\u0061\u006d\u0073\u003a\u0020\u0025\u002b\u0076",_dce );_c .CubicTo (_dce [0],_dce [1],_dce [2],_dce [3],_dce [4],_dce [5]);case "\u0076","\u0079":if len (_dac .Params )!=4{return _be ;};_aa ,_eaa :=_eg .GetNumbersAsFloat (_dac .Params );if _eaa !=nil {return _eaa ;};_add .Log .Debug ("\u0043u\u0062\u0069\u0063\u0020\u0062\u0065\u007a\u0069\u0065\u0072\u0020p\u0061\u0072\u0061\u006d\u0073\u003a\u0020\u0025\u002b\u0076",_aa );_c .QuadraticTo (_aa [0],_aa [1],_aa [2],_aa [3]);case "\u0068":_c .ClosePath ();_c .NewSubPath ();case "\u0072\u0065":if len (_dac .Params )!=4{return _be ;};_ecg ,_ed :=_eg .GetNumbersAsFloat (_dac .Params );if _ed !=nil {return _ed ;};_c .DrawRectangle (_ecg [0],_ecg [1],_ecg [2],_ecg [3]);_c .NewSubPath ();case "\u0053":_gaf ,_eed :=_ffg .ColorspaceStroking .ColorToRGB (_ffg .ColorStroking );if _eed !=nil {_add .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0063\u006f\u006e\u0076\u0065r\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006c\u006f\u0072:\u0020\u0025\u0076",_eed );return _eed ;};_gagd ,_ggd :=_gaf .(*_fac .PdfColorDeviceRGB );if !_ggd {_add .Log .Debug ("\u0045\u0072\u0072\u006fr \u0063\u006f\u006e\u0076\u0065\u0072\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006co\u0072");return _eed ;};_c .SetRGBA (_gagd .R (),_gagd .G (),_gagd .B (),1);_c .Stroke ();case "\u0073":_ebb ,_edd :=_ffg .ColorspaceStroking .ColorToRGB (_ffg .ColorStroking );if _edd !=nil {_add .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0063\u006f\u006e\u0076\u0065r\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006c\u006f\u0072:\u0020\u0025\u0076",_edd );return _edd ;};_cde ,_bfa :=_ebb .(*_fac .PdfColorDeviceRGB );if !_bfa {_add .Log .Debug ("\u0045\u0072\u0072\u006fr \u0063\u006f\u006e\u0076\u0065\u0072\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006co\u0072");return _edd ;};_c .ClosePath ();_c .NewSubPath ();_c .SetRGBA (_cde .R (),_cde .G (),_cde .B (),1);_c .Stroke ();case "\u0066","\u0046":_dgd ,_eeg :=_ffg .ColorspaceNonStroking .ColorToRGB (_ffg .ColorNonStroking );if _eeg !=nil {_add .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0063\u006f\u006e\u0076\u0065r\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006c\u006f\u0072:\u0020\u0025\u0076",_eeg );return _eeg ;};_ebg ,_gdba :=_dgd .(*_fac .PdfColorDeviceRGB );if !_gdba {_add .Log .Debug ("\u0045\u0072\u0072\u006fr \u0063\u006f\u006e\u0076\u0065\u0072\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006co\u0072");return _eeg ;};_c .SetRGBA (_ebg .R (),_ebg .G (),_ebg .B (),1);_c .SetFillRule (_ee .FillRuleWinding );_c .Fill ();case "\u0066\u002a":_eeed ,_cee :=_ffg .ColorspaceNonStroking .ColorToRGB (_ffg .ColorNonStroking );if _cee !=nil {_add .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0063\u006f\u006e\u0076\u0065r\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006c\u006f\u0072:\u0020\u0025\u0076",_cee );return _cee ;};_gage ,_edg :=_eeed .(*_fac .PdfColorDeviceRGB );if !_edg {_add .Log .Debug ("\u0045\u0072\u0072\u006fr \u0063\u006f\u006e\u0076\u0065\u0072\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006co\u0072");return _cee ;};_c .SetRGBA (_gage .R (),_gage .G (),_gage .B (),1);_c .SetFillRule (_ee .FillRuleEvenOdd );_c .Fill ();case "\u0042":_gagg ,_de :=_ffg .ColorspaceNonStroking .ColorToRGB (_ffg .ColorNonStroking );if _de !=nil {_add .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0063\u006f\u006e\u0076\u0065r\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006c\u006f\u0072:\u0020\u0025\u0076",_de );return _de ;};_gac :=_gagg .(*_fac .PdfColorDeviceRGB );_c .SetRGBA (_gac .R (),_gac .G (),_gac .B (),1);_c .SetFillRule (_ee .FillRuleWinding );_c .FillPreserve ();_gagg ,_de =_ffg .ColorspaceStroking .ColorToRGB (_ffg .ColorStroking );if _de !=nil {_add .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0063\u006f\u006e\u0076\u0065r\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006c\u006f\u0072:\u0020\u0025\u0076",_de );return _de ;};_gac =_gagg .(*_fac .PdfColorDeviceRGB );_c .SetRGBA (_gac .R (),_gac .G (),_gac .B (),1);_c .Stroke ();case "\u0042\u002a":_faf ,_bg :=_ffg .ColorspaceNonStroking .ColorToRGB (_ffg .ColorNonStroking );if _bg !=nil {_add .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0063\u006f\u006e\u0076\u0065r\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006c\u006f\u0072:\u0020\u0025\u0076",_bg );return _bg ;};_egg :=_faf .(*_fac .PdfColorDeviceRGB );_c .SetRGBA (_egg .R (),_egg .G (),_egg .B (),1);_c .SetFillRule (_ee .FillRuleEvenOdd );_c .FillPreserve ();_faf ,_bg =_ffg .ColorspaceStroking .ColorToRGB (_ffg .ColorStroking );if _bg !=nil {_add .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0063\u006f\u006e\u0076\u0065r\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006c\u006f\u0072:\u0020\u0025\u0076",_bg );return _bg ;};_egg =_faf .(*_fac .PdfColorDeviceRGB );_c .SetRGBA (_egg .R (),_egg .G (),_egg .B (),1);_c .Stroke ();case "\u0062":_gbf ,_cae :=_ffg .ColorspaceNonStroking .ColorToRGB (_ffg .ColorNonStroking );if _cae !=nil {_add .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0063\u006f\u006e\u0076\u0065r\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006c\u006f\u0072:\u0020\u0025\u0076",_cae );return _cae ;};_bcf :=_gbf .(*_fac .PdfColorDeviceRGB );_c .SetRGBA (_bcf .R (),_bcf .G (),_bcf .B (),1);_c .ClosePath ();_c .NewSubPath ();_c .SetFillRule (_ee .FillRuleWinding );_c .FillPreserve ();_gbf ,_cae =_ffg .ColorspaceStroking .ColorToRGB (_ffg .ColorStroking );if _cae !=nil {_add .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0063\u006f\u006e\u0076\u0065r\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006c\u006f\u0072:\u0020\u0025\u0076",_cae );return _cae ;};_bcf =_gbf .(*_fac .PdfColorDeviceRGB );_c .SetRGBA (_bcf .R (),_bcf .G (),_bcf .B (),1);_c .Stroke ();case "\u0062\u002a":_c .ClosePath ();_fffc ,_cg :=_ffg .ColorspaceNonStroking .ColorToRGB (_ffg .ColorNonStroking );if _cg !=nil {_add .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0063\u006f\u006e\u0076\u0065r\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006c\u006f\u0072:\u0020\u0025\u0076",_cg );return _cg ;};_ade :=_fffc .(*_fac .PdfColorDeviceRGB );_c .SetRGBA (_ade .R (),_ade .G (),_ade .B (),1);_c .NewSubPath ();_c .SetFillRule (_ee .FillRuleEvenOdd );_c .FillPreserve ();_fffc ,_cg =_ffg .ColorspaceStroking .ColorToRGB (_ffg .ColorStroking );if _cg !=nil {_add .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0063\u006f\u006e\u0076\u0065r\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006c\u006f\u0072:\u0020\u0025\u0076",_cg );return _cg ;};_ade =_fffc .(*_fac .PdfColorDeviceRGB );_c .SetRGBA (_ade .R (),_ade .G (),_ade .B (),1);_c .Stroke ();case "\u006e":_c .ClearPath ();case "\u0057":_c .SetFillRule (_ee .FillRuleWinding );_c .ClipPreserve ();case "\u0057\u002a":_c .SetFillRule (_ee .FillRuleEvenOdd );_c .ClipPreserve ();case "\u0072\u0067":_bff ,_dbd :=_ffg .ColorNonStroking .(*_fac .PdfColorDeviceRGB );if !_dbd {_add .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0063\u006f\u006e\u0076\u0065r\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006c\u006f\u0072:\u0020\u0025\u0076",_ffg .ColorNonStroking );return nil ;};_c .SetFillRGBA (_bff .R (),_bff .G (),_bff .B (),1);case "\u0052\u0047":_ggf ,_cc :=_ffg .ColorStroking .(*_fac .PdfColorDeviceRGB );if !_cc {_add .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0063\u006f\u006e\u0076\u0065r\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006c\u006f\u0072:\u0020\u0025\u0076",_ffg .ColorStroking );return nil ;};_c .SetStrokeRGBA (_ggf .R (),_ggf .G (),_ggf .B (),1);case "\u006b":_dcd ,_ggae :=_ffg .ColorNonStroking .(*_fac .PdfColorDeviceCMYK );if !_ggae {_add .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0063\u006f\u006e\u0076\u0065r\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006c\u006f\u0072:\u0020\u0025\u0076",_ffg .ColorNonStroking );return nil ;};_dcc ,_fbc :=_ffg .ColorspaceNonStroking .ColorToRGB (_dcd );if _fbc !=nil {_add .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0063\u006f\u006e\u0076\u0065r\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006c\u006f\u0072:\u0020\u0025\u0076",_ffg .ColorNonStroking );return nil ;};_gfa ,_ggae :=_dcc .(*_fac .PdfColorDeviceRGB );if !_ggae {_add .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0063\u006f\u006e\u0076\u0065r\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006c\u006f\u0072:\u0020\u0025\u0076",_dcc );return nil ;};_c .SetFillRGBA (_gfa .R (),_gfa .G (),_gfa .B (),1);case "\u004b":_cf ,_fbfg :=_ffg .ColorStroking .(*_fac .PdfColorDeviceCMYK );if !_fbfg {_add .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0063\u006f\u006e\u0076\u0065r\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006c\u006f\u0072:\u0020\u0025\u0076",_ffg .ColorStroking );return nil ;};_ged ,_gcg :=_ffg .ColorspaceStroking .ColorToRGB (_cf );if _gcg !=nil {_add .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0063\u006f\u006e\u0076\u0065r\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006c\u006f\u0072:\u0020\u0025\u0076",_ffg .ColorStroking );return nil ;};_ccc ,_fbfg :=_ged .(*_fac .PdfColorDeviceRGB );if !_fbfg {_add .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0063\u006f\u006e\u0076\u0065r\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006c\u006f\u0072:\u0020\u0025\u0076",_ged );return nil ;};_c .SetStrokeRGBA (_ccc .R (),_ccc .G (),_ccc .B (),1);case "\u0067":_ecgb ,_cbc :=_ffg .ColorNonStroking .(*_fac .PdfColorDeviceGray );if !_cbc {_add .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0063\u006f\u006e\u0076\u0065r\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006c\u006f\u0072:\u0020\u0025\u0076",_ffg .ColorNonStroking );return nil ;};_dge ,_afg :=_ffg .ColorspaceNonStroking .ColorToRGB (_ecgb );if _afg !=nil {_add .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0063\u006f\u006e\u0076\u0065r\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006c\u006f\u0072:\u0020\u0025\u0076",_ffg .ColorNonStroking );return nil ;};_ffe ,_cbc :=_dge .(*_fac .PdfColorDeviceRGB );if !_cbc {_add .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0063\u006f\u006e\u0076\u0065r\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006c\u006f\u0072:\u0020\u0025\u0076",_dge );return nil ;};_c .SetFillRGBA (_ffe .R (),_ffe .G (),_ffe .B (),1);case "\u0047":_eedd ,_eba :=_ffg .ColorStroking .(*_fac .PdfColorDeviceGray );if !_eba {_add .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0063\u006f\u006e\u0076\u0065r\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006c\u006f\u0072:\u0020\u0025\u0076",_ffg .ColorStroking );return nil ;};_ead ,_dgdb :=_ffg .ColorspaceStroking .ColorToRGB (_eedd );if _dgdb !=nil {_add .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0063\u006f\u006e\u0076\u0065r\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006c\u006f\u0072:\u0020\u0025\u0076",_ffg .ColorStroking );return nil ;};_dee ,_eba :=_ead .(*_fac .PdfColorDeviceRGB );if !_eba {_add .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0063\u006f\u006e\u0076\u0065r\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006c\u006f\u0072:\u0020\u0025\u0076",_ead );return nil ;};_c .SetStrokeRGBA (_dee .R (),_dee .G (),_dee .B (),1);case "\u0063\u0073","\u0073\u0063","\u0073\u0063\u006e":_agd ,_agc :=_ffg .ColorspaceNonStroking .ColorToRGB (_ffg .ColorNonStroking );if _agc !=nil {_add .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0063\u006f\u006e\u0076\u0065r\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006c\u006f\u0072:\u0020\u0025\u0076",_ffg .ColorNonStroking );return nil ;};_edb ,_fg :=_agd .(*_fac .PdfColorDeviceRGB );if !_fg {_add .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0063\u006f\u006e\u0076\u0065r\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006c\u006f\u0072:\u0020\u0025\u0076",_agd );return nil ;};_c .SetFillRGBA (_edb .R (),_edb .G (),_edb .B (),1);case "\u0043\u0053","\u0053\u0043","\u0053\u0043\u004e":_edf ,_dbc :=_ffg .ColorspaceStroking .ColorToRGB (_ffg .ColorStroking );if _dbc !=nil {_add .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0063\u006f\u006e\u0076\u0065r\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006c\u006f\u0072:\u0020\u0025\u0076",_ffg .ColorStroking );return nil ;};_effd ,_ebd :=_edf .(*_fac .PdfColorDeviceRGB );if !_ebd {_add .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0063\u006f\u006e\u0076\u0065r\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006c\u006f\u0072:\u0020\u0025\u0076",_edf );return nil ;};_c .SetStrokeRGBA (_effd .R (),_effd .G (),_effd .B (),1);case "\u0044\u006f":if len (_dac .Params )!=1{return _be ;};_eaf ,_egf :=_eg .GetName (_dac .Params [0]);if !_egf {return _dde ;};_ ,_cdd :=_dcf .GetXObjectByName (*_eaf );switch _cdd {case _fac .XObjectTypeImage :_add .Log .Debug ("\u0058\u004f\u0062\u006a\u0065\u0063\u0074\u0020\u0069\u006d\u0061\u0067e\u003a\u0020\u0025\u0073",_eaf .String ());_aca ,_gfc :=_dcf .GetXObjectImageByName (*_eaf );if _gfc !=nil {return _gfc ;};_bdbc ,_gfc :=_aca .ToImage ();if _gfc !=nil {return _gfc ;};_agb ,_gfc :=_bdbc .ToGoImage ();if _gfc !=nil {return _gfc ;};_ede :=_agb .Bounds ();_c .Push ();_c .Scale (1.0/float64 (_ede .Dx ()),-1.0/float64 (_ede .Dy ()));_c .DrawImageAnchored (_agb ,0,0,0,1);_c .Pop ();case _fac .XObjectTypeForm :_add .Log .Debug ("\u0058\u004fb\u006a\u0065\u0063t\u0020\u0066\u006f\u0072\u006d\u003a\u0020\u0025\u0073",_eaf .String ());_gfg ,_dgg :=_dcf .GetXObjectFormByName (*_eaf );if _dgg !=nil {return _dgg ;};_egfd ,_dgg :=_gfg .GetContentStream ();if _dgg !=nil {return _dgg ;};_fbca :=_gfg .Resources ;if _fbca ==nil {_fbca =_dcf ;};_c .Push ();if _gfg .Matrix !=nil {_cgb ,_bec :=_eg .GetArray (_gfg .Matrix );if !_bec {return _dde ;};_eea ,_acc :=_eg .GetNumbersAsFloat (_cgb .Elements ());if _acc !=nil {return _acc ;};if len (_eea )!=6{return _be ;};_gaa :=_ba .NewMatrix (_eea [0],_eea [1],_eea [2],_eea [3],_eea [4],_eea [5]);_c .SetMatrix (_c .Matrix ().Mult (_gaa ));};if _gfg .BBox !=nil {_cbcb ,_adb :=_eg .GetArray (_gfg .BBox );if !_adb {return _dde ;};_bcdd ,_cddd :=_eg .GetNumbersAsFloat (_cbcb .Elements ());if _cddd !=nil {return _cddd ;};if len (_bcdd )!=4{_add .Log .Debug ("\u004c\u0065\u006e\u0020\u003d\u0020\u0025\u0064",len (_bcdd ));return _be ;};_c .DrawRectangle (_bcdd [0],_bcdd [1],_bcdd [2]-_bcdd [0],_bcdd [3]-_bcdd [1]);_c .SetRGBA (1,0,0,1);_c .Clip ();}else {_add .Log .Debug ("\u0045R\u0052\u004fR\u003a\u0020\u0052\u0065q\u0075\u0069\u0072e\u0064\u0020\u0042\u0042\u006f\u0078\u0020\u006d\u0069ss\u0069\u006e\u0067 \u006f\u006e \u0058\u004f\u0062\u006a\u0065\u0063t\u0020\u0046o\u0072\u006d");};_dgg =_bf .renderContentStream (_c ,string (_egfd ),_fbca );if _dgg !=nil {return _dgg ;};_c .Pop ();};case "\u0042\u0049":if len (_dac .Params )!=1{return _be ;};_bfc ,_bbc :=_dac .Params [0].(*_d .ContentStreamInlineImage );if !_bbc {return nil ;};_dca ,_eadf :=_bfc .ToImage (_dcf );if _eadf !=nil {return _eadf ;};_dgge ,_eadf :=_dca .ToGoImage ();if _eadf !=nil {return _eadf ;};_bdf :=_dgge .Bounds ();_c .Push ();_c .Scale (1.0/float64 (_bdf .Dx ()),-1.0/float64 (_bdf .Dy ()));_c .DrawImageAnchored (_dgge ,0,0,0,1);_c .Pop ();case "\u0042\u0054":_ffc .Reset ();case "\u0045\u0054":_ffc .Reset ();case "\u0054\u004c":if len (_dac .Params )!=1{return _be ;};_bae ,_bge :=_eg .GetNumberAsFloat (_dac .Params [0]);if _bge !=nil {return _bge ;};_ffc .Tl =_bae ;case "\u0054\u0063":if len (_dac .Params )!=1{return _be ;};_gdg ,_facc :=_eg .GetNumberAsFloat (_dac .Params [0]);if _facc !=nil {return _facc ;};_ffc .Tc =_gdg ;case "\u0054\u0077":if len (_dac .Params )!=1{return _be ;};_bbcg ,_egd :=_eg .GetNumberAsFloat (_dac .Params [0]);if _egd !=nil {return _egd ;};_ffc .Tw =_bbcg ;case "\u0054\u007a":if len (_dac .Params )!=1{return _be ;};_agcd ,_ffa :=_eg .GetNumberAsFloat (_dac .Params [0]);if _ffa !=nil {return _ffa ;};_ffc .Th =_agcd ;case "\u0054\u0073":if len (_dac .Params )!=1{return _be ;};_gfab ,_aba :=_eg .GetNumberAsFloat (_dac .Params [0]);if _aba !=nil {return _aba ;};_ffc .Ts =_gfab ;case "\u0054\u0064":if len (_dac .Params )!=2{return _be ;};_abc ,_efgc :=_eg .GetNumbersAsFloat (_dac .Params );if _efgc !=nil {return _efgc ;};_add .Log .Debug ("\u0054\u0064\u003a\u0020\u0025\u0076",_abc );_ffc .ProcTd (_abc [0],_abc [1]);case "\u0054\u0044":if len (_dac .Params )!=2{return _be ;};_gdd ,_ffcb :=_eg .GetNumbersAsFloat (_dac .Params );if _ffcb !=nil {return _ffcb ;};_add .Log .Debug ("\u0054\u0044\u003a\u0020\u0025\u0076",_gdd );_ffc .ProcTD (_gdd [0],_gdd [1]);case "\u0054\u002a":_ffc .ProcTStar ();case "\u0054\u006d":if len (_dac .Params )!=6{return _be ;};_agdc ,_bdfd :=_eg .GetNumbersAsFloat (_dac .Params );if _bdfd !=nil {return _bdfd ;};_add .Log .Debug ("\u0054\u0065x\u0074\u0020\u006da\u0074\u0072\u0069\u0078\u003a\u0020\u0025\u002b\u0076",_agdc );_ffc .ProcTm (_agdc [0],_agdc [1],_agdc [2],_agdc [3],_agdc [4],_agdc [5]);case "\u0027":if len (_dac .Params )!=1{return _be ;};_cff ,_aac :=_eg .GetStringBytes (_dac .Params [0]);if !_aac {return _dde ;};_add .Log .Debug ("\u0027\u0020\u0073t\u0072\u0069\u006e\u0067\u003a\u0020\u0025\u0073",string (_cff ));_ffc .ProcQ (_cff ,_c );case "\u0022":if len (_dac .Params )!=3{return _be ;};_afe ,_aaf :=_eg .GetNumberAsFloat (_dac .Params [0]);if _aaf !=nil {return _aaf ;};_ae ,_aaf :=_eg .GetNumberAsFloat (_dac .Params [1]);if _aaf !=nil {return _aaf ;};_fbfb ,_bfag :=_eg .GetStringBytes (_dac .Params [2]);if !_bfag {return _dde ;};_ffc .ProcDQ (_fbfb ,_afe ,_ae ,_c );case "\u0054\u006a":if len (_dac .Params )!=1{return _be ;};_fcg ,_efe :=_eg .GetStringBytes (_dac .Params [0]);if !_efe {return _dde ;};_add .Log .Debug ("\u0054j\u0020s\u0074\u0072\u0069\u006e\u0067\u003a\u0020\u0060\u0025\u0073\u0060",string (_fcg ));_ffc .ProcTj (_fcg ,_c );case "\u0054\u004a":if len (_dac .Params )!=1{return _be ;};_efgb ,_eegf :=_eg .GetArray (_dac .Params [0]);if !_eegf {_add .Log .Debug ("\u0054\u0079\u0070\u0065\u003a\u0020\u0025\u0054",_efgb );return _dde ;};_add .Log .Debug ("\u0054\u004a\u0020\u0061\u0072\u0072\u0061\u0079\u003a\u0020\u0025\u002b\u0076",_efgb );for _ ,_cfd :=range _efgb .Elements (){switch _gce :=_cfd .(type ){case *_eg .PdfObjectString :if _gce !=nil {_ffc .ProcTj (_gce .Bytes (),_c );};case *_eg .PdfObjectFloat ,*_eg .PdfObjectInteger :_aaa ,_gca :=_eg .GetNumberAsFloat (_gce );if _gca ==nil {_ffc .Translate (-_aaa *0.001*_ffc .Tf .Size ,0);};};};case "\u0054\u0066":if len (_dac .Params )!=2{return _be ;};_add .Log .Debug ("\u0025\u0023\u0076",_dac .Params );_cdf ,_ddc :=_eg .GetName (_dac .Params [0]);if !_ddc ||_cdf ==nil {_add .Log .Debug ("\u0069\u006e\u0076\u0061l\u0069\u0064\u0020\u0066\u006f\u006e\u0074\u0020\u006e\u0061m\u0065 \u006f\u0062\u006a\u0065\u0063\u0074\u003a \u0025\u0076",_dac .Params [0]);return _dde ;};_add .Log .Debug ("\u0046\u006f\u006e\u0074\u0020\u006e\u0061\u006d\u0065\u003a\u0020\u0025\u0073",_cdf .String ());_dbe ,_acb :=_eg .GetNumberAsFloat (_dac .Params [1]);if _acb !=nil {_add .Log .Debug ("\u0069\u006e\u0076\u0061l\u0069\u0064\u0020\u0066\u006f\u006e\u0074\u0020\u0073\u0069z\u0065 \u006f\u0062\u006a\u0065\u0063\u0074\u003a \u0025\u0076",_dac .Params [1]);return _dde ;};_add .Log .Debug ("\u0046\u006f\u006e\u0074\u0020\u0073\u0069\u007a\u0065\u003a\u0020\u0025\u0076",_dbe );_beg ,_bda :=_dcf .GetFontByName (*_cdf );if !_bda {_add .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a\u0020\u0046\u006f\u006e\u0074\u0020\u0025s\u0020\u006e\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064",_cdf .String ());return _e .New ("\u0066\u006f\u006e\u0074\u0020\u006e\u006f\u0074\u0020f\u006f\u0075\u006e\u0064");};_add .Log .Debug ("\u0046\u006f\u006e\u0074\u003a\u0020\u0025\u0054",_beg );_bcab ,_ddc :=_eg .GetDict (_beg );if !_ddc {_add .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0063\u006f\u0075l\u0064\u0020\u006e\u006f\u0074\u0020\u0067e\u0074\u0020\u0066\u006f\u006e\u0074\u0020\u0064\u0069\u0063\u0074");return _dde ;};_eeddg ,_acb :=_fac .NewPdfFontFromPdfObject (_bcab );if _acb !=nil {_add .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0063\u006f\u0075\u006c\u0064\u0020\u006e\u006f\u0074\u0020\u006c\u006f\u0061\u0064\u0020\u0066\u006fn\u0074\u0020\u0066\u0072\u006fm\u0020\u006fb\u006a\u0065\u0063\u0074");return _acb ;};_dga :=_eeddg .BaseFont ();if _dga ==""{_dga =_cdf .String ();};_cec ,_ddc :=_ace [_dga ];if !_ddc {_cec ,_acb =_ee .NewTextFont (_eeddg ,_dbe );if _acb !=nil {_add .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a\u0020\u0025v",_acb );};};if _cec ==nil {if len (_dga )> 7&&_dga [6]=='+'{_dga =_dga [7:];};_ddf :=[]string {_dga ,"\u0054i\u006de\u0073\u0020\u004e\u0065\u0077\u0020\u0052\u006f\u006d\u0061\u006e","\u0041\u0072\u0069a\u006c","D\u0065\u006a\u0061\u0056\u0075\u0020\u0053\u0061\u006e\u0073"};for _ ,_abg :=range _ddf {_add .Log .Debug ("\u0044\u0045\u0042\u0055\u0047\u003a \u0073\u0065\u0061\u0072\u0063\u0068\u0069\u006e\u0067\u0020\u0073\u0079\u0073t\u0065\u006d\u0020\u0066\u006f\u006e\u0074 \u0060\u0025\u0073\u0060",_abg );if _cec ,_ddc =_ace [_abg ];_ddc {break ;};_edge :=_faa .Match (_abg );if _edge ==nil {_add .Log .Debug ("c\u006f\u0075\u006c\u0064\u0020\u006eo\u0074\u0020\u0066\u0069\u006e\u0064\u0020\u0066\u006fn\u0074\u0020\u0066i\u006ce\u0020\u0025\u0073",_abg );continue ;};_cec ,_acb =_ee .NewTextFontFromPath (_edge .Filename ,_dbe );if _acb !=nil {_add .Log .Debug ("c\u006f\u0075\u006c\u0064\u0020\u006eo\u0074\u0020\u006c\u006f\u0061\u0064\u0020\u0066\u006fn\u0074\u0020\u0066i\u006ce\u0020\u0025\u0073",_edge .Filename );continue ;};_add .Log .Debug ("\u0053\u0075\u0062\u0073\u0074\u0069t\u0075\u0074\u0069\u006e\u0067\u0020\u0066\u006f\u006e\u0074\u0020\u0025\u0073 \u0077\u0069\u0074\u0068\u0020\u0025\u0073 \u0028\u0025\u0073\u0029",_dga ,_edge .Name ,_edge .Filename );_ace [_abg ]=_cec ;break ;};};if _cec ==nil {_add .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0063\u006f\u0075\u006c\u0064\u0020n\u006f\u0074\u0020\u0066\u0069\u006ed\u0020\u0061\u006e\u0079\u0020\u0073\u0075\u0069\u0074\u0061\u0062\u006c\u0065 \u0066\u006f\u006e\u0074");return _e .New ("\u0063\u006f\u0075\u006c\u0064\u0020\u006e\u006f\u0074\u0020\u0066\u0069\u006e\u0064\u0020a\u006ey\u0020\u0073\u0075\u0069\u0074\u0061\u0062\u006c\u0065\u0020\u0066\u006f\u006e\u0074");};_ffc .ProcTf (_cec .WithSize (_dbe ,_eeddg ));case "\u0042\u004d\u0043","\u0042\u0044\u0043":case "\u0045\u004d\u0043":default:_add .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0075\u006e\u0073u\u0070\u0070\u006f\u0072\u0074\u0065\u0064 \u006f\u0070\u0065\u0072\u0061\u006e\u0064\u003a\u0020\u0025\u0073",_dac .Operand );};return nil ;});_fd =_dc .Process (_db );if _fd !=nil {return _fd ;};return nil ;};
// ImageDevice is used to render PDF pages to image targets.
type ImageDevice struct{renderer };