unipdf/render/render.go
2023-01-08 22:34:27 +00:00

195 lines
52 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 (_fd "errors";_ca "fmt";_cg "github.com/adrg/sysfont";_b "github.com/unidoc/unipdf/v3/common";_fe "github.com/unidoc/unipdf/v3/contentstream";_db "github.com/unidoc/unipdf/v3/contentstream/draw";_dd "github.com/unidoc/unipdf/v3/core";
_cb "github.com/unidoc/unipdf/v3/internal/license";_cc "github.com/unidoc/unipdf/v3/internal/transform";_fb "github.com/unidoc/unipdf/v3/model";_cbd "github.com/unidoc/unipdf/v3/render/internal/context";_be "github.com/unidoc/unipdf/v3/render/internal/context/imagerender";
_ed "golang.org/x/image/draw";_c "image";_eb "image/color";_de "image/draw";_ea "image/jpeg";_ga "image/png";_a "math";_g "os";_d "path/filepath";_e "strings";);func (_faaa renderer )processRadialShading (_cce _cbd .Context ,_fcfb *_fb .PdfShading )(_cbd .Gradient ,*_dd .PdfObjectArray ,error ){_ebea :=_fcfb .GetContext ().(*_fb .PdfShadingType3 );
if len (_ebea .Function )==0{return nil ,nil ,_fd .New ("\u006e\u006f\u0020\u0067\u0072\u0061\u0064i\u0065\u006e\u0074 \u0066\u0075\u006e\u0063t\u0069\u006f\u006e\u0020\u0066\u006f\u0075\u006e\u0064\u002c\u0020\u0073\u006b\u0069\u0070\u0020\u0063\u006f\u006e\u0076\u0065\u0072\u0073\u0069\u006f\u006e");
};_bage ,_ccba :=_ebea .Coords .ToFloat64Array ();if _ccba !=nil {return nil ,nil ,_fd .New ("\u0066\u0061\u0069l\u0065\u0064\u0020\u0067e\u0074\u0074\u0069\u006e\u0067\u0020\u0073h\u0061\u0064\u0069\u006e\u0067\u0020\u0070\u006f\u0073\u0069\u0074\u0069\u006f\u006e");
};_fab :=_fcfb .ColorSpace ;_eadc :=_dd .MakeArrayFromFloats ([]float64 {0,0,1,1});var _gge ,_bbf ,_fdfb ,_aca ,_adc ,_addf float64 ;_gge ,_bbf =_cce .Matrix ().Transform (_bage [0],_bage [1]);_fdfb ,_aca =_cce .Matrix ().Transform (_bage [3],_bage [4]);
_adc ,_ =_cce .Matrix ().Transform (_bage [2],0);_addf ,_ =_cce .Matrix ().Transform (_bage [5],0);_eead ,_ :=_cce .Matrix ().Translation ();_adc -=_eead ;_addf -=_eead ;for _cbga ,_eefa :=range _bage {if _cbga ==2||_cbga ==5{continue ;};if _eefa > 1.0{_daea :=_a .Min (_gge -_adc ,_fdfb -_addf );
_aaa :=_a .Min (_bbf -_adc ,_aca -_addf );_bdec :=_a .Max (_gge +_adc ,_fdfb +_addf );_bba :=_a .Max (_bbf +_adc ,_aca +_addf );_egb :=_bdec -_daea ;_ccff :=_aaa -_bba ;_eadc =_dd .MakeArrayFromFloats ([]float64 {_daea ,_aaa ,_egb ,_ccff });break ;};};
_bcd :=_be .NewRadialGradient (_gge ,_bbf ,_adc ,_fdfb ,_aca ,_addf );if _bgc ,_fbb :=_ebea .Function [0].(*_fb .PdfFunctionType2 );_fbb {_bcd ,_ccba =_gfd (_bcd ,_bgc ,_fab ,1.0,true );}else if _ecf ,_eba :=_ebea .Function [0].(*_fb .PdfFunctionType3 );
_eba {_bcca :=append ([]float64 {0},_ecf .Bounds ...);_bcca =append (_bcca ,1.0);_bcd ,_ccba =_dfd (_bcd ,_ecf ,_fab ,_bcca );};if _ccba !=nil {return nil ,nil ,_ccba ;};return _bcd ,_eadc ,nil ;};func _eafd (_dbef _dd .PdfObject ,_cea _eb .Color )(_c .Image ,error ){_dfde ,_dgbg :=_dd .GetStream (_dbef );
if !_dgbg {return nil ,nil ;};_acc ,_fefb :=_fb .NewXObjectImageFromStream (_dfde );if _fefb !=nil {return nil ,_fefb ;};_egec ,_fefb :=_acc .ToImage ();if _fefb !=nil {return nil ,_fefb ;};return _cadg (_egec ,_cea ),nil ;};func (_efc renderer )processLinearShading (_ged _cbd .Context ,_gef *_fb .PdfShading )(_cbd .Gradient ,*_dd .PdfObjectArray ,error ){_aefb :=_gef .GetContext ().(*_fb .PdfShadingType2 );
if len (_aefb .Function )==0{return nil ,nil ,_fd .New ("\u006e\u006f\u0020\u0067\u0072\u0061\u0064i\u0065\u006e\u0074 \u0066\u0075\u006e\u0063t\u0069\u006f\u006e\u0020\u0066\u006f\u0075\u006e\u0064\u002c\u0020\u0073\u006b\u0069\u0070\u0020\u0063\u006f\u006e\u0076\u0065\u0072\u0073\u0069\u006f\u006e");
};_faaba ,_acg :=_aefb .Coords .ToFloat64Array ();if _acg !=nil {return nil ,nil ,_fd .New ("\u0066\u0061\u0069l\u0065\u0064\u0020\u0067e\u0074\u0074\u0069\u006e\u0067\u0020\u0073h\u0061\u0064\u0069\u006e\u0067\u0020\u0070\u006f\u0073\u0069\u0074\u0069\u006f\u006e");
};_gdgd :=_gef .ColorSpace ;_dfe ,_afbd :=_ged .Matrix ().Transform (_faaba [0],_faaba [1]);_baea ,_afc :=_ged .Matrix ().Transform (_faaba [2],_faaba [3]);_cfaf :=_be .NewLinearGradient (_dfe ,_afbd ,_baea ,_afc );_ebe :=_dd .MakeArrayFromFloats ([]float64 {0,0,1,1});
for _ ,_bdee :=range _faaba {if _bdee > 1{_ebe =_aefb .Coords ;break ;};};if _fef ,_dadf :=_aefb .Function [0].(*_fb .PdfFunctionType2 );_dadf {_cfaf ,_acg =_gfd (_cfaf ,_fef ,_gdgd ,1.0,true );}else if _agb ,_fcfa :=_aefb .Function [0].(*_fb .PdfFunctionType3 );
_fcfa {_daba :=append ([]float64 {0},_agb .Bounds ...);_daba =append (_daba ,1.0);_cfaf ,_acg =_dfd (_cfaf ,_agb ,_gdgd ,_daba );};return _cfaf ,_ebe ,_acg ;};func _dee (_dgdb ,_cgdc ,_bagb float64 )_db .BoundingBox {return _db .Path {Points :[]_db .Point {_db .NewPoint (0,0).Rotate (_bagb ),_db .NewPoint (_dgdb ,0).Rotate (_bagb ),_db .NewPoint (0,_cgdc ).Rotate (_bagb ),_db .NewPoint (_dgdb ,_cgdc ).Rotate (_bagb )}}.GetBoundingBox ();
};func (_ba renderer )renderContentStream (_eef _cbd .Context ,_dea string ,_bad *_fb .PdfPageResources )error {_cba ,_fdc :=_fe .NewContentStreamParser (_dea ).Parse ();if _fdc !=nil {return _fdc ;};_df :=_eef .TextState ();_df .GlobalScale =_ba ._dad ;
_dcc :=map[string ]*_cbd .TextFont {};_edf :=_cg .NewFinder (&_cg .FinderOpts {Extensions :[]string {"\u002e\u0074\u0074\u0066","\u002e\u0074\u0074\u0063"}});var _ded *_fe .ContentStreamOperation ;_fgb :=_fe .NewContentStreamProcessor (*_cba );_fgb .AddHandler (_fe .HandlerConditionEnumAllOperands ,"",func (_ggd *_fe .ContentStreamOperation ,_fbf _fe .GraphicsState ,_ab *_fb .PdfPageResources )error {_b .Log .Debug ("\u0050\u0072\u006f\u0063\u0065\u0073\u0073\u0069\u006e\u0067\u0020\u0025\u0073",_ggd .Operand );
switch _ggd .Operand {case "\u0071":_eef .Push ();case "\u0051":_eef .Pop ();_df =_eef .TextState ();case "\u0063\u006d":if len (_ggd .Params )!=6{return _gg ;};_dfb ,_ebd :=_dd .GetNumbersAsFloat (_ggd .Params );if _ebd !=nil {return _ebd ;};_fbc :=_cc .NewMatrix (_dfb [0],_dfb [1],_dfb [2],_dfb [3],_dfb [4],_dfb [5]);
_b .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",_fbc );_eef .SetMatrix (_eef .Matrix ().Mult (_fbc ));case "\u0077":if len (_ggd .Params )!=1{return _gg ;
};_acd ,_ggc :=_dd .GetNumbersAsFloat (_ggd .Params );if _ggc !=nil {return _ggc ;};_eef .SetLineWidth (_acd [0]);case "\u004a":if len (_ggd .Params )!=1{return _gg ;};_gaa ,_fgg :=_dd .GetIntVal (_ggd .Params [0]);if !_fgg {return _egd ;};switch _gaa {case 0:_eef .SetLineCap (_cbd .LineCapButt );
case 1:_eef .SetLineCap (_cbd .LineCapRound );case 2:_eef .SetLineCap (_cbd .LineCapSquare );default:_b .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",_gaa );
return _gg ;};case "\u006a":if len (_ggd .Params )!=1{return _gg ;};_effb ,_ae :=_dd .GetIntVal (_ggd .Params [0]);if !_ae {return _egd ;};switch _effb {case 0:_eef .SetLineJoin (_cbd .LineJoinBevel );case 1:_eef .SetLineJoin (_cbd .LineJoinRound );case 2:_eef .SetLineJoin (_cbd .LineJoinBevel );
default:_b .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",_effb );return _gg ;};case "\u004d":if len (_ggd .Params )!=1{return _gg ;};_cbg ,_bcgc :=_dd .GetNumbersAsFloat (_ggd .Params );
if _bcgc !=nil {return _bcgc ;};_ =_cbg ;_b .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 (_ggd .Params )!=2{return _gg ;};_ead ,_bd :=_dd .GetArray (_ggd .Params [0]);
if !_bd {return _egd ;};_bde ,_bd :=_dd .GetIntVal (_ggd .Params [1]);if !_bd {_ ,_feag :=_dd .GetFloatVal (_ggd .Params [1]);if !_feag {return _egd ;};};_abb ,_bdef :=_dd .GetNumbersAsFloat (_ead .Elements ());if _bdef !=nil {return _bdef ;};_eef .SetDash (_abb ...);
_ =_bde ;_b .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":_b .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":_b .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 (_ggd .Params )!=1{return _gg ;
};_cgc ,_aef :=_dd .GetName (_ggd .Params [0]);if !_aef {return _egd ;};if _cgc ==nil {return _gg ;};_bca ,_aef :=_ab .GetExtGState (*_cgc );if !_aef {_b .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",*_cgc );
return _fd .New ("\u0072e\u0073o\u0075\u0072\u0063\u0065\u0020n\u006f\u0074 \u0066\u006f\u0075\u006e\u0064");};_adb ,_aef :=_dd .GetDict (_bca );if !_aef {_b .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 _egd ;};_b .Log .Debug ("G\u0053\u0020\u0064\u0069\u0063\u0074\u003a\u0020\u0025\u0073",_adb .String ());case "\u006d":if len (_ggd .Params )!=2{_b .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",_gg );
return nil ;};_efd ,_gfb :=_dd .GetNumbersAsFloat (_ggd .Params );if _gfb !=nil {return _gfb ;};_b .Log .Debug ("M\u006f\u0076\u0065\u0020\u0074\u006f\u003a\u0020\u0025\u0076",_efd );_eef .NewSubPath ();_eef .MoveTo (_efd [0],_efd [1]);case "\u006c":if len (_ggd .Params )!=2{_b .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",_gg );
return nil ;};_aae ,_abbd :=_dd .GetNumbersAsFloat (_ggd .Params );if _abbd !=nil {return _abbd ;};_eef .LineTo (_aae [0],_aae [1]);case "\u0063":if len (_ggd .Params )!=6{return _gg ;};_gfe ,_bag :=_dd .GetNumbersAsFloat (_ggd .Params );if _bag !=nil {return _bag ;
};_b .Log .Debug ("\u0043u\u0062\u0069\u0063\u0020\u0062\u0065\u007a\u0069\u0065\u0072\u0020p\u0061\u0072\u0061\u006d\u0073\u003a\u0020\u0025\u002b\u0076",_gfe );_eef .CubicTo (_gfe [0],_gfe [1],_gfe [2],_gfe [3],_gfe [4],_gfe [5]);case "\u0076","\u0079":if len (_ggd .Params )!=4{return _gg ;
};_feb ,_gcfa :=_dd .GetNumbersAsFloat (_ggd .Params );if _gcfa !=nil {return _gcfa ;};_b .Log .Debug ("\u0043u\u0062\u0069\u0063\u0020\u0062\u0065\u007a\u0069\u0065\u0072\u0020p\u0061\u0072\u0061\u006d\u0073\u003a\u0020\u0025\u002b\u0076",_feb );_eef .QuadraticTo (_feb [0],_feb [1],_feb [2],_feb [3]);
case "\u0068":_eef .ClosePath ();_eef .NewSubPath ();case "\u0072\u0065":if len (_ggd .Params )!=4{return _gg ;};_deb ,_gfg :=_dd .GetNumbersAsFloat (_ggd .Params );if _gfg !=nil {return _gfg ;};_eef .DrawRectangle (_deb [0],_deb [1],_deb [2],_deb [3]);
_eef .NewSubPath ();case "\u0053":_bb ,_bfd :=_fbf .ColorspaceStroking .ColorToRGB (_fbf .ColorStroking );if _bfd !=nil {_b .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",_bfd );
return _bfd ;};_eed ,_bae :=_bb .(*_fb .PdfColorDeviceRGB );if !_bae {_b .Log .Debug ("\u0045\u0072\u0072\u006fr \u0063\u006f\u006e\u0076\u0065\u0072\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006co\u0072");return _bfd ;};_eef .SetRGBA (_eed .R (),_eed .G (),_eed .B (),1);
_eef .Stroke ();case "\u0073":_egc ,_dg :=_fbf .ColorspaceStroking .ColorToRGB (_fbf .ColorStroking );if _dg !=nil {_b .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",_dg );
return _dg ;};_gaca ,_fbfg :=_egc .(*_fb .PdfColorDeviceRGB );if !_fbfg {_b .Log .Debug ("\u0045\u0072\u0072\u006fr \u0063\u006f\u006e\u0076\u0065\u0072\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006co\u0072");return _dg ;};_eef .ClosePath ();_eef .NewSubPath ();
_eef .SetRGBA (_gaca .R (),_gaca .G (),_gaca .B (),1);_eef .Stroke ();case "\u0066","\u0046":_cfa ,_bce :=_fbf .ColorspaceNonStroking .ColorToRGB (_fbf .ColorNonStroking );if _bce !=nil {_b .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",_bce );
return _bce ;};switch _baeb :=_cfa .(type ){case *_fb .PdfColorDeviceRGB :_eef .SetRGBA (_baeb .R (),_baeb .G (),_baeb .B (),1);_eef .SetFillRule (_cbd .FillRuleWinding );_eef .Fill ();case *_fb .PdfColorPattern :_eef .Fill ();};_b .Log .Debug ("\u0045\u0072\u0072\u006fr \u0063\u006f\u006e\u0076\u0065\u0072\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006co\u0072");
case "\u0066\u002a":_ebc ,_dgb :=_fbf .ColorspaceNonStroking .ColorToRGB (_fbf .ColorNonStroking );if _dgb !=nil {_b .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",_dgb );
return _dgb ;};_afa ,_dca :=_ebc .(*_fb .PdfColorDeviceRGB );if !_dca {_b .Log .Debug ("\u0045\u0072\u0072\u006fr \u0063\u006f\u006e\u0076\u0065\u0072\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006co\u0072");return _dgb ;};_eef .SetRGBA (_afa .R (),_afa .G (),_afa .B (),1);
_eef .SetFillRule (_cbd .FillRuleEvenOdd );_eef .Fill ();case "\u0042":_bdb ,_cbf :=_fbf .ColorspaceNonStroking .ColorToRGB (_fbf .ColorNonStroking );if _cbf !=nil {_b .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",_cbf );
return _cbf ;};switch _bg :=_bdb .(type ){case *_fb .PdfColorDeviceRGB :_eef .SetRGBA (_bg .R (),_bg .G (),_bg .B (),1);_eef .SetFillRule (_cbd .FillRuleWinding );_eef .FillPreserve ();_bdb ,_cbf =_fbf .ColorspaceStroking .ColorToRGB (_fbf .ColorStroking );
if _cbf !=nil {_b .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",_cbf );return _cbf ;};if _gcfd ,_bgd :=_bdb .(*_fb .PdfColorDeviceRGB );
_bgd {_eef .SetRGBA (_gcfd .R (),_gcfd .G (),_gcfd .B (),1);_eef .Stroke ();};case *_fb .PdfColorPattern :_eef .SetFillRule (_cbd .FillRuleWinding );_eef .Fill ();_eef .StrokePattern ();};case "\u0042\u002a":_fbd ,_fee :=_fbf .ColorspaceNonStroking .ColorToRGB (_fbf .ColorNonStroking );
if _fee !=nil {_b .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",_fee );return _fee ;};switch _afb :=_fbd .(type ){case *_fb .PdfColorDeviceRGB :_eef .SetRGBA (_afb .R (),_afb .G (),_afb .B (),1);
_eef .SetFillRule (_cbd .FillRuleEvenOdd );_eef .FillPreserve ();_fbd ,_fee =_fbf .ColorspaceStroking .ColorToRGB (_fbf .ColorStroking );if _fee !=nil {_b .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",_fee );
return _fee ;};if _gfba ,_cac :=_fbd .(*_fb .PdfColorDeviceRGB );_cac {_eef .SetRGBA (_gfba .R (),_gfba .G (),_gfba .B (),1);_eef .Stroke ();};case *_fb .PdfColorPattern :_eef .SetFillRule (_cbd .FillRuleEvenOdd );_eef .Fill ();_eef .StrokePattern ();};
case "\u0062":_eef .ClosePath ();_ebg ,_ggcg :=_fbf .ColorspaceNonStroking .ColorToRGB (_fbf .ColorNonStroking );if _ggcg !=nil {_b .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",_ggcg );
return _ggcg ;};switch _gbe :=_ebg .(type ){case *_fb .PdfColorDeviceRGB :_eef .SetRGBA (_gbe .R (),_gbe .G (),_gbe .B (),1);_eef .NewSubPath ();_eef .SetFillRule (_cbd .FillRuleWinding );_eef .FillPreserve ();_ebg ,_ggcg =_fbf .ColorspaceStroking .ColorToRGB (_fbf .ColorStroking );
if _ggcg !=nil {_b .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",_ggcg );return _ggcg ;};if _fa ,_fba :=_ebg .(*_fb .PdfColorDeviceRGB );
_fba {_eef .SetRGBA (_fa .R (),_fa .G (),_fa .B (),1);_eef .Stroke ();};case *_fb .PdfColorPattern :_eef .NewSubPath ();_eef .SetFillRule (_cbd .FillRuleWinding );_eef .Fill ();_eef .StrokePattern ();};case "\u0062\u002a":_eef .ClosePath ();_fc ,_bgb :=_fbf .ColorspaceNonStroking .ColorToRGB (_fbf .ColorNonStroking );
if _bgb !=nil {_b .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",_bgb );return _bgb ;};switch _dfa :=_fc .(type ){case *_fb .PdfColorDeviceRGB :_eef .SetRGBA (_dfa .R (),_dfa .G (),_dfa .B (),1);
_eef .NewSubPath ();_eef .SetFillRule (_cbd .FillRuleEvenOdd );_eef .FillPreserve ();_fc ,_bgb =_fbf .ColorspaceStroking .ColorToRGB (_fbf .ColorStroking );if _bgb !=nil {_b .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",_bgb );
return _bgb ;};if _eag ,_gad :=_fc .(*_fb .PdfColorDeviceRGB );_gad {_eef .SetRGBA (_eag .R (),_eag .G (),_eag .B (),1);_eef .Stroke ();};case *_fb .PdfColorPattern :_eef .NewSubPath ();_eef .SetFillRule (_cbd .FillRuleEvenOdd );_eef .Fill ();_eef .StrokePattern ();
};case "\u006e":_eef .ClearPath ();case "\u0057":_eef .SetFillRule (_cbd .FillRuleWinding );_eef .ClipPreserve ();case "\u0057\u002a":_eef .SetFillRule (_cbd .FillRuleEvenOdd );_eef .ClipPreserve ();case "\u0072\u0067":_fff ,_fbff :=_fbf .ColorNonStroking .(*_fb .PdfColorDeviceRGB );
if !_fbff {_b .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",_fbf .ColorNonStroking );return nil ;};_eef .SetFillRGBA (_fff .R (),_fff .G (),_fff .B (),1);
case "\u0052\u0047":_ade ,_fbdb :=_fbf .ColorStroking .(*_fb .PdfColorDeviceRGB );if !_fbdb {_b .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",_fbf .ColorStroking );
return nil ;};_eef .SetStrokeRGBA (_ade .R (),_ade .G (),_ade .B (),1);case "\u006b":_cbgf ,_abf :=_fbf .ColorNonStroking .(*_fb .PdfColorDeviceCMYK );if !_abf {_b .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",_fbf .ColorNonStroking );
return nil ;};_ffd ,_ebdg :=_fbf .ColorspaceNonStroking .ColorToRGB (_cbgf );if _ebdg !=nil {_b .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",_fbf .ColorNonStroking );
return nil ;};_bfb ,_abf :=_ffd .(*_fb .PdfColorDeviceRGB );if !_abf {_b .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",_ffd );return nil ;
};_eef .SetFillRGBA (_bfb .R (),_bfb .G (),_bfb .B (),1);case "\u004b":_abd ,_eage :=_fbf .ColorStroking .(*_fb .PdfColorDeviceCMYK );if !_eage {_b .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",_fbf .ColorStroking );
return nil ;};_dbc ,_bceg :=_fbf .ColorspaceStroking .ColorToRGB (_abd );if _bceg !=nil {_b .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",_fbf .ColorStroking );
return nil ;};_gcg ,_eage :=_dbc .(*_fb .PdfColorDeviceRGB );if !_eage {_b .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",_dbc );return nil ;
};_eef .SetStrokeRGBA (_gcg .R (),_gcg .G (),_gcg .B (),1);case "\u0067":_ge ,_gbd :=_fbf .ColorNonStroking .(*_fb .PdfColorDeviceGray );if !_gbd {_b .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",_fbf .ColorNonStroking );
return nil ;};_faa ,_bcc :=_fbf .ColorspaceNonStroking .ColorToRGB (_ge );if _bcc !=nil {_b .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",_fbf .ColorNonStroking );
return nil ;};_gadf ,_gbd :=_faa .(*_fb .PdfColorDeviceRGB );if !_gbd {_b .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",_faa );return nil ;
};_eef .SetFillRGBA (_gadf .R (),_gadf .G (),_gadf .B (),1);case "\u0047":_bfdc ,_baeg :=_fbf .ColorStroking .(*_fb .PdfColorDeviceGray );if !_baeg {_b .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",_fbf .ColorStroking );
return nil ;};_fdb ,_cgg :=_fbf .ColorspaceStroking .ColorToRGB (_bfdc );if _cgg !=nil {_b .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",_fbf .ColorStroking );
return nil ;};_gd ,_baeg :=_fdb .(*_fb .PdfColorDeviceRGB );if !_baeg {_b .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",_fdb );return nil ;
};_eef .SetStrokeRGBA (_gd .R (),_gd .G (),_gd .B (),1);case "\u0063\u0073":if len (_ggd .Params )> 0{if _ag ,_geb :=_dd .GetName (_ggd .Params [0]);_geb &&_ag .String ()=="\u0050a\u0074\u0074\u0065\u0072\u006e"{break ;};};_bcb ,_ce :=_fbf .ColorspaceNonStroking .ColorToRGB (_fbf .ColorNonStroking );
if _ce !=nil {_b .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",_fbf .ColorNonStroking );return nil ;};_bac ,_aac :=_bcb .(*_fb .PdfColorDeviceRGB );
if !_aac {_b .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",_bcb );return nil ;};_eef .SetFillRGBA (_bac .R (),_bac .G (),_bac .B (),1);case "\u0073\u0063":_egf ,_gcgb :=_fbf .ColorspaceNonStroking .ColorToRGB (_fbf .ColorNonStroking );
if _gcgb !=nil {_b .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",_fbf .ColorNonStroking );return nil ;};_fcf ,_gcb :=_egf .(*_fb .PdfColorDeviceRGB );
if !_gcb {_b .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",_egf );return nil ;};_eef .SetFillRGBA (_fcf .R (),_fcf .G (),_fcf .B (),1);case "\u0073\u0063\u006e":if len (_ggd .Params )> 0&&len (_ded .Params )> 0{if _bee ,_ggcf :=_dd .GetName (_ded .Params [0]);
_ggcf &&_bee .String ()=="\u0050a\u0074\u0074\u0065\u0072\u006e"{if _bgg ,_gfc :=_dd .GetName (_ggd .Params [0]);_gfc {_bfc ,_dbg :=_ba .processGradient (_eef ,_ggd ,_ab ,_bgg );if _dbg !=nil {_b .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0077\u0068\u0065\u006e\u0020\u0070\u0072o\u0063\u0065\u0073\u0073\u0069\u006eg\u0020\u0067\u0072\u0061\u0064\u0069\u0065\u006e\u0074\u0020\u0064\u0061\u0074a\u003a\u0020\u0025\u0076",_dbg );
break ;};if _bfc ==nil {_b .Log .Debug ("\u0055\u006ek\u006e\u006f\u0077n\u0020\u0067\u0072\u0061\u0064\u0069\u0065\u006e\u0074");break ;};_eef .SetFillStyle (_bfc );_eef .SetStrokeStyle (_bfc );break ;};};};_eaga ,_gab :=_fbf .ColorspaceNonStroking .ColorToRGB (_fbf .ColorNonStroking );
if _gab !=nil {_b .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",_fbf .ColorNonStroking );return nil ;};_fdg ,_cggc :=_eaga .(*_fb .PdfColorDeviceRGB );
if !_cggc {_b .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",_eaga );return nil ;};_eef .SetFillRGBA (_fdg .R (),_fdg .G (),_fdg .B (),1);
case "\u0043\u0053":if len (_ggd .Params )> 0{if _bbb ,_fffd :=_dd .GetName (_ggd .Params [0]);_fffd &&_bbb .String ()=="\u0050a\u0074\u0074\u0065\u0072\u006e"{break ;};};_cad ,_dbd :=_fbf .ColorspaceStroking .ColorToRGB (_fbf .ColorStroking );if _dbd !=nil {_b .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",_fbf .ColorStroking );
return nil ;};_gca ,_faag :=_cad .(*_fb .PdfColorDeviceRGB );if !_faag {_b .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",_cad );return nil ;
};_eef .SetStrokeRGBA (_gca .R (),_gca .G (),_gca .B (),1);case "\u0053\u0043":_gdd ,_ccb :=_fbf .ColorspaceStroking .ColorToRGB (_fbf .ColorStroking );if _ccb !=nil {_b .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",_fbf .ColorStroking );
return nil ;};_badg ,_dbdf :=_gdd .(*_fb .PdfColorDeviceRGB );if !_dbdf {_b .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",_gdd );return nil ;
};_eef .SetStrokeRGBA (_badg .R (),_badg .G (),_badg .B (),1);case "\u0053\u0043\u004e":if len (_ggd .Params )> 0&&len (_ded .Params )> 0{if _bfba ,_dab :=_dd .GetName (_ded .Params [0]);_dab &&_bfba .String ()=="\u0050a\u0074\u0074\u0065\u0072\u006e"{if _cd ,_eaag :=_dd .GetName (_ggd .Params [0]);
_eaag {_dccf ,_aaf :=_ba .processGradient (_eef ,_ggd ,_ab ,_cd );if _aaf !=nil {_b .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0077\u0068\u0065\u006e\u0020\u0070\u0072o\u0063\u0065\u0073\u0073\u0069\u006eg\u0020\u0067\u0072\u0061\u0064\u0069\u0065\u006e\u0074\u0020\u0064\u0061\u0074a\u003a\u0020\u0025\u0076",_aaf );
break ;};if _dccf ==nil {_b .Log .Debug ("\u0055\u006ek\u006e\u006f\u0077n\u0020\u0067\u0072\u0061\u0064\u0069\u0065\u006e\u0074");break ;};_eef .SetFillStyle (_dccf );_eef .SetStrokeStyle (_dccf );break ;};};};_dbe ,_degc :=_fbf .ColorspaceStroking .ColorToRGB (_fbf .ColorStroking );
if _degc !=nil {_b .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",_fbf .ColorStroking );return nil ;};_bbe ,_bdc :=_dbe .(*_fb .PdfColorDeviceRGB );
if !_bdc {_b .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",_dbe );return nil ;};_eef .SetStrokeRGBA (_bbe .R (),_bbe .G (),_bbe .B (),1);
case "\u0073\u0068":if len (_ggd .Params )!=1{_b .Log .Debug ("\u0049n\u0076\u0061\u006c\u0069\u0064\u0020\u0073\u0068\u0020\u0070\u0061r\u0061\u006d\u0073\u0020\u0066\u006f\u0072\u006d\u0061\u0074");break ;};_gdda ,_eaf :=_dd .GetName (_ggd .Params [0]);
if !_eaf {_b .Log .Debug ("F\u0061\u0069\u006c\u0065\u0064\u0020g\u0065\u0074\u0074\u0069\u006e\u0067\u0020\u0073\u0068a\u0064\u0069\u006eg\u0020n\u0061\u006d\u0065");break ;};_fge ,_eaf :=_ab .GetShadingByName (*_gdda );if !_eaf {_b .Log .Debug ("F\u0061\u0069\u006c\u0065\u0064\u0020g\u0065\u0074\u0074\u0069\u006e\u0067\u0020\u0073\u0068a\u0064\u0069\u006eg\u0020d\u0061\u0074\u0061");
break ;};_ceg ,_effa ,_gee :=_ba .processShading (_eef ,_fge );if _gee !=nil {_b .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0077\u0068\u0065\u006e\u0020\u0070\u0072\u006f\u0063\u0065\u0073\u0073\u0069\u006e\u0067\u0020\u0073\u0068a\u0064\u0069\u006e\u0067\u0020d\u0061\u0074a\u003a\u0020\u0025\u0076",_gee );
break ;};if _ceg ==nil {_b .Log .Debug ("\u0055\u006ek\u006e\u006f\u0077n\u0020\u0067\u0072\u0061\u0064\u0069\u0065\u006e\u0074");break ;};_daa ,_gee :=_effa .ToFloat64Array ();if _gee !=nil {_b .Log .Debug ("\u0045\u0072r\u006f\u0072\u0020\u0070\u0061\u0072\u0073\u0069\u006e\u0067\u0020\u0063\u006f\u006f\u0072\u0064\u0069\u006e\u0061\u0074\u0065\u0073: \u0025\u0076",_gee );
break ;};_eef .DrawRectangle (_daa [0],_daa [1],_daa [2],_daa [3]);_eef .NewSubPath ();_eef .SetFillStyle (_ceg );_eef .SetStrokeStyle (_ceg );_eef .Fill ();case "\u0044\u006f":if len (_ggd .Params )!=1{return _gg ;};_faab ,_fad :=_dd .GetName (_ggd .Params [0]);
if !_fad {return _egd ;};_ ,_eea :=_ab .GetXObjectByName (*_faab );switch _eea {case _fb .XObjectTypeImage :_b .Log .Debug ("\u0058\u004f\u0062\u006a\u0065\u0063\u0074\u0020\u0069\u006d\u0061\u0067e\u003a\u0020\u0025\u0073",_faab .String ());_adbf ,_agg :=_ab .GetXObjectImageByName (*_faab );
if _agg !=nil {return _agg ;};_bfde ,_agg :=_adbf .ToImage ();if _agg !=nil {return _agg ;};if _age :=_adbf .ColorSpace ;_age !=nil {var _fddf bool ;switch _age .(type ){case *_fb .PdfColorspaceSpecialIndexed :_fddf =true ;};if _fddf {if _gaad ,_aeg :=_age .ImageToRGB (*_bfde );
_aeg !=nil {_b .Log .Debug ("\u0057\u0041\u0052\u004e\u003a\u0020\u0063\u006f\u0075\u006c\u0064\u0020\u006e\u006f\u0074\u0020\u0063\u006fnv\u0065r\u0074\u0020\u0069\u006d\u0061\u0067\u0065\u0020\u0074\u006f\u0020\u0052G\u0042\u002e\u0020\u004f\u0075\u0074\u0070\u0075\u0074\u0020\u006d\u0061\u0079\u0020\u0062\u0065\u0020i\u006e\u0063\u006f\u0072\u0072\u0065\u0063\u0074\u002e");
}else {_bfde =&_gaad ;};};};_gaaf :=_eef .FillPattern ().ColorAt (0,0);var _ccc _c .Image ;if _adbf .Mask !=nil {if _ccc ,_agg =_eafd (_adbf .Mask ,_gaaf );_agg !=nil {_b .Log .Debug ("\u0057\u0041\u0052\u004e\u003a \u0063\u006f\u0075\u006c\u0064 \u006eo\u0074\u0020\u0067\u0065\u0074\u0020\u0065\u0078\u0070\u006c\u0069\u0063\u0069\u0074\u0020\u0069\u006d\u0061\u0067e\u0020\u006d\u0061\u0073\u006b\u002e\u0020\u004f\u0075\u0074\u0070\u0075\u0074\u0020\u006d\u0061\u0079\u0020\u0062\u0065\u0020\u0069\u006e\u0063o\u0072\u0072\u0065\u0063\u0074\u002e");
};}else if _adbf .SMask !=nil {if _ccc ,_agg =_ecb (_adbf .SMask ,_gaaf );_agg !=nil {_b .Log .Debug ("W\u0041\u0052\u004e\u003a\u0020\u0063\u006f\u0075\u006c\u0064\u0020\u006e\u006f\u0074\u0020\u0067\u0065\u0074\u0020\u0073\u006f\u0066\u0074\u0020\u0069\u006da\u0067e\u0020\u006d\u0061\u0073k\u002e\u0020O\u0075\u0074\u0070\u0075\u0074\u0020\u006d\u0061\u0079\u0020\u0062\u0065\u0020\u0069\u006e\u0063\u006f\u0072\u0072\u0065\u0063\u0074\u002e");
};};var _fcd _c .Image ;if _bagc ,_ :=_dd .GetBoolVal (_adbf .ImageMask );_bagc {_fcd =_cadg (_bfde ,_gaaf );}else {_fcd ,_agg =_bfde .ToGoImage ();if _agg !=nil {return _agg ;};};if _ccc !=nil {_fcd =_dbfb (_fcd ,_ccc );};_fffb :=_fcd .Bounds ();_eef .Push ();
_eef .Scale (1.0/float64 (_fffb .Dx ()),-1.0/float64 (_fffb .Dy ()));_eef .DrawImageAnchored (_fcd ,0,0,0,1);_eef .Pop ();case _fb .XObjectTypeForm :_b .Log .Debug ("\u0058\u004fb\u006a\u0065\u0063t\u0020\u0066\u006f\u0072\u006d\u003a\u0020\u0025\u0073",_faab .String ());
_ggg ,_dbf :=_ab .GetXObjectFormByName (*_faab );if _dbf !=nil {return _dbf ;};_fdcb ,_dbf :=_ggg .GetContentStream ();if _dbf !=nil {return _dbf ;};_acf :=_ggg .Resources ;if _acf ==nil {_acf =_ab ;};_eef .Push ();if _ggg .Matrix !=nil {_afe ,_egfc :=_dd .GetArray (_ggg .Matrix );
if !_egfc {return _egd ;};_cab ,_daad :=_dd .GetNumbersAsFloat (_afe .Elements ());if _daad !=nil {return _daad ;};if len (_cab )!=6{return _gg ;};_dae :=_cc .NewMatrix (_cab [0],_cab [1],_cab [2],_cab [3],_cab [4],_cab [5]);_eef .SetMatrix (_eef .Matrix ().Mult (_dae ));
};if _ggg .BBox !=nil {_dfba ,_gec :=_dd .GetArray (_ggg .BBox );if !_gec {return _egd ;};_baegc ,_gabc :=_dd .GetNumbersAsFloat (_dfba .Elements ());if _gabc !=nil {return _gabc ;};if len (_baegc )!=4{_b .Log .Debug ("\u004c\u0065\u006e\u0020\u003d\u0020\u0025\u0064",len (_baegc ));
return _gg ;};_eef .DrawRectangle (_baegc [0],_baegc [1],_baegc [2]-_baegc [0],_baegc [3]-_baegc [1]);_eef .SetRGBA (1,0,0,1);_eef .Clip ();}else {_b .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");
};_dbf =_ba .renderContentStream (_eef ,string (_fdcb ),_acf );if _dbf !=nil {return _dbf ;};_eef .Pop ();};case "\u0042\u0049":if len (_ggd .Params )!=1{return _gg ;};_aged ,_bbc :=_ggd .Params [0].(*_fe .ContentStreamInlineImage );if !_bbc {return nil ;
};_begb ,_dbgb :=_aged .ToImage (_ab );if _dbgb !=nil {return _dbgb ;};_ace ,_dbgb :=_begb .ToGoImage ();if _dbgb !=nil {return _dbgb ;};_gaag :=_ace .Bounds ();_eef .Push ();_eef .Scale (1.0/float64 (_gaag .Dx ()),-1.0/float64 (_gaag .Dy ()));_eef .DrawImageAnchored (_ace ,0,0,0,1);
_eef .Pop ();case "\u0042\u0054":_df .Reset ();case "\u0045\u0054":_df .Reset ();case "\u0054\u0072":if len (_ggd .Params )!=1{return _gg ;};_dabd ,_abbb :=_dd .GetNumberAsFloat (_ggd .Params [0]);if _abbb !=nil {return _abbb ;};_df .Tr =_cbd .TextRenderingMode (_dabd );
case "\u0054\u004c":if len (_ggd .Params )!=1{return _gg ;};_cff ,_daf :=_dd .GetNumberAsFloat (_ggd .Params [0]);if _daf !=nil {return _daf ;};_df .Tl =_cff ;case "\u0054\u0063":if len (_ggd .Params )!=1{return _gg ;};_debf ,_fdga :=_dd .GetNumberAsFloat (_ggd .Params [0]);
if _fdga !=nil {return _fdga ;};_b .Log .Debug ("\u0054\u0063\u003a\u0020\u0025\u0076",_debf );_df .Tc =_debf ;case "\u0054\u0077":if len (_ggd .Params )!=1{return _gg ;};_dcf ,_ffc :=_dd .GetNumberAsFloat (_ggd .Params [0]);if _ffc !=nil {return _ffc ;
};_b .Log .Debug ("\u0054\u0077\u003a\u0020\u0025\u0076",_dcf );_df .Tw =_dcf ;case "\u0054\u007a":if len (_ggd .Params )!=1{return _gg ;};_eade ,_geba :=_dd .GetNumberAsFloat (_ggd .Params [0]);if _geba !=nil {return _geba ;};_df .Th =_eade ;case "\u0054\u0073":if len (_ggd .Params )!=1{return _gg ;
};_gbdf ,_gaf :=_dd .GetNumberAsFloat (_ggd .Params [0]);if _gaf !=nil {return _gaf ;};_df .Ts =_gbdf ;case "\u0054\u0064":if len (_ggd .Params )!=2{return _gg ;};_fce ,_beec :=_dd .GetNumbersAsFloat (_ggd .Params );if _beec !=nil {return _beec ;};_b .Log .Debug ("\u0054\u0064\u003a\u0020\u0025\u0076",_fce );
_df .ProcTd (_fce [0],_fce [1]);case "\u0054\u0044":if len (_ggd .Params )!=2{return _gg ;};_aga ,_gba :=_dd .GetNumbersAsFloat (_ggd .Params );if _gba !=nil {return _gba ;};_b .Log .Debug ("\u0054\u0044\u003a\u0020\u0025\u0076",_aga );_df .ProcTD (_aga [0],_aga [1]);
case "\u0054\u002a":_df .ProcTStar ();case "\u0054\u006d":if len (_ggd .Params )!=6{return _gg ;};_afd ,_bfbg :=_dd .GetNumbersAsFloat (_ggd .Params );if _bfbg !=nil {return _bfbg ;};_b .Log .Debug ("\u0054\u0065x\u0074\u0020\u006da\u0074\u0072\u0069\u0078\u003a\u0020\u0025\u002b\u0076",_afd );
_df .ProcTm (_afd [0],_afd [1],_afd [2],_afd [3],_afd [4],_afd [5]);case "\u0027":if len (_ggd .Params )!=1{return _gg ;};_ceb ,_aff :=_dd .GetStringBytes (_ggd .Params [0]);if !_aff {return _egd ;};_b .Log .Debug ("\u0027\u0020\u0073t\u0072\u0069\u006e\u0067\u003a\u0020\u0025\u0073",string (_ceb ));
_df .ProcQ (_ceb ,_eef );case "\u0022":if len (_ggd .Params )!=3{return _gg ;};_debc ,_daae :=_dd .GetNumberAsFloat (_ggd .Params [0]);if _daae !=nil {return _daae ;};_fde ,_daae :=_dd .GetNumberAsFloat (_ggd .Params [1]);if _daae !=nil {return _daae ;
};_ggb ,_bff :=_dd .GetStringBytes (_ggd .Params [2]);if !_bff {return _egd ;};_df .ProcDQ (_ggb ,_debc ,_fde ,_eef );case "\u0054\u006a":if len (_ggd .Params )!=1{return _gg ;};_gae ,_bga :=_dd .GetStringBytes (_ggd .Params [0]);if !_bga {return _egd ;
};_b .Log .Debug ("\u0054j\u0020s\u0074\u0072\u0069\u006e\u0067\u003a\u0020\u0060\u0025\u0073\u0060",string (_gae ));_df .ProcTj (_gae ,_eef );case "\u0054\u004a":if len (_ggd .Params )!=1{return _gg ;};_dbfg ,_fegg :=_dd .GetArray (_ggd .Params [0]);if !_fegg {_b .Log .Debug ("\u0054\u0079\u0070\u0065\u003a\u0020\u0025\u0054",_dbfg );
return _egd ;};_b .Log .Debug ("\u0054\u004a\u0020\u0061\u0072\u0072\u0061\u0079\u003a\u0020\u0025\u002b\u0076",_dbfg );for _ ,_bbba :=range _dbfg .Elements (){switch _faf :=_bbba .(type ){case *_dd .PdfObjectString :if _faf !=nil {_df .ProcTj (_faf .Bytes (),_eef );
};case *_dd .PdfObjectFloat ,*_dd .PdfObjectInteger :_gafb ,_ddbg :=_dd .GetNumberAsFloat (_faf );if _ddbg ==nil {_df .Translate (-_gafb *0.001*_df .Tf .Size *_df .Th /100.0,0);};};};case "\u0054\u0066":if len (_ggd .Params )!=2{return _gg ;};_b .Log .Debug ("\u0025\u0023\u0076",_ggd .Params );
_bgf ,_cdc :=_dd .GetName (_ggd .Params [0]);if !_cdc ||_bgf ==nil {_b .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",_ggd .Params [0]);
return _egd ;};_b .Log .Debug ("\u0046\u006f\u006e\u0074\u0020\u006e\u0061\u006d\u0065\u003a\u0020\u0025\u0073",_bgf .String ());_acea ,_fdbg :=_dd .GetNumberAsFloat (_ggd .Params [1]);if _fdbg !=nil {_b .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",_ggd .Params [1]);
return _egd ;};_b .Log .Debug ("\u0046\u006f\u006e\u0074\u0020\u0073\u0069\u007a\u0065\u003a\u0020\u0025\u0076",_acea );_affe ,_gbb :=_ab .GetFontByName (*_bgf );if !_gbb {_b .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a\u0020\u0046\u006f\u006e\u0074\u0020\u0025s\u0020\u006e\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064",_bgf .String ());
return _fd .New ("\u0066\u006f\u006e\u0074\u0020\u006e\u006f\u0074\u0020f\u006f\u0075\u006e\u0064");};_b .Log .Debug ("\u0046\u006f\u006e\u0074\u003a\u0020\u0025\u0054",_affe );_daed ,_cdc :=_dd .GetDict (_affe );if !_cdc {_b .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 _egd ;};_cgcb ,_fdbg :=_fb .NewPdfFontFromPdfObject (_daed );if _fdbg !=nil {_b .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 _fdbg ;};_ceba :=_cgcb .BaseFont ();if _ceba ==""{_ceba =_bgf .String ();};_bccg ,_cdc :=_dcc [_ceba ];if !_cdc {_bccg ,_fdbg =_cbd .NewTextFont (_cgcb ,_acea );if _fdbg !=nil {_b .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a\u0020\u0025v",_fdbg );
};};if _bccg ==nil {if len (_ceba )> 7&&_ceba [6]=='+'{_ceba =_ceba [7:];};_ege :=[]string {_ceba ,"\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 _ ,_ffg :=range _ege {_b .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",_ffg );if _bccg ,_cdc =_dcc [_ffg ];
_cdc {break ;};_agd :=_edf .Match (_ffg );if _agd ==nil {_b .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",_ffg );continue ;};_bccg ,_fdbg =_cbd .NewTextFontFromPath (_agd .Filename ,_acea );
if _fdbg !=nil {_b .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",_agd .Filename );continue ;};_b .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",_ceba ,_agd .Name ,_agd .Filename );
_dcc [_ffg ]=_bccg ;break ;};};if _bccg ==nil {_b .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 _fd .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");};_df .ProcTf (_bccg .WithSize (_acea ,_cgcb ));case "\u0042\u004d\u0043","\u0042\u0044\u0043":case "\u0045\u004d\u0043":default:_b .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",_ggd .Operand );
};_ded =_ggd ;return nil ;});_fdc =_fgb .Process (_bad );if _fdc !=nil {return _fdc ;};return nil ;};func _affed (_bbbc string ,_gbg _c .Image )error {_ecgf ,_afcc :=_g .Create (_bbbc );if _afcc !=nil {return _afcc ;};defer _ecgf .Close ();return _ga .Encode (_ecgf ,_gbg );
};func _dbfb (_agbc ,_adbg _c .Image )_c .Image {_ebga ,_acdf :=_adbg .Bounds ().Size (),_agbc .Bounds ().Size ();_ffdc ,_gbc :=_ebga .X ,_ebga .Y ;if _acdf .X > _ffdc {_ffdc =_acdf .X ;};if _acdf .Y > _gbc {_gbc =_acdf .Y ;};_bgcf :=_c .Rect (0,0,_ffdc ,_gbc );
if _ebga .X !=_ffdc ||_ebga .Y !=_gbc {_ggbd :=_c .NewRGBA (_bgcf );_ed .BiLinear .Scale (_ggbd ,_bgcf ,_agbc ,_adbg .Bounds (),_ed .Over ,nil );_adbg =_ggbd ;};if _acdf .X !=_ffdc ||_acdf .Y !=_gbc {_dge :=_c .NewRGBA (_bgcf );_ed .BiLinear .Scale (_dge ,_bgcf ,_agbc ,_agbc .Bounds (),_ed .Over ,nil );
_agbc =_dge ;};_egce :=_c .NewRGBA (_bgcf );_ed .DrawMask (_egce ,_bgcf ,_agbc ,_c .Point {},_adbg ,_c .Point {},_ed .Over );return _egce ;};
// RenderToPath converts the specified PDF page into an image and saves the
// result at the specified location.
func (_eaa *ImageDevice )RenderToPath (page *_fb .PdfPage ,outputPath string )error {_fdd ,_gcf :=_eaa .Render (page );if _gcf !=nil {return _gcf ;};_ddb :=_e .ToLower (_d .Ext (outputPath ));if _ddb ==""{return _fd .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 _ddb {case "\u002e\u0070\u006e\u0067":return _affed (outputPath ,_fdd );case "\u002e\u006a\u0070\u0067","\u002e\u006a\u0070e\u0067":return _bbec (outputPath ,_fdd ,100);};return _ca .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",_ddb );
};func _bbec (_ecgd string ,_gag _c .Image ,_dgc int )error {_bec ,_dagf :=_g .Create (_ecgd );if _dagf !=nil {return _dagf ;};defer _bec .Close ();return _ea .Encode (_bec ,_gag ,&_ea .Options {Quality :_dgc });};type renderer struct{_dad float64 };func _baegcg (_ebeae *_fb .Image ,_bfg _eb .Color )_c .Image {_aafd ,_ecd :=int (_ebeae .Width ),int (_ebeae .Height );
_faae :=_c .NewRGBA (_c .Rect (0,0,_aafd ,_ecd ));for _agbb :=0;_agbb < _ecd ;_agbb ++{for _bgfa :=0;_bgfa < _aafd ;_bgfa ++{_baaa ,_egfcf :=_ebeae .ColorAt (_bgfa ,_agbb );if _egfcf !=nil {_b .Log .Debug ("\u0057\u0041\u0052\u004e\u003a\u0020\u0063o\u0075\u006c\u0064\u0020\u006e\u006f\u0074\u0020\u0072\u0065\u0074\u0072\u0069\u0065v\u0065 \u0069\u006d\u0061\u0067\u0065\u0020m\u0061\u0073\u006b\u0020\u0076\u0061\u006cu\u0065\u0020\u0061\u0074\u0020\u0028\u0025\u0064\u002c\u0020\u0025\u0064\u0029\u002e\u0020\u004f\u0075\u0074\u0070\u0075\u0074\u0020\u006da\u0079\u0020\u0062\u0065\u0020\u0069\u006e\u0063\u006f\u0072\u0072\u0065\u0063t\u002e",_bgfa ,_agbb );
continue ;};_gfce ,_bcae ,_cbca ,_ :=_baaa .RGBA ();var _bbce _eb .Color ;if _gfce +_bcae +_cbca ==0{_bbce =_eb .Transparent ;}else {_bbce =_bfg ;};_faae .Set (_bgfa ,_agbb ,_bbce );};};return _faae ;};func _ecb (_feed _dd .PdfObject ,_aeba _eb .Color )(_c .Image ,error ){_efff ,_cfg :=_dd .GetStream (_feed );
if !_cfg {return nil ,nil ;};_aad ,_fgec :=_fb .NewXObjectImageFromStream (_efff );if _fgec !=nil {return nil ,_fgec ;};_geff ,_fgec :=_aad .ToImage ();if _fgec !=nil {return nil ,_fgec ;};return _baegcg (_geff ,_aeba ),nil ;};func _dfd (_dag _cbd .Gradient ,_ddd *_fb .PdfFunctionType3 ,_ccef _fb .PdfColorspace ,_aabb []float64 )(_cbd .Gradient ,error ){var _ffgc error ;
for _edc :=0;_edc < len (_ddd .Functions );_edc ++{if _fbcd ,_ecg :=_ddd .Functions [_edc ].(*_fb .PdfFunctionType2 );_ecg {_dag ,_ffgc =_gfd (_dag ,_fbcd ,_ccef ,_aabb [_edc +1],_edc ==0);if _ffgc !=nil {return nil ,_ffgc ;};};};return _dag ,nil ;};func _gfd (_effdf _cbd .Gradient ,_cde *_fb .PdfFunctionType2 ,_aab _fb .PdfColorspace ,_fdfe float64 ,_afdc bool )(_cbd .Gradient ,error ){switch _aab .(type ){case *_fb .PdfColorspaceDeviceRGB :if len (_cde .C0 )!=3||len (_cde .C1 )!=3{return nil ,_fd .New ("\u0069\u006e\u0063\u006f\u0072\u0072\u0065\u0063\u0074\u0020\u0052\u0047\u0042\u0020\u0063o\u006co\u0072\u0020\u0061\u0072\u0072\u0061\u0079\u0020\u006c\u0065\u006e\u0067\u0074\u0068");
};_dcaf :=_cde .C0 ;_bfce :=_cde .C1 ;if _afdc {_effdf .AddColorStop (0.0,_eb .RGBA {R :uint8 (_dcaf [0]*255),G :uint8 (_dcaf [1]*255),B :uint8 (_dcaf [2]*255),A :255});};_effdf .AddColorStop (_fdfe ,_eb .RGBA {R :uint8 (_bfce [0]*255),G :uint8 (_bfce [1]*255),B :uint8 (_bfce [2]*255),A :255});
case *_fb .PdfColorspaceDeviceCMYK :if len (_cde .C0 )!=4||len (_cde .C1 )!=4{return nil ,_fd .New ("\u0069\u006e\u0063\u006f\u0072\u0072e\u0063\u0074\u0020\u0043\u004d\u0059\u004b\u0020\u0063\u006f\u006c\u006f\u0072 \u0061\u0072\u0072\u0061\u0079\u0020\u006ce\u006e\u0067\u0074\u0068");
};_ebf :=_cde .C0 ;_geg :=_cde .C1 ;if _afdc {_effdf .AddColorStop (0.0,_eb .CMYK {C :uint8 (_ebf [0]*255),M :uint8 (_ebf [1]*255),Y :uint8 (_ebf [2]*255),K :uint8 (_ebf [3]*255)});};_effdf .AddColorStop (_fdfe ,_eb .CMYK {C :uint8 (_geg [0]*255),M :uint8 (_geg [1]*255),Y :uint8 (_geg [2]*255),K :uint8 (_geg [3]*255)});
default:return nil ,_ca .Errorf ("u\u006e\u0073\u0075\u0070\u0070\u006fr\u0074\u0065\u0064\u0020\u0063\u006f\u006c\u006f\u0072 \u0073\u0070\u0061c\u0065:\u0020\u0025\u0073",_aab .String ());};return _effdf ,nil ;};
// NewImageDevice returns a new image device.
func NewImageDevice ()*ImageDevice {const _ee ="r\u0065\u006e\u0064\u0065r.\u004ee\u0077\u0049\u006d\u0061\u0067e\u0044\u0065\u0076\u0069\u0063\u0065";_cb .TrackUse (_ee );return &ImageDevice {};};var (_egd =_fd .New ("\u0074\u0079p\u0065\u0020\u0063h\u0065\u0063\u006b\u0020\u0065\u0072\u0072\u006f\u0072");
_gg =_fd .New ("\u0072\u0061\u006e\u0067\u0065\u0020\u0063\u0068\u0065\u0063\u006b\u0020e\u0072\u0072\u006f\u0072"););const (ShadingTypeFunctionBased PdfShadingType =1;ShadingTypeAxial PdfShadingType =2;ShadingTypeRadial PdfShadingType =3;ShadingTypeFreeForm PdfShadingType =4;
ShadingTypeLatticeForm PdfShadingType =5;ShadingTypeCoons PdfShadingType =6;ShadingTypeTensorProduct PdfShadingType =7;);
// ImageDevice is used to render PDF pages to image targets.
type ImageDevice struct{renderer ;
// OutputWidth represents the width of the rendered images in pixels.
// The heights of the output images are calculated based on the selected
// width and the original height of each rendered page.
OutputWidth int ;};
// PdfShadingType defines PDF shading types.
// Source: PDF32000_2008.pdf. Chapter 8.7.4.5
type PdfShadingType int64 ;func (_fddd renderer )renderPage (_fdf _cbd .Context ,_af *_fb .PdfPage ,_ff _cc .Matrix )error {_bcg ,_cf :=_af .GetAllContentStreams ();if _cf !=nil {return _cf ;};if _ec :=_ff ;!_ec .Identity (){_bcg =_ca .Sprintf ("%\u002e\u0032\u0066\u0020\u0025\u002e2\u0066\u0020\u0025\u002e\u0032\u0066 \u0025\u002e\u0032\u0066\u0020\u0025\u002e2\u0066\u0020\u0025\u002e\u0032\u0066\u0020\u0063\u006d\u0020%\u0073",_ec [0],_ec [1],_ec [3],_ec [4],_ec [6],_ec [7],_bcg );
};_fdf .Translate (0,float64 (_fdf .Height ()));_fdf .Scale (1,-1);_fdf .Push ();_fdf .SetRGBA (1,1,1,1);_fdf .DrawRectangle (0,0,float64 (_fdf .Width ()),float64 (_fdf .Height ()));_fdf .Fill ();_fdf .Pop ();_fdf .SetLineWidth (1.0);_fdf .SetRGBA (0,0,0,1);
return _fddd .renderContentStream (_fdf ,_bcg ,_af .Resources );};func (_febc renderer )processShading (_deab _cbd .Context ,_cbce *_fb .PdfShading )(_cbd .Gradient ,*_dd .PdfObjectArray ,error ){_cbfd :=int64 (*_cbce .ShadingType );if _cbfd ==int64 (ShadingTypeAxial ){return _febc .processLinearShading (_deab ,_cbce );
}else if _cbfd ==int64 (ShadingTypeRadial ){return _febc .processRadialShading (_deab ,_cbce );}else {_b .Log .Debug (_ca .Sprintf ("\u0050r\u006f\u0063e\u0073\u0073\u0069n\u0067\u0020\u0067\u0072\u0061\u0064\u0069e\u006e\u0074\u0020\u0074\u0079\u0070e\u0020\u0025\u0064\u0020\u006e\u006f\u0074\u0020\u0079\u0065\u0074 \u0073\u0075\u0070\u0070\u006f\u0072\u0074\u0065\u0064",_cbfd ));
};return nil ,nil ,nil ;};func (_cgb renderer )processGradient (_febf _cbd .Context ,_bbcg *_fe .ContentStreamOperation ,_effd *_fb .PdfPageResources ,_ada *_dd .PdfObjectName )(_cbd .Gradient ,error ){if _bcf ,_gfca :=_effd .GetPatternByName (*_ada );
_gfca &&_bcf .IsShading (){_gdb :=_bcf .GetAsShadingPattern ().Shading ;_eca ,_ ,_cbc :=_cgb .processShading (_febf ,_gdb );if _cbc !=nil {return nil ,_cbc ;};return _eca ,nil ;};return nil ,nil ;};func _cadg (_dgd *_fb .Image ,_ggf _eb .Color )_c .Image {_beb ,_eda :=int (_dgd .Width ),int (_dgd .Height );
_bacc :=_c .NewRGBA (_c .Rect (0,0,_beb ,_eda ));for _fbbg :=0;_fbbg < _eda ;_fbbg ++{for _bfa :=0;_bfa < _beb ;_bfa ++{_cfafg ,_agf :=_dgd .ColorAt (_bfa ,_fbbg );if _agf !=nil {_b .Log .Debug ("\u0057\u0041\u0052\u004e\u003a\u0020\u0063o\u0075\u006c\u0064\u0020\u006e\u006f\u0074\u0020\u0072\u0065\u0074\u0072\u0069\u0065v\u0065 \u0069\u006d\u0061\u0067\u0065\u0020m\u0061\u0073\u006b\u0020\u0076\u0061\u006cu\u0065\u0020\u0061\u0074\u0020\u0028\u0025\u0064\u002c\u0020\u0025\u0064\u0029\u002e\u0020\u004f\u0075\u0074\u0070\u0075\u0074\u0020\u006da\u0079\u0020\u0062\u0065\u0020\u0069\u006e\u0063\u006f\u0072\u0072\u0065\u0063t\u002e",_bfa ,_fbbg );
continue ;};_afg ,_baa ,_cegf ,_ :=_cfafg .RGBA ();var _egg _eb .Color ;if _afg +_baa +_cegf ==0{_egg =_ggf ;}else {_egg =_eb .Transparent ;};_bacc .Set (_bfa ,_fbbg ,_egg );};};return _bacc ;};
// Render converts the specified PDF page into an image and returns the result.
func (_ad *ImageDevice )Render (page *_fb .PdfPage )(_c .Image ,error ){_eg ,_fea :=page .GetMediaBox ();if _fea !=nil {return nil ,_fea ;};_eg .Normalize ();_gb :=page .CropBox ;var _aa ,_dc float64 ;if _gb !=nil {_gb .Normalize ();_aa ,_dc =_gb .Width (),_gb .Height ();
};_beg :=page .Rotate ;_gac ,_gf ,_bc ,_ef :=_eg .Llx ,_eg .Lly ,_eg .Width (),_eg .Height ();_ccf :=_cc .IdentityMatrix ();if _beg !=nil &&*_beg %360!=0&&*_beg %90==0{_deg :=-float64 (*_beg );_dba :=_dee (_bc ,_ef ,_deg );_ccf =_ccf .Translate ((_dba .Width -_bc )/2+_bc /2,(_dba .Height -_ef )/2+_ef /2).Rotate (_deg *_a .Pi /180).Translate (-_bc /2,-_ef /2);
_bc ,_ef =_dba .Width ,_dba .Height ;if _gb !=nil {_caf :=_dee (_aa ,_dc ,_deg );_aa ,_dc =_caf .Width ,_caf .Height ;};};if _gac !=0||_gf !=0{_ccf =_ccf .Translate (-_gac ,-_gf );};_ad ._dad =1.0;if _ad .OutputWidth !=0{_da :=_bc ;if _gb !=nil {_da =_aa ;
};_ad ._dad =float64 (_ad .OutputWidth )/_da ;_bc ,_ef ,_aa ,_dc =_bc *_ad ._dad ,_ef *_ad ._dad ,_aa *_ad ._dad ,_dc *_ad ._dad ;_ccf =_cc .ScaleMatrix (_ad ._dad ,_ad ._dad ).Mult (_ccf );};_cgd :=_be .NewContext (int (_bc ),int (_ef ));if _bef :=_ad .renderPage (_cgd ,page ,_ccf );
_bef !=nil {return nil ,_bef ;};_bf :=_cgd .Image ();if _gb !=nil {_ac ,_fg :=(_gb .Llx -_gac )*_ad ._dad ,(_gb .Lly -_gf )*_ad ._dad ;_eff :=_c .Rect (0,0,int (_aa ),int (_dc ));_gc :=_c .Pt (int (_ac ),int (_ef -_fg -_dc ));_feg :=_c .NewRGBA (_eff );
_de .Draw (_feg ,_eff ,_bf ,_gc ,_de .Src );_bf =_feg ;};return _bf ,nil ;};