mirror of
https://github.com/unidoc/unipdf.git
synced 2025-04-26 13:48:55 +08:00
142 lines
37 KiB
Go
142 lines
37 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 (_f "errors";_gc "fmt";_cfe "github.com/adrg/sysfont";_cf "github.com/unidoc/unipdf/v3/common";_cc "github.com/unidoc/unipdf/v3/contentstream";_bb "github.com/unidoc/unipdf/v3/contentstream/draw";_bbf "github.com/unidoc/unipdf/v3/core";
|
|
_ffb "github.com/unidoc/unipdf/v3/internal/license";_ac "github.com/unidoc/unipdf/v3/internal/transform";_gg "github.com/unidoc/unipdf/v3/model";_db "github.com/unidoc/unipdf/v3/render/internal/context";_gf "github.com/unidoc/unipdf/v3/render/internal/context/imagerender";
|
|
_daf "golang.org/x/image/draw";_da "image";_fc "image/color";_g "image/draw";_c "image/jpeg";_fd "image/png";_a "math";_d "os";_ff "path/filepath";_b "strings";);
|
|
|
|
// NewImageDevice returns a new image device.
|
|
func NewImageDevice ()*ImageDevice {const _ad ="r\u0065\u006e\u0064\u0065r.\u004ee\u0077\u0049\u006d\u0061\u0067e\u0044\u0065\u0076\u0069\u0063\u0065";_ffb .TrackUse (_ad );return &ImageDevice {};};type renderer struct{_cfc float64 };func _agd (_agg string ,_bfde _da .Image )error {_gfgd ,_fbde :=_d .Create (_agg );
|
|
if _fbde !=nil {return _fbde ;};defer _gfgd .Close ();return _fd .Encode (_gfgd ,_bfde );};func (_fcg renderer )renderPage (_dfd _db .Context ,_fa *_gg .PdfPage ,_efc _ac .Matrix )error {_ce ,_gdf :=_fa .GetAllContentStreams ();if _gdf !=nil {return _gdf ;
|
|
};if _cd :=_efc ;!_cd .Identity (){_ce =_gc .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",_cd [0],_cd [1],_cd [3],_cd [4],_cd [6],_cd [7],_ce );
|
|
};_dfd .Translate (0,float64 (_dfd .Height ()));_dfd .Scale (1,-1);_dfd .Push ();_dfd .SetRGBA (1,1,1,1);_dfd .DrawRectangle (0,0,float64 (_dfd .Width ()),float64 (_dfd .Height ()));_dfd .Fill ();_dfd .Pop ();_dfd .SetLineWidth (1.0);_dfd .SetRGBA (0,0,0,1);
|
|
return _fcg .renderContentStream (_dfd ,_ce ,_fa .Resources );};func _dce (_dcc ,_ffa ,_ccc float64 )_bb .BoundingBox {return _bb .Path {Points :[]_bb .Point {_bb .NewPoint (0,0).Rotate (_ccc ),_bb .NewPoint (_dcc ,0).Rotate (_ccc ),_bb .NewPoint (0,_ffa ).Rotate (_ccc ),_bb .NewPoint (_dcc ,_ffa ).Rotate (_ccc )}}.GetBoundingBox ();
|
|
};func _dfdg (_cba ,_cceb _da .Image )_da .Image {_eafg ,_ccba :=_cceb .Bounds ().Size (),_cba .Bounds ().Size ();_bdd ,_cfaf :=_eafg .X ,_eafg .Y ;if _ccba .X > _bdd {_bdd =_ccba .X ;};if _ccba .Y > _cfaf {_cfaf =_ccba .Y ;};_bfda :=_da .Rect (0,0,_bdd ,_cfaf );
|
|
if _eafg .X !=_bdd ||_eafg .Y !=_cfaf {_cbg :=_da .NewRGBA (_bfda );_daf .BiLinear .Scale (_cbg ,_bfda ,_cba ,_cceb .Bounds (),_daf .Over ,nil );_cceb =_cbg ;};if _ccba .X !=_bdd ||_ccba .Y !=_cfaf {_ebfe :=_da .NewRGBA (_bfda );_daf .BiLinear .Scale (_ebfe ,_bfda ,_cba ,_cba .Bounds (),_daf .Over ,nil );
|
|
_cba =_ebfe ;};_ecdf :=_da .NewRGBA (_bfda );_daf .DrawMask (_ecdf ,_bfda ,_cba ,_da .Point {},_cceb ,_da .Point {},_daf .Over );return _ecdf ;};
|
|
|
|
// RenderToPath converts the specified PDF page into an image and saves the
|
|
// result at the specified location.
|
|
func (_ace *ImageDevice )RenderToPath (page *_gg .PdfPage ,outputPath string )error {_gag ,_dba :=_ace .Render (page );if _dba !=nil {return _dba ;};_gec :=_b .ToLower (_ff .Ext (outputPath ));if _gec ==""{return _f .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 _gec {case "\u002e\u0070\u006e\u0067":return _agd (outputPath ,_gag );case "\u002e\u006a\u0070\u0067","\u002e\u006a\u0070e\u0067":return _eeb (outputPath ,_gag ,100);};return _gc .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",_gec );
|
|
};func _eeb (_fecb string ,_dgc _da .Image ,_dga int )error {_dgba ,_gcc :=_d .Create (_fecb );if _gcc !=nil {return _gcc ;};defer _dgba .Close ();return _c .Encode (_dgba ,_dgc ,&_c .Options {Quality :_dga });};
|
|
|
|
// 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 ;};var (_dbc =_f .New ("\u0074\u0079p\u0065\u0020\u0063h\u0065\u0063\u006b\u0020\u0065\u0072\u0072\u006f\u0072");_bgb =_f .New ("\u0072\u0061\u006e\u0067\u0065\u0020\u0063\u0068\u0065\u0063\u006b\u0020e\u0072\u0072\u006f\u0072"););func (_gcb renderer )renderContentStream (_gff _db .Context ,_cdc string ,_aeb *_gg .PdfPageResources )error {_bga ,_cfea :=_cc .NewContentStreamParser (_cdc ).Parse ();
|
|
if _cfea !=nil {return _cfea ;};_ea :=_gff .TextState ();_ea .GlobalScale =_gcb ._cfc ;_cg :=map[string ]*_db .TextFont {};_eb :=_cfe .NewFinder (&_cfe .FinderOpts {Extensions :[]string {"\u002e\u0074\u0074\u0066","\u002e\u0074\u0074\u0063"}});_dea :=_cc .NewContentStreamProcessor (*_bga );
|
|
_dea .AddHandler (_cc .HandlerConditionEnumAllOperands ,"",func (_ec *_cc .ContentStreamOperation ,_eca _cc .GraphicsState ,_cfca *_gg .PdfPageResources )error {_cf .Log .Debug ("\u0050\u0072\u006f\u0063\u0065\u0073\u0073\u0069\u006e\u0067\u0020\u0025\u0073",_ec .Operand );
|
|
switch _ec .Operand {case "\u0071":_gff .Push ();case "\u0051":_gff .Pop ();_ea =_gff .TextState ();case "\u0063\u006d":if len (_ec .Params )!=6{return _bgb ;};_ee ,_ggg :=_bbf .GetNumbersAsFloat (_ec .Params );if _ggg !=nil {return _ggg ;};_ca :=_ac .NewMatrix (_ee [0],_ee [1],_ee [2],_ee [3],_ee [4],_ee [5]);
|
|
_cf .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",_ca );_gff .SetMatrix (_gff .Matrix ().Mult (_ca ));case "\u0077":if len (_ec .Params )!=1{return _bgb ;
|
|
};_dg ,_fag :=_bbf .GetNumbersAsFloat (_ec .Params );if _fag !=nil {return _fag ;};_gff .SetLineWidth (_dg [0]);case "\u004a":if len (_ec .Params )!=1{return _bgb ;};_gac ,_bd :=_bbf .GetIntVal (_ec .Params [0]);if !_bd {return _dbc ;};switch _gac {case 0:_gff .SetLineCap (_db .LineCapButt );
|
|
case 1:_gff .SetLineCap (_db .LineCapRound );case 2:_gff .SetLineCap (_db .LineCapSquare );default:_cf .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",_gac );
|
|
return _bgb ;};case "\u006a":if len (_ec .Params )!=1{return _bgb ;};_cgg ,_eac :=_bbf .GetIntVal (_ec .Params [0]);if !_eac {return _dbc ;};switch _cgg {case 0:_gff .SetLineJoin (_db .LineJoinBevel );case 1:_gff .SetLineJoin (_db .LineJoinRound );case 2:_gff .SetLineJoin (_db .LineJoinBevel );
|
|
default:_cf .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",_cgg );return _bgb ;};case "\u004d":if len (_ec .Params )!=1{return _bgb ;};_ebc ,_ecg :=_bbf .GetNumbersAsFloat (_ec .Params );
|
|
if _ecg !=nil {return _ecg ;};_ =_ebc ;_cf .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 (_ec .Params )!=2{return _bgb ;};_ddg ,_fb :=_bbf .GetArray (_ec .Params [0]);
|
|
if !_fb {return _dbc ;};_aeea ,_fb :=_bbf .GetIntVal (_ec .Params [1]);if !_fb {return _dbc ;};_ece ,_eff :=_bbf .GetNumbersAsFloat (_ddg .Elements ());if _eff !=nil {return _eff ;};_gff .SetDash (_ece ...);_ =_aeea ;_cf .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":_cf .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":_cf .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 (_ec .Params )!=1{return _bgb ;};_fdf ,_acd :=_bbf .GetName (_ec .Params [0]);if !_acd {return _dbc ;};if _fdf ==nil {return _bgb ;};_gedf ,_acd :=_cfca .GetExtGState (*_fdf );if !_acd {_cf .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",*_fdf );
|
|
return _f .New ("\u0072e\u0073o\u0075\u0072\u0063\u0065\u0020n\u006f\u0074 \u0066\u006f\u0075\u006e\u0064");};_ecd ,_acd :=_bbf .GetDict (_gedf );if !_acd {_cf .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 _dbc ;};_cf .Log .Debug ("G\u0053\u0020\u0064\u0069\u0063\u0074\u003a\u0020\u0025\u0073",_ecd .String ());case "\u006d":if len (_ec .Params )!=2{_cf .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",_bgb );
|
|
return nil ;};_bae ,_acb :=_bbf .GetNumbersAsFloat (_ec .Params );if _acb !=nil {return _acb ;};_cf .Log .Debug ("M\u006f\u0076\u0065\u0020\u0074\u006f\u003a\u0020\u0025\u0076",_bae );_gff .NewSubPath ();_gff .MoveTo (_bae [0],_bae [1]);case "\u006c":if len (_ec .Params )!=2{_cf .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",_bgb );
|
|
return nil ;};_gcg ,_fda :=_bbf .GetNumbersAsFloat (_ec .Params );if _fda !=nil {return _fda ;};_gff .LineTo (_gcg [0],_gcg [1]);case "\u0063":if len (_ec .Params )!=6{return _bgb ;};_fe ,_ag :=_bbf .GetNumbersAsFloat (_ec .Params );if _ag !=nil {return _ag ;
|
|
};_cf .Log .Debug ("\u0043u\u0062\u0069\u0063\u0020\u0062\u0065\u007a\u0069\u0065\u0072\u0020p\u0061\u0072\u0061\u006d\u0073\u003a\u0020\u0025\u002b\u0076",_fe );_gff .CubicTo (_fe [0],_fe [1],_fe [2],_fe [3],_fe [4],_fe [5]);case "\u0076","\u0079":if len (_ec .Params )!=4{return _bgb ;
|
|
};_ffg ,_ccb :=_bbf .GetNumbersAsFloat (_ec .Params );if _ccb !=nil {return _ccb ;};_cf .Log .Debug ("\u0043u\u0062\u0069\u0063\u0020\u0062\u0065\u007a\u0069\u0065\u0072\u0020p\u0061\u0072\u0061\u006d\u0073\u003a\u0020\u0025\u002b\u0076",_ffg );_gff .QuadraticTo (_ffg [0],_ffg [1],_ffg [2],_ffg [3]);
|
|
case "\u0068":_gff .ClosePath ();_gff .NewSubPath ();case "\u0072\u0065":if len (_ec .Params )!=4{return _bgb ;};_dag ,_fbf :=_bbf .GetNumbersAsFloat (_ec .Params );if _fbf !=nil {return _fbf ;};_gff .DrawRectangle (_dag [0],_dag [1],_dag [2],_dag [3]);
|
|
_gff .NewSubPath ();case "\u0053":_dac ,_fac :=_eca .ColorspaceStroking .ColorToRGB (_eca .ColorStroking );if _fac !=nil {_cf .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",_fac );
|
|
return _fac ;};_cea ,_aca :=_dac .(*_gg .PdfColorDeviceRGB );if !_aca {_cf .Log .Debug ("\u0045\u0072\u0072\u006fr \u0063\u006f\u006e\u0076\u0065\u0072\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006co\u0072");return _fac ;};_gff .SetRGBA (_cea .R (),_cea .G (),_cea .B (),1);
|
|
_gff .Stroke ();case "\u0073":_bdb ,_eaf :=_eca .ColorspaceStroking .ColorToRGB (_eca .ColorStroking );if _eaf !=nil {_cf .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",_eaf );
|
|
return _eaf ;};_ecgd ,_ddd :=_bdb .(*_gg .PdfColorDeviceRGB );if !_ddd {_cf .Log .Debug ("\u0045\u0072\u0072\u006fr \u0063\u006f\u006e\u0076\u0065\u0072\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006co\u0072");return _eaf ;};_gff .ClosePath ();_gff .NewSubPath ();
|
|
_gff .SetRGBA (_ecgd .R (),_ecgd .G (),_ecgd .B (),1);_gff .Stroke ();case "\u0066","\u0046":_baef ,_cff :=_eca .ColorspaceNonStroking .ColorToRGB (_eca .ColorNonStroking );if _cff !=nil {_cf .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",_cff );
|
|
return _cff ;};_gfg ,_fbb :=_baef .(*_gg .PdfColorDeviceRGB );if !_fbb {_cf .Log .Debug ("\u0045\u0072\u0072\u006fr \u0063\u006f\u006e\u0076\u0065\u0072\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006co\u0072");return _cff ;};_gff .SetRGBA (_gfg .R (),_gfg .G (),_gfg .B (),1);
|
|
_gff .SetFillRule (_db .FillRuleWinding );_gff .Fill ();case "\u0066\u002a":_fce ,_ebd :=_eca .ColorspaceNonStroking .ColorToRGB (_eca .ColorNonStroking );if _ebd !=nil {_cf .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",_ebd );
|
|
return _ebd ;};_ege ,_gcd :=_fce .(*_gg .PdfColorDeviceRGB );if !_gcd {_cf .Log .Debug ("\u0045\u0072\u0072\u006fr \u0063\u006f\u006e\u0076\u0065\u0072\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006co\u0072");return _ebd ;};_gff .SetRGBA (_ege .R (),_ege .G (),_ege .B (),1);
|
|
_gff .SetFillRule (_db .FillRuleEvenOdd );_gff .Fill ();case "\u0042":_gae ,_dc :=_eca .ColorspaceNonStroking .ColorToRGB (_eca .ColorNonStroking );if _dc !=nil {_cf .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",_dc );
|
|
return _dc ;};_def :=_gae .(*_gg .PdfColorDeviceRGB );_gff .SetRGBA (_def .R (),_def .G (),_def .B (),1);_gff .SetFillRule (_db .FillRuleWinding );_gff .FillPreserve ();_gae ,_dc =_eca .ColorspaceStroking .ColorToRGB (_eca .ColorStroking );if _dc !=nil {_cf .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",_dc );
|
|
return _dc ;};_def =_gae .(*_gg .PdfColorDeviceRGB );_gff .SetRGBA (_def .R (),_def .G (),_def .B (),1);_gff .Stroke ();case "\u0042\u002a":_cdb ,_feb :=_eca .ColorspaceNonStroking .ColorToRGB (_eca .ColorNonStroking );if _feb !=nil {_cf .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",_feb );
|
|
return _feb ;};_fdfe :=_cdb .(*_gg .PdfColorDeviceRGB );_gff .SetRGBA (_fdfe .R (),_fdfe .G (),_fdfe .B (),1);_gff .SetFillRule (_db .FillRuleEvenOdd );_gff .FillPreserve ();_cdb ,_feb =_eca .ColorspaceStroking .ColorToRGB (_eca .ColorStroking );if _feb !=nil {_cf .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",_feb );
|
|
return _feb ;};_fdfe =_cdb .(*_gg .PdfColorDeviceRGB );_gff .SetRGBA (_fdfe .R (),_fdfe .G (),_fdfe .B (),1);_gff .Stroke ();case "\u0062":_ada ,_fde :=_eca .ColorspaceNonStroking .ColorToRGB (_eca .ColorNonStroking );if _fde !=nil {_cf .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",_fde );
|
|
return _fde ;};_ffc :=_ada .(*_gg .PdfColorDeviceRGB );_gff .SetRGBA (_ffc .R (),_ffc .G (),_ffc .B (),1);_gff .ClosePath ();_gff .NewSubPath ();_gff .SetFillRule (_db .FillRuleWinding );_gff .FillPreserve ();_ada ,_fde =_eca .ColorspaceStroking .ColorToRGB (_eca .ColorStroking );
|
|
if _fde !=nil {_cf .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",_fde );return _fde ;};_ffc =_ada .(*_gg .PdfColorDeviceRGB );_gff .SetRGBA (_ffc .R (),_ffc .G (),_ffc .B (),1);
|
|
_gff .Stroke ();case "\u0062\u002a":_gff .ClosePath ();_dgb ,_fee :=_eca .ColorspaceNonStroking .ColorToRGB (_eca .ColorNonStroking );if _fee !=nil {_cf .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0063\u006f\u006e\u0076\u0065r\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006c\u006f\u0072:\u0020\u0025\u0076",_fee );
|
|
return _fee ;};_bc :=_dgb .(*_gg .PdfColorDeviceRGB );_gff .SetRGBA (_bc .R (),_bc .G (),_bc .B (),1);_gff .NewSubPath ();_gff .SetFillRule (_db .FillRuleEvenOdd );_gff .FillPreserve ();_dgb ,_fee =_eca .ColorspaceStroking .ColorToRGB (_eca .ColorStroking );
|
|
if _fee !=nil {_cf .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0063\u006f\u006e\u0076\u0065r\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006c\u006f\u0072:\u0020\u0025\u0076",_fee );return _fee ;};_bc =_dgb .(*_gg .PdfColorDeviceRGB );_gff .SetRGBA (_bc .R (),_bc .G (),_bc .B (),1);
|
|
_gff .Stroke ();case "\u006e":_gff .ClearPath ();case "\u0057":_gff .SetFillRule (_db .FillRuleWinding );_gff .ClipPreserve ();case "\u0057\u002a":_gff .SetFillRule (_db .FillRuleEvenOdd );_gff .ClipPreserve ();case "\u0072\u0067":_gfd ,_aeef :=_eca .ColorNonStroking .(*_gg .PdfColorDeviceRGB );
|
|
if !_aeef {_cf .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",_eca .ColorNonStroking );return nil ;};_gff .SetFillRGBA (_gfd .R (),_gfd .G (),_gfd .B (),1);
|
|
case "\u0052\u0047":_dcd ,_dgd :=_eca .ColorStroking .(*_gg .PdfColorDeviceRGB );if !_dgd {_cf .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",_eca .ColorStroking );
|
|
return nil ;};_gff .SetStrokeRGBA (_dcd .R (),_dcd .G (),_dcd .B (),1);case "\u006b":_dgf ,_eef :=_eca .ColorNonStroking .(*_gg .PdfColorDeviceCMYK );if !_eef {_cf .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",_eca .ColorNonStroking );
|
|
return nil ;};_bff ,_ed :=_eca .ColorspaceNonStroking .ColorToRGB (_dgf );if _ed !=nil {_cf .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",_eca .ColorNonStroking );
|
|
return nil ;};_fca ,_eef :=_bff .(*_gg .PdfColorDeviceRGB );if !_eef {_cf .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",_bff );return nil ;
|
|
};_gff .SetFillRGBA (_fca .R (),_fca .G (),_fca .B (),1);case "\u004b":_eed ,_eacf :=_eca .ColorStroking .(*_gg .PdfColorDeviceCMYK );if !_eacf {_cf .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",_eca .ColorStroking );
|
|
return nil ;};_ccf ,_bda :=_eca .ColorspaceStroking .ColorToRGB (_eed );if _bda !=nil {_cf .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",_eca .ColorStroking );
|
|
return nil ;};_febc ,_eacf :=_ccf .(*_gg .PdfColorDeviceRGB );if !_eacf {_cf .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",_ccf );return nil ;
|
|
};_gff .SetStrokeRGBA (_febc .R (),_febc .G (),_febc .B (),1);case "\u0067":_egg ,_bed :=_eca .ColorNonStroking .(*_gg .PdfColorDeviceGray );if !_bed {_cf .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",_eca .ColorNonStroking );
|
|
return nil ;};_eacg ,_bbg :=_eca .ColorspaceNonStroking .ColorToRGB (_egg );if _bbg !=nil {_cf .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",_eca .ColorNonStroking );
|
|
return nil ;};_bfd ,_bed :=_eacg .(*_gg .PdfColorDeviceRGB );if !_bed {_cf .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",_eacg );return nil ;
|
|
};_gff .SetFillRGBA (_bfd .R (),_bfd .G (),_bfd .B (),1);case "\u0047":_ggf ,_bffd :=_eca .ColorStroking .(*_gg .PdfColorDeviceGray );if !_bffd {_cf .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",_eca .ColorStroking );
|
|
return nil ;};_ddc ,_ddde :=_eca .ColorspaceStroking .ColorToRGB (_ggf );if _ddde !=nil {_cf .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",_eca .ColorStroking );
|
|
return nil ;};_gee ,_bffd :=_ddc .(*_gg .PdfColorDeviceRGB );if !_bffd {_cf .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",_ddc );return nil ;
|
|
};_gff .SetStrokeRGBA (_gee .R (),_gee .G (),_gee .B (),1);case "\u0063\u0073","\u0073\u0063","\u0073\u0063\u006e":_fdac ,_ffbdb :=_eca .ColorspaceNonStroking .ColorToRGB (_eca .ColorNonStroking );if _ffbdb !=nil {_cf .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",_eca .ColorNonStroking );
|
|
return nil ;};_ab ,_ggb :=_fdac .(*_gg .PdfColorDeviceRGB );if !_ggb {_cf .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",_fdac );return nil ;
|
|
};_gff .SetFillRGBA (_ab .R (),_ab .G (),_ab .B (),1);case "\u0043\u0053","\u0053\u0043","\u0053\u0043\u004e":_fec ,_geg :=_eca .ColorspaceStroking .ColorToRGB (_eca .ColorStroking );if _geg !=nil {_cf .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",_eca .ColorStroking );
|
|
return nil ;};_cfg ,_bcd :=_fec .(*_gg .PdfColorDeviceRGB );if !_bcd {_cf .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 ;
|
|
};_gff .SetStrokeRGBA (_cfg .R (),_cfg .G (),_cfg .B (),1);case "\u0044\u006f":if len (_ec .Params )!=1{return _bgb ;};_dfda ,_gfdb :=_bbf .GetName (_ec .Params [0]);if !_gfdb {return _dbc ;};_ ,_dbe :=_cfca .GetXObjectByName (*_dfda );switch _dbe {case _gg .XObjectTypeImage :_cf .Log .Debug ("\u0058\u004f\u0062\u006a\u0065\u0063\u0074\u0020\u0069\u006d\u0061\u0067e\u003a\u0020\u0025\u0073",_dfda .String ());
|
|
_eeg ,_af :=_cfca .GetXObjectImageByName (*_dfda );if _af !=nil {return _af ;};_ecf ,_af :=_eeg .ToImage ();if _af !=nil {return _af ;};if _aa :=_eeg .ColorSpace ;_aa !=nil {var _bbe bool ;switch _aa .(type ){case *_gg .PdfColorspaceSpecialIndexed :_bbe =true ;
|
|
};if _bbe {if _ggd ,_gcba :=_aa .ImageToRGB (*_ecf );_gcba !=nil {_cf .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 =&_ggd ;};};};_dcg :=_gff .FillPattern ().ColorAt (0,0);var _gegb _da .Image ;if _eeg .Mask !=nil {if _gegb ,_af =_gdg (_eeg .Mask ,_dcg );_af !=nil {_cf .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");
|
|
};};var _afd _da .Image ;if _cad ,_ :=_bbf .GetBoolVal (_eeg .ImageMask );_cad {_afd =_dbaa (_ecf ,_dcg );}else {_afd ,_af =_ecf .ToGoImage ();if _af !=nil {return _af ;};};if _gegb !=nil {_afd =_dfdg (_afd ,_gegb );};_dbb :=_afd .Bounds ();_gff .Push ();
|
|
_gff .Scale (1.0/float64 (_dbb .Dx ()),-1.0/float64 (_dbb .Dy ()));_gff .DrawImageAnchored (_afd ,0,0,0,1);_gff .Pop ();case _gg .XObjectTypeForm :_cf .Log .Debug ("\u0058\u004fb\u006a\u0065\u0063t\u0020\u0066\u006f\u0072\u006d\u003a\u0020\u0025\u0073",_dfda .String ());
|
|
_effa ,_gdc :=_cfca .GetXObjectFormByName (*_dfda );if _gdc !=nil {return _gdc ;};_gecc ,_gdc :=_effa .GetContentStream ();if _gdc !=nil {return _gdc ;};_bee :=_effa .Resources ;if _bee ==nil {_bee =_cfca ;};_gff .Push ();if _effa .Matrix !=nil {_geef ,_abf :=_bbf .GetArray (_effa .Matrix );
|
|
if !_abf {return _dbc ;};_cfd ,_efg :=_bbf .GetNumbersAsFloat (_geef .Elements ());if _efg !=nil {return _efg ;};if len (_cfd )!=6{return _bgb ;};_cce :=_ac .NewMatrix (_cfd [0],_cfd [1],_cfd [2],_cfd [3],_cfd [4],_cfd [5]);_gff .SetMatrix (_gff .Matrix ().Mult (_cce ));
|
|
};if _effa .BBox !=nil {_beb ,_bdbb :=_bbf .GetArray (_effa .BBox );if !_bdbb {return _dbc ;};_aag ,_bgd :=_bbf .GetNumbersAsFloat (_beb .Elements ());if _bgd !=nil {return _bgd ;};if len (_aag )!=4{_cf .Log .Debug ("\u004c\u0065\u006e\u0020\u003d\u0020\u0025\u0064",len (_aag ));
|
|
return _bgb ;};_gff .DrawRectangle (_aag [0],_aag [1],_aag [2]-_aag [0],_aag [3]-_aag [1]);_gff .SetRGBA (1,0,0,1);_gff .Clip ();}else {_cf .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");
|
|
};_gdc =_gcb .renderContentStream (_gff ,string (_gecc ),_bee );if _gdc !=nil {return _gdc ;};_gff .Pop ();};case "\u0042\u0049":if len (_ec .Params )!=1{return _bgb ;};_dfg ,_gef :=_ec .Params [0].(*_cc .ContentStreamInlineImage );if !_gef {return nil ;
|
|
};_gb ,_gaf :=_dfg .ToImage (_cfca );if _gaf !=nil {return _gaf ;};_ebcd ,_gaf :=_gb .ToGoImage ();if _gaf !=nil {return _gaf ;};_abb :=_ebcd .Bounds ();_gff .Push ();_gff .Scale (1.0/float64 (_abb .Dx ()),-1.0/float64 (_abb .Dy ()));_gff .DrawImageAnchored (_ebcd ,0,0,0,1);
|
|
_gff .Pop ();case "\u0042\u0054":_ea .Reset ();case "\u0045\u0054":_ea .Reset ();case "\u0054\u0072":if len (_ec .Params )!=1{return _bgb ;};_afg ,_cadg :=_bbf .GetNumberAsFloat (_ec .Params [0]);if _cadg !=nil {return _cadg ;};_ea .Tr =_db .TextRenderingMode (_afg );
|
|
case "\u0054\u004c":if len (_ec .Params )!=1{return _bgb ;};_defa ,_eedf :=_bbf .GetNumberAsFloat (_ec .Params [0]);if _eedf !=nil {return _eedf ;};_ea .Tl =_defa ;case "\u0054\u0063":if len (_ec .Params )!=1{return _bgb ;};_ecaf ,_dcb :=_bbf .GetNumberAsFloat (_ec .Params [0]);
|
|
if _dcb !=nil {return _dcb ;};_cf .Log .Debug ("\u0054\u0063\u003a\u0020\u0025\u0076",_ecaf );_ea .Tc =_ecaf ;case "\u0054\u0077":if len (_ec .Params )!=1{return _bgb ;};_acag ,_ega :=_bbf .GetNumberAsFloat (_ec .Params [0]);if _ega !=nil {return _ega ;
|
|
};_cf .Log .Debug ("\u0054\u0077\u003a\u0020\u0025\u0076",_acag );_ea .Tw =_acag ;case "\u0054\u007a":if len (_ec .Params )!=1{return _bgb ;};_bcdg ,_cggb :=_bbf .GetNumberAsFloat (_ec .Params [0]);if _cggb !=nil {return _cggb ;};_ea .Th =_bcdg ;case "\u0054\u0073":if len (_ec .Params )!=1{return _bgb ;
|
|
};_fba ,_efa :=_bbf .GetNumberAsFloat (_ec .Params [0]);if _efa !=nil {return _efa ;};_ea .Ts =_fba ;case "\u0054\u0064":if len (_ec .Params )!=2{return _bgb ;};_ebde ,_fbdb :=_bbf .GetNumbersAsFloat (_ec .Params );if _fbdb !=nil {return _fbdb ;};_cf .Log .Debug ("\u0054\u0064\u003a\u0020\u0025\u0076",_ebde );
|
|
_ea .ProcTd (_ebde [0],_ebde [1]);case "\u0054\u0044":if len (_ec .Params )!=2{return _bgb ;};_ecdb ,_dagd :=_bbf .GetNumbersAsFloat (_ec .Params );if _dagd !=nil {return _dagd ;};_cf .Log .Debug ("\u0054\u0044\u003a\u0020\u0025\u0076",_ecdb );_ea .ProcTD (_ecdb [0],_ecdb [1]);
|
|
case "\u0054\u002a":_ea .ProcTStar ();case "\u0054\u006d":if len (_ec .Params )!=6{return _bgb ;};_bag ,_ebf :=_bbf .GetNumbersAsFloat (_ec .Params );if _ebf !=nil {return _ebf ;};_cf .Log .Debug ("\u0054\u0065x\u0074\u0020\u006da\u0074\u0072\u0069\u0078\u003a\u0020\u0025\u002b\u0076",_bag );
|
|
_ea .ProcTm (_bag [0],_bag [1],_bag [2],_bag [3],_bag [4],_bag [5]);case "\u0027":if len (_ec .Params )!=1{return _bgb ;};_cb ,_cfae :=_bbf .GetStringBytes (_ec .Params [0]);if !_cfae {return _dbc ;};_cf .Log .Debug ("\u0027\u0020\u0073t\u0072\u0069\u006e\u0067\u003a\u0020\u0025\u0073",string (_cb ));
|
|
_ea .ProcQ (_cb ,_gff );case "\u0022":if len (_ec .Params )!=3{return _bgb ;};_bcg ,_bfa :=_bbf .GetNumberAsFloat (_ec .Params [0]);if _bfa !=nil {return _bfa ;};_fdd ,_bfa :=_bbf .GetNumberAsFloat (_ec .Params [1]);if _bfa !=nil {return _bfa ;};_bgg ,_gaga :=_bbf .GetStringBytes (_ec .Params [2]);
|
|
if !_gaga {return _dbc ;};_ea .ProcDQ (_bgg ,_bcg ,_fdd ,_gff );case "\u0054\u006a":if len (_ec .Params )!=1{return _bgb ;};_bbgd ,_fagf :=_bbf .GetStringBytes (_ec .Params [0]);if !_fagf {return _dbc ;};_cf .Log .Debug ("\u0054j\u0020s\u0074\u0072\u0069\u006e\u0067\u003a\u0020\u0060\u0025\u0073\u0060",string (_bbgd ));
|
|
_ea .ProcTj (_bbgd ,_gff );case "\u0054\u004a":if len (_ec .Params )!=1{return _bgb ;};_bbcf ,_effc :=_bbf .GetArray (_ec .Params [0]);if !_effc {_cf .Log .Debug ("\u0054\u0079\u0070\u0065\u003a\u0020\u0025\u0054",_bbcf );return _dbc ;};_cf .Log .Debug ("\u0054\u004a\u0020\u0061\u0072\u0072\u0061\u0079\u003a\u0020\u0025\u002b\u0076",_bbcf );
|
|
for _ ,_bfc :=range _bbcf .Elements (){switch _fcf :=_bfc .(type ){case *_bbf .PdfObjectString :if _fcf !=nil {_ea .ProcTj (_fcf .Bytes (),_gff );};case *_bbf .PdfObjectFloat ,*_bbf .PdfObjectInteger :_egf ,_edd :=_bbf .GetNumberAsFloat (_fcf );if _edd ==nil {_ea .Translate (-_egf *0.001*_ea .Tf .Size *_ea .Th /100.0,0);
|
|
};};};case "\u0054\u0066":if len (_ec .Params )!=2{return _bgb ;};_cf .Log .Debug ("\u0025\u0023\u0076",_ec .Params );_dfb ,_efd :=_bbf .GetName (_ec .Params [0]);if !_efd ||_dfb ==nil {_cf .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",_ec .Params [0]);
|
|
return _dbc ;};_cf .Log .Debug ("\u0046\u006f\u006e\u0074\u0020\u006e\u0061\u006d\u0065\u003a\u0020\u0025\u0073",_dfb .String ());_abe ,_baa :=_bbf .GetNumberAsFloat (_ec .Params [1]);if _baa !=nil {_cf .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",_ec .Params [1]);
|
|
return _dbc ;};_cf .Log .Debug ("\u0046\u006f\u006e\u0074\u0020\u0073\u0069\u007a\u0065\u003a\u0020\u0025\u0076",_abe );_deb ,_geb :=_cfca .GetFontByName (*_dfb );if !_geb {_cf .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a\u0020\u0046\u006f\u006e\u0074\u0020\u0025s\u0020\u006e\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064",_dfb .String ());
|
|
return _f .New ("\u0066\u006f\u006e\u0074\u0020\u006e\u006f\u0074\u0020f\u006f\u0075\u006e\u0064");};_cf .Log .Debug ("\u0046\u006f\u006e\u0074\u003a\u0020\u0025\u0054",_deb );_fcfg ,_efd :=_bbf .GetDict (_deb );if !_efd {_cf .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 _dbc ;};_bgda ,_baa :=_gg .NewPdfFontFromPdfObject (_fcfg );if _baa !=nil {_cf .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 _baa ;};_cfcc :=_bgda .BaseFont ();if _cfcc ==""{_cfcc =_dfb .String ();};_bdc ,_efd :=_cg [_cfcc ];if !_efd {_bdc ,_baa =_db .NewTextFont (_bgda ,_abe );if _baa !=nil {_cf .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a\u0020\u0025v",_baa );};};if _bdc ==nil {if len (_cfcc )> 7&&_cfcc [6]=='+'{_cfcc =_cfcc [7:];
|
|
};_defc :=[]string {_cfcc ,"\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 _ ,_cee :=range _defc {_cf .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",_cee );
|
|
if _bdc ,_efd =_cg [_cee ];_efd {break ;};_ccbg :=_eb .Match (_cee );if _ccbg ==nil {_cf .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",_cee );continue ;
|
|
};_bdc ,_baa =_db .NewTextFontFromPath (_ccbg .Filename ,_abe );if _baa !=nil {_cf .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",_ccbg .Filename );
|
|
continue ;};_cf .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",_cfcc ,_ccbg .Name ,_ccbg .Filename );
|
|
_cg [_cee ]=_bdc ;break ;};};if _bdc ==nil {_cf .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 _f .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");};_ea .ProcTf (_bdc .WithSize (_abe ,_bgda ));case "\u0042\u004d\u0043","\u0042\u0044\u0043":case "\u0045\u004d\u0043":default:_cf .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",_ec .Operand );
|
|
};return nil ;});_cfea =_dea .Process (_aeb );if _cfea !=nil {return _cfea ;};return nil ;};
|
|
|
|
// Render converts the specified PDF page into an image and returns the result.
|
|
func (_df *ImageDevice )Render (page *_gg .PdfPage )(_da .Image ,error ){_dab ,_be :=page .GetMediaBox ();if _be !=nil {return nil ,_be ;};_dab .Normalize ();_fg :=page .CropBox ;var _ge ,_gd float64 ;if _fg !=nil {_fg .Normalize ();_ge ,_gd =_fg .Width (),_fg .Height ();
|
|
};_eg :=page .Rotate ;_ffbd ,_ba ,_cfa ,_egc :=_dab .Llx ,_dab .Lly ,_dab .Width (),_dab .Height ();_de :=_ac .IdentityMatrix ();if _eg !=nil &&*_eg %360!=0&&*_eg %90==0{_bbc :=-float64 (*_eg );_ef :=_dce (_cfa ,_egc ,_bbc );_de =_de .Translate ((_ef .Width -_cfa )/2+_cfa /2,(_ef .Height -_egc )/2+_egc /2).Rotate (_bbc *_a .Pi /180).Translate (-_cfa /2,-_egc /2);
|
|
_cfa ,_egc =_ef .Width ,_ef .Height ;if _fg !=nil {_dbf :=_dce (_ge ,_gd ,_bbc );_ge ,_gd =_dbf .Width ,_dbf .Height ;};};if _ffbd !=0||_ba !=0{_de =_de .Translate (-_ffbd ,-_ba );};_df ._cfc =1.0;if _df .OutputWidth !=0{_ga :=_cfa ;if _fg !=nil {_ga =_ge ;
|
|
};_df ._cfc =float64 (_df .OutputWidth )/_ga ;_cfa ,_egc ,_ge ,_gd =_cfa *_df ._cfc ,_egc *_df ._cfc ,_ge *_df ._cfc ,_gd *_df ._cfc ;_de =_ac .ScaleMatrix (_df ._cfc ,_df ._cfc ).Mult (_de );};_ade :=_gf .NewContext (int (_cfa ),int (_egc ));if _bg :=_df .renderPage (_ade ,page ,_de );
|
|
_bg !=nil {return nil ,_bg ;};_ae :=_ade .Image ();if _fg !=nil {_aee ,_bf :=(_fg .Llx -_ffbd )*_df ._cfc ,(_fg .Lly -_ba )*_df ._cfc ;_dd :=_da .Rect (0,0,int (_ge ),int (_gd ));_fgg :=_da .Pt (int (_aee ),int (_egc -_bf -_gd ));_ged :=_da .NewRGBA (_dd );
|
|
_g .Draw (_ged ,_dd ,_ae ,_fgg ,_g .Src );_ae =_ged ;};return _ae ,nil ;};func _dbaa (_gaeb *_gg .Image ,_gdd _fc .Color )_da .Image {_eefa ,_adg :=int (_gaeb .Width ),int (_gaeb .Height );_abed :=_da .NewRGBA (_da .Rect (0,0,_eefa ,_adg ));for _gfb :=0;
|
|
_gfb < _adg ;_gfb ++{for _gebc :=0;_gebc < _eefa ;_gebc ++{_cfad ,_gecg :=_gaeb .ColorAt (_gebc ,_gfb );if _gecg !=nil {_cf .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",_gebc ,_gfb );
|
|
continue ;};_gfff ,_fbfa ,_bdbg ,_ :=_cfad .RGBA ();var _fed _fc .Color ;if _gfff +_fbfa +_bdbg ==0{_fed =_gdd ;}else {_fed =_fc .Transparent ;};_abed .Set (_gebc ,_gfb ,_fed );};};return _abed ;};func _gdg (_cef _bbf .PdfObject ,_gegbb _fc .Color )(_da .Image ,error ){_ffca ,_acde :=_bbf .GetStream (_cef );
|
|
if !_acde {return nil ,nil ;};_aed ,_aea :=_gg .NewXObjectImageFromStream (_ffca );if _aea !=nil {return nil ,_aea ;};_fbdc ,_aea :=_aed .ToImage ();if _aea !=nil {return nil ,_aea ;};return _dbaa (_fbdc ,_gegbb ),nil ;}; |