unipdf/render/render.go
2020-10-12 14:17:59 +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 (_b "errors";_ac "fmt";_ab "github.com/adrg/sysfont";_ba "github.com/unidoc/unipdf/v3/common";_d "github.com/unidoc/unipdf/v3/contentstream";_ae "github.com/unidoc/unipdf/v3/core";_ec "github.com/unidoc/unipdf/v3/internal/transform";_gg "github.com/unidoc/unipdf/v3/model";_da "github.com/unidoc/unipdf/v3/render/internal/context";_dd "github.com/unidoc/unipdf/v3/render/internal/context/imagerender";_g "image";_cc "image/draw";_ad "image/jpeg";_e "image/png";_a "os";_fd "path/filepath";_c "strings";);func (_ccf renderer )renderPage (_cgg _da .Context ,_bg *_gg .PdfPage )error {_fc ,_cee :=_bg .GetAllContentStreams ();if _cee !=nil {return _cee ;};_cgg .Translate (0,float64 (_cgg .Height ()));_cgg .Scale (1,-1);_cgg .Push ();_cgg .SetRGBA (1,1,1,1);_cgg .DrawRectangle (0,0,float64 (_cgg .Width ()),float64 (_cgg .Height ()));_cgg .Fill ();_cgg .Pop ();_cgg .SetLineWidth (1.0);_cgg .SetRGBA (0,0,0,1);return _ccf .renderContentStream (_cgg ,_fc ,_bg .Resources );};func _eg (_aec string ,_dc _g .Image ,_cgc int )error {_bd ,_abb :=_a .Create (_aec );if _abb !=nil {return _abb ;};defer _bd .Close ();return _ad .Encode (_bd ,_dc ,&_ad .Options {Quality :_cgc });};
// ImageDevice is used to render PDF pages to image targets.
type ImageDevice struct{renderer };var (_ga =_b .New ("\u0074\u0079p\u0065\u0020\u0063h\u0065\u0063\u006b\u0020\u0065\u0072\u0072\u006f\u0072");_fbf =_b .New ("\u0072\u0061\u006e\u0067\u0065\u0020\u0063\u0068\u0065\u0063\u006b\u0020e\u0072\u0072\u006f\u0072"););func _ag (_ff string ,_ce _g .Image )error {_dg ,_db :=_a .Create (_ff );if _db !=nil {return _db ;};defer _dg .Close ();return _e .Encode (_dg ,_ce );};type renderer struct{};func (_cb renderer )renderContentStream (_bf _da .Context ,_dda string ,_gac *_gg .PdfPageResources )error {_egc ,_ecb :=_d .NewContentStreamParser (_dda ).Parse ();if _ecb !=nil {return _ecb ;};_bce :=_bf .TextState ();_be :=map[string ]*_da .TextFont {};_acf :=_ab .NewFinder (&_ab .FinderOpts {Extensions :[]string {"\u002e\u0074\u0074\u0066","\u002e\u0074\u0074\u0063"}});_fdb :=_d .NewContentStreamProcessor (*_egc );_fdb .AddHandler (_d .HandlerConditionEnumAllOperands ,"",func (_bad *_d .ContentStreamOperation ,_aba _d .GraphicsState ,_dcb *_gg .PdfPageResources )error {_ba .Log .Debug ("\u0050\u0072\u006f\u0063\u0065\u0073\u0073\u0069\u006e\u0067\u0020\u0025\u0073",_bad .Operand );switch _bad .Operand {case "\u0071":_bf .Push ();case "\u0051":_bf .Pop ();case "\u0063\u006d":if len (_bad .Params )!=6{return _fbf ;};_eb ,_acd :=_ae .GetNumbersAsFloat (_bad .Params );if _acd !=nil {return _acd ;};_ggc :=_ec .NewMatrix (_eb [0],_eb [1],_eb [2],_eb [3],_eb [4],_eb [5]);_ba .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",_ggc );_bf .SetMatrix (_bf .Matrix ().Mult (_ggc ));_fbc :=(_aba .CTM .ScalingFactorX ()+_aba .CTM .ScalingFactorY ())/2.0;_bf .SetLineWidth (_fbc *_bf .LineWidth ());case "\u0077":if len (_bad .Params )!=1{return _fbf ;};_bcc ,_bea :=_ae .GetNumbersAsFloat (_bad .Params );if _bea !=nil {return _bea ;};_ceb :=(_aba .CTM .ScalingFactorX ()+_aba .CTM .ScalingFactorY ())/2.0;_bf .SetLineWidth (_ceb *_bcc [0]);case "\u004a":if len (_bad .Params )!=1{return _fbf ;};_ede ,_dcf :=_ae .GetIntVal (_bad .Params [0]);if !_dcf {return _ga ;};switch _ede {case 0:_bf .SetLineCap (_da .LineCapButt );case 1:_bf .SetLineCap (_da .LineCapRound );case 2:_bf .SetLineCap (_da .LineCapSquare );default:_ba .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",_ede );return _fbf ;};case "\u006a":if len (_bad .Params )!=1{return _fbf ;};_ffd ,_bag :=_ae .GetIntVal (_bad .Params [0]);if !_bag {return _ga ;};switch _ffd {case 0:_bf .SetLineJoin (_da .LineJoinBevel );case 1:_bf .SetLineJoin (_da .LineJoinRound );case 2:_bf .SetLineJoin (_da .LineJoinBevel );default:_ba .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",_ffd );return _fbf ;};case "\u004d":if len (_bad .Params )!=1{return _fbf ;};_cef ,_cgcd :=_ae .GetNumbersAsFloat (_bad .Params );if _cgcd !=nil {return _cgcd ;};_ =_cef ;_ba .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 (_bad .Params )!=2{return _fbf ;};_efc ,_bge :=_ae .GetArray (_bad .Params [0]);if !_bge {return _ga ;};_ddd ,_bge :=_ae .GetIntVal (_bad .Params [1]);if !_bge {return _ga ;};_cf ,_fcd :=_ae .GetNumbersAsFloat (_efc .Elements ());if _fcd !=nil {return _fcd ;};_bf .SetDash (_cf ...);_ =_ddd ;_ba .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":_ba .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":_ba .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 (_bad .Params )!=1{return _fbf ;};_bcb ,_cad :=_ae .GetName (_bad .Params [0]);if !_cad {return _ga ;};if _bcb ==nil {return _fbf ;};_bff ,_cad :=_dcb .GetExtGState (*_bcb );if !_cad {_ba .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",*_bcb );return _b .New ("\u0072e\u0073o\u0075\u0072\u0063\u0065\u0020n\u006f\u0074 \u0066\u006f\u0075\u006e\u0064");};_ced ,_cad :=_ae .GetDict (_bff );if !_cad {_ba .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 _ga ;};_ba .Log .Debug ("G\u0053\u0020\u0064\u0069\u0063\u0074\u003a\u0020\u0025\u0073",_ced .String ());case "\u006d":if len (_bad .Params )!=2{_ba .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",_fbf );return nil ;};_de ,_ega :=_ae .GetNumbersAsFloat (_bad .Params );if _ega !=nil {return _ega ;};_ba .Log .Debug ("M\u006f\u0076\u0065\u0020\u0074\u006f\u003a\u0020\u0025\u0076",_de );_bf .NewSubPath ();_bf .MoveTo (_de [0],_de [1]);case "\u006c":if len (_bad .Params )!=2{_ba .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",_fbf );return nil ;};_ddb ,_gag :=_ae .GetNumbersAsFloat (_bad .Params );if _gag !=nil {return _gag ;};_bf .LineTo (_ddb [0],_ddb [1]);case "\u0063":if len (_bad .Params )!=6{return _fbf ;};_dba ,_adc :=_ae .GetNumbersAsFloat (_bad .Params );if _adc !=nil {return _adc ;};_ba .Log .Debug ("\u0043u\u0062\u0069\u0063\u0020\u0062\u0065\u007a\u0069\u0065\u0072\u0020p\u0061\u0072\u0061\u006d\u0073\u003a\u0020\u0025\u002b\u0076",_dba );_bf .CubicTo (_dba [0],_dba [1],_dba [2],_dba [3],_dba [4],_dba [5]);case "\u0076","\u0079":if len (_bad .Params )!=4{return _fbf ;};_ee ,_fbfc :=_ae .GetNumbersAsFloat (_bad .Params );if _fbfc !=nil {return _fbfc ;};_ba .Log .Debug ("\u0043u\u0062\u0069\u0063\u0020\u0062\u0065\u007a\u0069\u0065\u0072\u0020p\u0061\u0072\u0061\u006d\u0073\u003a\u0020\u0025\u002b\u0076",_ee );_bf .QuadraticTo (_ee [0],_ee [1],_ee [2],_ee [3]);case "\u0068":_bf .ClosePath ();_bf .NewSubPath ();case "\u0072\u0065":if len (_bad .Params )!=4{return _fbf ;};_cbc ,_gc :=_ae .GetNumbersAsFloat (_bad .Params );if _gc !=nil {return _gc ;};_bf .DrawRectangle (_cbc [0],_cbc [1],_cbc [2],_cbc [3]);_bf .NewSubPath ();case "\u0053":_fgc ,_fgf :=_aba .ColorspaceStroking .ColorToRGB (_aba .ColorStroking );if _fgf !=nil {_ba .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",_fgf );return _fgf ;};_ecd ,_dec :=_fgc .(*_gg .PdfColorDeviceRGB );if !_dec {_ba .Log .Debug ("\u0045\u0072\u0072\u006fr \u0063\u006f\u006e\u0076\u0065\u0072\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006co\u0072");return _fgf ;};_bf .SetRGBA (_ecd .R (),_ecd .G (),_ecd .B (),1);_bf .Stroke ();case "\u0073":_efg ,_ecc :=_aba .ColorspaceStroking .ColorToRGB (_aba .ColorStroking );if _ecc !=nil {_ba .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",_ecc );return _ecc ;};_ddbg ,_dde :=_efg .(*_gg .PdfColorDeviceRGB );if !_dde {_ba .Log .Debug ("\u0045\u0072\u0072\u006fr \u0063\u006f\u006e\u0076\u0065\u0072\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006co\u0072");return _ecc ;};_bf .ClosePath ();_bf .NewSubPath ();_bf .SetRGBA (_ddbg .R (),_ddbg .G (),_ddbg .B (),1);_bf .Stroke ();case "\u0066","\u0046":_aa ,_gbg :=_aba .ColorspaceNonStroking .ColorToRGB (_aba .ColorNonStroking );if _gbg !=nil {_ba .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",_gbg );return _gbg ;};_bcbd ,_ea :=_aa .(*_gg .PdfColorDeviceRGB );if !_ea {_ba .Log .Debug ("\u0045\u0072\u0072\u006fr \u0063\u006f\u006e\u0076\u0065\u0072\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006co\u0072");return _gbg ;};_bf .SetRGBA (_bcbd .R (),_bcbd .G (),_bcbd .B (),1);_bf .SetFillRule (_da .FillRuleWinding );_bf .Fill ();case "\u0066\u002a":_ceg ,_fga :=_aba .ColorspaceNonStroking .ColorToRGB (_aba .ColorNonStroking );if _fga !=nil {_ba .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",_fga );return _fga ;};_cfe ,_dab :=_ceg .(*_gg .PdfColorDeviceRGB );if !_dab {_ba .Log .Debug ("\u0045\u0072\u0072\u006fr \u0063\u006f\u006e\u0076\u0065\u0072\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006co\u0072");return _fga ;};_bf .SetRGBA (_cfe .R (),_cfe .G (),_cfe .B (),1);_bf .SetFillRule (_da .FillRuleEvenOdd );_bf .Fill ();case "\u0042":_dbe ,_bga :=_aba .ColorspaceNonStroking .ColorToRGB (_aba .ColorNonStroking );if _bga !=nil {_ba .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",_bga );return _bga ;};_gda :=_dbe .(*_gg .PdfColorDeviceRGB );_bf .SetRGBA (_gda .R (),_gda .G (),_gda .B (),1);_bf .SetFillRule (_da .FillRuleWinding );_bf .FillPreserve ();_dbe ,_bga =_aba .ColorspaceStroking .ColorToRGB (_aba .ColorStroking );if _bga !=nil {_ba .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",_bga );return _bga ;};_gda =_dbe .(*_gg .PdfColorDeviceRGB );_bf .SetRGBA (_gda .R (),_gda .G (),_gda .B (),1);_bf .Stroke ();case "\u0042\u002a":_eed ,_acg :=_aba .ColorspaceNonStroking .ColorToRGB (_aba .ColorNonStroking );if _acg !=nil {_ba .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",_acg );return _acg ;};_bed :=_eed .(*_gg .PdfColorDeviceRGB );_bf .SetRGBA (_bed .R (),_bed .G (),_bed .B (),1);_bf .SetFillRule (_da .FillRuleEvenOdd );_bf .FillPreserve ();_eed ,_acg =_aba .ColorspaceStroking .ColorToRGB (_aba .ColorStroking );if _acg !=nil {_ba .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",_acg );return _acg ;};_bed =_eed .(*_gg .PdfColorDeviceRGB );_bf .SetRGBA (_bed .R (),_bed .G (),_bed .B (),1);_bf .Stroke ();case "\u0062":_cefa ,_gcg :=_aba .ColorspaceNonStroking .ColorToRGB (_aba .ColorNonStroking );if _gcg !=nil {_ba .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",_gcg );return _gcg ;};_afc :=_cefa .(*_gg .PdfColorDeviceRGB );_bf .SetRGBA (_afc .R (),_afc .G (),_afc .B (),1);_bf .ClosePath ();_bf .NewSubPath ();_bf .SetFillRule (_da .FillRuleWinding );_bf .FillPreserve ();_cefa ,_gcg =_aba .ColorspaceStroking .ColorToRGB (_aba .ColorStroking );if _gcg !=nil {_ba .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",_gcg );return _gcg ;};_afc =_cefa .(*_gg .PdfColorDeviceRGB );_bf .SetRGBA (_afc .R (),_afc .G (),_afc .B (),1);_bf .Stroke ();case "\u0062\u002a":_bf .ClosePath ();_efa ,_bgea :=_aba .ColorspaceNonStroking .ColorToRGB (_aba .ColorNonStroking );if _bgea !=nil {_ba .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",_bgea );return _bgea ;};_bb :=_efa .(*_gg .PdfColorDeviceRGB );_bf .SetRGBA (_bb .R (),_bb .G (),_bb .B (),1);_bf .NewSubPath ();_bf .SetFillRule (_da .FillRuleEvenOdd );_bf .FillPreserve ();_efa ,_bgea =_aba .ColorspaceStroking .ColorToRGB (_aba .ColorStroking );if _bgea !=nil {_ba .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",_bgea );return _bgea ;};_bb =_efa .(*_gg .PdfColorDeviceRGB );_bf .SetRGBA (_bb .R (),_bb .G (),_bb .B (),1);_bf .Stroke ();case "\u006e":_bf .ClearPath ();case "\u0057":_bf .SetFillRule (_da .FillRuleWinding );_bf .ClipPreserve ();case "\u0057\u002a":_bf .SetFillRule (_da .FillRuleEvenOdd );_bf .ClipPreserve ();case "\u0072\u0067":_edc ,_bgc :=_aba .ColorNonStroking .(*_gg .PdfColorDeviceRGB );if !_bgc {_ba .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",_aba .ColorNonStroking );return nil ;};_bf .SetFillRGBA (_edc .R (),_edc .G (),_edc .B (),1);case "\u0052\u0047":_ebf ,_gdd :=_aba .ColorStroking .(*_gg .PdfColorDeviceRGB );if !_gdd {_ba .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",_aba .ColorStroking );return nil ;};_bf .SetStrokeRGBA (_ebf .R (),_ebf .G (),_ebf .B (),1);case "\u006b":_babd ,_ade :=_aba .ColorNonStroking .(*_gg .PdfColorDeviceCMYK );if !_ade {_ba .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",_aba .ColorNonStroking );return nil ;};_bbf ,_cga :=_aba .ColorspaceNonStroking .ColorToRGB (_babd );if _cga !=nil {_ba .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",_aba .ColorNonStroking );return nil ;};_fa ,_ade :=_bbf .(*_gg .PdfColorDeviceRGB );if !_ade {_ba .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",_bbf );return nil ;};_bf .SetFillRGBA (_fa .R (),_fa .G (),_fa .B (),1);case "\u004b":_dbb ,_dad :=_aba .ColorStroking .(*_gg .PdfColorDeviceCMYK );if !_dad {_ba .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",_aba .ColorStroking );return nil ;};_fec ,_eeb :=_aba .ColorspaceStroking .ColorToRGB (_dbb );if _eeb !=nil {_ba .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",_aba .ColorStroking );return nil ;};_fgg ,_dad :=_fec .(*_gg .PdfColorDeviceRGB );if !_dad {_ba .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",_fec );return nil ;};_bf .SetStrokeRGBA (_fgg .R (),_fgg .G (),_fgg .B (),1);case "\u0067":_bgab ,_dbg :=_aba .ColorNonStroking .(*_gg .PdfColorDeviceGray );if !_dbg {_ba .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",_aba .ColorNonStroking );return nil ;};_afe ,_faa :=_aba .ColorspaceNonStroking .ColorToRGB (_bgab );if _faa !=nil {_ba .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",_aba .ColorNonStroking );return nil ;};_eag ,_dbg :=_afe .(*_gg .PdfColorDeviceRGB );if !_dbg {_ba .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",_afe );return nil ;};_bf .SetFillRGBA (_eag .R (),_eag .G (),_eag .B (),1);case "\u0047":_gde ,_dag :=_aba .ColorStroking .(*_gg .PdfColorDeviceGray );if !_dag {_ba .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",_aba .ColorStroking );return nil ;};_gce ,_cfef :=_aba .ColorspaceStroking .ColorToRGB (_gde );if _cfef !=nil {_ba .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",_aba .ColorStroking );return nil ;};_fgb ,_dag :=_gce .(*_gg .PdfColorDeviceRGB );if !_dag {_ba .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",_gce );return nil ;};_bf .SetStrokeRGBA (_fgb .R (),_fgb .G (),_fgb .B (),1);case "\u0063\u0073","\u0073\u0063","\u0073\u0063\u006e":_ada ,_gf :=_aba .ColorspaceNonStroking .ColorToRGB (_aba .ColorNonStroking );if _gf !=nil {_ba .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",_aba .ColorNonStroking );return nil ;};_cfeb ,_fcc :=_ada .(*_gg .PdfColorDeviceRGB );if !_fcc {_ba .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",_ada );return nil ;};_bf .SetFillRGBA (_cfeb .R (),_cfeb .G (),_cfeb .B (),1);case "\u0043\u0053","\u0053\u0043","\u0053\u0043\u004e":_gff ,_efb :=_aba .ColorspaceStroking .ColorToRGB (_aba .ColorStroking );if _efb !=nil {_ba .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",_aba .ColorStroking );return nil ;};_bfa ,_fge :=_gff .(*_gg .PdfColorDeviceRGB );if !_fge {_ba .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",_gff );return nil ;};_bf .SetStrokeRGBA (_bfa .R (),_bfa .G (),_bfa .B (),1);case "\u0044\u006f":if len (_bad .Params )!=1{return _fbf ;};_eac ,_gdb :=_ae .GetName (_bad .Params [0]);if !_gdb {return _ga ;};_ ,_afeb :=_dcb .GetXObjectByName (*_eac );switch _afeb {case _gg .XObjectTypeImage :_ba .Log .Debug ("\u0058\u004f\u0062\u006a\u0065\u0063\u0074\u0020\u0069\u006d\u0061\u0067e\u003a\u0020\u0025\u0073",_eac .String ());_egf ,_dbee :=_dcb .GetXObjectImageByName (*_eac );if _dbee !=nil {return _dbee ;};_ddf ,_dbee :=_egf .ToImage ();if _dbee !=nil {return _dbee ;};_fea ,_dbee :=_ddf .ToGoImage ();if _dbee !=nil {return _dbee ;};_cbe :=_fea .Bounds ();_bf .Push ();_bf .Scale (1.0/float64 (_cbe .Dx ()),-1.0/float64 (_cbe .Dy ()));_bf .DrawImageAnchored (_fea ,0,0,0,1);_bf .Pop ();case _gg .XObjectTypeForm :_ba .Log .Debug ("\u0058\u004fb\u006a\u0065\u0063t\u0020\u0066\u006f\u0072\u006d\u003a\u0020\u0025\u0073",_eac .String ());_df ,_dabf :=_dcb .GetXObjectFormByName (*_eac );if _dabf !=nil {return _dabf ;};_gbgg ,_dabf :=_df .GetContentStream ();if _dabf !=nil {return _dabf ;};_edd :=_df .Resources ;if _edd ==nil {_edd =_dcb ;};_bf .Push ();if _df .Matrix !=nil {_cgf ,_gdbe :=_ae .GetArray (_df .Matrix );if !_gdbe {return _ga ;};_cgfc ,_bfe :=_ae .GetNumbersAsFloat (_cgf .Elements ());if _bfe !=nil {return _bfe ;};if len (_cgfc )!=6{return _fbf ;};_afcg :=_ec .NewMatrix (_cgfc [0],_cgfc [1],_cgfc [2],_cgfc [3],_cgfc [4],_cgfc [5]);_bf .SetMatrix (_bf .Matrix ().Mult (_afcg ));};if _df .BBox !=nil {_edb ,_ebb :=_ae .GetArray (_df .BBox );if !_ebb {return _ga ;};_fce ,_age :=_ae .GetNumbersAsFloat (_edb .Elements ());if _age !=nil {return _age ;};if len (_fce )!=4{_ba .Log .Debug ("\u004c\u0065\u006e\u0020\u003d\u0020\u0025\u0064",len (_fce ));return _fbf ;};_bf .DrawRectangle (_fce [0],_fce [1],_fce [2]-_fce [0],_fce [3]-_fce [1]);_bf .SetRGBA (1,0,0,1);_bf .Clip ();}else {_ba .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");};_dabf =_cb .renderContentStream (_bf ,string (_gbgg ),_edd );if _dabf !=nil {return _dabf ;};_bf .Pop ();};case "\u0042\u0049":if len (_bad .Params )!=1{return _fbf ;};_aac ,_fbd :=_bad .Params [0].(*_d .ContentStreamInlineImage );if !_fbd {return nil ;};_cdf ,_fgba :=_aac .ToImage (_dcb );if _fgba !=nil {return _fgba ;};_aacc ,_fgba :=_cdf .ToGoImage ();if _fgba !=nil {return _fgba ;};_dfb :=_aacc .Bounds ();_bf .Push ();_bf .Scale (1.0/float64 (_dfb .Dx ()),-1.0/float64 (_dfb .Dy ()));_bf .DrawImageAnchored (_aacc ,0,0,0,1);_bf .Pop ();case "\u0042\u0054":_bce .Reset ();case "\u0045\u0054":_bce .Reset ();case "\u0054\u004c":if len (_bad .Params )!=1{return _fbf ;};_fggg ,_fcf :=_ae .GetNumberAsFloat (_bad .Params [0]);if _fcf !=nil {return _fcf ;};_bce .Tl =_fggg ;case "\u0054\u0063":if len (_bad .Params )!=1{return _fbf ;};_abdb ,_bcd :=_ae .GetNumberAsFloat (_bad .Params [0]);if _bcd !=nil {return _bcd ;};_bce .Tc =_abdb ;case "\u0054\u0077":if len (_bad .Params )!=1{return _fbf ;};_eaa ,_bee :=_ae .GetNumberAsFloat (_bad .Params [0]);if _bee !=nil {return _bee ;};_bce .Tw =_eaa ;case "\u0054\u007a":if len (_bad .Params )!=1{return _fbf ;};_ggd ,_ccg :=_ae .GetNumberAsFloat (_bad .Params [0]);if _ccg !=nil {return _ccg ;};_bce .Th =_ggd ;case "\u0054\u0073":if len (_bad .Params )!=1{return _fbf ;};_ggf ,_gdc :=_ae .GetNumberAsFloat (_bad .Params [0]);if _gdc !=nil {return _gdc ;};_bce .Ts =_ggf ;case "\u0054\u0064":if len (_bad .Params )!=2{return _fbf ;};_feaa ,_ddec :=_ae .GetNumbersAsFloat (_bad .Params );if _ddec !=nil {return _ddec ;};_ba .Log .Debug ("\u0054\u0064\u003a\u0020\u0025\u0076",_feaa );_bce .ProcTd (_feaa [0],_feaa [1]);case "\u0054\u0044":if len (_bad .Params )!=2{return _fbf ;};_bca ,_cce :=_ae .GetNumbersAsFloat (_bad .Params );if _cce !=nil {return _cce ;};_ba .Log .Debug ("\u0054\u0044\u003a\u0020\u0025\u0076",_bca );_bce .ProcTD (_bca [0],_bca [1]);case "\u0054\u002a":_bce .ProcTStar ();case "\u0054\u006d":if len (_bad .Params )!=6{return _fbf ;};_cea ,_dae :=_ae .GetNumbersAsFloat (_bad .Params );if _dae !=nil {return _dae ;};_ba .Log .Debug ("\u0054\u0065x\u0074\u0020\u006da\u0074\u0072\u0069\u0078\u003a\u0020\u0025\u002b\u0076",_cea );_bce .ProcTm (_cea [0],_cea [1],_cea [2],_cea [3],_cea [4],_cea [5]);case "\u0027":if len (_bad .Params )!=1{return _fbf ;};_fde ,_cae :=_ae .GetStringBytes (_bad .Params [0]);if !_cae {return _ga ;};_ba .Log .Debug ("\u0027\u0020\u0073t\u0072\u0069\u006e\u0067\u003a\u0020\u0025\u0073",string (_fde ));_bce .ProcQ (_fde ,_bf );case "\u0022":if len (_bad .Params )!=3{return _fbf ;};_aad ,_gffd :=_ae .GetNumberAsFloat (_bad .Params [0]);if _gffd !=nil {return _gffd ;};_efgd ,_gffd :=_ae .GetNumberAsFloat (_bad .Params [1]);if _gffd !=nil {return _gffd ;};_cfb ,_bdb :=_ae .GetStringBytes (_bad .Params [2]);if !_bdb {return _ga ;};_bce .ProcDQ (_cfb ,_aad ,_efgd ,_bf );case "\u0054\u006a":if len (_bad .Params )!=1{return _fbf ;};_ecf ,_agc :=_ae .GetStringBytes (_bad .Params [0]);if !_agc {return _ga ;};_ba .Log .Debug ("\u0054j\u0020s\u0074\u0072\u0069\u006e\u0067\u003a\u0020\u0060\u0025\u0073\u0060",string (_ecf ));_bce .ProcTj (_ecf ,_bf );case "\u0054\u004a":if len (_bad .Params )!=1{return _fbf ;};_dfc ,_aecd :=_ae .GetArray (_bad .Params [0]);if !_aecd {_ba .Log .Debug ("\u0054\u0079\u0070\u0065\u003a\u0020\u0025\u0054",_dfc );return _ga ;};_ba .Log .Debug ("\u0054\u004a\u0020\u0061\u0072\u0072\u0061\u0079\u003a\u0020\u0025\u002b\u0076",_dfc );for _ ,_fcb :=range _dfc .Elements (){switch _adec :=_fcb .(type ){case *_ae .PdfObjectString :if _adec !=nil {_bce .ProcTj (_adec .Bytes (),_bf );};case *_ae .PdfObjectFloat ,*_ae .PdfObjectInteger :_afb ,_bfac :=_ae .GetNumberAsFloat (_adec );if _bfac ==nil {_bce .Translate (-_afb *0.001*_bce .Tf .Size ,0);};};};case "\u0054\u0066":if len (_bad .Params )!=2{return _fbf ;};_ba .Log .Debug ("\u0025\u0023\u0076",_bad .Params );_gbb ,_ecg :=_ae .GetName (_bad .Params [0]);if !_ecg ||_gbb ==nil {_ba .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",_bad .Params [0]);return _ga ;};_ba .Log .Debug ("\u0046\u006f\u006e\u0074\u0020\u006e\u0061\u006d\u0065\u003a\u0020\u0025\u0073",_gbb .String ());_fcfb ,_caf :=_ae .GetNumberAsFloat (_bad .Params [1]);if _caf !=nil {_ba .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",_bad .Params [1]);return _ga ;};_ba .Log .Debug ("\u0046\u006f\u006e\u0074\u0020\u0073\u0069\u007a\u0065\u003a\u0020\u0025\u0076",_fcfb );_ebc ,_efd :=_dcb .GetFontByName (*_gbb );if !_efd {_ba .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a\u0020\u0046\u006f\u006e\u0074\u0020\u0025s\u0020\u006e\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064",_gbb .String ());return _b .New ("\u0066\u006f\u006e\u0074\u0020\u006e\u006f\u0074\u0020f\u006f\u0075\u006e\u0064");};_ba .Log .Debug ("\u0046\u006f\u006e\u0074\u003a\u0020\u0025\u0054",_ebc );_ccfc ,_ecg :=_ae .GetDict (_ebc );if !_ecg {_ba .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 _ga ;};_cbg ,_caf :=_gg .NewPdfFontFromPdfObject (_ccfc );if _caf !=nil {_ba .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 _caf ;};_bbb :=_cbg .BaseFont ();if _bbb ==""{_bbb =_gbb .String ();};_ffa ,_ecg :=_be [_bbb ];if !_ecg {_ffa ,_caf =_da .NewTextFont (_cbg ,_fcfb );if _caf !=nil {_ba .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a\u0020\u0025v",_caf );};};if _ffa ==nil {if len (_bbb )> 7&&_bbb [6]=='+'{_bbb =_bbb [7:];};_fcdg :=[]string {_bbb ,"\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 _ ,_adg :=range _fcdg {_ba .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",_adg );if _ffa ,_ecg =_be [_adg ];_ecg {break ;};_gdg :=_acf .Match (_adg );if _gdg ==nil {_ba .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",_adg );continue ;};_ffa ,_caf =_da .NewTextFontFromPath (_gdg .Filename ,_fcfb );if _caf !=nil {_ba .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",_gdg .Filename );continue ;};_ba .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",_bbb ,_gdg .Name ,_gdg .Filename );_be [_adg ]=_ffa ;break ;};};if _ffa ==nil {_ba .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 _b .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");};_bce .ProcTf (_ffa .WithSize (_fcfb ,_cbg ));case "\u0042\u004d\u0043","\u0042\u0044\u0043":case "\u0045\u004d\u0043":default:_ba .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",_bad .Operand );};return nil ;});_ecb =_fdb .Process (_gac );if _ecb !=nil {return _ecb ;};return nil ;};
// RenderToPath converts the specified PDF page into an image and saves the
// result at the specified location.
func (_af *ImageDevice )RenderToPath (page *_gg .PdfPage ,outputPath string )error {_gb ,_bc :=_af .Render (page );if _bc !=nil {return _bc ;};_cg :=_c .ToLower (_fd .Ext (outputPath ));if _cg ==""{return _b .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 _cg {case "\u002e\u0070\u006e\u0067":return _ag (outputPath ,_gb );case "\u002e\u006a\u0070\u0067","\u002e\u006a\u0070e\u0067":return _eg (outputPath ,_gb ,100);};return _ac .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",_cg );};
// NewImageDevice returns a new image device.
func NewImageDevice ()*ImageDevice {return &ImageDevice {}};
// Render converts the specified PDF page into an image and returns the result.
func (_fb *ImageDevice )Render (page *_gg .PdfPage )(_g .Image ,error ){_ca ,_fe :=page .GetMediaBox ();if _fe !=nil {return nil ,_fe ;};_aee ,_cd :=_ca .Llx +_ca .Width (),_ca .Lly +_ca .Height ();_bab :=_dd .NewContext (int (_aee ),int (_cd ));if _gd :=_fb .renderPage (_bab ,page );_gd !=nil {return nil ,_gd ;};_ef :=_bab .Image ();if _fg :=page .CropBox ;_fg !=nil {_cac :=_g .Rect (0,0,int (_fg .Width ()),int (_fg .Height ()));_ed :=_g .Pt (int (_fg .Llx ),int (_cd -_fg .Ury ));_abd :=_g .NewRGBA (_cac );_cc .Draw (_abd ,_cac ,_ef ,_ed ,_cc .Src );_ef =_abd ;};return _ef ,nil ;};