mirror of
https://github.com/unidoc/unipdf.git
synced 2025-04-26 13:48:55 +08:00
197 lines
52 KiB
Go
197 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 (_g "errors";_ge "fmt";_bc "github.com/adrg/sysfont";_da "github.com/unidoc/unipdf/v3/common";_b "github.com/unidoc/unipdf/v3/contentstream";_afd "github.com/unidoc/unipdf/v3/contentstream/draw";_df "github.com/unidoc/unipdf/v3/core";
|
|
_cf "github.com/unidoc/unipdf/v3/internal/license";_ec "github.com/unidoc/unipdf/v3/internal/transform";_ag "github.com/unidoc/unipdf/v3/model";_gda "github.com/unidoc/unipdf/v3/render/internal/context";_ce "github.com/unidoc/unipdf/v3/render/internal/context/imagerender";
|
|
_ff "golang.org/x/image/draw";_d "image";_af "image/color";_ea "image/draw";_gd "image/jpeg";_fa "image/png";_a "math";_c "os";_gb "path/filepath";_e "strings";);func _edde (_dacgb _df .PdfObject ,_fdab _af .Color )(_d .Image ,error ){_cae ,_bcf :=_df .GetStream (_dacgb );
|
|
if !_bcf {return nil ,nil ;};_gfbc ,_bfcb :=_ag .NewXObjectImageFromStream (_cae );if _bfcb !=nil {return nil ,_bfcb ;};_ffgb ,_bfcb :=_gfbc .ToImage ();if _bfcb !=nil {return nil ,_bfcb ;};return _eadf (_ffgb ,_fdab ),nil ;};func _eadf (_ggee *_ag .Image ,_cef _af .Color )_d .Image {_gca ,_daff :=int (_ggee .Width ),int (_ggee .Height );
|
|
_ggfb :=_d .NewRGBA (_d .Rect (0,0,_gca ,_daff ));for _fbf :=0;_fbf < _daff ;_fbf ++{for _egea :=0;_egea < _gca ;_egea ++{_bde ,_eae :=_ggee .ColorAt (_egea ,_fbf );if _eae !=nil {_da .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",_egea ,_fbf );
|
|
continue ;};_cefg ,_baeab ,_gaff ,_ :=_bde .RGBA ();var _eaca _af .Color ;if _cefg +_baeab +_gaff ==0{_eaca =_cef ;}else {_eaca =_af .Transparent ;};_ggfb .Set (_egea ,_fbf ,_eaca );};};return _ggfb ;};func (_gfe renderer )processRadialShading (_deab _gda .Context ,_eba *_ag .PdfShading )(_gda .Gradient ,*_df .PdfObjectArray ,error ){_fbba :=_eba .GetContext ().(*_ag .PdfShadingType3 );
|
|
if len (_fbba .Function )==0{return nil ,nil ,_g .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");
|
|
};_ebab ,_ecbg :=_fbba .Coords .ToFloat64Array ();if _ecbg !=nil {return nil ,nil ,_g .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");
|
|
};_dfcc :=_eba .ColorSpace ;_gab :=_df .MakeArrayFromFloats ([]float64 {0,0,1,1});var _cgcd ,_fgd ,_abb ,_febb ,_acc ,_gfea float64 ;_cgcd ,_fgd =_deab .Matrix ().Transform (_ebab [0],_ebab [1]);_abb ,_febb =_deab .Matrix ().Transform (_ebab [3],_ebab [4]);
|
|
_acc ,_ =_deab .Matrix ().Transform (_ebab [2],0);_gfea ,_ =_deab .Matrix ().Transform (_ebab [5],0);_aeg ,_ :=_deab .Matrix ().Translation ();_acc -=_aeg ;_gfea -=_aeg ;for _befc ,_deae :=range _ebab {if _befc ==2||_befc ==5{continue ;};if _deae > 1.0{_ega :=_a .Min (_cgcd -_acc ,_abb -_gfea );
|
|
_fcea :=_a .Min (_fgd -_acc ,_febb -_gfea );_aed :=_a .Max (_cgcd +_acc ,_abb +_gfea );_deg :=_a .Max (_fgd +_acc ,_febb +_gfea );_dacg :=_aed -_ega ;_ecgb :=_fcea -_deg ;_gab =_df .MakeArrayFromFloats ([]float64 {_ega ,_fcea ,_dacg ,_ecgb });break ;};
|
|
};_ccb :=_ce .NewRadialGradient (_cgcd ,_fgd ,_acc ,_abb ,_febb ,_gfea );if _dde ,_edgaf :=_fbba .Function [0].(*_ag .PdfFunctionType2 );_edgaf {_ccb ,_ecbg =_dbf (_ccb ,_dde ,_dfcc ,1.0,true );}else if _accd ,_ddad :=_fbba .Function [0].(*_ag .PdfFunctionType3 );
|
|
_ddad {_fba :=append ([]float64 {0},_accd .Bounds ...);_fba =append (_fba ,1.0);_ccb ,_ecbg =_eeg (_ccb ,_accd ,_dfcc ,_fba );};if _ecbg !=nil {return nil ,nil ,_ecbg ;};return _ccb ,_gab ,nil ;};func (_ecg renderer )renderContentStream (_afe _gda .Context ,_bcb string ,_ee *_ag .PdfPageResources )error {_cb ,_baee :=_b .NewContentStreamParser (_bcb ).Parse ();
|
|
if _baee !=nil {return _baee ;};_cfc :=_afe .TextState ();_cfc .GlobalScale =_ecg ._affe ;_cbc :=map[string ]*_gda .TextFont {};_fd :=_bc .NewFinder (&_bc .FinderOpts {Extensions :[]string {"\u002e\u0074\u0074\u0066","\u002e\u0074\u0074\u0063"}});var _dbc *_b .ContentStreamOperation ;
|
|
_aa :=_b .NewContentStreamProcessor (*_cb );_aa .AddHandler (_b .HandlerConditionEnumAllOperands ,"",func (_gfb *_b .ContentStreamOperation ,_gg _b .GraphicsState ,_ffa *_ag .PdfPageResources )error {_da .Log .Debug ("\u0050\u0072\u006f\u0063\u0065\u0073\u0073\u0069\u006e\u0067\u0020\u0025\u0073",_gfb .Operand );
|
|
switch _gfb .Operand {case "\u0071":_afe .Push ();case "\u0051":_afe .Pop ();_cfc =_afe .TextState ();case "\u0063\u006d":if len (_gfb .Params )!=6{return _gce ;};_ffb ,_de :=_df .GetNumbersAsFloat (_gfb .Params );if _de !=nil {return _de ;};_dbg :=_ec .NewMatrix (_ffb [0],_ffb [1],_ffb [2],_ffb [3],_ffb [4],_ffb [5]);
|
|
_da .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",_dbg );_afe .SetMatrix (_afe .Matrix ().Mult (_dbg ));case "\u0077":if len (_gfb .Params )!=1{return _gce ;
|
|
};_ded ,_baa :=_df .GetNumbersAsFloat (_gfb .Params );if _baa !=nil {return _baa ;};_afe .SetLineWidth (_ded [0]);case "\u004a":if len (_gfb .Params )!=1{return _gce ;};_ffc ,_fc :=_df .GetIntVal (_gfb .Params [0]);if !_fc {return _ccd ;};switch _ffc {case 0:_afe .SetLineCap (_gda .LineCapButt );
|
|
case 1:_afe .SetLineCap (_gda .LineCapRound );case 2:_afe .SetLineCap (_gda .LineCapSquare );default:_da .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",_ffc );
|
|
return _gce ;};case "\u006a":if len (_gfb .Params )!=1{return _gce ;};_ggd ,_afg :=_df .GetIntVal (_gfb .Params [0]);if !_afg {return _ccd ;};switch _ggd {case 0:_afe .SetLineJoin (_gda .LineJoinBevel );case 1:_afe .SetLineJoin (_gda .LineJoinRound );case 2:_afe .SetLineJoin (_gda .LineJoinBevel );
|
|
default:_da .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",_ggd );return _gce ;};case "\u004d":if len (_gfb .Params )!=1{return _gce ;};_gfd ,_deda :=_df .GetNumbersAsFloat (_gfb .Params );
|
|
if _deda !=nil {return _deda ;};_ =_gfd ;_da .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 (_gfb .Params )!=2{return _gce ;};_gba ,_ef :=_df .GetArray (_gfb .Params [0]);
|
|
if !_ef {return _ccd ;};_fde ,_ef :=_df .GetIntVal (_gfb .Params [1]);if !_ef {_ ,_ffg :=_df .GetFloatVal (_gfb .Params [1]);if !_ffg {return _ccd ;};};_ed ,_ab :=_df .GetNumbersAsFloat (_gba .Elements ());if _ab !=nil {return _ab ;};_afe .SetDash (_ed ...);
|
|
_ =_fde ;_da .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":_da .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":_da .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 (_gfb .Params )!=1{return _gce ;
|
|
};_fdc ,_gfc :=_df .GetName (_gfb .Params [0]);if !_gfc {return _ccd ;};if _fdc ==nil {return _gce ;};_dea ,_gfc :=_ffa .GetExtGState (*_fdc );if !_gfc {_da .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",*_fdc );
|
|
return _g .New ("\u0072e\u0073o\u0075\u0072\u0063\u0065\u0020n\u006f\u0074 \u0066\u006f\u0075\u006e\u0064");};_dcd ,_gfc :=_df .GetDict (_dea );if !_gfc {_da .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 _ccd ;};_da .Log .Debug ("G\u0053\u0020\u0064\u0069\u0063\u0074\u003a\u0020\u0025\u0073",_dcd .String ());case "\u006d":if len (_gfb .Params )!=2{_da .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",_gce );
|
|
return nil ;};_eaf ,_eceg :=_df .GetNumbersAsFloat (_gfb .Params );if _eceg !=nil {return _eceg ;};_da .Log .Debug ("M\u006f\u0076\u0065\u0020\u0074\u006f\u003a\u0020\u0025\u0076",_eaf );_afe .NewSubPath ();_afe .MoveTo (_eaf [0],_eaf [1]);case "\u006c":if len (_gfb .Params )!=2{_da .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",_gce );
|
|
return nil ;};_fag ,_fe :=_df .GetNumbersAsFloat (_gfb .Params );if _fe !=nil {return _fe ;};_afe .LineTo (_fag [0],_fag [1]);case "\u0063":if len (_gfb .Params )!=6{return _gce ;};_ffcc ,_bgg :=_df .GetNumbersAsFloat (_gfb .Params );if _bgg !=nil {return _bgg ;
|
|
};_da .Log .Debug ("\u0043u\u0062\u0069\u0063\u0020\u0062\u0065\u007a\u0069\u0065\u0072\u0020p\u0061\u0072\u0061\u006d\u0073\u003a\u0020\u0025\u002b\u0076",_ffcc );_afe .CubicTo (_ffcc [0],_ffcc [1],_ffcc [2],_ffcc [3],_ffcc [4],_ffcc [5]);case "\u0076","\u0079":if len (_gfb .Params )!=4{return _gce ;
|
|
};_edg ,_dcc :=_df .GetNumbersAsFloat (_gfb .Params );if _dcc !=nil {return _dcc ;};_da .Log .Debug ("\u0043u\u0062\u0069\u0063\u0020\u0062\u0065\u007a\u0069\u0065\u0072\u0020p\u0061\u0072\u0061\u006d\u0073\u003a\u0020\u0025\u002b\u0076",_edg );_afe .QuadraticTo (_edg [0],_edg [1],_edg [2],_edg [3]);
|
|
case "\u0068":_afe .ClosePath ();_afe .NewSubPath ();case "\u0072\u0065":if len (_gfb .Params )!=4{return _gce ;};_gbd ,_bcc :=_df .GetNumbersAsFloat (_gfb .Params );if _bcc !=nil {return _bcc ;};_afe .DrawRectangle (_gbd [0],_gbd [1],_gbd [2],_gbd [3]);
|
|
_afe .NewSubPath ();case "\u0053":_eac ,_daf :=_gg .ColorspaceStroking .ColorToRGB (_gg .ColorStroking );if _daf !=nil {_da .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",_daf );
|
|
return _daf ;};_eed ,_ddd :=_eac .(*_ag .PdfColorDeviceRGB );if !_ddd {_da .Log .Debug ("\u0045\u0072\u0072\u006fr \u0063\u006f\u006e\u0076\u0065\u0072\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006co\u0072");return _daf ;};_afe .SetRGBA (_eed .R (),_eed .G (),_eed .B (),1);
|
|
_afe .Stroke ();case "\u0073":_dcf ,_ffad :=_gg .ColorspaceStroking .ColorToRGB (_gg .ColorStroking );if _ffad !=nil {_da .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",_ffad );
|
|
return _ffad ;};_ga ,_cgce :=_dcf .(*_ag .PdfColorDeviceRGB );if !_cgce {_da .Log .Debug ("\u0045\u0072\u0072\u006fr \u0063\u006f\u006e\u0076\u0065\u0072\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006co\u0072");return _ffad ;};_afe .ClosePath ();_afe .NewSubPath ();
|
|
_afe .SetRGBA (_ga .R (),_ga .G (),_ga .B (),1);_afe .Stroke ();case "\u0066","\u0046":_aab ,_dg :=_gg .ColorspaceNonStroking .ColorToRGB (_gg .ColorNonStroking );if _dg !=nil {_da .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 ;};switch _deb :=_aab .(type ){case *_ag .PdfColorDeviceRGB :_afe .SetRGBA (_deb .R (),_deb .G (),_deb .B (),1);_afe .SetFillRule (_gda .FillRuleWinding );_afe .Fill ();case *_ag .PdfColorPattern :_afe .Fill ();};_da .Log .Debug ("\u0045\u0072\u0072\u006fr \u0063\u006f\u006e\u0076\u0065\u0072\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006co\u0072");
|
|
case "\u0066\u002a":_feg ,_efd :=_gg .ColorspaceNonStroking .ColorToRGB (_gg .ColorNonStroking );if _efd !=nil {_da .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",_efd );
|
|
return _efd ;};_cgb ,_dddb :=_feg .(*_ag .PdfColorDeviceRGB );if !_dddb {_da .Log .Debug ("\u0045\u0072\u0072\u006fr \u0063\u006f\u006e\u0076\u0065\u0072\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006co\u0072");return _efd ;};_afe .SetRGBA (_cgb .R (),_cgb .G (),_cgb .B (),1);
|
|
_afe .SetFillRule (_gda .FillRuleEvenOdd );_afe .Fill ();case "\u0042":_cdc ,_fcf :=_gg .ColorspaceNonStroking .ColorToRGB (_gg .ColorNonStroking );if _fcf !=nil {_da .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",_fcf );
|
|
return _fcf ;};switch _dbb :=_cdc .(type ){case *_ag .PdfColorDeviceRGB :_afe .SetRGBA (_dbb .R (),_dbb .G (),_dbb .B (),1);_afe .SetFillRule (_gda .FillRuleWinding );_afe .FillPreserve ();_cdc ,_fcf =_gg .ColorspaceStroking .ColorToRGB (_gg .ColorStroking );
|
|
if _fcf !=nil {_da .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",_fcf );return _fcf ;};if _ad ,_ecc :=_cdc .(*_ag .PdfColorDeviceRGB );_ecc {_afe .SetRGBA (_ad .R (),_ad .G (),_ad .B (),1);
|
|
_afe .Stroke ();};case *_ag .PdfColorPattern :_afe .SetFillRule (_gda .FillRuleWinding );_afe .Fill ();_afe .StrokePattern ();};case "\u0042\u002a":_fdg ,_cfb :=_gg .ColorspaceNonStroking .ColorToRGB (_gg .ColorNonStroking );if _cfb !=nil {_da .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",_cfb );
|
|
return _cfb ;};switch _efc :=_fdg .(type ){case *_ag .PdfColorDeviceRGB :_afe .SetRGBA (_efc .R (),_efc .G (),_efc .B (),1);_afe .SetFillRule (_gda .FillRuleEvenOdd );_afe .FillPreserve ();_fdg ,_cfb =_gg .ColorspaceStroking .ColorToRGB (_gg .ColorStroking );
|
|
if _cfb !=nil {_da .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",_cfb );return _cfb ;};if _eca ,_afa :=_fdg .(*_ag .PdfColorDeviceRGB );
|
|
_afa {_afe .SetRGBA (_eca .R (),_eca .G (),_eca .B (),1);_afe .Stroke ();};case *_ag .PdfColorPattern :_afe .SetFillRule (_gda .FillRuleEvenOdd );_afe .Fill ();_afe .StrokePattern ();};case "\u0062":_afe .ClosePath ();_dbba ,_gcb :=_gg .ColorspaceNonStroking .ColorToRGB (_gg .ColorNonStroking );
|
|
if _gcb !=nil {_da .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",_gcb );return _gcb ;};switch _aef :=_dbba .(type ){case *_ag .PdfColorDeviceRGB :_afe .SetRGBA (_aef .R (),_aef .G (),_aef .B (),1);
|
|
_afe .NewSubPath ();_afe .SetFillRule (_gda .FillRuleWinding );_afe .FillPreserve ();_dbba ,_gcb =_gg .ColorspaceStroking .ColorToRGB (_gg .ColorStroking );if _gcb !=nil {_da .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",_gcb );
|
|
return _gcb ;};if _agf ,_egb :=_dbba .(*_ag .PdfColorDeviceRGB );_egb {_afe .SetRGBA (_agf .R (),_agf .G (),_agf .B (),1);_afe .Stroke ();};case *_ag .PdfColorPattern :_afe .NewSubPath ();_afe .SetFillRule (_gda .FillRuleWinding );_afe .Fill ();_afe .StrokePattern ();
|
|
};case "\u0062\u002a":_afe .ClosePath ();_gdc ,_gee :=_gg .ColorspaceNonStroking .ColorToRGB (_gg .ColorNonStroking );if _gee !=nil {_da .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",_gee );
|
|
return _gee ;};switch _cga :=_gdc .(type ){case *_ag .PdfColorDeviceRGB :_afe .SetRGBA (_cga .R (),_cga .G (),_cga .B (),1);_afe .NewSubPath ();_afe .SetFillRule (_gda .FillRuleEvenOdd );_afe .FillPreserve ();_gdc ,_gee =_gg .ColorspaceStroking .ColorToRGB (_gg .ColorStroking );
|
|
if _gee !=nil {_da .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",_gee );return _gee ;};if _bdd ,_dee :=_gdc .(*_ag .PdfColorDeviceRGB );
|
|
_dee {_afe .SetRGBA (_bdd .R (),_bdd .G (),_bdd .B (),1);_afe .Stroke ();};case *_ag .PdfColorPattern :_afe .NewSubPath ();_afe .SetFillRule (_gda .FillRuleEvenOdd );_afe .Fill ();_afe .StrokePattern ();};case "\u006e":_afe .ClearPath ();case "\u0057":_afe .SetFillRule (_gda .FillRuleWinding );
|
|
_afe .ClipPreserve ();case "\u0057\u002a":_afe .SetFillRule (_gda .FillRuleEvenOdd );_afe .ClipPreserve ();case "\u0072\u0067":_cdg ,_cfg :=_gg .ColorNonStroking .(*_ag .PdfColorDeviceRGB );if !_cfg {_da .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",_gg .ColorNonStroking );
|
|
return nil ;};_afe .SetFillRGBA (_cdg .R (),_cdg .G (),_cdg .B (),1);case "\u0052\u0047":_cee ,_daa :=_gg .ColorStroking .(*_ag .PdfColorDeviceRGB );if !_daa {_da .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",_gg .ColorStroking );
|
|
return nil ;};_afe .SetStrokeRGBA (_cee .R (),_cee .G (),_cee .B (),1);case "\u006b":_dcb ,_afdc :=_gg .ColorNonStroking .(*_ag .PdfColorDeviceCMYK );if !_afdc {_da .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",_gg .ColorNonStroking );
|
|
return nil ;};_agc ,_gcc :=_gg .ColorspaceNonStroking .ColorToRGB (_dcb );if _gcc !=nil {_da .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",_gg .ColorNonStroking );
|
|
return nil ;};_gac ,_afdc :=_agc .(*_ag .PdfColorDeviceRGB );if !_afdc {_da .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",_agc );return nil ;
|
|
};_afe .SetFillRGBA (_gac .R (),_gac .G (),_gac .B (),1);case "\u004b":_dafg ,_bcce :=_gg .ColorStroking .(*_ag .PdfColorDeviceCMYK );if !_bcce {_da .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",_gg .ColorStroking );
|
|
return nil ;};_bcg ,_fgc :=_gg .ColorspaceStroking .ColorToRGB (_dafg );if _fgc !=nil {_da .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",_gg .ColorStroking );
|
|
return nil ;};_bbg ,_bcce :=_bcg .(*_ag .PdfColorDeviceRGB );if !_bcce {_da .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",_bcg );return nil ;
|
|
};_afe .SetStrokeRGBA (_bbg .R (),_bbg .G (),_bbg .B (),1);case "\u0067":_egd ,_ca :=_gg .ColorNonStroking .(*_ag .PdfColorDeviceGray );if !_ca {_da .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",_gg .ColorNonStroking );
|
|
return nil ;};_def ,_bgc :=_gg .ColorspaceNonStroking .ColorToRGB (_egd );if _bgc !=nil {_da .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",_gg .ColorNonStroking );
|
|
return nil ;};_aec ,_ca :=_def .(*_ag .PdfColorDeviceRGB );if !_ca {_da .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",_def );return nil ;
|
|
};_afe .SetFillRGBA (_aec .R (),_aec .G (),_aec .B (),1);case "\u0047":_afec ,_aeb :=_gg .ColorStroking .(*_ag .PdfColorDeviceGray );if !_aeb {_da .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",_gg .ColorStroking );
|
|
return nil ;};_bfd ,_acb :=_gg .ColorspaceStroking .ColorToRGB (_afec );if _acb !=nil {_da .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",_gg .ColorStroking );
|
|
return nil ;};_dac ,_aeb :=_bfd .(*_ag .PdfColorDeviceRGB );if !_aeb {_da .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 nil ;
|
|
};_afe .SetStrokeRGBA (_dac .R (),_dac .G (),_dac .B (),1);case "\u0063\u0073":if len (_gfb .Params )> 0{if _cfd ,_ddff :=_df .GetName (_gfb .Params [0]);_ddff &&_cfd .String ()=="\u0050a\u0074\u0074\u0065\u0072\u006e"{break ;};};_bdf ,_dfcb :=_gg .ColorspaceNonStroking .ColorToRGB (_gg .ColorNonStroking );
|
|
if _dfcb !=nil {_da .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",_gg .ColorNonStroking );return nil ;};_gcg ,_fcc :=_bdf .(*_ag .PdfColorDeviceRGB );
|
|
if !_fcc {_da .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",_bdf );return nil ;};_afe .SetFillRGBA (_gcg .R (),_gcg .G (),_gcg .B (),1);
|
|
case "\u0073\u0063":_bfdg ,_fab :=_gg .ColorspaceNonStroking .ColorToRGB (_gg .ColorNonStroking );if _fab !=nil {_da .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",_gg .ColorNonStroking );
|
|
return nil ;};_baea ,_dfd :=_bfdg .(*_ag .PdfColorDeviceRGB );if !_dfd {_da .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",_bfdg );return nil ;
|
|
};_afe .SetFillRGBA (_baea .R (),_baea .G (),_baea .B (),1);case "\u0073\u0063\u006e":if len (_gfb .Params )> 0&&len (_dbc .Params )> 0{if _fad ,_gfda :=_df .GetName (_dbc .Params [0]);_gfda &&_fad .String ()=="\u0050a\u0074\u0074\u0065\u0072\u006e"{if _ddda ,_fcfe :=_df .GetName (_gfb .Params [0]);
|
|
_fcfe {_eedd ,_ceg :=_ecg .processGradient (_afe ,_gfb ,_ffa ,_ddda );if _ceg !=nil {_da .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",_ceg );
|
|
break ;};if _eedd ==nil {_da .Log .Debug ("\u0055\u006ek\u006e\u006f\u0077n\u0020\u0067\u0072\u0061\u0064\u0069\u0065\u006e\u0074");break ;};_afe .SetFillStyle (_eedd );_afe .SetStrokeStyle (_eedd );break ;};};};_fec ,_eaa :=_gg .ColorspaceNonStroking .ColorToRGB (_gg .ColorNonStroking );
|
|
if _eaa !=nil {_da .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",_gg .ColorNonStroking );return nil ;};_cbcf ,_cgg :=_fec .(*_ag .PdfColorDeviceRGB );
|
|
if !_cgg {_da .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 ;};_afe .SetFillRGBA (_cbcf .R (),_cbcf .G (),_cbcf .B (),1);
|
|
case "\u0043\u0053":if len (_gfb .Params )> 0{if _agb ,_dcg :=_df .GetName (_gfb .Params [0]);_dcg &&_agb .String ()=="\u0050a\u0074\u0074\u0065\u0072\u006e"{break ;};};_dfg ,_gcf :=_gg .ColorspaceStroking .ColorToRGB (_gg .ColorStroking );if _gcf !=nil {_da .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",_gg .ColorStroking );
|
|
return nil ;};_bfc ,_bbc :=_dfg .(*_ag .PdfColorDeviceRGB );if !_bbc {_da .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",_dfg );return nil ;
|
|
};_afe .SetStrokeRGBA (_bfc .R (),_bfc .G (),_bfc .B (),1);case "\u0053\u0043":_gdd ,_aaa :=_gg .ColorspaceStroking .ColorToRGB (_gg .ColorStroking );if _aaa !=nil {_da .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",_gg .ColorStroking );
|
|
return nil ;};_fga ,_fdeg :=_gdd .(*_ag .PdfColorDeviceRGB );if !_fdeg {_da .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 ;
|
|
};_afe .SetStrokeRGBA (_fga .R (),_fga .G (),_fga .B (),1);case "\u0053\u0043\u004e":if len (_gfb .Params )> 0&&len (_dbc .Params )> 0{if _dgc ,_afb :=_df .GetName (_dbc .Params [0]);_afb &&_dgc .String ()=="\u0050a\u0074\u0074\u0065\u0072\u006e"{if _eb ,_ddg :=_df .GetName (_gfb .Params [0]);
|
|
_ddg {_edb ,_cfcd :=_ecg .processGradient (_afe ,_gfb ,_ffa ,_eb );if _cfcd !=nil {_da .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",_cfcd );
|
|
break ;};if _edb ==nil {_da .Log .Debug ("\u0055\u006ek\u006e\u006f\u0077n\u0020\u0067\u0072\u0061\u0064\u0069\u0065\u006e\u0074");break ;};_afe .SetFillStyle (_edb );_afe .SetStrokeStyle (_edb );break ;};};};_bga ,_fdgf :=_gg .ColorspaceStroking .ColorToRGB (_gg .ColorStroking );
|
|
if _fdgf !=nil {_da .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",_gg .ColorStroking );return nil ;};_edga ,_feb :=_bga .(*_ag .PdfColorDeviceRGB );
|
|
if !_feb {_da .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 nil ;};_afe .SetStrokeRGBA (_edga .R (),_edga .G (),_edga .B (),1);
|
|
case "\u0073\u0068":if len (_gfb .Params )!=1{_da .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 ;};_bge ,_fae :=_df .GetName (_gfb .Params [0]);
|
|
if !_fae {_da .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 ;};_gbdf ,_fae :=_ffa .GetShadingByName (*_bge );if !_fae {_da .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 ;};_ecb ,_aaf ,_bca :=_ecg .processShading (_afe ,_gbdf );if _bca !=nil {_da .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",_bca );
|
|
break ;};if _ecb ==nil {_da .Log .Debug ("\u0055\u006ek\u006e\u006f\u0077n\u0020\u0067\u0072\u0061\u0064\u0069\u0065\u006e\u0074");break ;};_eccg ,_bca :=_aaf .ToFloat64Array ();if _bca !=nil {_da .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",_bca );
|
|
break ;};_afe .DrawRectangle (_eccg [0],_eccg [1],_eccg [2],_eccg [3]);_afe .NewSubPath ();_afe .SetFillStyle (_ecb );_afe .SetStrokeStyle (_ecb );_afe .Fill ();case "\u0044\u006f":if len (_gfb .Params )!=1{return _gce ;};_bag ,_afag :=_df .GetName (_gfb .Params [0]);
|
|
if !_afag {return _ccd ;};_ ,_cce :=_ffa .GetXObjectByName (*_bag );switch _cce {case _ag .XObjectTypeImage :_da .Log .Debug ("\u0058\u004f\u0062\u006a\u0065\u0063\u0074\u0020\u0069\u006d\u0061\u0067e\u003a\u0020\u0025\u0073",_bag .String ());_ebf ,_dba :=_ffa .GetXObjectImageByName (*_bag );
|
|
if _dba !=nil {return _dba ;};_ecf ,_dba :=_ebf .ToImage ();if _dba !=nil {return _dba ;};if _bgaa :=_ebf .ColorSpace ;_bgaa !=nil {var _cff bool ;switch _bgaa .(type ){case *_ag .PdfColorspaceSpecialIndexed :_cff =true ;};if _cff {if _gbe ,_cad :=_bgaa .ImageToRGB (*_ecf );
|
|
_cad !=nil {_da .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 {_ecf =&_gbe ;};};};_dag :=_afe .FillPattern ().ColorAt (0,0);var _deeb _d .Image ;if _ebf .Mask !=nil {if _deeb ,_dba =_edde (_ebf .Mask ,_dag );_dba !=nil {_da .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 _ebf .SMask !=nil {if _deeb ,_dba =_ebfa (_ebf .SMask ,_dag );_dba !=nil {_da .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 _afc _d .Image ;if _fecd ,_ :=_df .GetBoolVal (_ebf .ImageMask );_fecd {_afc =_eadf (_ecf ,_dag );}else {_afc ,_dba =_ecf .ToGoImage ();if _dba !=nil {return _dba ;};};if _deeb !=nil {_afc =_dbbb (_afc ,_deeb );};_dcfe :=_afc .Bounds ();_afe .Push ();
|
|
_afe .Scale (1.0/float64 (_dcfe .Dx ()),-1.0/float64 (_dcfe .Dy ()));_afe .DrawImageAnchored (_afc ,0,0,0,1);_afe .Pop ();case _ag .XObjectTypeForm :_da .Log .Debug ("\u0058\u004fb\u006a\u0065\u0063t\u0020\u0066\u006f\u0072\u006d\u003a\u0020\u0025\u0073",_bag .String ());
|
|
_fgf ,_dda :=_ffa .GetXObjectFormByName (*_bag );if _dda !=nil {return _dda ;};_egf ,_dda :=_fgf .GetContentStream ();if _dda !=nil {return _dda ;};_afdg :=_fgf .Resources ;if _afdg ==nil {_afdg =_ffa ;};_afe .Push ();if _fgf .Matrix !=nil {_bbb ,_fdb :=_df .GetArray (_fgf .Matrix );
|
|
if !_fdb {return _ccd ;};_bdb ,_gec :=_df .GetNumbersAsFloat (_bbb .Elements ());if _gec !=nil {return _gec ;};if len (_bdb )!=6{return _gce ;};_bcd :=_ec .NewMatrix (_bdb [0],_bdb [1],_bdb [2],_bdb [3],_bdb [4],_bdb [5]);_afe .SetMatrix (_afe .Matrix ().Mult (_bcd ));
|
|
};if _fgf .BBox !=nil {_fbd ,_baf :=_df .GetArray (_fgf .BBox );if !_baf {return _ccd ;};_fecc ,_gaa :=_df .GetNumbersAsFloat (_fbd .Elements ());if _gaa !=nil {return _gaa ;};if len (_fecc )!=4{_da .Log .Debug ("\u004c\u0065\u006e\u0020\u003d\u0020\u0025\u0064",len (_fecc ));
|
|
return _gce ;};_afe .DrawRectangle (_fecc [0],_fecc [1],_fecc [2]-_fecc [0],_fecc [3]-_fecc [1]);_afe .SetRGBA (1,0,0,1);_afe .Clip ();}else {_da .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");
|
|
};_dda =_ecg .renderContentStream (_afe ,string (_egf ),_afdg );if _dda !=nil {return _dda ;};_afe .Pop ();};case "\u0042\u0049":if len (_gfb .Params )!=1{return _gce ;};_dafb ,_fbb :=_gfb .Params [0].(*_b .ContentStreamInlineImage );if !_fbb {return nil ;
|
|
};_gdfg ,_eedg :=_dafb .ToImage (_ffa );if _eedg !=nil {return _eedg ;};_fda ,_eedg :=_gdfg .ToGoImage ();if _eedg !=nil {return _eedg ;};_gdg :=_fda .Bounds ();_afe .Push ();_afe .Scale (1.0/float64 (_gdg .Dx ()),-1.0/float64 (_gdg .Dy ()));_afe .DrawImageAnchored (_fda ,0,0,0,1);
|
|
_afe .Pop ();case "\u0042\u0054":_cfc .Reset ();case "\u0045\u0054":_cfc .Reset ();case "\u0054\u0072":if len (_gfb .Params )!=1{return _gce ;};_dfdg ,_edd :=_df .GetNumberAsFloat (_gfb .Params [0]);if _edd !=nil {return _edd ;};_cfc .Tr =_gda .TextRenderingMode (_dfdg );
|
|
case "\u0054\u004c":if len (_gfb .Params )!=1{return _gce ;};_bab ,_eaad :=_df .GetNumberAsFloat (_gfb .Params [0]);if _eaad !=nil {return _eaad ;};_cfc .Tl =_bab ;case "\u0054\u0063":if len (_gfb .Params )!=1{return _gce ;};_ebe ,_ggde :=_df .GetNumberAsFloat (_gfb .Params [0]);
|
|
if _ggde !=nil {return _ggde ;};_da .Log .Debug ("\u0054\u0063\u003a\u0020\u0025\u0076",_ebe );_cfc .Tc =_ebe ;case "\u0054\u0077":if len (_gfb .Params )!=1{return _gce ;};_bcbe ,_eddc :=_df .GetNumberAsFloat (_gfb .Params [0]);if _eddc !=nil {return _eddc ;
|
|
};_da .Log .Debug ("\u0054\u0077\u003a\u0020\u0025\u0076",_bcbe );_cfc .Tw =_bcbe ;case "\u0054\u007a":if len (_gfb .Params )!=1{return _gce ;};_ggf ,_debb :=_df .GetNumberAsFloat (_gfb .Params [0]);if _debb !=nil {return _debb ;};_cfc .Th =_ggf ;case "\u0054\u0073":if len (_gfb .Params )!=1{return _gce ;
|
|
};_dfac ,_cgd :=_df .GetNumberAsFloat (_gfb .Params [0]);if _cgd !=nil {return _cgd ;};_cfc .Ts =_dfac ;case "\u0054\u0064":if len (_gfb .Params )!=2{return _gce ;};_dae ,_cdf :=_df .GetNumbersAsFloat (_gfb .Params );if _cdf !=nil {return _cdf ;};_da .Log .Debug ("\u0054\u0064\u003a\u0020\u0025\u0076",_dae );
|
|
_cfc .ProcTd (_dae [0],_dae [1]);case "\u0054\u0044":if len (_gfb .Params )!=2{return _gce ;};_dccc ,_ccc :=_df .GetNumbersAsFloat (_gfb .Params );if _ccc !=nil {return _ccc ;};_da .Log .Debug ("\u0054\u0044\u003a\u0020\u0025\u0076",_dccc );_cfc .ProcTD (_dccc [0],_dccc [1]);
|
|
case "\u0054\u002a":_cfc .ProcTStar ();case "\u0054\u006d":if len (_gfb .Params )!=6{return _gce ;};_aba ,_gcff :=_df .GetNumbersAsFloat (_gfb .Params );if _gcff !=nil {return _gcff ;};_da .Log .Debug ("\u0054\u0065x\u0074\u0020\u006da\u0074\u0072\u0069\u0078\u003a\u0020\u0025\u002b\u0076",_aba );
|
|
_cfc .ProcTm (_aba [0],_aba [1],_aba [2],_aba [3],_aba [4],_aba [5]);case "\u0027":if len (_gfb .Params )!=1{return _gce ;};_fgac ,_aefg :=_df .GetStringBytes (_gfb .Params [0]);if !_aefg {return _ccd ;};_da .Log .Debug ("\u0027\u0020\u0073t\u0072\u0069\u006e\u0067\u003a\u0020\u0025\u0073",string (_fgac ));
|
|
_cfc .ProcQ (_fgac ,_afe );case "\u0022":if len (_gfb .Params )!=3{return _gce ;};_eec ,_fgfe :=_df .GetNumberAsFloat (_gfb .Params [0]);if _fgfe !=nil {return _fgfe ;};_dab ,_fgfe :=_df .GetNumberAsFloat (_gfb .Params [1]);if _fgfe !=nil {return _fgfe ;
|
|
};_dcff ,_abc :=_df .GetStringBytes (_gfb .Params [2]);if !_abc {return _ccd ;};_cfc .ProcDQ (_dcff ,_eec ,_dab ,_afe );case "\u0054\u006a":if len (_gfb .Params )!=1{return _gce ;};_cbb ,_gfce :=_df .GetStringBytes (_gfb .Params [0]);if !_gfce {return _ccd ;
|
|
};_da .Log .Debug ("\u0054j\u0020s\u0074\u0072\u0069\u006e\u0067\u003a\u0020\u0060\u0025\u0073\u0060",string (_cbb ));_cfc .ProcTj (_cbb ,_afe );case "\u0054\u004a":if len (_gfb .Params )!=1{return _gce ;};_eddd ,_gaf :=_df .GetArray (_gfb .Params [0]);
|
|
if !_gaf {_da .Log .Debug ("\u0054\u0079\u0070\u0065\u003a\u0020\u0025\u0054",_eddd );return _ccd ;};_da .Log .Debug ("\u0054\u004a\u0020\u0061\u0072\u0072\u0061\u0079\u003a\u0020\u0025\u002b\u0076",_eddd );for _ ,_add :=range _eddd .Elements (){switch _fge :=_add .(type ){case *_df .PdfObjectString :if _fge !=nil {_cfc .ProcTj (_fge .Bytes (),_afe );
|
|
};case *_df .PdfObjectFloat ,*_df .PdfObjectInteger :_gff ,_gge :=_df .GetNumberAsFloat (_fge );if _gge ==nil {_cfc .Translate (-_gff *0.001*_cfc .Tf .Size *_cfc .Th /100.0,0);};};};case "\u0054\u0066":if len (_gfb .Params )!=2{return _gce ;};_da .Log .Debug ("\u0025\u0023\u0076",_gfb .Params );
|
|
_ggb ,_bbgg :=_df .GetName (_gfb .Params [0]);if !_bbgg ||_ggb ==nil {_da .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",_gfb .Params [0]);
|
|
return _ccd ;};_da .Log .Debug ("\u0046\u006f\u006e\u0074\u0020\u006e\u0061\u006d\u0065\u003a\u0020\u0025\u0073",_ggb .String ());_bged ,_ebc :=_df .GetNumberAsFloat (_gfb .Params [1]);if _ebc !=nil {_da .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",_gfb .Params [1]);
|
|
return _ccd ;};_da .Log .Debug ("\u0046\u006f\u006e\u0074\u0020\u0073\u0069\u007a\u0065\u003a\u0020\u0025\u0076",_bged );_gad ,_ccce :=_ffa .GetFontByName (*_ggb );if !_ccce {_da .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a\u0020\u0046\u006f\u006e\u0074\u0020\u0025s\u0020\u006e\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064",_ggb .String ());
|
|
return _g .New ("\u0066\u006f\u006e\u0074\u0020\u006e\u006f\u0074\u0020f\u006f\u0075\u006e\u0064");};_da .Log .Debug ("\u0046\u006f\u006e\u0074\u003a\u0020\u0025\u0054",_gad );_ffdd ,_bbgg :=_df .GetDict (_gad );if !_bbgg {_da .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 _ccd ;};_fce ,_ebc :=_ag .NewPdfFontFromPdfObject (_ffdd );if _ebc !=nil {_da .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 _ebc ;};_cde :=_fce .BaseFont ();if _cde ==""{_cde =_ggb .String ();};_dfge ,_bbgg :=_cbc [_cde ];if !_bbgg {_dfge ,_ebc =_gda .NewTextFont (_fce ,_bged );if _ebc !=nil {_da .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a\u0020\u0025v",_ebc );};};
|
|
if _dfge ==nil {if len (_cde )> 7&&_cde [6]=='+'{_cde =_cde [7:];};_ffade :=[]string {_cde ,"\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 _ ,_ecef :=range _ffade {_da .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",_ecef );if _dfge ,_bbgg =_cbc [_ecef ];
|
|
_bbgg {break ;};_ggcc :=_fd .Match (_ecef );if _ggcc ==nil {_da .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",_ecef );continue ;};_dfge ,_ebc =_gda .NewTextFontFromPath (_ggcc .Filename ,_bged );
|
|
if _ebc !=nil {_da .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",_ggcc .Filename );continue ;};_da .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",_cde ,_ggcc .Name ,_ggcc .Filename );
|
|
_cbc [_ecef ]=_dfge ;break ;};};if _dfge ==nil {_da .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 _g .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");};_cfc .ProcTf (_dfge .WithSize (_bged ,_fce ));case "\u0042\u004d\u0043","\u0042\u0044\u0043":case "\u0045\u004d\u0043":default:_da .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",_gfb .Operand );
|
|
};_dbc =_gfb ;return nil ;});_baee =_aa .Process (_ee );if _baee !=nil {return _baee ;};return nil ;};
|
|
|
|
// Render converts the specified PDF page into an image and returns the result.
|
|
func (_ead *ImageDevice )Render (page *_ag .PdfPage )(_d .Image ,error ){_dfc ,_eg :=page .GetMediaBox ();if _eg !=nil {return nil ,_eg ;};_dfc .Normalize ();_ac :=page .CropBox ;var _dd ,_dc float64 ;if _ac !=nil {_ac .Normalize ();_dd ,_dc =_ac .Width (),_ac .Height ();
|
|
};_ba :=page .Rotate ;_bg ,_be ,_aff ,_bae :=_dfc .Llx ,_dfc .Lly ,_dfc .Width (),_dfc .Height ();_gf :=_ec .IdentityMatrix ();if _ba !=nil &&*_ba %360!=0&&*_ba %90==0{_bf :=-float64 (*_ba );_cc :=_abg (_aff ,_bae ,_bf );_gf =_gf .Translate ((_cc .Width -_aff )/2+_aff /2,(_cc .Height -_bae )/2+_bae /2).Rotate (_bf *_a .Pi /180).Translate (-_aff /2,-_bae /2);
|
|
_aff ,_bae =_cc .Width ,_cc .Height ;if _ac !=nil {_cg :=_abg (_dd ,_dc ,_bf );_dd ,_dc =_cg .Width ,_cg .Height ;};};if _bg !=0||_be !=0{_gf =_gf .Translate (-_bg ,-_be );};_ead ._affe =1.0;if _ead .OutputWidth !=0{_gea :=_aff ;if _ac !=nil {_gea =_dd ;
|
|
};_ead ._affe =float64 (_ead .OutputWidth )/_gea ;_aff ,_bae ,_dd ,_dc =_aff *_ead ._affe ,_bae *_ead ._affe ,_dd *_ead ._affe ,_dc *_ead ._affe ;_gf =_ec .ScaleMatrix (_ead ._affe ,_ead ._affe ).Mult (_gf );};_db :=_ce .NewContext (int (_aff ),int (_bae ));
|
|
if _cgc :=_ead .renderPage (_db ,page ,_gf );_cgc !=nil {return nil ,_cgc ;};_ece :=_db .Image ();if _ac !=nil {_ege ,_gc :=(_ac .Llx -_bg )*_ead ._affe ,(_ac .Lly -_be )*_ead ._affe ;_dfa :=_d .Rect (0,0,int (_dd ),int (_dc ));_bb :=_d .Pt (int (_ege ),int (_bae -_gc -_dc ));
|
|
_dad :=_d .NewRGBA (_dfa );_ea .Draw (_dad ,_dfa ,_ece ,_bb ,_ea .Src );_ece =_dad ;};return _ece ,nil ;};const (ShadingTypeFunctionBased PdfShadingType =1;ShadingTypeAxial PdfShadingType =2;ShadingTypeRadial PdfShadingType =3;ShadingTypeFreeForm PdfShadingType =4;
|
|
ShadingTypeLatticeForm PdfShadingType =5;ShadingTypeCoons PdfShadingType =6;ShadingTypeTensorProduct PdfShadingType =7;);type renderer struct{_affe float64 };func _aadf (_geb string ,_ddgd _d .Image )error {_efe ,_ffccg :=_c .Create (_geb );if _ffccg !=nil {return _ffccg ;
|
|
};defer _efe .Close ();return _fa .Encode (_efe ,_ddgd );};func (_eab renderer )renderPage (_bd _gda .Context ,_age *_ag .PdfPage ,_gdf _ec .Matrix )error {_cd ,_ae :=_age .GetAllContentStreams ();if _ae !=nil {return _ae ;};if _fg :=_gdf ;!_fg .Identity (){_cd =_ge .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",_fg [0],_fg [1],_fg [3],_fg [4],_fg [6],_fg [7],_cd );
|
|
};_bd .Translate (0,float64 (_bd .Height ()));_bd .Scale (1,-1);_bd .Push ();_bd .SetRGBA (1,1,1,1);_bd .DrawRectangle (0,0,float64 (_bd .Width ()),float64 (_bd .Height ()));_bd .Fill ();_bd .Pop ();_bd .SetLineWidth (1.0);_bd .SetRGBA (0,0,0,1);return _eab .renderContentStream (_bd ,_cd ,_age .Resources );
|
|
};func _eeg (_acd _gda .Gradient ,_cgae *_ag .PdfFunctionType3 ,_gfgg _ag .PdfColorspace ,_ebb []float64 )(_gda .Gradient ,error ){var _bgf error ;for _bdg :=0;_bdg < len (_cgae .Functions );_bdg ++{if _agcc ,_ffadd :=_cgae .Functions [_bdg ].(*_ag .PdfFunctionType2 );
|
|
_ffadd {_acd ,_bgf =_dbf (_acd ,_agcc ,_gfgg ,_ebb [_bdg +1],_bdg ==0);if _bgf !=nil {return nil ,_bgf ;};};};return _acd ,nil ;};func (_fea renderer )processShading (_bbf _gda .Context ,_ceec *_ag .PdfShading )(_gda .Gradient ,*_df .PdfObjectArray ,error ){_bbgd :=int64 (*_ceec .ShadingType );
|
|
if _bbgd ==int64 (ShadingTypeAxial ){return _fea .processLinearShading (_bbf ,_ceec );}else if _bbgd ==int64 (ShadingTypeRadial ){return _fea .processRadialShading (_bbf ,_ceec );}else {_da .Log .Debug (_ge .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",_bbgd ));
|
|
};return nil ,nil ,nil ;};func _ebfa (_cgbb _df .PdfObject ,_cfa _af .Color )(_d .Image ,error ){_adf ,_bgff :=_df .GetStream (_cgbb );if !_bgff {return nil ,nil ;};_fage ,_gddf :=_ag .NewXObjectImageFromStream (_adf );if _gddf !=nil {return nil ,_gddf ;
|
|
};_gag ,_gddf :=_fage .ToImage ();if _gddf !=nil {return nil ,_gddf ;};return _eee (_gag ,_cfa ),nil ;};func (_fgg renderer )processLinearShading (_bba _gda .Context ,_geec *_ag .PdfShading )(_gda .Gradient ,*_df .PdfObjectArray ,error ){_ddaa :=_geec .GetContext ().(*_ag .PdfShadingType2 );
|
|
if len (_ddaa .Function )==0{return nil ,nil ,_g .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");
|
|
};_gbef ,_beg :=_ddaa .Coords .ToFloat64Array ();if _beg !=nil {return nil ,nil ,_g .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");
|
|
};_babc :=_geec .ColorSpace ;_gfg ,_addf :=_bba .Matrix ().Transform (_gbef [0],_gbef [1]);_bagc ,_cega :=_bba .Matrix ().Transform (_gbef [2],_gbef [3]);_edc :=_ce .NewLinearGradient (_gfg ,_addf ,_bagc ,_cega );_bef :=_df .MakeArrayFromFloats ([]float64 {0,0,1,1});
|
|
for _ ,_begg :=range _gbef {if _begg > 1{_bef =_ddaa .Coords ;break ;};};if _cfbb ,_eddcg :=_ddaa .Function [0].(*_ag .PdfFunctionType2 );_eddcg {_edc ,_beg =_dbf (_edc ,_cfbb ,_babc ,1.0,true );}else if _egg ,_bgga :=_ddaa .Function [0].(*_ag .PdfFunctionType3 );
|
|
_bgga {_afgd :=append ([]float64 {0},_egg .Bounds ...);_afgd =append (_afgd ,1.0);_edc ,_beg =_eeg (_edc ,_egg ,_babc ,_afgd );};return _edc ,_bef ,_beg ;};func _eee (_geeg *_ag .Image ,_ccea _af .Color )_d .Image {_eafb ,_bddc :=int (_geeg .Width ),int (_geeg .Height );
|
|
_bdec :=_d .NewRGBA (_d .Rect (0,0,_eafb ,_bddc ));for _ecec :=0;_ecec < _bddc ;_ecec ++{for _efgg :=0;_efgg < _eafb ;_efgg ++{_bgd ,_dgcd :=_geeg .ColorAt (_efgg ,_ecec );if _dgcd !=nil {_da .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",_efgg ,_ecec );
|
|
continue ;};_cffd ,_bgfe ,_accc ,_ :=_bgd .RGBA ();var _bddb _af .Color ;if _cffd +_bgfe +_accc ==0{_bddb =_af .Transparent ;}else {_bddb =_ccea ;};_bdec .Set (_efgg ,_ecec ,_bddb );};};return _bdec ;};func _abg (_affee ,_gbg ,_agg float64 )_afd .BoundingBox {return _afd .Path {Points :[]_afd .Point {_afd .NewPoint (0,0).Rotate (_agg ),_afd .NewPoint (_affee ,0).Rotate (_agg ),_afd .NewPoint (0,_gbg ).Rotate (_agg ),_afd .NewPoint (_affee ,_gbg ).Rotate (_agg )}}.GetBoundingBox ();
|
|
};
|
|
|
|
// NewImageDevice returns a new image device.
|
|
func NewImageDevice ()*ImageDevice {const _fb ="r\u0065\u006e\u0064\u0065r.\u004ee\u0077\u0049\u006d\u0061\u0067e\u0044\u0065\u0076\u0069\u0063\u0065";_cf .TrackUse (_fb );return &ImageDevice {};};var (_ccd =_g .New ("\u0074\u0079p\u0065\u0020\u0063h\u0065\u0063\u006b\u0020\u0065\u0072\u0072\u006f\u0072");
|
|
_gce =_g .New ("\u0072\u0061\u006e\u0067\u0065\u0020\u0063\u0068\u0065\u0063\u006b\u0020e\u0072\u0072\u006f\u0072"););func _dbbb (_gbb ,_cada _d .Image )_d .Image {_eaag ,_aedd :=_cada .Bounds ().Size (),_gbb .Bounds ().Size ();_cab ,_agfa :=_eaag .X ,_eaag .Y ;
|
|
if _aedd .X > _cab {_cab =_aedd .X ;};if _aedd .Y > _agfa {_agfa =_aedd .Y ;};_ffac :=_d .Rect (0,0,_cab ,_agfa );if _eaag .X !=_cab ||_eaag .Y !=_agfa {_ecga :=_d .NewRGBA (_ffac );_ff .BiLinear .Scale (_ecga ,_ffac ,_gbb ,_cada .Bounds (),_ff .Over ,nil );
|
|
_cada =_ecga ;};if _aedd .X !=_cab ||_aedd .Y !=_agfa {_gabd :=_d .NewRGBA (_ffac );_ff .BiLinear .Scale (_gabd ,_ffac ,_gbb ,_gbb .Bounds (),_ff .Over ,nil );_gbb =_gabd ;};_fcb :=_d .NewRGBA (_ffac );_ff .DrawMask (_fcb ,_ffac ,_gbb ,_d .Point {},_cada ,_d .Point {},_ff .Over );
|
|
return _fcb ;};
|
|
|
|
// RenderToPath converts the specified PDF page into an image and saves the
|
|
// result at the specified location.
|
|
func (_dff *ImageDevice )RenderToPath (page *_ag .PdfPage ,outputPath string )error {_ffd ,_ddf :=_dff .Render (page );if _ddf !=nil {return _ddf ;};_cca :=_e .ToLower (_gb .Ext (outputPath ));if _cca ==""{return _g .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 _cca {case "\u002e\u0070\u006e\u0067":return _aadf (outputPath ,_ffd );case "\u002e\u006a\u0070\u0067","\u002e\u006a\u0070e\u0067":return _fdea (outputPath ,_ffd ,100);};return _ge .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",_cca );
|
|
};
|
|
|
|
// PdfShadingType defines PDF shading types.
|
|
// Source: PDF32000_2008.pdf. Chapter 8.7.4.5
|
|
type PdfShadingType int64 ;func _fdea (_fcd string ,_aae _d .Image ,_cgdg int )error {_bgede ,_ddc :=_c .Create (_fcd );if _ddc !=nil {return _ddc ;};defer _bgede .Close ();return _gd .Encode (_bgede ,_aae ,&_gd .Options {Quality :_cgdg });};
|
|
|
|
// 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 ;};func _dbf (_dec _gda .Gradient ,_gbf *_ag .PdfFunctionType2 ,_bfcf _ag .PdfColorspace ,_fdad float64 ,_eef bool )(_gda .Gradient ,error ){switch _bfcf .(type ){case *_ag .PdfColorspaceDeviceRGB :if len (_gbf .C0 )!=3||len (_gbf .C1 )!=3{return nil ,_g .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");
|
|
};_gcd :=_gbf .C0 ;_fdf :=_gbf .C1 ;if _eef {_dec .AddColorStop (0.0,_af .RGBA {R :uint8 (_gcd [0]*255),G :uint8 (_gcd [1]*255),B :uint8 (_gcd [2]*255),A :255});};_dec .AddColorStop (_fdad ,_af .RGBA {R :uint8 (_fdf [0]*255),G :uint8 (_fdf [1]*255),B :uint8 (_fdf [2]*255),A :255});
|
|
case *_ag .PdfColorspaceDeviceCMYK :if len (_gbf .C0 )!=4||len (_gbf .C1 )!=4{return nil ,_g .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");
|
|
};_cec :=_gbf .C0 ;_aede :=_gbf .C1 ;if _eef {_dec .AddColorStop (0.0,_af .CMYK {C :uint8 (_cec [0]*255),M :uint8 (_cec [1]*255),Y :uint8 (_cec [2]*255),K :uint8 (_cec [3]*255)});};_dec .AddColorStop (_fdad ,_af .CMYK {C :uint8 (_aede [0]*255),M :uint8 (_aede [1]*255),Y :uint8 (_aede [2]*255),K :uint8 (_aede [3]*255)});
|
|
default:return nil ,_ge .Errorf ("u\u006e\u0073\u0075\u0070\u0070\u006fr\u0074\u0065\u0064\u0020\u0063\u006f\u006c\u006f\u0072 \u0073\u0070\u0061c\u0065:\u0020\u0025\u0073",_bfcf .String ());};return _dec ,nil ;};func (_dfe renderer )processGradient (_faga _gda .Context ,_aad *_b .ContentStreamOperation ,_eag *_ag .PdfPageResources ,_fcg *_df .PdfObjectName )(_gda .Gradient ,error ){if _cbbg ,_gacd :=_eag .GetPatternByName (*_fcg );
|
|
_gacd &&_cbbg .IsShading (){_abf :=_cbbg .GetAsShadingPattern ().Shading ;_bcdg ,_ ,_ddb :=_dfe .processShading (_faga ,_abf );if _ddb !=nil {return nil ,_ddb ;};return _bcdg ,nil ;};return nil ,nil ;}; |