mirror of
https://github.com/unidoc/unipdf.git
synced 2025-04-26 13:48:55 +08:00
206 lines
55 KiB
Go
206 lines
55 KiB
Go
//
|
|
// Copyright 2020 FoxyUtils ehf. All rights reserved.
|
|
//
|
|
// This is a commercial product and requires a license to operate.
|
|
// A trial license can be obtained at https://unidoc.io
|
|
//
|
|
// DO NOT EDIT: generated by unitwist Go source code obfuscator.
|
|
//
|
|
// Use of this source code is governed by the UniDoc End User License Agreement
|
|
// terms that can be accessed at https://unidoc.io/eula/
|
|
|
|
package render ;import (_b "errors";_e "fmt";_fe "github.com/adrg/sysfont";_eb "github.com/unidoc/unipdf/v3/annotator";_fc "github.com/unidoc/unipdf/v3/common";_be "github.com/unidoc/unipdf/v3/contentstream";_gb "github.com/unidoc/unipdf/v3/contentstream/draw";
|
|
_ag "github.com/unidoc/unipdf/v3/core";_cc "github.com/unidoc/unipdf/v3/internal/license";_cg "github.com/unidoc/unipdf/v3/internal/transform";_bf "github.com/unidoc/unipdf/v3/model";_bg "github.com/unidoc/unipdf/v3/render/internal/context";_fg "github.com/unidoc/unipdf/v3/render/internal/context/imagerender";
|
|
_bd "golang.org/x/image/draw";_fb "image";_cb "image/color";_ba "image/draw";_ca "image/jpeg";_d "image/png";_g "math";_f "os";_a "path/filepath";_ff "strings";);
|
|
|
|
// RenderToPath converts the specified PDF page into an image and saves the
|
|
// result at the specified location.
|
|
func (_dcg *ImageDevice )RenderToPath (page *_bf .PdfPage ,outputPath string )error {_gee ,_gg :=_dcg .Render (page );if _gg !=nil {return _gg ;};_agd :=_ff .ToLower (_a .Ext (outputPath ));if _agd ==""{return _b .New ("\u0063\u006ful\u0064\u0020\u006eo\u0074\u0020\u0072\u0065cog\u006eiz\u0065\u0020\u006f\u0075\u0074\u0070\u0075t \u0066\u0069\u006c\u0065\u0020\u0074\u0079p\u0065");
|
|
};switch _agd {case "\u002e\u0070\u006e\u0067":return _gfbc (outputPath ,_gee );case "\u002e\u006a\u0070\u0067","\u002e\u006a\u0070e\u0067":return _befd (outputPath ,_gee ,100);};return _e .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",_agd );
|
|
};type renderer struct{_ce float64 };var (_fcc =_b .New ("\u0074\u0079p\u0065\u0020\u0063h\u0065\u0063\u006b\u0020\u0065\u0072\u0072\u006f\u0072");_ega =_b .New ("\u0072\u0061\u006e\u0067\u0065\u0020\u0063\u0068\u0065\u0063\u006b\u0020e\u0072\u0072\u006f\u0072");
|
|
);func _bdbd (_abb _ag .PdfObject ,_gebg _cb .Color )(_fb .Image ,error ){_cfef ,_cde :=_ag .GetStream (_abb );if !_cde {return nil ,nil ;};_ffb ,_egba :=_bf .NewXObjectImageFromStream (_cfef );if _egba !=nil {return nil ,_egba ;};_cagb ,_egba :=_ffb .ToImage ();
|
|
if _egba !=nil {return nil ,_egba ;};return _efgg (_cagb ,_gebg ),nil ;};
|
|
|
|
// NewImageDevice returns a new image device.
|
|
func NewImageDevice ()*ImageDevice {const _ebe ="r\u0065\u006e\u0064\u0065r.\u004ee\u0077\u0049\u006d\u0061\u0067e\u0044\u0065\u0076\u0069\u0063\u0065";_cc .TrackUse (_ebe );return &ImageDevice {};};func (_bbd renderer )processRadialShading (_bggd _bg .Context ,_decf *_bf .PdfShading )(_bg .Gradient ,*_ag .PdfObjectArray ,error ){_bfab :=_decf .GetContext ().(*_bf .PdfShadingType3 );
|
|
if len (_bfab .Function )==0{return nil ,nil ,_b .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");
|
|
};_ddec ,_cdfc :=_bfab .Coords .ToFloat64Array ();if _cdfc !=nil {return nil ,nil ,_b .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");
|
|
};_bde :=_decf .ColorSpace ;_dfed :=_ag .MakeArrayFromFloats ([]float64 {0,0,1,1});var _abd ,_bggea ,_edcc ,_gaef ,_fdbf ,_gga float64 ;_abd ,_bggea =_bggd .Matrix ().Transform (_ddec [0],_ddec [1]);_edcc ,_gaef =_bggd .Matrix ().Transform (_ddec [3],_ddec [4]);
|
|
_fdbf ,_ =_bggd .Matrix ().Transform (_ddec [2],0);_gga ,_ =_bggd .Matrix ().Transform (_ddec [5],0);_dbca ,_ :=_bggd .Matrix ().Translation ();_fdbf -=_dbca ;_gga -=_dbca ;for _faab ,_aegf :=range _ddec {if _faab ==2||_faab ==5{continue ;};if _aegf > 1.0{_aff :=_g .Min (_abd -_fdbf ,_edcc -_gga );
|
|
_baef :=_g .Min (_bggea -_fdbf ,_gaef -_gga );_bfg :=_g .Max (_abd +_fdbf ,_edcc +_gga );_ccaf :=_g .Max (_bggea +_fdbf ,_gaef +_gga );_edaba :=_bfg -_aff ;_afge :=_baef -_ccaf ;_dfed =_ag .MakeArrayFromFloats ([]float64 {_aff ,_baef ,_edaba ,_afge });
|
|
break ;};};_fdgc :=_fg .NewRadialGradient (_abd ,_bggea ,_fdbf ,_edcc ,_gaef ,_gga );if _acgd ,_eecd :=_bfab .Function [0].(*_bf .PdfFunctionType2 );_eecd {_fdgc ,_cdfc =_fcf (_fdgc ,_acgd ,_bde ,1.0,true );}else if _egb ,_aedb :=_bfab .Function [0].(*_bf .PdfFunctionType3 );
|
|
_aedb {_gefb :=append ([]float64 {0},_egb .Bounds ...);_gefb =append (_gefb ,1.0);_fdgc ,_cdfc =_bbb (_fdgc ,_egb ,_bde ,_gefb );};if _cdfc !=nil {return nil ,nil ,_cdfc ;};return _fdgc ,_dfed ,nil ;};func (_acgbb renderer )processLinearShading (_afgg _bg .Context ,_efgab *_bf .PdfShading )(_bg .Gradient ,*_ag .PdfObjectArray ,error ){_feg :=_efgab .GetContext ().(*_bf .PdfShadingType2 );
|
|
if len (_feg .Function )==0{return nil ,nil ,_b .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");
|
|
};_cecgf ,_fdg :=_feg .Coords .ToFloat64Array ();if _fdg !=nil {return nil ,nil ,_b .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");
|
|
};_fgdb :=_efgab .ColorSpace ;_bgae ,_afd :=_afgg .Matrix ().Transform (_cecgf [0],_cecgf [1]);_bfca ,_baa :=_afgg .Matrix ().Transform (_cecgf [2],_cecgf [3]);_edb :=_fg .NewLinearGradient (_bgae ,_afd ,_bfca ,_baa );_aee :=_ag .MakeArrayFromFloats ([]float64 {0,0,1,1});
|
|
for _ ,_def :=range _cecgf {if _def > 1{_aee =_feg .Coords ;break ;};};if _dbg ,_dbdc :=_feg .Function [0].(*_bf .PdfFunctionType2 );_dbdc {_edb ,_fdg =_fcf (_edb ,_dbg ,_fgdb ,1.0,true );}else if _ddbf ,_aede :=_feg .Function [0].(*_bf .PdfFunctionType3 );
|
|
_aede {_caf :=append ([]float64 {0},_ddbf .Bounds ...);_caf =append (_caf ,1.0);_edb ,_fdg =_bbb (_edb ,_ddbf ,_fgdb ,_caf );};return _edb ,_aee ,_fdg ;};func (_eef renderer )processGradient (_afec _bg .Context ,_gaeb *_be .ContentStreamOperation ,_fecbd *_bf .PdfPageResources ,_fdf *_ag .PdfObjectName )(_bg .Gradient ,error ){if _dbab ,_efad :=_fecbd .GetPatternByName (*_fdf );
|
|
_efad &&_dbab .IsShading (){_dbfg :=_dbab .GetAsShadingPattern ().Shading ;_gbdb ,_ ,_bge :=_eef .processShading (_afec ,_dbfg );if _bge !=nil {return nil ,_bge ;};return _gbdb ,nil ;};return nil ,nil ;};func (_faf renderer )processShading (_ecda _bg .Context ,_dae *_bf .PdfShading )(_bg .Gradient ,*_ag .PdfObjectArray ,error ){_cgdb :=int64 (*_dae .ShadingType );
|
|
if _cgdb ==int64 (ShadingTypeAxial ){return _faf .processLinearShading (_ecda ,_dae );}else if _cgdb ==int64 (ShadingTypeRadial ){return _faf .processRadialShading (_ecda ,_dae );}else {_fc .Log .Debug (_e .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",_cgdb ));
|
|
};return nil ,nil ,nil ;};func _dea (_egaf _ag .PdfObject ,_fdgg _cb .Color )(_fb .Image ,error ){_ccdc ,_aec :=_ag .GetStream (_egaf );if !_aec {return nil ,nil ;};_cafe ,_geea :=_bf .NewXObjectImageFromStream (_ccdc );if _geea !=nil {return nil ,_geea ;
|
|
};_ffe ,_geea :=_cafe .ToImage ();if _geea !=nil {return nil ,_geea ;};return _cfec (_ffe ,_fdgg ),nil ;};const (ShadingTypeFunctionBased PdfShadingType =1;ShadingTypeAxial PdfShadingType =2;ShadingTypeRadial PdfShadingType =3;ShadingTypeFreeForm PdfShadingType =4;
|
|
ShadingTypeLatticeForm PdfShadingType =5;ShadingTypeCoons PdfShadingType =6;ShadingTypeTensorProduct PdfShadingType =7;);func _befd (_aegd string ,_gfbe _fb .Image ,_fgb int )error {_efbg ,_daaa :=_f .Create (_aegd );if _daaa !=nil {return _daaa ;};defer _efbg .Close ();
|
|
return _ca .Encode (_efbg ,_gfbe ,&_ca .Options {Quality :_fgb });};func _bbb (_gdbg _bg .Gradient ,_aded *_bf .PdfFunctionType3 ,_agdg _bf .PdfColorspace ,_fed []float64 )(_bg .Gradient ,error ){var _edf error ;for _fcd :=0;_fcd < len (_aded .Functions );
|
|
_fcd ++{if _bgeb ,_edbb :=_aded .Functions [_fcd ].(*_bf .PdfFunctionType2 );_edbb {_gdbg ,_edf =_fcf (_gdbg ,_bgeb ,_agdg ,_fed [_fcd +1],_fcd ==0);if _edf !=nil {return nil ,_edf ;};};};return _gdbg ,nil ;};
|
|
|
|
// RenderWithOpts converts the specified PDF page into an image, optionally flattens annotations and returns the result.
|
|
func (_ga *ImageDevice )RenderWithOpts (page *_bf .PdfPage ,skipFlattening bool )(_fb .Image ,error ){_cag ,_bb :=page .GetMediaBox ();if _bb !=nil {return nil ,_bb ;};_cag .Normalize ();_cgb :=page .CropBox ;var _agg ,_db float64 ;if _cgb !=nil {_cgb .Normalize ();
|
|
_agg ,_db =_cgb .Width (),_cgb .Height ();};_bee :=page .Rotate ;_bdc ,_gf ,_ge ,_ea :=_cag .Llx ,_cag .Lly ,_cag .Width (),_cag .Height ();_dbd :=_cg .IdentityMatrix ();if _bee !=nil &&*_bee %360!=0&&*_bee %90==0{_ad :=-float64 (*_bee );_eg :=_agde (_ge ,_ea ,_ad );
|
|
_dbd =_dbd .Translate ((_eg .Width -_ge )/2+_ge /2,(_eg .Height -_ea )/2+_ea /2).Rotate (_ad *_g .Pi /180).Translate (-_ge /2,-_ea /2);_ge ,_ea =_eg .Width ,_eg .Height ;if _cgb !=nil {_bdf :=_agde (_agg ,_db ,_ad );_agg ,_db =_bdf .Width ,_bdf .Height ;
|
|
};};if _bdc !=0||_gf !=0{_dbd =_dbd .Translate (-_bdc ,-_gf );};_ga ._ce =1.0;if _ga .OutputWidth !=0{_dbe :=_ge ;if _cgb !=nil {_dbe =_agg ;};_ga ._ce =float64 (_ga .OutputWidth )/_dbe ;_ge ,_ea ,_agg ,_db =_ge *_ga ._ce ,_ea *_ga ._ce ,_agg *_ga ._ce ,_db *_ga ._ce ;
|
|
_dbd =_cg .ScaleMatrix (_ga ._ce ,_ga ._ce ).Mult (_dbd );};_dc :=_fg .NewContext (int (_ge ),int (_ea ));if _gd :=_ga .renderPage (_dc ,page ,_dbd ,skipFlattening );_gd !=nil {return nil ,_gd ;};_dd :=_dc .Image ();if _cgb !=nil {_ef ,_beg :=(_cgb .Llx -_bdc )*_ga ._ce ,(_cgb .Lly -_gf )*_ga ._ce ;
|
|
_eae :=_fb .Rect (0,0,int (_agg ),int (_db ));_de :=_fb .Pt (int (_ef ),int (_ea -_beg -_db ));_cca :=_fb .NewRGBA (_eae );_ba .Draw (_cca ,_eae ,_dd ,_de ,_ba .Src );_dd =_cca ;};return _dd ,nil ;};func _cfec (_agce *_bf .Image ,_afff _cb .Color )_fb .Image {_cbbg ,_egc :=int (_agce .Width ),int (_agce .Height );
|
|
_bdcab :=_fb .NewRGBA (_fb .Rect (0,0,_cbbg ,_egc ));for _gdbe :=0;_gdbe < _egc ;_gdbe ++{for _eeda :=0;_eeda < _cbbg ;_eeda ++{_cbbc ,_cgdf :=_agce .ColorAt (_eeda ,_gdbe );if _cgdf !=nil {_fc .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",_eeda ,_gdbe );
|
|
continue ;};_cedb ,_dcccb ,_gfec ,_ :=_cbbc .RGBA ();var _babf _cb .Color ;if _cedb +_dcccb +_gfec ==0{_babf =_cb .Transparent ;}else {_babf =_afff ;};_bdcab .Set (_eeda ,_gdbe ,_babf );};};return _bdcab ;};func (_adb renderer )renderPage (_ced _bg .Context ,_dg *_bf .PdfPage ,_gdd _cg .Matrix ,_dbeg bool )error {if !_dbeg {_fbb :=_bf .FieldFlattenOpts {AnnotFilterFunc :func (_cad *_bf .PdfAnnotation )bool {switch _cad .GetContext ().(type ){case *_bf .PdfAnnotationLine :return true ;
|
|
case *_bf .PdfAnnotationSquare :return true ;case *_bf .PdfAnnotationCircle :return true ;case *_bf .PdfAnnotationPolygon :return true ;case *_bf .PdfAnnotationPolyLine :return true ;};return false ;}};_ee :=_eb .FieldAppearance {};_ebd :=_dg .FlattenFieldsWithOpts (_ee ,&_fbb );
|
|
if _ebd !=nil {_fc .Log .Debug ("\u0045\u0072r\u006f\u0072\u0020\u0064u\u0072\u0069n\u0067\u0020\u0061\u006e\u006e\u006f\u0074\u0061t\u0069\u006f\u006e\u0020\u0066\u006c\u0061\u0074\u0074\u0065\u006e\u0069n\u0067\u0020\u0025\u0076",_ebd );};};_cac ,_ec :=_dg .GetAllContentStreams ();
|
|
if _ec !=nil {return _ec ;};if _gfc :=_gdd ;!_gfc .Identity (){_cac =_e .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",_gfc [0],_gfc [1],_gfc [3],_gfc [4],_gfc [6],_gfc [7],_cac );
|
|
};_ced .Translate (0,float64 (_ced .Height ()));_ced .Scale (1,-1);_ced .Push ();_ced .SetRGBA (1,1,1,1);_ced .DrawRectangle (0,0,float64 (_ced .Width ()),float64 (_ced .Height ()));_ced .Fill ();_ced .Pop ();_ced .SetLineWidth (1.0);_ced .SetRGBA (0,0,0,1);
|
|
return _adb .renderContentStream (_ced ,_cac ,_dg .Resources );};
|
|
|
|
// Render converts the specified PDF page into an image, flattens annotations by default and returns the result.
|
|
func (_bdd *ImageDevice )Render (page *_bf .PdfPage )(_fb .Image ,error ){return _bdd .RenderWithOpts (page ,false );};func _agde (_afb ,_cdaf ,_fccc float64 )_gb .BoundingBox {return _gb .Path {Points :[]_gb .Point {_gb .NewPoint (0,0).Rotate (_fccc ),_gb .NewPoint (_afb ,0).Rotate (_fccc ),_gb .NewPoint (0,_cdaf ).Rotate (_fccc ),_gb .NewPoint (_afb ,_cdaf ).Rotate (_fccc )}}.GetBoundingBox ();
|
|
};func _efgg (_gggc *_bf .Image ,_dbefe _cb .Color )_fb .Image {_caeg ,_bad :=int (_gggc .Width ),int (_gggc .Height );_bead :=_fb .NewRGBA (_fb .Rect (0,0,_caeg ,_bad ));for _cecf :=0;_cecf < _bad ;_cecf ++{for _dce :=0;_dce < _caeg ;_dce ++{_bebd ,_bged :=_gggc .ColorAt (_dce ,_cecf );
|
|
if _bged !=nil {_fc .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",_dce ,_cecf );
|
|
continue ;};_ede ,_eagg ,_fbbd ,_ :=_bebd .RGBA ();var _aefd _cb .Color ;if _ede +_eagg +_fbbd ==0{_aefd =_dbefe ;}else {_aefd =_cb .Transparent ;};_bead .Set (_dce ,_cecf ,_aefd );};};return _bead ;};func _fcf (_cef _bg .Gradient ,_bcd *_bf .PdfFunctionType2 ,_aadc _bf .PdfColorspace ,_bfcac float64 ,_gbe bool )(_bg .Gradient ,error ){switch _aadc .(type ){case *_bf .PdfColorspaceDeviceRGB :if len (_bcd .C0 )!=3||len (_bcd .C1 )!=3{return nil ,_b .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");
|
|
};_egdd :=_bcd .C0 ;_ddaa :=_bcd .C1 ;if _gbe {_cef .AddColorStop (0.0,_cb .RGBA {R :uint8 (_egdd [0]*255),G :uint8 (_egdd [1]*255),B :uint8 (_egdd [2]*255),A :255});};_cef .AddColorStop (_bfcac ,_cb .RGBA {R :uint8 (_ddaa [0]*255),G :uint8 (_ddaa [1]*255),B :uint8 (_ddaa [2]*255),A :255});
|
|
case *_bf .PdfColorspaceDeviceCMYK :if len (_bcd .C0 )!=4||len (_bcd .C1 )!=4{return nil ,_b .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");
|
|
};_bfga :=_bcd .C0 ;_ccad :=_bcd .C1 ;if _gbe {_cef .AddColorStop (0.0,_cb .CMYK {C :uint8 (_bfga [0]*255),M :uint8 (_bfga [1]*255),Y :uint8 (_bfga [2]*255),K :uint8 (_bfga [3]*255)});};_cef .AddColorStop (_bfcac ,_cb .CMYK {C :uint8 (_ccad [0]*255),M :uint8 (_ccad [1]*255),Y :uint8 (_ccad [2]*255),K :uint8 (_ccad [3]*255)});
|
|
default:return nil ,_e .Errorf ("u\u006e\u0073\u0075\u0070\u0070\u006fr\u0074\u0065\u0064\u0020\u0063\u006f\u006c\u006f\u0072 \u0073\u0070\u0061c\u0065:\u0020\u0025\u0073",_aadc .String ());};return _cef ,nil ;};func _gfbc (_dgc string ,_cdc _fb .Image )error {_eee ,_cce :=_f .Create (_dgc );
|
|
if _cce !=nil {return _cce ;};defer _eee .Close ();return _d .Encode (_eee ,_cdc );};func _cdg (_cade ,_bda _fb .Image )_fb .Image {_bbag ,_dceb :=_bda .Bounds ().Size (),_cade .Bounds ().Size ();_adee ,_ccgg :=_bbag .X ,_bbag .Y ;if _dceb .X > _adee {_adee =_dceb .X ;
|
|
};if _dceb .Y > _ccgg {_ccgg =_dceb .Y ;};_eagb :=_fb .Rect (0,0,_adee ,_ccgg );if _bbag .X !=_adee ||_bbag .Y !=_ccgg {_fagd :=_fb .NewRGBA (_eagb );_bd .BiLinear .Scale (_fagd ,_eagb ,_cade ,_bda .Bounds (),_bd .Over ,nil );_bda =_fagd ;};if _dceb .X !=_adee ||_dceb .Y !=_ccgg {_ceae :=_fb .NewRGBA (_eagb );
|
|
_bd .BiLinear .Scale (_ceae ,_eagb ,_cade ,_cade .Bounds (),_bd .Over ,nil );_cade =_ceae ;};_bdbb :=_fb .NewRGBA (_eagb );_bd .DrawMask (_bdbb ,_eagb ,_cade ,_fb .Point {},_bda ,_fb .Point {},_bd .Over );return _bdbb ;};func (_aggb renderer )renderContentStream (_ade _bg .Context ,_df string ,_cbb *_bf .PdfPageResources )error {_fa ,_aa :=_be .NewContentStreamParser (_df ).Parse ();
|
|
if _aa !=nil {return _aa ;};_aad :=_ade .TextState ();_aad .GlobalScale =_aggb ._ce ;_gbc :=map[string ]*_bg .TextFont {};_fbd :=_fe .NewFinder (&_fe .FinderOpts {Extensions :[]string {"\u002e\u0074\u0074\u0066","\u002e\u0074\u0074\u0063"}});var _ggg *_be .ContentStreamOperation ;
|
|
_eeb :=_be .NewContentStreamProcessor (*_fa );_eeb .AddHandler (_be .HandlerConditionEnumAllOperands ,"",func (_bdb *_be .ContentStreamOperation ,_bfa _be .GraphicsState ,_aadd *_bf .PdfPageResources )error {_fc .Log .Debug ("\u0050\u0072\u006f\u0063\u0065\u0073\u0073\u0069\u006e\u0067\u0020\u0025\u0073",_bdb .Operand );
|
|
switch _bdb .Operand {case "\u0071":_ade .Push ();case "\u0051":_ade .Pop ();_aad =_ade .TextState ();case "\u0063\u006d":if len (_bdb .Params )!=6{return _ega ;};_dcc ,_bac :=_ag .GetNumbersAsFloat (_bdb .Params );if _bac !=nil {return _bac ;};_fbe :=_cg .NewMatrix (_dcc [0],_dcc [1],_dcc [2],_dcc [3],_dcc [4],_dcc [5]);
|
|
_fc .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",_fbe );_ade .SetMatrix (_ade .Matrix ().Mult (_fbe ));case "\u0077":if len (_bdb .Params )!=1{return _ega ;
|
|
};_efa ,_aab :=_ag .GetNumbersAsFloat (_bdb .Params );if _aab !=nil {return _aab ;};_ade .SetLineWidth (_efa [0]);case "\u004a":if len (_bdb .Params )!=1{return _ega ;};_dbef ,_eaf :=_ag .GetIntVal (_bdb .Params [0]);if !_eaf {return _fcc ;};switch _dbef {case 0:_ade .SetLineCap (_bg .LineCapButt );
|
|
case 1:_ade .SetLineCap (_bg .LineCapRound );case 2:_ade .SetLineCap (_bg .LineCapSquare );default:_fc .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",_dbef );
|
|
return _ega ;};case "\u006a":if len (_bdb .Params )!=1{return _ega ;};_cf ,_gag :=_ag .GetIntVal (_bdb .Params [0]);if !_gag {return _fcc ;};switch _cf {case 0:_ade .SetLineJoin (_bg .LineJoinBevel );case 1:_ade .SetLineJoin (_bg .LineJoinRound );case 2:_ade .SetLineJoin (_bg .LineJoinBevel );
|
|
default:_fc .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",_cf );return _ega ;};case "\u004d":if len (_bdb .Params )!=1{return _ega ;};_fd ,_efc :=_ag .GetNumbersAsFloat (_bdb .Params );
|
|
if _efc !=nil {return _efc ;};_ =_fd ;_fc .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 (_bdb .Params )!=2{return _ega ;};_dbf ,_dcf :=_ag .GetArray (_bdb .Params [0]);
|
|
if !_dcf {return _fcc ;};_bff ,_dcf :=_ag .GetIntVal (_bdb .Params [1]);if !_dcf {_ ,_dgf :=_ag .GetFloatVal (_bdb .Params [1]);if !_dgf {return _fcc ;};};_bdca ,_gdf :=_ag .GetNumbersAsFloat (_dbf .Elements ());if _gdf !=nil {return _gdf ;};_ade .SetDash (_bdca ...);
|
|
_ =_bff ;_fc .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":_fc .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":_fc .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 (_bdb .Params )!=1{return _ega ;
|
|
};_cea ,_ed :=_ag .GetName (_bdb .Params [0]);if !_ed {return _fcc ;};if _cea ==nil {return _ega ;};_aggbc ,_ed :=_aadd .GetExtGState (*_cea );if !_ed {_fc .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",*_cea );
|
|
return _b .New ("\u0072e\u0073o\u0075\u0072\u0063\u0065\u0020n\u006f\u0074 \u0066\u006f\u0075\u006e\u0064");};_bae ,_ed :=_ag .GetDict (_aggbc );if !_ed {_fc .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 _fcc ;};_fc .Log .Debug ("G\u0053\u0020\u0064\u0069\u0063\u0074\u003a\u0020\u0025\u0073",_bae .String ());_baca :=_bae .Get ("\u0063\u0061");if _baca !=nil {_gba ,_bba :=_ag .GetNumberAsFloat (_baca );if _bba ==nil {_bga ,_ebf :=_bfa .ColorspaceNonStroking .ColorToRGB (_bfa .ColorNonStroking );
|
|
if _ebf !=nil {_fc .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",_ebf );return _ebf ;};_cd ,_dgfg :=_bga .(*_bf .PdfColorDeviceRGB );if !_dgfg {_fc .Log .Debug ("\u0045\u0072\u0072\u006fr \u0063\u006f\u006e\u0076\u0065\u0072\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006co\u0072");
|
|
return _ebf ;};_ade .SetFillRGBA (_cd .R (),_cd .G (),_cd .B (),_gba );};};case "\u006d":if len (_bdb .Params )!=2{_fc .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",_ega );
|
|
return nil ;};_ggd ,_dbea :=_ag .GetNumbersAsFloat (_bdb .Params );if _dbea !=nil {return _dbea ;};_fc .Log .Debug ("M\u006f\u0076\u0065\u0020\u0074\u006f\u003a\u0020\u0025\u0076",_ggd );_ade .NewSubPath ();_ade .MoveTo (_ggd [0],_ggd [1]);case "\u006c":if len (_bdb .Params )!=2{_fc .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",_ega );
|
|
return nil ;};_dgg ,_cgg :=_ag .GetNumbersAsFloat (_bdb .Params );if _cgg !=nil {return _cgg ;};_ade .LineTo (_dgg [0],_dgg [1]);case "\u0063":if len (_bdb .Params )!=6{return _ega ;};_cbbd ,_faa :=_ag .GetNumbersAsFloat (_bdb .Params );if _faa !=nil {return _faa ;
|
|
};_fc .Log .Debug ("\u0043u\u0062\u0069\u0063\u0020\u0062\u0065\u007a\u0069\u0065\u0072\u0020p\u0061\u0072\u0061\u006d\u0073\u003a\u0020\u0025\u002b\u0076",_cbbd );_ade .CubicTo (_cbbd [0],_cbbd [1],_cbbd [2],_cbbd [3],_cbbd [4],_cbbd [5]);case "\u0076","\u0079":if len (_bdb .Params )!=4{return _ega ;
|
|
};_ecb ,_aaf :=_ag .GetNumbersAsFloat (_bdb .Params );if _aaf !=nil {return _aaf ;};_fc .Log .Debug ("\u0043u\u0062\u0069\u0063\u0020\u0062\u0065\u007a\u0069\u0065\u0072\u0020p\u0061\u0072\u0061\u006d\u0073\u003a\u0020\u0025\u002b\u0076",_ecb );_ade .QuadraticTo (_ecb [0],_ecb [1],_ecb [2],_ecb [3]);
|
|
case "\u0068":_ade .ClosePath ();_ade .NewSubPath ();case "\u0072\u0065":if len (_bdb .Params )!=4{return _ega ;};_aabf ,_cdb :=_ag .GetNumbersAsFloat (_bdb .Params );if _cdb !=nil {return _cdb ;};_ade .DrawRectangle (_aabf [0],_aabf [1],_aabf [2],_aabf [3]);
|
|
_ade .NewSubPath ();case "\u0053":_gbf ,_gaa :=_bfa .ColorspaceStroking .ColorToRGB (_bfa .ColorStroking );if _gaa !=nil {_fc .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",_gaa );
|
|
return _gaa ;};_dccc ,_da :=_gbf .(*_bf .PdfColorDeviceRGB );if !_da {_fc .Log .Debug ("\u0045\u0072\u0072\u006fr \u0063\u006f\u006e\u0076\u0065\u0072\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006co\u0072");return _gaa ;};_ade .SetRGBA (_dccc .R (),_dccc .G (),_dccc .B (),1);
|
|
_ade .Stroke ();case "\u0073":_bgg ,_bec :=_bfa .ColorspaceStroking .ColorToRGB (_bfa .ColorStroking );if _bec !=nil {_fc .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",_bec );
|
|
return _bec ;};_ab ,_ae :=_bgg .(*_bf .PdfColorDeviceRGB );if !_ae {_fc .Log .Debug ("\u0045\u0072\u0072\u006fr \u0063\u006f\u006e\u0076\u0065\u0072\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006co\u0072");return _bec ;};_ade .ClosePath ();_ade .NewSubPath ();
|
|
_ade .SetRGBA (_ab .R (),_ab .G (),_ab .B (),1);_ade .Stroke ();case "\u0066","\u0046":_dcfe ,_cacg :=_bfa .ColorspaceNonStroking .ColorToRGB (_bfa .ColorNonStroking );if _cacg !=nil {_fc .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",_cacg );
|
|
return _cacg ;};switch _egd :=_dcfe .(type ){case *_bf .PdfColorDeviceRGB :_ade .SetRGBA (_egd .R (),_egd .G (),_egd .B (),1);_ade .SetFillRule (_bg .FillRuleWinding );_ade .Fill ();case *_bf .PdfColorPattern :_ade .Fill ();};_fc .Log .Debug ("\u0045\u0072\u0072\u006fr \u0063\u006f\u006e\u0076\u0065\u0072\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006co\u0072");
|
|
case "\u0066\u002a":_aeg ,_bfc :=_bfa .ColorspaceNonStroking .ColorToRGB (_bfa .ColorNonStroking );if _bfc !=nil {_fc .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",_bfc );
|
|
return _bfc ;};_ebea ,_af :=_aeg .(*_bf .PdfColorDeviceRGB );if !_af {_fc .Log .Debug ("\u0045\u0072\u0072\u006fr \u0063\u006f\u006e\u0076\u0065\u0072\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006co\u0072");return _bfc ;};_ade .SetRGBA (_ebea .R (),_ebea .G (),_ebea .B (),1);
|
|
_ade .SetFillRule (_bg .FillRuleEvenOdd );_ade .Fill ();case "\u0042":_dde ,_dda :=_bfa .ColorspaceNonStroking .ColorToRGB (_bfa .ColorNonStroking );if _dda !=nil {_fc .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",_dda );
|
|
return _dda ;};switch _dec :=_dde .(type ){case *_bf .PdfColorDeviceRGB :_ade .SetRGBA (_dec .R (),_dec .G (),_dec .B (),1);_ade .SetFillRule (_bg .FillRuleWinding );_ade .FillPreserve ();_dde ,_dda =_bfa .ColorspaceStroking .ColorToRGB (_bfa .ColorStroking );
|
|
if _dda !=nil {_fc .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",_dda );return _dda ;};if _ac ,_ffc :=_dde .(*_bf .PdfColorDeviceRGB );_ffc {_ade .SetRGBA (_ac .R (),_ac .G (),_ac .B (),1);
|
|
_ade .Stroke ();};case *_bf .PdfColorPattern :_ade .SetFillRule (_bg .FillRuleWinding );_ade .Fill ();_ade .StrokePattern ();};case "\u0042\u002a":_ddb ,_ece :=_bfa .ColorspaceNonStroking .ColorToRGB (_bfa .ColorNonStroking );if _ece !=nil {_fc .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",_ece );
|
|
return _ece ;};switch _egde :=_ddb .(type ){case *_bf .PdfColorDeviceRGB :_ade .SetRGBA (_egde .R (),_egde .G (),_egde .B (),1);_ade .SetFillRule (_bg .FillRuleEvenOdd );_ade .FillPreserve ();_ddb ,_ece =_bfa .ColorspaceStroking .ColorToRGB (_bfa .ColorStroking );
|
|
if _ece !=nil {_fc .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",_ece );return _ece ;};if _ecf ,_bdcg :=_ddb .(*_bf .PdfColorDeviceRGB );
|
|
_bdcg {_ade .SetRGBA (_ecf .R (),_ecf .G (),_ecf .B (),1);_ade .Stroke ();};case *_bf .PdfColorPattern :_ade .SetFillRule (_bg .FillRuleEvenOdd );_ade .Fill ();_ade .StrokePattern ();};case "\u0062":_ade .ClosePath ();_cgc ,_ggf :=_bfa .ColorspaceNonStroking .ColorToRGB (_bfa .ColorNonStroking );
|
|
if _ggf !=nil {_fc .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",_ggf );return _ggf ;};switch _fec :=_cgc .(type ){case *_bf .PdfColorDeviceRGB :_ade .SetRGBA (_fec .R (),_fec .G (),_fec .B (),1);
|
|
_ade .NewSubPath ();_ade .SetFillRule (_bg .FillRuleWinding );_ade .FillPreserve ();_cgc ,_ggf =_bfa .ColorspaceStroking .ColorToRGB (_bfa .ColorStroking );if _ggf !=nil {_fc .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",_ggf );
|
|
return _ggf ;};if _beb ,_bgac :=_cgc .(*_bf .PdfColorDeviceRGB );_bgac {_ade .SetRGBA (_beb .R (),_beb .G (),_beb .B (),1);_ade .Stroke ();};case *_bf .PdfColorPattern :_ade .NewSubPath ();_ade .SetFillRule (_bg .FillRuleWinding );_ade .Fill ();_ade .StrokePattern ();
|
|
};case "\u0062\u002a":_ade .ClosePath ();_dfe ,_eda :=_bfa .ColorspaceNonStroking .ColorToRGB (_bfa .ColorNonStroking );if _eda !=nil {_fc .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",_eda );
|
|
return _eda ;};switch _cdd :=_dfe .(type ){case *_bf .PdfColorDeviceRGB :_ade .SetRGBA (_cdd .R (),_cdd .G (),_cdd .B (),1);_ade .NewSubPath ();_ade .SetFillRule (_bg .FillRuleEvenOdd );_ade .FillPreserve ();_dfe ,_eda =_bfa .ColorspaceStroking .ColorToRGB (_bfa .ColorStroking );
|
|
if _eda !=nil {_fc .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",_eda );return _eda ;};if _cec ,_eec :=_dfe .(*_bf .PdfColorDeviceRGB );
|
|
_eec {_ade .SetRGBA (_cec .R (),_cec .G (),_cec .B (),1);_ade .Stroke ();};case *_bf .PdfColorPattern :_ade .NewSubPath ();_ade .SetFillRule (_bg .FillRuleEvenOdd );_ade .Fill ();_ade .StrokePattern ();};case "\u006e":_ade .ClearPath ();case "\u0057":_ade .SetFillRule (_bg .FillRuleWinding );
|
|
_ade .ClipPreserve ();case "\u0057\u002a":_ade .SetFillRule (_bg .FillRuleEvenOdd );_ade .ClipPreserve ();case "\u0072\u0067":_ddbg ,_cadd :=_bfa .ColorNonStroking .(*_bf .PdfColorDeviceRGB );if !_cadd {_fc .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",_bfa .ColorNonStroking );
|
|
return nil ;};_ade .SetFillRGBA (_ddbg .R (),_ddbg .G (),_ddbg .B (),1);case "\u0052\u0047":_cacgg ,_dfeg :=_bfa .ColorStroking .(*_bf .PdfColorDeviceRGB );if !_dfeg {_fc .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",_bfa .ColorStroking );
|
|
return nil ;};_ade .SetStrokeRGBA (_cacgg .R (),_cacgg .G (),_cacgg .B (),1);case "\u006b":_aba ,_gfd :=_bfa .ColorNonStroking .(*_bf .PdfColorDeviceCMYK );if !_gfd {_fc .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",_bfa .ColorNonStroking );
|
|
return nil ;};_bef ,_ecg :=_bfa .ColorspaceNonStroking .ColorToRGB (_aba );if _ecg !=nil {_fc .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",_bfa .ColorNonStroking );
|
|
return nil ;};_ffg ,_gfd :=_bef .(*_bf .PdfColorDeviceRGB );if !_gfd {_fc .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",_bef );return nil ;
|
|
};_ade .SetFillRGBA (_ffg .R (),_ffg .G (),_ffg .B (),1);case "\u004b":_acb ,_ege :=_bfa .ColorStroking .(*_bf .PdfColorDeviceCMYK );if !_ege {_fc .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",_bfa .ColorStroking );
|
|
return nil ;};_ddd ,_aed :=_bfa .ColorspaceStroking .ColorToRGB (_acb );if _aed !=nil {_fc .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",_bfa .ColorStroking );
|
|
return nil ;};_bdfc ,_ege :=_ddd .(*_bf .PdfColorDeviceRGB );if !_ege {_fc .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",_ddd );return nil ;
|
|
};_ade .SetStrokeRGBA (_bdfc .R (),_bdfc .G (),_bdfc .B (),1);case "\u0067":_afe ,_bea :=_bfa .ColorNonStroking .(*_bf .PdfColorDeviceGray );if !_bea {_fc .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",_bfa .ColorNonStroking );
|
|
return nil ;};_bgf ,_ggc :=_bfa .ColorspaceNonStroking .ColorToRGB (_afe );if _ggc !=nil {_fc .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",_bfa .ColorNonStroking );
|
|
return nil ;};_geb ,_bea :=_bgf .(*_bf .PdfColorDeviceRGB );if !_bea {_fc .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",_bgf );return nil ;
|
|
};_ade .SetFillRGBA (_geb .R (),_geb .G (),_geb .B (),1);case "\u0047":_begd ,_afg :=_bfa .ColorStroking .(*_bf .PdfColorDeviceGray );if !_afg {_fc .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",_bfa .ColorStroking );
|
|
return nil ;};_cgf ,_bdfb :=_bfa .ColorspaceStroking .ColorToRGB (_begd );if _bdfb !=nil {_fc .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",_bfa .ColorStroking );
|
|
return nil ;};_aadb ,_afg :=_cgf .(*_bf .PdfColorDeviceRGB );if !_afg {_fc .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",_cgf );return nil ;
|
|
};_ade .SetStrokeRGBA (_aadb .R (),_aadb .G (),_aadb .B (),1);case "\u0063\u0073":if len (_bdb .Params )> 0{if _bdfd ,_fgf :=_ag .GetName (_bdb .Params [0]);_fgf &&_bdfd .String ()=="\u0050a\u0074\u0074\u0065\u0072\u006e"{break ;};};_cdbf ,_dfd :=_bfa .ColorspaceNonStroking .ColorToRGB (_bfa .ColorNonStroking );
|
|
if _dfd !=nil {_fc .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",_bfa .ColorNonStroking );return nil ;};_daa ,_begf :=_cdbf .(*_bf .PdfColorDeviceRGB );
|
|
if !_begf {_fc .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",_cdbf );return nil ;};_ade .SetFillRGBA (_daa .R (),_daa .G (),_daa .B (),1);
|
|
case "\u0073\u0063":_dfg ,_bed :=_bfa .ColorspaceNonStroking .ColorToRGB (_bfa .ColorNonStroking );if _bed !=nil {_fc .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",_bfa .ColorNonStroking );
|
|
return nil ;};_fef ,_efe :=_dfg .(*_bf .PdfColorDeviceRGB );if !_efe {_fc .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 ;
|
|
};_ade .SetFillRGBA (_fef .R (),_fef .G (),_fef .B (),1);case "\u0073\u0063\u006e":if len (_bdb .Params )> 0&&len (_ggg .Params )> 0{if _acg ,_ded :=_ag .GetName (_ggg .Params [0]);_ded &&_acg .String ()=="\u0050a\u0074\u0074\u0065\u0072\u006e"{if _fdb ,_gc :=_ag .GetName (_bdb .Params [0]);
|
|
_gc {_deg ,_cdf :=_aggb .processGradient (_ade ,_bdb ,_aadd ,_fdb );if _cdf !=nil {_fc .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",_cdf );
|
|
break ;};if _deg ==nil {_fc .Log .Debug ("\u0055\u006ek\u006e\u006f\u0077n\u0020\u0067\u0072\u0061\u0064\u0069\u0065\u006e\u0074");break ;};_ade .SetFillStyle (_deg );_ade .SetStrokeStyle (_deg );break ;};};};_gdb ,_egg :=_bfa .ColorspaceNonStroking .ColorToRGB (_bfa .ColorNonStroking );
|
|
if _egg !=nil {_fc .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",_bfa .ColorNonStroking );return nil ;};_gae ,_dgfc :=_gdb .(*_bf .PdfColorDeviceRGB );
|
|
if !_dgfc {_fc .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",_gdb );return nil ;};_ade .SetFillRGBA (_gae .R (),_gae .G (),_gae .B (),1);
|
|
case "\u0043\u0053":if len (_bdb .Params )> 0{if _bedd ,_dbc :=_ag .GetName (_bdb .Params [0]);_dbc &&_bedd .String ()=="\u0050a\u0074\u0074\u0065\u0072\u006e"{break ;};};_eea ,_cgd :=_bfa .ColorspaceStroking .ColorToRGB (_bfa .ColorStroking );if _cgd !=nil {_fc .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",_bfa .ColorStroking );
|
|
return nil ;};_gcb ,_bdcb :=_eea .(*_bf .PdfColorDeviceRGB );if !_bdcb {_fc .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",_eea );return nil ;
|
|
};_ade .SetStrokeRGBA (_gcb .R (),_gcb .G (),_gcb .B (),1);case "\u0053\u0043":_gdfg ,_eaec :=_bfa .ColorspaceStroking .ColorToRGB (_bfa .ColorStroking );if _eaec !=nil {_fc .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",_bfa .ColorStroking );
|
|
return nil ;};_gef ,_bc :=_gdfg .(*_bf .PdfColorDeviceRGB );if !_bc {_fc .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",_gdfg );return nil ;
|
|
};_ade .SetStrokeRGBA (_gef .R (),_gef .G (),_gef .B (),1);case "\u0053\u0043\u004e":if len (_bdb .Params )> 0&&len (_ggg .Params )> 0{if _fgg ,_aef :=_ag .GetName (_ggg .Params [0]);_aef &&_fgg .String ()=="\u0050a\u0074\u0074\u0065\u0072\u006e"{if _ddc ,_efg :=_ag .GetName (_bdb .Params [0]);
|
|
_efg {_fae ,_cagf :=_aggb .processGradient (_ade ,_bdb ,_aadd ,_ddc );if _cagf !=nil {_fc .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",_cagf );
|
|
break ;};if _fae ==nil {_fc .Log .Debug ("\u0055\u006ek\u006e\u006f\u0077n\u0020\u0067\u0072\u0061\u0064\u0069\u0065\u006e\u0074");break ;};_ade .SetFillStyle (_fae );_ade .SetStrokeStyle (_fae );break ;};};};_caa ,_dac :=_bfa .ColorspaceStroking .ColorToRGB (_bfa .ColorStroking );
|
|
if _dac !=nil {_fc .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",_bfa .ColorStroking );return nil ;};_adg ,_bffe :=_caa .(*_bf .PdfColorDeviceRGB );
|
|
if !_bffe {_fc .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",_caa );return nil ;};_ade .SetStrokeRGBA (_adg .R (),_adg .G (),_adg .B (),1);
|
|
case "\u0073\u0068":if len (_bdb .Params )!=1{_fc .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 ;};_gefc ,_acgb :=_ag .GetName (_bdb .Params [0]);
|
|
if !_acgb {_fc .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 ;};_agb ,_acgb :=_aadd .GetShadingByName (*_gefc );if !_acgb {_fc .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 ;};_geee ,_bcg ,_fdbd :=_aggb .processShading (_ade ,_agb );if _fdbd !=nil {_fc .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",_fdbd );
|
|
break ;};if _geee ==nil {_fc .Log .Debug ("\u0055\u006ek\u006e\u006f\u0077n\u0020\u0067\u0072\u0061\u0064\u0069\u0065\u006e\u0074");break ;};_edc ,_fdbd :=_bcg .ToFloat64Array ();if _fdbd !=nil {_fc .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",_fdbd );
|
|
break ;};_ade .DrawRectangle (_edc [0],_edc [1],_edc [2],_edc [3]);_ade .NewSubPath ();_ade .SetFillStyle (_geee );_ade .SetStrokeStyle (_geee );_ade .Fill ();case "\u0044\u006f":if len (_bdb .Params )!=1{return _ega ;};_dba ,_gfg :=_ag .GetName (_bdb .Params [0]);
|
|
if !_gfg {return _fcc ;};_ ,_eff :=_aadd .GetXObjectByName (*_dba );switch _eff {case _bf .XObjectTypeImage :_fc .Log .Debug ("\u0058\u004f\u0062\u006a\u0065\u0063\u0074\u0020\u0069\u006d\u0061\u0067e\u003a\u0020\u0025\u0073",_dba .String ());_bgge ,_fecb :=_aadd .GetXObjectImageByName (*_dba );
|
|
if _fecb !=nil {return _fecb ;};_efb ,_fecb :=_bgge .ToImage ();if _fecb !=nil {_fc .Log .Debug ("\u0052\u0065\u006e\u0064\u0065\u0072\u0069\u006e\u0067\u0020\u0072\u0065\u0073\u0075\u006c\u0074\u0020\u006day\u0020b\u0065\u0020\u0069\u006e\u0063\u006f\u006d\u0070\u006c\u0065\u0074\u0065.\u0020\u0049\u006d\u0061\u0067\u0065\u0020\u0063\u006f\u006e\u0076\u0065\u0072\u0073\u0069\u006f\u006e \u0065\u0072\u0072\u006f\u0072\u003a\u0020\u0025\u0076",_fecb );
|
|
return nil ;};if _bacg :=_bgge .ColorSpace ;_bacg !=nil {var _cedd bool ;switch _bacg .(type ){case *_bf .PdfColorspaceSpecialIndexed :_cedd =true ;};if _cedd {if _fgc ,_bgb :=_bacg .ImageToRGB (*_efb );_bgb !=nil {_fc .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 {_efb =&_fgc ;};};};_caeb :=_ade .FillPattern ().ColorAt (0,0);var _ecd _fb .Image ;if _bgge .Mask !=nil {if _ecd ,_fecb =_bdbd (_bgge .Mask ,_caeb );_fecb !=nil {_fc .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 _bgge .SMask !=nil {if _ecd ,_fecb =_dea (_bgge .SMask ,_caeb );_fecb !=nil {_fc .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 _dfb _fb .Image ;if _gfe ,_ :=_ag .GetBoolVal (_bgge .ImageMask );_gfe {_dfb =_efgg (_efb ,_caeb );}else {_dfb ,_fecb =_efb .ToGoImage ();if _fecb !=nil {_fc .Log .Debug ("\u0052\u0065\u006e\u0064\u0065\u0072\u0069\u006e\u0067\u0020\u0072\u0065\u0073\u0075\u006c\u0074\u0020\u006day\u0020b\u0065\u0020\u0069\u006e\u0063\u006f\u006d\u0070\u006c\u0065\u0074\u0065.\u0020\u0049\u006d\u0061\u0067\u0065\u0020\u0063\u006f\u006e\u0076\u0065\u0072\u0073\u0069\u006f\u006e \u0065\u0072\u0072\u006f\u0072\u003a\u0020\u0025\u0076",_fecb );
|
|
return nil ;};};if _ecd !=nil {_dfb =_cdg (_dfb ,_ecd );};_add :=_dfb .Bounds ();_ade .Push ();_ade .Scale (1.0/float64 (_add .Dx ()),-1.0/float64 (_add .Dy ()));_ade .DrawImageAnchored (_dfb ,0,0,0,1);_ade .Pop ();case _bf .XObjectTypeForm :_fc .Log .Debug ("\u0058\u004fb\u006a\u0065\u0063t\u0020\u0066\u006f\u0072\u006d\u003a\u0020\u0025\u0073",_dba .String ());
|
|
_dee ,_degf :=_aadd .GetXObjectFormByName (*_dba );if _degf !=nil {return _degf ;};_bedda ,_degf :=_dee .GetContentStream ();if _degf !=nil {return _degf ;};_beag :=_dee .Resources ;if _beag ==nil {_beag =_aadd ;};_ade .Push ();if _dee .Matrix !=nil {_dbfc ,_aafc :=_ag .GetArray (_dee .Matrix );
|
|
if !_aafc {return _fcc ;};_gbd ,_abac :=_ag .GetNumbersAsFloat (_dbfc .Elements ());if _abac !=nil {return _abac ;};if len (_gbd )!=6{return _ega ;};_aeb :=_cg .NewMatrix (_gbd [0],_gbd [1],_gbd [2],_gbd [3],_gbd [4],_gbd [5]);_ade .SetMatrix (_ade .Matrix ().Mult (_aeb ));
|
|
};if _dee .BBox !=nil {_aedd ,_dcga :=_ag .GetArray (_dee .BBox );if !_dcga {return _fcc ;};_ddbd ,_bdg :=_ag .GetNumbersAsFloat (_aedd .Elements ());if _bdg !=nil {return _bdg ;};if len (_ddbd )!=4{_fc .Log .Debug ("\u004c\u0065\u006e\u0020\u003d\u0020\u0025\u0064",len (_ddbd ));
|
|
return _ega ;};_ade .DrawRectangle (_ddbd [0],_ddbd [1],_ddbd [2]-_ddbd [0],_ddbd [3]-_ddbd [1]);_ade .SetRGBA (1,0,0,1);_ade .Clip ();}else {_fc .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");
|
|
};_degf =_aggb .renderContentStream (_ade ,string (_bedda ),_beag );if _degf !=nil {return _degf ;};_ade .Pop ();};case "\u0042\u0049":if len (_bdb .Params )!=1{return _ega ;};_afa ,_fag :=_bdb .Params [0].(*_be .ContentStreamInlineImage );if !_fag {return nil ;
|
|
};_ceg ,_eac :=_afa .ToImage (_aadd );if _eac !=nil {_fc .Log .Debug ("\u0052\u0065\u006e\u0064\u0065\u0072\u0069\u006e\u0067\u0020\u0072\u0065\u0073\u0075\u006c\u0074\u0020\u006day\u0020b\u0065\u0020\u0069\u006e\u0063\u006f\u006d\u0070\u006c\u0065\u0074\u0065.\u0020\u0049\u006d\u0061\u0067\u0065\u0020\u0063\u006f\u006e\u0076\u0065\u0072\u0073\u0069\u006f\u006e \u0065\u0072\u0072\u006f\u0072\u003a\u0020\u0025\u0076",_eac );
|
|
return nil ;};_faae ,_eac :=_ceg .ToGoImage ();if _eac !=nil {_fc .Log .Debug ("\u0052\u0065\u006e\u0064\u0065\u0072\u0069\u006e\u0067\u0020\u0072\u0065\u0073\u0075\u006c\u0074\u0020\u006day\u0020b\u0065\u0020\u0069\u006e\u0063\u006f\u006d\u0070\u006c\u0065\u0074\u0065.\u0020\u0049\u006d\u0061\u0067\u0065\u0020\u0063\u006f\u006e\u0076\u0065\u0072\u0073\u0069\u006f\u006e \u0065\u0072\u0072\u006f\u0072\u003a\u0020\u0025\u0076",_eac );
|
|
return nil ;};_cddb :=_faae .Bounds ();_ade .Push ();_ade .Scale (1.0/float64 (_cddb .Dx ()),-1.0/float64 (_cddb .Dy ()));_ade .DrawImageAnchored (_faae ,0,0,0,1);_ade .Pop ();case "\u0042\u0054":_aad .Reset ();case "\u0045\u0054":_aad .Reset ();case "\u0054\u0072":if len (_bdb .Params )!=1{return _ega ;
|
|
};_adc ,_cgfe :=_ag .GetNumberAsFloat (_bdb .Params [0]);if _cgfe !=nil {return _cgfe ;};_aad .Tr =_bg .TextRenderingMode (_adc );case "\u0054\u004c":if len (_bdb .Params )!=1{return _ega ;};_ccg ,_bffc :=_ag .GetNumberAsFloat (_bdb .Params [0]);if _bffc !=nil {return _bffc ;
|
|
};_aad .Tl =_ccg ;case "\u0054\u0063":if len (_bdb .Params )!=1{return _ega ;};_bega ,_feb :=_ag .GetNumberAsFloat (_bdb .Params [0]);if _feb !=nil {return _feb ;};_fc .Log .Debug ("\u0054\u0063\u003a\u0020\u0025\u0076",_bega );_aad .Tc =_bega ;case "\u0054\u0077":if len (_bdb .Params )!=1{return _ega ;
|
|
};_bdgc ,_edd :=_ag .GetNumberAsFloat (_bdb .Params [0]);if _edd !=nil {return _edd ;};_fc .Log .Debug ("\u0054\u0077\u003a\u0020\u0025\u0076",_bdgc );_aad .Tw =_bdgc ;case "\u0054\u007a":if len (_bdb .Params )!=1{return _ega ;};_cecg ,_ecga :=_ag .GetNumberAsFloat (_bdb .Params [0]);
|
|
if _ecga !=nil {return _ecga ;};_aad .Th =_cecg ;case "\u0054\u0073":if len (_bdb .Params )!=1{return _ega ;};_ebb ,_aae :=_ag .GetNumberAsFloat (_bdb .Params [0]);if _aae !=nil {return _aae ;};_aad .Ts =_ebb ;case "\u0054\u0064":if len (_bdb .Params )!=2{return _ega ;
|
|
};_gfb ,_fff :=_ag .GetNumbersAsFloat (_bdb .Params );if _fff !=nil {return _fff ;};_fc .Log .Debug ("\u0054\u0064\u003a\u0020\u0025\u0076",_gfb );_aad .ProcTd (_gfb [0],_gfb [1]);case "\u0054\u0044":if len (_bdb .Params )!=2{return _ega ;};_gcc ,_ddde :=_ag .GetNumbersAsFloat (_bdb .Params );
|
|
if _ddde !=nil {return _ddde ;};_fc .Log .Debug ("\u0054\u0044\u003a\u0020\u0025\u0076",_gcc );_aad .ProcTD (_gcc [0],_gcc [1]);case "\u0054\u002a":_aad .ProcTStar ();case "\u0054\u006d":if len (_bdb .Params )!=6{return _ega ;};_bgd ,_beac :=_ag .GetNumbersAsFloat (_bdb .Params );
|
|
if _beac !=nil {return _beac ;};_fc .Log .Debug ("\u0054\u0065x\u0074\u0020\u006da\u0074\u0072\u0069\u0078\u003a\u0020\u0025\u002b\u0076",_bgd );_aad .ProcTm (_bgd [0],_bgd [1],_bgd [2],_bgd [3],_bgd [4],_bgd [5]);case "\u0027":if len (_bdb .Params )!=1{return _ega ;
|
|
};_cge ,_eag :=_ag .GetStringBytes (_bdb .Params [0]);if !_eag {return _fcc ;};_fc .Log .Debug ("\u0027\u0020\u0073t\u0072\u0069\u006e\u0067\u003a\u0020\u0025\u0073",string (_cge ));_aad .ProcQ (_cge ,_ade );case "\u0022":if len (_bdb .Params )!=3{return _ega ;
|
|
};_efga ,_dgd :=_ag .GetNumberAsFloat (_bdb .Params [0]);if _dgd !=nil {return _dgd ;};_aea ,_dgd :=_ag .GetNumberAsFloat (_bdb .Params [1]);if _dgd !=nil {return _dgd ;};_cda ,_fbeg :=_ag .GetStringBytes (_bdb .Params [2]);if !_fbeg {return _fcc ;};_aad .ProcDQ (_cda ,_efga ,_aea ,_ade );
|
|
case "\u0054\u006a":if len (_bdb .Params )!=1{return _ega ;};_gcbb ,_bag :=_ag .GetStringBytes (_bdb .Params [0]);if !_bag {return _fcc ;};_fc .Log .Debug ("\u0054j\u0020s\u0074\u0072\u0069\u006e\u0067\u003a\u0020\u0060\u0025\u0073\u0060",string (_gcbb ));
|
|
_aad .ProcTj (_gcbb ,_ade );case "\u0054\u004a":if len (_bdb .Params )!=1{return _ega ;};_agc ,_fbdg :=_ag .GetArray (_bdb .Params [0]);if !_fbdg {_fc .Log .Debug ("\u0054\u0079\u0070\u0065\u003a\u0020\u0025\u0054",_agc );return _fcc ;};_fc .Log .Debug ("\u0054\u004a\u0020\u0061\u0072\u0072\u0061\u0079\u003a\u0020\u0025\u002b\u0076",_agc );
|
|
for _ ,_gbcb :=range _agc .Elements (){switch _gdc :=_gbcb .(type ){case *_ag .PdfObjectString :if _gdc !=nil {_aad .ProcTj (_gdc .Bytes (),_ade );};case *_ag .PdfObjectFloat ,*_ag .PdfObjectInteger :_ebg ,_bfff :=_ag .GetNumberAsFloat (_gdc );if _bfff ==nil {_aad .Translate (-_ebg *0.001*_aad .Tf .Size *_aad .Th /100.0,0);
|
|
};};};case "\u0054\u0066":if len (_bdb .Params )!=2{return _ega ;};_fc .Log .Debug ("\u0025\u0023\u0076",_bdb .Params );_acbd ,_gdba :=_ag .GetName (_bdb .Params [0]);if !_gdba ||_acbd ==nil {_fc .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",_bdb .Params [0]);
|
|
return _fcc ;};_fc .Log .Debug ("\u0046\u006f\u006e\u0074\u0020\u006e\u0061\u006d\u0065\u003a\u0020\u0025\u0073",_acbd .String ());_ebff ,_bab :=_ag .GetNumberAsFloat (_bdb .Params [1]);if _bab !=nil {_fc .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",_bdb .Params [1]);
|
|
return _fcc ;};_fc .Log .Debug ("\u0046\u006f\u006e\u0074\u0020\u0073\u0069\u007a\u0065\u003a\u0020\u0025\u0076",_ebff );_gaed ,_fbegf :=_aadd .GetFontByName (*_acbd );if !_fbegf {_fc .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a\u0020\u0046\u006f\u006e\u0074\u0020\u0025s\u0020\u006e\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064",_acbd .String ());
|
|
return _b .New ("\u0066\u006f\u006e\u0074\u0020\u006e\u006f\u0074\u0020f\u006f\u0075\u006e\u0064");};_fc .Log .Debug ("\u0046\u006f\u006e\u0074\u003a\u0020\u0025\u0054",_gaed );_efgb ,_gdba :=_ag .GetDict (_gaed );if !_gdba {_fc .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 _fcc ;};_ebgg ,_bab :=_bf .NewPdfFontFromPdfObject (_efgb );if _bab !=nil {_fc .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 _bab ;};_bddd :=_ebgg .BaseFont ();if _bddd ==""{_bddd =_acbd .String ();};_fgd ,_gdba :=_gbc [_bddd ];if !_gdba {_fgd ,_bab =_bg .NewTextFont (_ebgg ,_ebff );if _bab !=nil {_fc .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a\u0020\u0025v",_bab );
|
|
};};if _fgd ==nil {if len (_bddd )> 7&&_bddd [6]=='+'{_bddd =_bddd [7:];};_aggd :=[]string {_bddd ,"\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 _ ,_ggca :=range _aggd {_fc .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",_ggca );if _fgd ,_gdba =_gbc [_ggca ];
|
|
_gdba {break ;};_edab :=_fbd .Match (_ggca );if _edab ==nil {_fc .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",_ggca );continue ;};_fgd ,_bab =_bg .NewTextFontFromPath (_edab .Filename ,_ebff );
|
|
if _bab !=nil {_fc .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",_edab .Filename );continue ;};_fc .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",_bddd ,_edab .Name ,_edab .Filename );
|
|
_gbc [_ggca ]=_fgd ;break ;};};if _fgd ==nil {_fc .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0063\u006f\u0075\u006c\u0064\u0020n\u006f\u0074\u0020\u0066\u0069\u006ed\u0020\u0061\u006e\u0079\u0020\u0073\u0075\u0069\u0074\u0061\u0062\u006c\u0065 \u0066\u006f\u006e\u0074");
|
|
return _b .New ("\u0063\u006f\u0075\u006c\u0064\u0020\u006e\u006f\u0074\u0020\u0066\u0069\u006e\u0064\u0020a\u006ey\u0020\u0073\u0075\u0069\u0074\u0061\u0062\u006c\u0065\u0020\u0066\u006f\u006e\u0074");};_aad .ProcTf (_fgd .WithSize (_ebff ,_ebgg ));case "\u0042\u004d\u0043","\u0042\u0044\u0043":case "\u0045\u004d\u0043":default:_fc .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",_bdb .Operand );
|
|
};_ggg =_bdb ;return nil ;});_aa =_eeb .Process (_cbb );if _aa !=nil {return _aa ;};return nil ;};
|
|
|
|
// PdfShadingType defines PDF shading types.
|
|
// Source: PDF32000_2008.pdf. Chapter 8.7.4.5
|
|
type PdfShadingType int64 ;
|
|
|
|
// 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 ;}; |