diff --git a/cli/cmd/cmd.go b/cli/cmd/cmd.go index ebfca2f..a68483b 100644 --- a/cli/cmd/cmd.go +++ b/cli/cmd/cmd.go @@ -9,56 +9,56 @@ // 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 cmd ;import (_cg "context";_e "fmt";_da "github.com/mitchellh/go-homedir";_b "github.com/spf13/cobra";_db "github.com/spf13/viper";_eb "github.com/unidoc/unihtml/client";_ce "github.com/unidoc/unihtml/content";_dg "github.com/unidoc/unihtml/sizes"; -_ee "github.com/unidoc/unipdf/v3/common";_de "os";_a "path/filepath";_d "time";); - -// Execute adds all child commands to the root command and sets flags appropriately. -// This is called by main.main(). It only needs to happen once to the rootCmd. -func Execute (){if _dae :=_fea .Execute ();_dae !=nil {_e .Println (_dae );_de .Exit (1);};};var _fea =&_b .Command {Use :"\u0075n\u0069\u0068\u0074\u006d\u006c",Short :"\u0041\u0020\u0062\u0072\u0069\u0065\u0066\u0020\u0064\u0065\u0073\u0063\u0072i\u0070\u0074\u0069\u006f\u006e\u0020o\u0066\u0020\u0079\u006f\u0075\u0072\u0020\u0061\u0070\u0070\u006c\u0069\u0063a\u0074\u0069\u006f\u006e",Long :"\u0041\u0020\u006c\u006f\u006e\u0067\u0065\u0072\u0020\u0064\u0065\u0073c\u0072\u0069\u0070\u0074i\u006f\u006e\u0020\u0074\u0068\u0061\u0074\u0020s\u0070\u0061n\u0073\u0020\u006d\u0075\u006ct\u0069\u0070\u006c\u0065\u0020\u006c\u0069\u006e\u0065\u0073\u0020\u0061nd\u0020\u006c\u0069\u006b\u0065\u006cy\u0020\u0063\u006f\u006e\u0074\u0061\u0069\u006e\u0073\u000a\u0065\u0078\u0061\u006d\u0070\u006c\u0065\u0073\u0020\u0061n\u0064\u0020\u0075s\u0061\u0067\u0065\u0020\u006ff\u0020\u0075\u0073\u0069\u006eg \u0079\u006f\u0075\u0072\u0020\u0061\u0070\u0070\u006c\u0069\u0063\u0061\u0074\u0069\u006fn\u002e\u0020\u0046\u006f\u0072\u0020e\u0078\u0061\u006dp\u006c\u0065\u003a\u000a\u000a\u0043\u006f\u0062\u0072\u0061\u0020\u0069s\u0020\u0061\u0020\u0043L\u0049\u0020\u006c\u0069\u0062\u0072\u0061\u0072\u0079\u0020f\u006f\u0072\u0020\u0047\u006f\u0020t\u0068\u0061t\u0020\u0065\u006dp\u006f\u0077\u0065\u0072\u0073\u0020\u0061p\u0070\u006c\u0069\u0063\u0061\u0074\u0069\u006f\u006e\u0073\u002e\u000a\u0054\u0068\u0069\u0073\u0020\u0061\u0070p\u006c\u0069\u0063\u0061\u0074\u0069\u006f\u006e \u0069\u0073 \u0061\u0020\u0074\u006f\u006f\u006c\u0020\u0074o\u0020g\u0065\u006e\u0065\u0072a\u0074\u0065 \u0074\u0068e\u0020\u006e\u0065\u0065\u0064\u0065\u0064\u0020\u0066\u0069\u006ce\u0073\u000a\u0074\u006f\u0020\u0071\u0075\u0069\u0063\u006b\u006cy\u0020\u0063\u0072\u0065\u0061\u0074\u0065\u0020\u0061\u0020\u0043\u006f\u0062\u0072\u0061\u0020\u0061\u0070pl\u0069ca\u0074\u0069on\u002e"}; -func _df (){_eef :=_ee .LogLevelInfo ;if _ad {_eef =_ee .LogLevelDebug ;};if _cd {_eef =_ee .LogLevelTrace ;};_ee .Log =_ee .NewConsoleLogger (_eef );};var _ba string ;func init (){_fea .AddCommand (_g );_g .Flags ().IntP ("\u0070\u006f\u0072\u0074","\u0070",8080,"\u0050\u006f\u0072\u0074\u0020\u006f\u0066\u0020\u0074\u0068\u0065 \u0075\u006e\u0069\u0068\u0074\u006d\u006c\u0020\u0073\u0065r\u0076\u0065\u0072"); -_g .Flags ().String ("\u0068\u006f\u0073\u0074","\u006co\u0063\u0061\u006c\u0068\u006f\u0073t","\u0048\u006f\u0073t\u0020\u006e\u0061\u006de\u0020\u006f\u0066\u0020\u0074\u0068\u0065 \u0075\u006e\u0069\u0068\u0074\u006d\u006c\u0020\u0073\u0065\u0072\u0076\u0065\u0072"); -_g .Flags ().BoolP ("\u0068\u0074\u0074p\u0073","\u0073",false ,"\u0050\u0072o\u0074\u006f\u0063\u006fl\u0020\u0075s\u0065\u0064\u0020\u0069\u006e\u0020\u0073\u0065r\u0076\u0065\u0072\u0020\u0063\u006f\u006d\u006d\u0075\u006e\u0069\u0063a\u0074\u0069\u006f\u006e"); -_g .Flags ().StringP ("\u0070\u0072\u0065\u0066\u0069\u0078","\u0078","","\u0050u\u0062\u006ci\u0063\u0020\u0061\u0070i\u0020\u0070\u0072e\u0066\u0069\u0078\u0020\u0075\u0073\u0065\u0064\u0020by\u0020\u0074\u0068e\u0020\u0075n\u0069\u0068\u0074\u006d\u006c\u0020s\u0065\u0072v\u0065\u0072"); -_g .Flags ().Var (&_dc .PaperWidth ,"p\u0061\u0070\u0065\u0072\u002d\u0077\u0069\u0064\u0074\u0068","\u0073\u0065\u0074s \u0075\u0070\u0020\u0074\u0068\u0065\u0020\u0070\u0061\u0070\u0065\u0072\u002d\u0077\u0069\u0064\u0074\u0068");_g .Flags ().Var (&_dc .PaperHeight ,"\u0070\u0061\u0070e\u0072\u002d\u0068\u0065\u0069\u0067\u0068\u0074","\u0073e\u0074\u0073\u0020\u0075\u0070\u0020\u0074\u0068\u0065\u0020\u0070a\u0070\u0065\u0072\u002d\u0068\u0065\u0069\u0067\u0068\u0074"); -_g .Flags ().Var (&_dc .PageSize ,"\u0070\u0061\u0070\u0065\u0072\u002d\u0073\u0069\u007a\u0065","s\u0065\u0074\u0073\u0020up\u0020t\u0068\u0065\u0020\u0070\u0061g\u0065\u0020\u0073\u0069\u007a\u0065");_g .Flags ().Var (&_dc .Orientation ,"o\u0072\u0069\u0065\u006e\u0074\u0061\u0074\u0069\u006f\u006e","\u0073\u0065\u0074\u0073 \u0075\u0070\u0020\u0074\u0068\u0065\u0020\u0070\u0061\u0067e\u0020o\u0072\u0069\u0065\u006e\u0074\u0061\u0074i\u006f\u006e"); -_g .Flags ().Var (&_dc .MarginTop ,"\u006d\u0061\u0072\u0067\u0069\u006e\u002d\u0074\u006f\u0070","\u0073\u0065\u0074\u0073 u\u0070\u0020\u0074\u0068\u0065\u0020\u006d\u0061\u0072\u0067\u0069\u006e\u002d\u0074o\u0070");_g .Flags ().Var (&_dc .MarginBottom ,"\u006d\u0061\u0072\u0067\u0069\u006e\u002d\u0062\u006f\u0074\u0074\u006f\u006d","\u0073e\u0074\u0073\u0020\u0075p\u0020\u0074\u0068\u0065\u0020m\u0061r\u0067i\u006e\u002d\u0062\u006f\u0074\u0074\u006fm"); -_g .Flags ().Var (&_dc .MarginRight ,"\u006d\u0061\u0072g\u0069\u006e\u002d\u0072\u0069\u0067\u0068\u0074","\u0073e\u0074\u0073\u0020\u0075\u0070\u0020\u0074\u0068\u0065\u0020\u006da\u0072\u0067\u0069\u006e\u002d\u0072\u0069\u0067\u0068\u0074");_g .Flags ().Var (&_dc .MarginLeft ,"m\u0061\u0072\u0067\u0069\u006e\u002d\u006c\u0065\u0066\u0074","\u0073\u0065\u0074\u0073 u\u0070\u0020\u0074\u0068\u0065\u0020\u0070\u0061\u0070\u0065\u0072\u002d\u006c\u0065f\u0074"); -};type generateConfig struct{Port int `mapstructure:"port"`;Host string `mapstructure:"host"`;Https bool `mapstructure:"https"`;Prefix string `mapstructure:"prefix"`;};var _g =&_b .Command {Use :"\u0067\u0065\u006e\u0065\u0072\u0061\u0074\u0065",Short :"\u0047\u0065\u006e\u0065\u0072a\u0074\u0065\u0073\u0020\u0050\u0044F\u0020\u0062\u0061\u0073\u0065\u0064\u0020o\u006e\u0020\u0074h\u0065\u0020\u0070\u0072o\u0076\u0069\u0064\u0065\u0064\u0020H\u0054\u004d\u004c\u0020\u006f\u0072\u0020\u0064\u0069\u0072\u0065\u0063\u0074\u006f\u0072\u0079\u0020w\u0069\u0074\u0068\u0020\u0074\u0068\u0065\u0020\u0048\u0054\u004d\u004c\u0020\u0066\u0069\u006c\u0065\u0073\u002e",Long :"A\u0020\u006c\u006f\u006e\u0067\u0065\u0072\u0020\u0064e\u0073\u0063\u0072\u0069\u0070\u0074\u0069on\u0020\u0074\u0068\u0061\u0074\u0020s\u0070\u0061\u006e\u0073\u0020\u006d\u0075\u006c\u0074\u0069\u0070\u006c\u0065\u0020\u006c\u0069\u006e\u0065\u0073 \u0061\u006e\u0064\u0020\u006c\u0069\u006b\u0065l\u0079\u0020\u0063o\u006e\u0074\u0061\u0069\u006e\u0073\u0020\u0065\u0078\u0061\u006d\u0070\u006c\u0065\u0073\u000a\u0061\u006e\u0064\u0020\u0075\u0073\u0061\u0067\u0065\u0020\u006f\u0066\u0020u\u0073\u0069\u006e\u0067\u0020\u0079o\u0075\u0072\u0020\u0063o\u006d\u006d\u0061\u006e\u0064\u002e\u0020\u0046\u006f\u0072\u0020e\u0078\u0061\u006d\u0070\u006c\u0065\u003a\u000a\u000a\u0043\u006f\u0062r\u0061\u0020\u0069\u0073\u0020\u0061\u0020\u0043\u004c\u0049\u0020\u006c\u0069\u0062\u0072\u0061r\u0079 \u0066\u006f\u0072\u0020\u0047\u006f\u0020\u0074\u0068\u0061\u0074\u0020\u0065\u006d\u0070\u006f\u0077\u0065\u0072\u0073\u0020\u0061\u0070\u0070\u006c\u0069\u0063\u0061t\u0069\u006f\u006e\u0073\u002e\u000a\u0054\u0068\u0069\u0073\u0020\u0061\u0070\u0070\u006c\u0069\u0063\u0061\u0074\u0069\u006f\u006e\u0020\u0069s\u0020\u0061\u0020\u0074\u006f\u006fl\u0020\u0074\u006f\u0020\u0067\u0065\u006e\u0065\u0072\u0061\u0074\u0065\u0020\u0074\u0068e\u0020n\u0065\u0065\u0064\u0065\u0064\u0020\u0066\u0069\u006c\u0065s\u000a\u0074o\u0020\u0071\u0075\u0069\u0063\u006b\u006c\u0079\u0020\u0063\u0072\u0065\u0061\u0074\u0065\u0020\u0061\u0020C\u006fb\u0072\u0061\u0020\u0061\u0070\u0070\u006c\u0069\u0063\u0061\u0074io\u006e\u002e",Run :_gc ,Args :_b .ExactArgs (2),ArgAliases :[]string {"\u0069\u006e\u0070u\u0074","\u006f\u0075\u0074\u0070\u0075\u0074\u002d\u0070\u0064\u0066"},Example :"\u0067\u0065\u006e\u0065\u0072\u0061\u0074\u0065\u0020\u0069\u006ep\u0075\u0074\u002e\u0068\u0074\u006d\u006c\u0020o\u0075t\u0070\u0075\u0074\u002e\u0070\u0064\u0066\u0020\u002d\u002d\u006f\u0072\u0069\u0065\u006e\u0074\u0061\u0074i\u006f\u006e\u0020\u0070\u006f\u0072\u0074\u0072\u0061\u0069\u0074"}; -type parametersConfig struct{ +package cmd ;import (_c "context";_cb "fmt";_cbc "github.com/mitchellh/go-homedir";_bg "github.com/spf13/cobra";_de "github.com/spf13/viper";_d "github.com/unidoc/unihtml/client";_bd "github.com/unidoc/unihtml/content";_f "github.com/unidoc/unihtml/sizes"; +_cf "github.com/unidoc/unipdf/v3/common";_b "os";_g "path/filepath";_a "time";);func _bbd (){if _ae !=""{_de .SetConfigFile (_ae );}else {_ec ,_gcg :=_cbc .Dir ();if _gcg !=nil {_cb .Println (_gcg );_b .Exit (1);};_de .AddConfigPath (_ec );_de .SetConfigName ("\u002e\u0075\u006ei\u0068\u0074\u006d\u006c\u002d\u0073\u0072\u0063"); +};_de .AutomaticEnv ();if _adc :=_de .ReadInConfig ();_adc ==nil {_cb .Println ("\u0055s\u0069n\u0067\u0020\u0063\u006f\u006ef\u0069\u0067 \u0066\u0069\u006c\u0065\u003a",_de .ConfigFileUsed ());};};type parametersConfig struct{ // PaperWidth sets the width of the paper. -PaperWidth _dg .LengthFlag `mapstructure:"paper-width"`; +PaperWidth _f .LengthFlag `mapstructure:"paper-width"`; // PaperHeight is the height of the output paper. -PaperHeight _dg .LengthFlag `mapstructure:"paper-height"`; +PaperHeight _f .LengthFlag `mapstructure:"paper-height"`; // PageSize is the page size string. -PageSize _dg .PageSize `mapstructure:"page-size"`; +PageSize _f .PageSize `mapstructure:"page-size"`; // Orientation defines if the output should be in a landscape format. -Orientation _dg .Orientation `mapstructure:"orientation"`; +Orientation _f .Orientation `mapstructure:"orientation"`; // MarginTop sets up the Top Margin for the output. -MarginTop _dg .LengthFlag `mapstructure:"margin-top"`; +MarginTop _f .LengthFlag `mapstructure:"margin-top"`; // MarginBottom sets up the Bottom Margin for the output. -MarginBottom _dg .LengthFlag `mapstructure:"margin-bottom"`; +MarginBottom _f .LengthFlag `mapstructure:"margin-bottom"`; // MarginLeft sets up the Left Margin for the output. -MarginLeft _dg .LengthFlag `mapstructure:"margin-left"`; +MarginLeft _f .LengthFlag `mapstructure:"margin-left"`; // MarginRight sets up the Right Margin for the output. -MarginRight _dg .LengthFlag `mapstructure:"margin-right"`;};var (_ad ,_cd bool ;);var (_f =generateConfig {};_dc =parametersConfig {PaperWidth :_dg .LengthFlag {Length :_dg .Inch (8.5).Millimeters ()},PaperHeight :_dg .LengthFlag {Length :_dg .Inch (11).Millimeters ()},Orientation :_dg .Portrait ,MarginTop :_dg .LengthFlag {Length :_dg .Millimeter (10)},MarginBottom :_dg .LengthFlag {Length :_dg .Millimeter (10)},MarginLeft :_dg .LengthFlag {Length :_dg .Millimeter (10)},MarginRight :_dg .LengthFlag {Length :_dg .Millimeter (10)}}; -);func init (){_b .OnInitialize (_fa );_fea .PersistentFlags ().BoolVarP (&_ad ,"\u0064\u0065\u0062u\u0067","\u0064",false ,"\u0044e\u0066i\u006e\u0065\u0073\u0020\u0064e\u0062\u0075g\u0020\u006d\u006f\u0064\u0065");_fea .PersistentFlags ().BoolVarP (&_cd ,"\u0076e\u0072\u0062\u006f\u0073\u0065","\u0076",false ,"\u0056\u0065\u0072\u0062\u006f\u0073e\u0020\u0069\u006e\u0066\u006f\u0072\u006d\u0061\u0074\u0069\u006f\u006e\u0020o\u0066\u0020\u0074\u0068\u0065\u0020\u0063l\u0069\u0065\u006e\u0074"); -_fea .PersistentFlags ().StringVar (&_ba ,"\u0063\u006f\u006e\u0066\u0069\u0067","","\u0063\u006f\u006e\u0066\u0069\u0067\u0020\u0066i\u006c\u0065\u0020(d\u0065\u0066\u0061\u0075\u006c\u0074 \u0069\u0073\u0020\u0024\u0048\u004f\u004d\u0045\u002f\u002e\u0075\u006e\u0069\u0068\u0074m\u006c\u002d\u0073\u0072\u0063\u002e\u0079\u0061m\u006c\u0029"); -_fea .Flags ().BoolP ("\u0074\u006f\u0067\u0067\u006c\u0065","\u0074",false ,"\u0048\u0065\u006cp \u006d\u0065\u0073\u0073\u0061\u0067\u0065\u0020\u0066\u006f\u0072\u0020\u0074\u006f\u0067\u0067\u006c\u0065");};func _fa (){if _ba !=""{_db .SetConfigFile (_ba ); -}else {_baf ,_dd :=_da .Dir ();if _dd !=nil {_e .Println (_dd );_de .Exit (1);};_db .AddConfigPath (_baf );_db .SetConfigName ("\u002e\u0075\u006ei\u0068\u0074\u006d\u006c\u002d\u0073\u0072\u0063");};_db .AutomaticEnv ();if _bgc :=_db .ReadInConfig (); -_bgc ==nil {_e .Println ("\u0055s\u0069n\u0067\u0020\u0063\u006f\u006ef\u0069\u0067 \u0066\u0069\u006c\u0065\u003a",_db .ConfigFileUsed ());};};func _gc (cmd *_b .Command ,_be []string ){_bc :=_d .Now ();if _ag :=_db .BindPFlags (cmd .Flags ());_ag !=nil {_e .Printf ("\u0045\u0072\u0072\u003a\u0020\u0025\u0076\u000a",_ag ); -_de .Exit (1);};if _fe :=_db .Unmarshal (&_f );_fe !=nil {_e .Printf ("\u0045\u0072\u0072\u003a\u0020\u0025\u0076\u000a",_fe );_de .Exit (1);};_df ();_agb ,_bg :=_de .Stat (_be [0]);if _bg !=nil {_e .Printf ("\u0045\u0072\u0072\u003a\u0020\u0025\u0076\u000a",_bg ); -_de .Exit (1);};if !_agb .IsDir (){if _a .Ext (_agb .Name ())!="\u002e\u0068\u0074m\u006c"{_e .Printf ("\u0045\u0072r\u003a\u0020\u0043\u0075\u0072\u0072\u0065\u006e\u0074\u006c\u0079\u0020\u006f\u006e\u006c\u0079\u0020\u0048\u0054M\u004c\u0020\u0066\u0069\u006c\u0065s\u0020\u0069\u006e\u0070\u0075\u0074\u0053\u0074\u0061\u0074\u0020\u0061\u0072\u0065 \u0073\u0075p\u0070\u006f\u0072\u0074e\u0064\u002e\u0020\u0049\u006ep\u0075\u0074\u003a\u0020\u0025\u0073\u000a",_be [0]); -_de .Exit (1);};};_fec ,_bg :=_de .OpenFile (_be [1],_de .O_CREATE |_de .O_WRONLY |_de .O_TRUNC ,0700);if _bg !=nil {_e .Printf ("\u0045\u0072\u0072\u003a\u0020\u0025\u0076\u000a",_bg );_de .Exit (1);};defer _fec .Close ();_gb :=_eb .New (_eb .Options {HTTPS :_f .Https ,Hostname :_f .Host ,Port :_f .Port ,Prefix :_f .Prefix }); -_bd ,_dcg :=_cg .WithTimeout (_cg .Background (),_d .Second *10);defer _dcg ();_bf :=_d .Now ();var _cb _ce .Content ;if _agb .IsDir (){_cb ,_bg =_ce .NewZipDirectory (_be [0]);}else {_cb ,_bg =_ce .NewHTMLFile (_be [0]);};if _bg !=nil {_e .Printf ("\u0045r\u0072\u003a\u0020\u0025\u0076",_bg ); -_de .Exit (1);};_dbb ,_bg :=_eb .BuildHTMLQuery ().PaperWidth (_dc .PaperWidth .Length ).PaperHeight (_dc .PaperHeight .Length ).PageSize (_dc .PageSize ).MarginTop (_dc .MarginTop .Length ).MarginBottom (_dc .MarginBottom .Length ).MarginLeft (_dc .MarginLeft .Length ).MarginRight (_dc .MarginRight .Length ).Orientation (_dc .Orientation ).SetContent (_cb ).Query (); -if _bg !=nil {_e .Printf ("\u0045\u0072\u0072\u003a\u0020\u0025\u0076\u000a",_bg );_de .Exit (1);};_eec ,_bg :=_gb .ConvertHTML (_bd ,_dbb );if _bg !=nil {_e .Printf ("\u0045\u0072\u0072\u003a\u0020\u0025\u0076\u000a",_bg );_de .Exit (1);};_ee .Log .Trace ("\u0045\u0078\u0065cu\u0074\u0069\u006e\u0067\u0020\u0067\u0065\u006e\u0065r\u0061t\u0065 \u0071u\u0065\u0072\u0079\u0020\u0074\u0061\u006b\u0065\u006e\u003a\u0020\u0025\u0073",_d .Since (_bf )); -_bf =_d .Now ();_ ,_bg =_fec .Write (_eec .Data );if _bg !=nil {_e .Printf ("\u0045\u0072\u0072\u003a\u0020\u0025\u0076\u000a",_bg );_de .Exit (1);};_ee .Log .Trace ("\u0057\u0072\u0069\u0074in\u0067\u0020\u0066\u0069\u006c\u0065\u0020\u0074\u0061\u006b\u0065\u006e\u003a\u0020%\u0073",_d .Since (_bf )); -_e .Printf ("\u0047\u0065n\u0065\u0072\u0061\u0074\u0065\u0064\u0020\u0077\u0069\u0074\u0068\u0020\u0073\u0075\u0063\u0063\u0065\u0073\u0073\u0020\u0069\u006e %\u0073\u000a",_d .Since (_bc ));}; \ No newline at end of file +MarginRight _f .LengthFlag `mapstructure:"margin-right"`;}; + +// Execute adds all child commands to the root command and sets flags appropriately. +// This is called by main.main(). It only needs to happen once to the rootCmd. +func Execute (){if _cc :=_ceg .Execute ();_cc !=nil {_cb .Println (_cc );_b .Exit (1);};};var _dee =&_bg .Command {Use :"\u0067\u0065\u006e\u0065\u0072\u0061\u0074\u0065",Short :"\u0047\u0065\u006e\u0065\u0072a\u0074\u0065\u0073\u0020\u0050\u0044F\u0020\u0062\u0061\u0073\u0065\u0064\u0020o\u006e\u0020\u0074h\u0065\u0020\u0070\u0072o\u0076\u0069\u0064\u0065\u0064\u0020H\u0054\u004d\u004c\u0020\u006f\u0072\u0020\u0064\u0069\u0072\u0065\u0063\u0074\u006f\u0072\u0079\u0020w\u0069\u0074\u0068\u0020\u0074\u0068\u0065\u0020\u0048\u0054\u004d\u004c\u0020\u0066\u0069\u006c\u0065\u0073\u002e",Long :"A\u0020\u006c\u006f\u006e\u0067\u0065\u0072\u0020\u0064e\u0073\u0063\u0072\u0069\u0070\u0074\u0069on\u0020\u0074\u0068\u0061\u0074\u0020s\u0070\u0061\u006e\u0073\u0020\u006d\u0075\u006c\u0074\u0069\u0070\u006c\u0065\u0020\u006c\u0069\u006e\u0065\u0073 \u0061\u006e\u0064\u0020\u006c\u0069\u006b\u0065l\u0079\u0020\u0063o\u006e\u0074\u0061\u0069\u006e\u0073\u0020\u0065\u0078\u0061\u006d\u0070\u006c\u0065\u0073\u000a\u0061\u006e\u0064\u0020\u0075\u0073\u0061\u0067\u0065\u0020\u006f\u0066\u0020u\u0073\u0069\u006e\u0067\u0020\u0079o\u0075\u0072\u0020\u0063o\u006d\u006d\u0061\u006e\u0064\u002e\u0020\u0046\u006f\u0072\u0020e\u0078\u0061\u006d\u0070\u006c\u0065\u003a\u000a\u000a\u0043\u006f\u0062r\u0061\u0020\u0069\u0073\u0020\u0061\u0020\u0043\u004c\u0049\u0020\u006c\u0069\u0062\u0072\u0061r\u0079 \u0066\u006f\u0072\u0020\u0047\u006f\u0020\u0074\u0068\u0061\u0074\u0020\u0065\u006d\u0070\u006f\u0077\u0065\u0072\u0073\u0020\u0061\u0070\u0070\u006c\u0069\u0063\u0061t\u0069\u006f\u006e\u0073\u002e\u000a\u0054\u0068\u0069\u0073\u0020\u0061\u0070\u0070\u006c\u0069\u0063\u0061\u0074\u0069\u006f\u006e\u0020\u0069s\u0020\u0061\u0020\u0074\u006f\u006fl\u0020\u0074\u006f\u0020\u0067\u0065\u006e\u0065\u0072\u0061\u0074\u0065\u0020\u0074\u0068e\u0020n\u0065\u0065\u0064\u0065\u0064\u0020\u0066\u0069\u006c\u0065s\u000a\u0074o\u0020\u0071\u0075\u0069\u0063\u006b\u006c\u0079\u0020\u0063\u0072\u0065\u0061\u0074\u0065\u0020\u0061\u0020C\u006fb\u0072\u0061\u0020\u0061\u0070\u0070\u006c\u0069\u0063\u0061\u0074io\u006e\u002e",Run :_dd ,Args :_bg .ExactArgs (2),ArgAliases :[]string {"\u0069\u006e\u0070u\u0074","\u006f\u0075\u0074\u0070\u0075\u0074\u002d\u0070\u0064\u0066"},Example :"\u0067\u0065\u006e\u0065\u0072\u0061\u0074\u0065\u0020\u0069\u006ep\u0075\u0074\u002e\u0068\u0074\u006d\u006c\u0020o\u0075t\u0070\u0075\u0074\u002e\u0070\u0064\u0066\u0020\u002d\u002d\u006f\u0072\u0069\u0065\u006e\u0074\u0061\u0074i\u006f\u006e\u0020\u0070\u006f\u0072\u0074\u0072\u0061\u0069\u0074"}; +func init (){_ceg .AddCommand (_dee );_dee .Flags ().IntP ("\u0070\u006f\u0072\u0074","\u0070",8080,"\u0050\u006f\u0072\u0074\u0020\u006f\u0066\u0020\u0074\u0068\u0065 \u0075\u006e\u0069\u0068\u0074\u006d\u006c\u0020\u0073\u0065r\u0076\u0065\u0072");_dee .Flags ().String ("\u0068\u006f\u0073\u0074","\u006co\u0063\u0061\u006c\u0068\u006f\u0073t","\u0048\u006f\u0073t\u0020\u006e\u0061\u006de\u0020\u006f\u0066\u0020\u0074\u0068\u0065 \u0075\u006e\u0069\u0068\u0074\u006d\u006c\u0020\u0073\u0065\u0072\u0076\u0065\u0072"); +_dee .Flags ().BoolP ("\u0068\u0074\u0074p\u0073","\u0073",false ,"\u0050\u0072o\u0074\u006f\u0063\u006fl\u0020\u0075s\u0065\u0064\u0020\u0069\u006e\u0020\u0073\u0065r\u0076\u0065\u0072\u0020\u0063\u006f\u006d\u006d\u0075\u006e\u0069\u0063a\u0074\u0069\u006f\u006e"); +_dee .Flags ().StringP ("\u0070\u0072\u0065\u0066\u0069\u0078","\u0078","","\u0050u\u0062\u006ci\u0063\u0020\u0061\u0070i\u0020\u0070\u0072e\u0066\u0069\u0078\u0020\u0075\u0073\u0065\u0064\u0020by\u0020\u0074\u0068e\u0020\u0075n\u0069\u0068\u0074\u006d\u006c\u0020s\u0065\u0072v\u0065\u0072"); +_dee .Flags ().Var (&_ce .PaperWidth ,"p\u0061\u0070\u0065\u0072\u002d\u0077\u0069\u0064\u0074\u0068","\u0073\u0065\u0074s \u0075\u0070\u0020\u0074\u0068\u0065\u0020\u0070\u0061\u0070\u0065\u0072\u002d\u0077\u0069\u0064\u0074\u0068");_dee .Flags ().Var (&_ce .PaperHeight ,"\u0070\u0061\u0070e\u0072\u002d\u0068\u0065\u0069\u0067\u0068\u0074","\u0073e\u0074\u0073\u0020\u0075\u0070\u0020\u0074\u0068\u0065\u0020\u0070a\u0070\u0065\u0072\u002d\u0068\u0065\u0069\u0067\u0068\u0074"); +_dee .Flags ().Var (&_ce .PageSize ,"\u0070\u0061\u0070\u0065\u0072\u002d\u0073\u0069\u007a\u0065","s\u0065\u0074\u0073\u0020up\u0020t\u0068\u0065\u0020\u0070\u0061g\u0065\u0020\u0073\u0069\u007a\u0065");_dee .Flags ().Var (&_ce .Orientation ,"o\u0072\u0069\u0065\u006e\u0074\u0061\u0074\u0069\u006f\u006e","\u0073\u0065\u0074\u0073 \u0075\u0070\u0020\u0074\u0068\u0065\u0020\u0070\u0061\u0067e\u0020o\u0072\u0069\u0065\u006e\u0074\u0061\u0074i\u006f\u006e"); +_dee .Flags ().Var (&_ce .MarginTop ,"\u006d\u0061\u0072\u0067\u0069\u006e\u002d\u0074\u006f\u0070","\u0073\u0065\u0074\u0073 u\u0070\u0020\u0074\u0068\u0065\u0020\u006d\u0061\u0072\u0067\u0069\u006e\u002d\u0074o\u0070");_dee .Flags ().Var (&_ce .MarginBottom ,"\u006d\u0061\u0072\u0067\u0069\u006e\u002d\u0062\u006f\u0074\u0074\u006f\u006d","\u0073e\u0074\u0073\u0020\u0075p\u0020\u0074\u0068\u0065\u0020m\u0061r\u0067i\u006e\u002d\u0062\u006f\u0074\u0074\u006fm"); +_dee .Flags ().Var (&_ce .MarginRight ,"\u006d\u0061\u0072g\u0069\u006e\u002d\u0072\u0069\u0067\u0068\u0074","\u0073e\u0074\u0073\u0020\u0075\u0070\u0020\u0074\u0068\u0065\u0020\u006da\u0072\u0067\u0069\u006e\u002d\u0072\u0069\u0067\u0068\u0074");_dee .Flags ().Var (&_ce .MarginLeft ,"m\u0061\u0072\u0067\u0069\u006e\u002d\u006c\u0065\u0066\u0074","\u0073\u0065\u0074\u0073 u\u0070\u0020\u0074\u0068\u0065\u0020\u0070\u0061\u0070\u0065\u0072\u002d\u006c\u0065f\u0074"); +};var (_ee =generateConfig {};_ce =parametersConfig {PaperWidth :_f .LengthFlag {Length :_f .Inch (8.5).Millimeters ()},PaperHeight :_f .LengthFlag {Length :_f .Inch (11).Millimeters ()},Orientation :_f .Portrait ,MarginTop :_f .LengthFlag {Length :_f .Millimeter (10)},MarginBottom :_f .LengthFlag {Length :_f .Millimeter (10)},MarginLeft :_f .LengthFlag {Length :_f .Millimeter (10)},MarginRight :_f .LengthFlag {Length :_f .Millimeter (10)}}; +);var _ceg =&_bg .Command {Use :"\u0075n\u0069\u0068\u0074\u006d\u006c",Short :"\u0041\u0020\u0062\u0072\u0069\u0065\u0066\u0020\u0064\u0065\u0073\u0063\u0072i\u0070\u0074\u0069\u006f\u006e\u0020o\u0066\u0020\u0079\u006f\u0075\u0072\u0020\u0061\u0070\u0070\u006c\u0069\u0063a\u0074\u0069\u006f\u006e",Long :"\u0041\u0020\u006c\u006f\u006e\u0067\u0065\u0072\u0020\u0064\u0065\u0073c\u0072\u0069\u0070\u0074i\u006f\u006e\u0020\u0074\u0068\u0061\u0074\u0020s\u0070\u0061n\u0073\u0020\u006d\u0075\u006ct\u0069\u0070\u006c\u0065\u0020\u006c\u0069\u006e\u0065\u0073\u0020\u0061nd\u0020\u006c\u0069\u006b\u0065\u006cy\u0020\u0063\u006f\u006e\u0074\u0061\u0069\u006e\u0073\u000a\u0065\u0078\u0061\u006d\u0070\u006c\u0065\u0073\u0020\u0061n\u0064\u0020\u0075s\u0061\u0067\u0065\u0020\u006ff\u0020\u0075\u0073\u0069\u006eg \u0079\u006f\u0075\u0072\u0020\u0061\u0070\u0070\u006c\u0069\u0063\u0061\u0074\u0069\u006fn\u002e\u0020\u0046\u006f\u0072\u0020e\u0078\u0061\u006dp\u006c\u0065\u003a\u000a\u000a\u0043\u006f\u0062\u0072\u0061\u0020\u0069s\u0020\u0061\u0020\u0043L\u0049\u0020\u006c\u0069\u0062\u0072\u0061\u0072\u0079\u0020f\u006f\u0072\u0020\u0047\u006f\u0020t\u0068\u0061t\u0020\u0065\u006dp\u006f\u0077\u0065\u0072\u0073\u0020\u0061p\u0070\u006c\u0069\u0063\u0061\u0074\u0069\u006f\u006e\u0073\u002e\u000a\u0054\u0068\u0069\u0073\u0020\u0061\u0070p\u006c\u0069\u0063\u0061\u0074\u0069\u006f\u006e \u0069\u0073 \u0061\u0020\u0074\u006f\u006f\u006c\u0020\u0074o\u0020g\u0065\u006e\u0065\u0072a\u0074\u0065 \u0074\u0068e\u0020\u006e\u0065\u0065\u0064\u0065\u0064\u0020\u0066\u0069\u006ce\u0073\u000a\u0074\u006f\u0020\u0071\u0075\u0069\u0063\u006b\u006cy\u0020\u0063\u0072\u0065\u0061\u0074\u0065\u0020\u0061\u0020\u0043\u006f\u0062\u0072\u0061\u0020\u0061\u0070pl\u0069ca\u0074\u0069on\u002e"}; +func _dd (cmd *_bg .Command ,_eea []string ){_gc :=_a .Now ();if _dc :=_de .BindPFlags (cmd .Flags ());_dc !=nil {_cb .Printf ("\u0045\u0072\u0072\u003a\u0020\u0025\u0076\u000a",_dc );_b .Exit (1);};if _cfe :=_de .Unmarshal (&_ee );_cfe !=nil {_cb .Printf ("\u0045\u0072\u0072\u003a\u0020\u0025\u0076\u000a",_cfe ); +_b .Exit (1);};_cee ();_aa ,_ab :=_b .Stat (_eea [0]);if _ab !=nil {_cb .Printf ("\u0045\u0072\u0072\u003a\u0020\u0025\u0076\u000a",_ab );_b .Exit (1);};if !_aa .IsDir (){if _g .Ext (_aa .Name ())!="\u002e\u0068\u0074m\u006c"{_cb .Printf ("\u0045\u0072r\u003a\u0020\u0043\u0075\u0072\u0072\u0065\u006e\u0074\u006c\u0079\u0020\u006f\u006e\u006c\u0079\u0020\u0048\u0054M\u004c\u0020\u0066\u0069\u006c\u0065s\u0020\u0069\u006e\u0070\u0075\u0074\u0053\u0074\u0061\u0074\u0020\u0061\u0072\u0065 \u0073\u0075p\u0070\u006f\u0072\u0074e\u0064\u002e\u0020\u0049\u006ep\u0075\u0074\u003a\u0020\u0025\u0073\u000a",_eea [0]); +_b .Exit (1);};};_fg ,_ab :=_b .OpenFile (_eea [1],_b .O_CREATE |_b .O_WRONLY |_b .O_TRUNC ,0700);if _ab !=nil {_cb .Printf ("\u0045\u0072\u0072\u003a\u0020\u0025\u0076\u000a",_ab );_b .Exit (1);};defer _fg .Close ();_dce :=_d .New (_d .Options {HTTPS :_ee .Https ,Hostname :_ee .Host ,Port :_ee .Port ,Prefix :_ee .Prefix }); +_eb ,_fe :=_c .WithTimeout (_c .Background (),_a .Second *10);defer _fe ();_cg :=_a .Now ();var _af _bd .Content ;if _aa .IsDir (){_af ,_ab =_bd .NewZipDirectory (_eea [0]);}else {_af ,_ab =_bd .NewHTMLFile (_eea [0]);};if _ab !=nil {_cb .Printf ("\u0045r\u0072\u003a\u0020\u0025\u0076",_ab ); +_b .Exit (1);};_fb ,_ab :=_d .BuildHTMLQuery ().PaperWidth (_ce .PaperWidth .Length ).PaperHeight (_ce .PaperHeight .Length ).PageSize (_ce .PageSize ).MarginTop (_ce .MarginTop .Length ).MarginBottom (_ce .MarginBottom .Length ).MarginLeft (_ce .MarginLeft .Length ).MarginRight (_ce .MarginRight .Length ).Orientation (_ce .Orientation ).SetContent (_af ).Query (); +if _ab !=nil {_cb .Printf ("\u0045\u0072\u0072\u003a\u0020\u0025\u0076\u000a",_ab );_b .Exit (1);};_bb ,_ab :=_dce .ConvertHTML (_eb ,_fb );if _ab !=nil {_cb .Printf ("\u0045\u0072\u0072\u003a\u0020\u0025\u0076\u000a",_ab );_b .Exit (1);};_cf .Log .Trace ("\u0045\u0078\u0065cu\u0074\u0069\u006e\u0067\u0020\u0067\u0065\u006e\u0065r\u0061t\u0065 \u0071u\u0065\u0072\u0079\u0020\u0074\u0061\u006b\u0065\u006e\u003a\u0020\u0025\u0073",_a .Since (_cg )); +_cg =_a .Now ();_ ,_ab =_fg .Write (_bb .Data );if _ab !=nil {_cb .Printf ("\u0045\u0072\u0072\u003a\u0020\u0025\u0076\u000a",_ab );_b .Exit (1);};_cf .Log .Trace ("\u0057\u0072\u0069\u0074in\u0067\u0020\u0066\u0069\u006c\u0065\u0020\u0074\u0061\u006b\u0065\u006e\u003a\u0020%\u0073",_a .Since (_cg )); +_cb .Printf ("\u0047\u0065n\u0065\u0072\u0061\u0074\u0065\u0064\u0020\u0077\u0069\u0074\u0068\u0020\u0073\u0075\u0063\u0063\u0065\u0073\u0073\u0020\u0069\u006e %\u0073\u000a",_a .Since (_gc ));};var _ae string ;type generateConfig struct{Port int `mapstructure:"port"`; +Host string `mapstructure:"host"`;Https bool `mapstructure:"https"`;Prefix string `mapstructure:"prefix"`;};func init (){_bg .OnInitialize (_bbd );_ceg .PersistentFlags ().BoolVarP (&_gg ,"\u0064\u0065\u0062u\u0067","\u0064",false ,"\u0044e\u0066i\u006e\u0065\u0073\u0020\u0064e\u0062\u0075g\u0020\u006d\u006f\u0064\u0065"); +_ceg .PersistentFlags ().BoolVarP (&_gf ,"\u0076e\u0072\u0062\u006f\u0073\u0065","\u0076",false ,"\u0056\u0065\u0072\u0062\u006f\u0073e\u0020\u0069\u006e\u0066\u006f\u0072\u006d\u0061\u0074\u0069\u006f\u006e\u0020o\u0066\u0020\u0074\u0068\u0065\u0020\u0063l\u0069\u0065\u006e\u0074"); +_ceg .PersistentFlags ().StringVar (&_ae ,"\u0063\u006f\u006e\u0066\u0069\u0067","","\u0063\u006f\u006e\u0066\u0069\u0067\u0020\u0066i\u006c\u0065\u0020(d\u0065\u0066\u0061\u0075\u006c\u0074 \u0069\u0073\u0020\u0024\u0048\u004f\u004d\u0045\u002f\u002e\u0075\u006e\u0069\u0068\u0074m\u006c\u002d\u0073\u0072\u0063\u002e\u0079\u0061m\u006c\u0029"); +_ceg .Flags ().BoolP ("\u0074\u006f\u0067\u0067\u006c\u0065","\u0074",false ,"\u0048\u0065\u006cp \u006d\u0065\u0073\u0073\u0061\u0067\u0065\u0020\u0066\u006f\u0072\u0020\u0074\u006f\u0067\u0067\u006c\u0065");};var (_gg ,_gf bool ;);func _cee (){_fee :=_cf .LogLevelInfo ; +if _gg {_fee =_cf .LogLevelDebug ;};if _gf {_fee =_cf .LogLevelTrace ;};_cf .Log =_cf .NewConsoleLogger (_fee );}; \ No newline at end of file diff --git a/cli/main.go b/cli/main.go index 48b52ba..73486a2 100644 --- a/cli/main.go +++ b/cli/main.go @@ -9,4 +9,4 @@ // 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 main ;import _a "github.com/unidoc/unihtml/cli/cmd";func main (){_a .Execute ()}; \ No newline at end of file +package main ;import _f "github.com/unidoc/unihtml/cli/cmd";func main (){_f .Execute ()}; \ No newline at end of file diff --git a/client/client.go b/client/client.go index ddcf12e..04c5166 100644 --- a/client/client.go +++ b/client/client.go @@ -11,203 +11,201 @@ // Package client contains HTML Converter HTTP Client. The Client implements htmlcreator.HTMLConverter interface // for the UniPDF module and can be used as a plugin for the UniPDF creator.Creator. -package client ;import (_a "bytes";_dd "compress/flate";_gb "compress/gzip";_g "context";_b "encoding/json";_d "errors";_ba "fmt";_bb "github.com/unidoc/unihtml/content";_be "github.com/unidoc/unihtml/selector";_f "github.com/unidoc/unihtml/sizes";_ag "github.com/unidoc/unipdf/v3/common"; -_ge "io";_gd "net";_eb "net/http";_bg "net/url";_e "strconv";_ac "strings";_bd "time";); +package client ;import (_bg "bytes";_da "compress/flate";_c "compress/gzip";_e "context";_d "encoding/json";_ga "errors";_fa "fmt";_cd "github.com/unidoc/unihtml/content";_be "github.com/unidoc/unihtml/selector";_bae "github.com/unidoc/unihtml/sizes";_ge "github.com/unidoc/unipdf/v3/common"; +_g "io";_ebb "net";_ba "net/http";_f "net/url";_eb "strconv";_cf "strings";_gac "time";); -// WaitVisible waits for the selector to get visible. -func (_bfg *QueryBuilder )WaitVisible (selector string ,by _be .ByType )*QueryBuilder {_bfg ._fd .RenderParameters .WaitVisible =append (_bfg ._fd .RenderParameters .WaitVisible ,BySelector {Selector :selector ,By :by });return _bfg ;};var (ErrNotFound =_d .New ("\u006eo\u0074\u0020\u0066\u006f\u0075\u006ed"); -ErrBadRequest =_d .New ("b\u0061\u0064\u0020\u0072\u0065\u0071\u0075\u0065\u0073\u0074");ErrNotImplemented =_d .New ("\u006eo\u0074 \u0069\u006d\u0070\u006c\u0065\u006d\u0065\u006e\u0074\u0065\u0064");ErrInternalError =_d .New ("i\u006e\u0074\u0065\u0072na\u006c \u0073\u0065\u0072\u0076\u0065r\u0020\u0065\u0072\u0072\u006f\u0072"); -ErrBadGateway =_d .New ("b\u0061\u0064\u0020\u0067\u0061\u0074\u0065\u0077\u0061\u0079");ErrUnauthorized =_d .New ("\u0075\u006e\u0061u\u0074\u0068\u006f\u0072\u0069\u007a\u0065\u0064");ErrTimedOut =_d .New ("\u0072\u0065\u0071\u0075\u0065\u0073\u0074\u0020\u0074\u0069\u006d\u0065d\u0020\u006f\u0075\u0074"); -); - -// Query is a structure that contains query parameters and the content used for the HTMLConverter conversion process. -type Query struct{Content []byte ;ContentType string ;URL string ;Method string ;PageParameters PageParameters ;RenderParameters RenderParameters ;TimeoutDuration _bd .Duration ;};func (_ec *Client )setQueryValues (_gbb *_eb .Request ,_eg *Query ){_cdg :=_gbb .URL .Query (); -_egc :=_eg .PageParameters ;if _egc .PageSize !=nil {_cdg .Set ("\u0070a\u0067\u0065\u002d\u0073\u0069\u007ae",_egc .PageSize .String ());};if _egc .PaperHeight !=nil {_cdg .Set ("\u0070\u0061\u0070e\u0072\u002d\u0068\u0065\u0069\u0067\u0068\u0074",_egc .PaperHeight .String ()); -};if _egc .PaperWidth !=nil {_cdg .Set ("p\u0061\u0070\u0065\u0072\u002d\u0077\u0069\u0064\u0074\u0068",_egc .PaperWidth .String ());};if _egc .MarginTop !=nil {_cdg .Set ("\u006d\u0061\u0072\u0067\u0069\u006e\u002d\u0074\u006f\u0070",_egc .MarginTop .String ()); -};if _egc .MarginBottom !=nil {_cdg .Set ("\u006d\u0061\u0072\u0067\u0069\u006e\u002d\u0062\u006f\u0074\u0074\u006f\u006d",_egc .MarginBottom .String ());};if _egc .MarginRight !=nil {_cdg .Set ("\u006d\u0061\u0072g\u0069\u006e\u002d\u0072\u0069\u0067\u0068\u0074",_egc .MarginRight .String ()); -};if _egc .MarginLeft !=nil {_cdg .Set ("m\u0061\u0072\u0067\u0069\u006e\u002d\u006c\u0065\u0066\u0074",_egc .MarginLeft .String ());};if _egc .Orientation ==_f .Landscape {_cdg .Set ("o\u0072\u0069\u0065\u006e\u0074\u0061\u0074\u0069\u006f\u006e",_egc .Orientation .String ()); -};if _eg .RenderParameters .WaitTime !=0{_cdg .Set ("\u006d\u0069\u006e\u0069\u006d\u0075\u006d\u002d\u006c\u006f\u0061\u0064-\u0074\u0069\u006d\u0065",_e .FormatInt (int64 (_eg .RenderParameters .WaitTime /_bd .Millisecond ),10));};_gbb .URL .RawQuery =_cdg .Encode (); -}; - -// WithDefaultTimeout sets the DefaultTimeout option for the client options. -func WithDefaultTimeout (option _bd .Duration )Option {return func (_ed *Options ){_ed .DefaultTimeout =option };}; - -// SetContent sets custom data with it's content type. -func (_aebg *QueryBuilder )SetContent (content _bb .Content )*QueryBuilder {if _aebg ._ece !=nil {return _aebg ;};switch content .Method (){case "\u0064\u0069\u0072","\u0068\u0074\u006d\u006c":if _aebg ._fd .ContentType !=""{_aebg ._ece =ErrContentTypeDeclared ; -return _aebg ;};if content .ContentType ()==""{_aebg ._ece =_ba .Errorf ("\u0065\u006d\u0070\u0074y\u0020\u0063\u0075\u0073\u0074\u006f\u006d\u0020\u0063\u006fn\u0074e\u006e\u0074\u0020\u0074\u0079\u0070\u0065 \u0025\u0077",ErrContentType );return _aebg ; -};_aebg ._fd .Content =content .Data ();_aebg ._fd .ContentType =content .ContentType ();case "\u0077\u0065\u0062":if _aebg ._fd .ContentType !=""{_aebg ._ece =ErrContentTypeDeclared ;return _aebg ;};_aebg ._fd .URL =string (content .Data ());_aebg ._fd .ContentType =content .ContentType (); -default:_aebg ._ece =_ba .Errorf ("\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0063\u006f\u006et\u0065\u006e\u0074\u0020\u006d\u0065\u0074\u0068\u006f\u0064:\u0020\u0025\u0073",content .Method ());return _aebg ;};_aebg ._fd .Method =content .Method (); -return _aebg ;}; - -// Options are the client options used by the HTTP client. -type Options struct{HTTPS bool ;Hostname string ;Port int ;DefaultTimeout _bd .Duration ;Prefix string ;}; - -// Validate checks if the parameters are valid. -func (_ege *PageParameters )Validate ()error {if _ege .PaperWidth !=nil {if _ege .PaperWidth .Millimeters ()< 0{return _d .New ("\u006e\u0065g\u0061\u0074\u0069\u0076\u0065\u0020\u0076\u0061\u006c\u0075\u0065\u0020\u0066\u006f\u0072\u0020\u0050\u0061\u0070\u0065\u0072\u0057id\u0074\u0068"); -};};if _ege .PaperHeight !=nil {if _ege .PaperHeight .Millimeters ()< 0{return _d .New ("\u006e\u0065\u0067\u0061\u0074\u0069\u0076\u0065\u0020\u0076a\u006c\u0075\u0065\u0020\u0066\u006f\u0072 \u0050\u0061\u0070\u0065\u0072\u0048\u0065\u0069\u0067\u0068\u0074"); -};};if _ege .MarginTop !=nil {if _ege .MarginTop .Millimeters ()< 0{return _d .New ("\u006e\u0065\u0067\u0061t\u0069\u0076\u0065\u0020\u0076\u0061\u006c\u0075\u0065\u0020f\u006fr\u0020\u004d\u0061\u0072\u0067\u0069\u006eT\u006f\u0070");};};if _ege .MarginBottom !=nil {if _ege .MarginBottom .Millimeters ()< 0{return _d .New ("\u006e\u0065\u0067a\u0074\u0069\u0076\u0065 \u0076\u0061\u006c\u0075\u0065\u0020\u0066o\u0072\u0020\u004d\u0061\u0072\u0067\u0069\u006e\u0042\u006f\u0074\u0074\u006f\u006d"); -};};if _ege .MarginLeft !=nil {if _ege .MarginLeft .Millimeters ()< 0{return _d .New ("\u006e\u0065g\u0061\u0074\u0069\u0076\u0065\u0020\u0076\u0061\u006c\u0075\u0065\u0020\u0066\u006f\u0072\u0020\u004d\u0061\u0072\u0067\u0069\u006eLe\u0066\u0074");};}; -if _ege .MarginRight !=nil {if _ege .MarginRight .Millimeters ()< 0{return _d .New ("\u006e\u0065\u0067\u0061\u0074\u0069\u0076\u0065\u0020\u0076a\u006c\u0075\u0065\u0020\u0066\u006f\u0072 \u004d\u0061\u0072\u0067\u0069\u006e\u0052\u0069\u0067\u0068\u0074"); -};};if _ege .PageSize !=nil &&!_ege .PageSize .IsAPageSize (){return _d .New ("\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0070\u0061\u0067\u0065 \u0073\u0069\u007a\u0065");};return nil ;}; - -// Portrait sets up the portrait page orientation. -func (_cdd *QueryBuilder )Portrait ()*QueryBuilder {_cdd ._fd .PageParameters .Orientation =_f .Portrait ;return _cdd ;}; - -// PageSize sets up the PageSize parameter for the query. -func (_ccd *QueryBuilder )PageSize (pageSize _f .PageSize )*QueryBuilder {if pageSize !=_f .Undefined {_ccd ._fd .PageParameters .PageSize =&pageSize ;};return _ccd ;}; - -// MarginBottom sets up the MarginBottom parameter for the query. -func (_aa *QueryBuilder )MarginBottom (marginBottom _f .Length )*QueryBuilder {_aa ._fd .PageParameters .MarginBottom =marginBottom ;return _aa ;}; - -// WaitTime sets the minimum load time parameter for the page rendering. -func (_deg *QueryBuilder )WaitTime (d _bd .Duration )*QueryBuilder {_deg ._fd .RenderParameters .WaitTime =d ;return _deg ;}; +// TimeoutDuration sets the server query duration timeout. +// Once the timeout is reached the server will return an error. +func (_cg *QueryBuilder )TimeoutDuration (d _gac .Duration )*QueryBuilder {_cg ._dd .TimeoutDuration =d ;return _cg ;};var (ErrMissingData =_ga .New ("\u006di\u0073s\u0069\u006e\u0067\u0020\u0069n\u0070\u0075t\u0020\u0064\u0061\u0074\u0061");ErrContentType =_ga .New ("i\u006ev\u0061\u006c\u0069\u0064\u0020\u0063\u006f\u006et\u0065\u006e\u0074\u0020ty\u0070\u0065"); +ErrContentTypeDeclared =_ga .New ("\u0063\u006f\u006e\u0074\u0065\u006e\u0074\u0020\u0074\u0079\u0070\u0065\u0020\u0069\u0073 \u0061l\u0072\u0065\u0061\u0064\u0079\u0020\u0064\u0065\u0063\u006c\u0061\u0072\u0065\u0064");); -// RenderParameters are the parameters related with the rendering. -type RenderParameters struct{WaitTime _bd .Duration `schema:"minimum-load-time" json:"waitTime"`;WaitReady []BySelector `json:"waitReady"`;WaitVisible []BySelector `json:"waitVisible"`;}; +// QueryBuilder is the query that converts HTMLConverter defined data +type QueryBuilder struct{_dd Query ;_bgb error ;}; -// ConvertHTML converts provided Query input into PDF file data. -// Implements creator.HTMLConverter interface. -func (_cc *Client )ConvertHTML (ctx _g .Context ,q *Query )(*PDFResponse ,error ){if _fc :=q .Validate ();_fc !=nil {return nil ,_fc ;};_gec ,_ccg :=_cc .getGenerateRequest (ctx ,q );if _ccg !=nil {return nil ,_ccg ;};_ag .Log .Trace ("\u0052\u0065\u0071\u0075\u0065\u0073\u0074 \u002d\u0020\u0025s\u0020\u002d\u0020\u0025s\u0025\u0073\u002c\u0020\u0048\u0065\u0061\u0064\u0065\u0072\u0073\u003a\u0020\u0025\u0076\u002c\u0020\u0051\u0075\u0065\u0072\u0079\u003a\u0020\u0025\u0076",_gec .Method ,_gec .URL .Hostname (),_gec .URL .Path ,_gec .Header ,_gec .URL .Query ()); -_df :=*_cc .Client ;if q .TimeoutDuration !=0{_df .Timeout =q .TimeoutDuration ;};_bf ,_ccg :=_df .Do (_gec );if _ccg !=nil {return nil ,_ccg ;};var _ebc error ;switch _bf .StatusCode {case _eb .StatusNotFound :_ebc =ErrNotFound ;case _eb .StatusBadRequest :_ebc =ErrBadRequest ; -case _eb .StatusNotImplemented :_ebc =ErrNotImplemented ;case _eb .StatusUnauthorized :_ebc =ErrUnauthorized ;case _eb .StatusRequestTimeout :_ebc =ErrTimedOut ;case _eb .StatusCreated :default:_ebc =ErrInternalError ;};_dc :=_bf .Body ;switch _bf .Header .Get ("\u0043\u006fn\u0074\u0065\u006et\u002d\u0045\u006e\u0063\u006f\u0064\u0069\u006e\u0067"){case "\u0067\u007a\u0069\u0070":_dc ,_ccg =_gb .NewReader (_bf .Body ); -if _ccg !=nil {return nil ,_ccg ;};case "\u0064e\u0066\u006c\u0061\u0074\u0065":_dc =_dd .NewReader (_bf .Body );case "":default:return nil ,_ba .Errorf ("\u0075\u006e\u0073\u0075\u0070\u0070\u006f\u0072\u0074\u0065\u0064\u0020\u0043o\u006e\u0074\u0065\u006e\u0074\u002dE\u006e\u0063\u006f\u0064\u0069\u006e\u0067\u003a\u0020\u0025\u0073\u0020\u0068e\u0061\u0064\u0065\u0072",_bf .Header .Get ("\u0043\u006fn\u0074\u0065\u006et\u002d\u0045\u006e\u0063\u006f\u0064\u0069\u006e\u0067")); -};_af ,_ccg :=_ge .ReadAll (_dc );if _ccg !=nil &&_ebc ==nil {return nil ,_ba .Errorf ("\u0055\u006e\u0069HT\u004d\u004c\u0020\u0073\u0065\u0072\u0076\u0065\u0072\u0020\u0065\u0072\u0072\u006f\u0072\u0020\u0025\u0073",_ccg );};_ag .Log .Trace ("\u005b\u0025\u0064]\u0020\u0025\u0073\u0020\u0025\u0073\u0025\u0073",_bf .StatusCode ,_gec .Method ,_gec .URL .Host ,_gec .URL .Path ); -if _ebc !=nil {return nil ,_ba .Errorf ("\u0025\u0073\u0020%\u0077",string (_af ),_ebc );};_aea :=_bf .Header .Get ("\u0058\u002d\u004a\u006f\u0062\u002d\u0049\u0044");_ag .Log .Trace ("\u0052\u0065\u0073\u0070\u006f\u006e\u0073\u0065\u0020I\u0044\u0020\u0025\u0073",_aea ); -return &PDFResponse {ID :_aea ,Data :_af },nil ;}; +// PaperWidth sets up the PaperWidth (in cm) parameter for the query. +func (_ffd *QueryBuilder )PaperWidth (paperWidth _bae .Length )*QueryBuilder {_ffd ._dd .PageParameters .PaperWidth =paperWidth ;return _ffd ;}; // Validate checks if provided Query is valid. -func (_agb *Query )Validate ()error {switch _agb .Method {case "\u0077\u0065\u0062":if _agb .URL ==""{return ErrMissingData ;};case "\u0064\u0069\u0072","\u0068\u0074\u006d\u006c":if len (_agb .Content )==0{return ErrMissingData ;};if _agb .ContentType ==""{return ErrContentType ; -};default:return _ba .Errorf ("\u0075\u006e\u0064ef\u0069\u006e\u0065\u0064\u0020\u0063\u006f\u006e\u0074e\u006et\u0020q\u0075e\u0072\u0079\u0020\u006d\u0065\u0074\u0068\u006f\u0072\u003a\u0020\u0025\u0073",_agb .Method );};if _afa :=_agb .PageParameters .Validate (); -_afa !=nil {return _afa ;};if _geg :=_agb .RenderParameters .Validate ();_geg !=nil {return _geg ;};return nil ;};var (ErrMissingData =_d .New ("\u006di\u0073s\u0069\u006e\u0067\u0020\u0069n\u0070\u0075t\u0020\u0064\u0061\u0074\u0061");ErrContentType =_d .New ("i\u006ev\u0061\u006c\u0069\u0064\u0020\u0063\u006f\u006et\u0065\u006e\u0074\u0020ty\u0070\u0065"); -ErrContentTypeDeclared =_d .New ("\u0063\u006f\u006e\u0074\u0065\u006e\u0074\u0020\u0074\u0079\u0070\u0065\u0020\u0069\u0073 \u0061l\u0072\u0065\u0061\u0064\u0079\u0020\u0064\u0065\u0063\u006c\u0061\u0072\u0065\u0064");); +func (_eeb *Query )Validate ()error {switch _eeb .Method {case "\u0077\u0065\u0062":if _eeb .URL ==""{return ErrMissingData ;};case "\u0064\u0069\u0072","\u0068\u0074\u006d\u006c":if len (_eeb .Content )==0{return ErrMissingData ;};if _eeb .ContentType ==""{return ErrContentType ; +};default:return _fa .Errorf ("\u0075\u006e\u0064ef\u0069\u006e\u0065\u0064\u0020\u0063\u006f\u006e\u0074e\u006et\u0020q\u0075e\u0072\u0079\u0020\u006d\u0065\u0074\u0068\u006f\u0072\u003a\u0020\u0025\u0073",_eeb .Method );};if _cdeg :=_eeb .PageParameters .Validate (); +_cdeg !=nil {return _cdeg ;};if _bdg :=_eeb .RenderParameters .Validate ();_bdg !=nil {return _bdg ;};return nil ;}; -// PaperWidth sets up the PaperWidth (in cm) parameter for the query. -func (_dbc *QueryBuilder )PaperWidth (paperWidth _f .Length )*QueryBuilder {_dbc ._fd .PageParameters .PaperWidth =paperWidth ;return _dbc ;}; +// BySelector is a structure that defines a selector with it's query 'by' type. +type BySelector struct{Selector string `json:"selector"`;By _be .ByType `json:"by"`;}; + +// PDFResponse is the response used by the HTMLConverter. +type PDFResponse struct{ID string `json:"id"`;Data []byte `json:"data"`;}; // PageParameters are the query parameters used in the PDF generation. type PageParameters struct{ // PaperWidth sets the width of the paper. -PaperWidth _f .Length `schema:"paper-width" json:"paperWidth"`; +PaperWidth _bae .Length `schema:"paper-width" json:"paperWidth"`; // PaperHeight is the height of the output paper. -PaperHeight _f .Length `schema:"paper-height" json:"paperHeight"`; +PaperHeight _bae .Length `schema:"paper-height" json:"paperHeight"`; // PageSize is the page size string. -PageSize *_f .PageSize `schema:"page-size" json:"pageSize"`; +PageSize *_bae .PageSize `schema:"page-size" json:"pageSize"`; // Orientation defines if the output should be in a landscape format. -Orientation _f .Orientation `schema:"orientation" json:"orientation"`; +Orientation _bae .Orientation `schema:"orientation" json:"orientation"`; // MarginTop sets up the Top Margin for the output. -MarginTop _f .Length `schema:"margin-top" json:"marginTop"`; +MarginTop _bae .Length `schema:"margin-top" json:"marginTop"`; // MarginBottom sets up the Bottom Margin for the output. -MarginBottom _f .Length `schema:"margin-bottom" json:"marginBottom"`; +MarginBottom _bae .Length `schema:"margin-bottom" json:"marginBottom"`; // MarginLeft sets up the Left Margin for the output. -MarginLeft _f .Length `schema:"margin-left" json:"marginLeft"`; +MarginLeft _bae .Length `schema:"margin-left" json:"marginLeft"`; // MarginRight sets up the Right Margin for the output. -MarginRight _f .Length `schema:"margin-right" json:"marginRight"`;}; +MarginRight _bae .Length `schema:"margin-right" json:"marginRight"`;}; + +// WaitReady waits for the selector to get ready - 'loaded'. +func (_dac *QueryBuilder )WaitReady (selector string ,by _be .ByType )*QueryBuilder {_dac ._dd .RenderParameters .WaitReady =append (_dac ._dd .RenderParameters .WaitReady ,BySelector {Selector :selector ,By :by });return _dac ;}; // ParseOptions parses options for the Client. -func ParseOptions (connectPath string )(Options ,error ){if !_ac .HasPrefix (connectPath ,"\u0068\u0074\u0074\u0070"){connectPath ="\u0068t\u0074\u0070\u003a\u002f\u002f"+connectPath ;};_fa ,_ad :=_bg .Parse (connectPath );if _ad !=nil {return Options {},_ba .Errorf ("p\u0072\u006f\u0076\u0069\u0064\u0065d\u0020\u0069\u006e\u0076\u0061\u006ci\u0064\u0020\u0075\u006e\u0069\u0068\u0074m\u006c\u002d\u0073\u0065\u0072\u0076\u0065\u0072\u0020\u0075r\u006c"); -};var _ga int ;if _fa .Port ()!=""{_ga ,_ad =_e .Atoi (_fa .Port ());if _ad !=nil {return Options {},_ba .Errorf ("\u0070\u0061\u0072si\u006e\u0067\u0020\u0070\u006f\u0072\u0074\u0020\u0066\u0061\u0069\u006c\u0065\u0064\u003a\u0020\u0025\u0077",_ad );}; -};return Options {Hostname :_fa .Hostname (),Port :_ga ,HTTPS :_fa .Scheme =="\u0068\u0074\u0074p\u0073",Prefix :_fa .Path },nil ;}; +func ParseOptions (connectPath string )(Options ,error ){if !_cf .HasPrefix (connectPath ,"\u0068\u0074\u0074\u0070"){connectPath ="\u0068t\u0074\u0070\u003a\u002f\u002f"+connectPath ;};_df ,_db :=_f .Parse (connectPath );if _db !=nil {return Options {},_fa .Errorf ("p\u0072\u006f\u0076\u0069\u0064\u0065d\u0020\u0069\u006e\u0076\u0061\u006ci\u0064\u0020\u0075\u006e\u0069\u0068\u0074m\u006c\u002d\u0073\u0065\u0072\u0076\u0065\u0072\u0020\u0075r\u006c"); +};var _baea int ;if _df .Port ()!=""{_baea ,_db =_eb .Atoi (_df .Port ());if _db !=nil {return Options {},_fa .Errorf ("\u0070\u0061\u0072si\u006e\u0067\u0020\u0070\u006f\u0072\u0074\u0020\u0066\u0061\u0069\u006c\u0065\u0064\u003a\u0020\u0025\u0077",_db ); +};};return Options {Hostname :_df .Hostname (),Port :_baea ,HTTPS :_df .Scheme =="\u0068\u0074\u0074p\u0073",Prefix :_df .Path },nil ;}; -// New creates new client with provided options. -func New (o Options )*Client {o .DefaultTimeout =_bd .Second *30;if o .Port <=0{o .Port =8080;};if o .Hostname ==""{o .Hostname ="\u00312\u0037\u002e\u0030\u002e\u0030\u002e1";};var _ddg =&_eb .Transport {DialContext :(&_gd .Dialer {Timeout :5*_bd .Second }).DialContext ,TLSHandshakeTimeout :5*_bd .Second }; -_ag .Log .Info ("\u0043l\u0069e\u006e\u0074\u0020\u0041\u0064\u0064\u0072\u003a\u0020\u0025\u0073",o .Addr ());return &Client {Options :o ,Client :&_eb .Client {Transport :_ddg ,Timeout :o .DefaultTimeout }};}; +// WithPort sets the Port option for the client options. +func WithPort (option int )Option {return func (_ebd *Options ){_ebd .Port =option }};type generatePDFRequestV1 struct{Content []byte `json:"content"`;ContentType string `json:"contentType"`;ContentURL string `json:"contentURL"`;Method string `json:"method"`; +ExpiresAt int64 `json:"expiresAt"`;TimeoutDuration int64 `json:"timeoutDuration,omitempty"`;PageParameters ;RenderParameters ;}; -// Orientation sets the page orientation for the Query. -func (_gff *QueryBuilder )Orientation (orientation _f .Orientation )*QueryBuilder {_gff ._fd .PageParameters .Orientation =orientation ;return _gff ;}; +// WithHostname sets the Hostname option for the client options. +func WithHostname (option string )Option {return func (_ee *Options ){_ee .Hostname =option }}; -// Validate checks the validity of the RenderParameters. -func (_bga *RenderParameters )Validate ()error {if _bga .WaitTime > _bd .Minute *3{return _d .New ("\u0074\u006f\u006f\u0020\u006c\u006f\u006e\u0067 \u006d\u0069\u006eim\u0075\u006d\u0020\u006c\u006f\u0061d\u0020\u0074\u0069\u006d\u0065\u002e\u0020\u004d\u0061\u0078\u0069\u006d\u0075\u006d\u0020i\u0073\u0020\u0033\u0020\u006d\u0069\u006e\u0075t\u0065\u0073"); -};for _ ,_aee :=range _bga .WaitReady {if _ebe :=_aee .Validate ();_ebe !=nil {return _ba .Errorf ("\u006f\u006e\u0065\u0020\u006f\u0066\u0020w\u0061\u0069\u0074 \u0072\u0065\u0061\u0064y\u0020\u0073\u0065\u006c\u0065\u0063\u0074\u006f\u0072\u0020\u0069\u0073\u0020\u006e\u006f\u0074\u0020\u0076\u0061\u006c\u0069\u0064\u003a\u0020\u0025\u0077",_ebe ); -};};return nil ;}; +// DefaultPageParameters creates default parameters. +func DefaultPageParameters ()PageParameters {return PageParameters {Orientation :_bae .Portrait }}; -// WithPort sets the Port option for the client options. -func WithPort (option int )Option {return func (_cdf *Options ){_cdf .Port =option }};func (_bag *Client )getGenerateRequest (_beg _g .Context ,_ab *Query )(*_eb .Request ,error ){_ddf :=generatePDFRequestV1 {Method :_ab .Method ,PageParameters :_ab .PageParameters ,RenderParameters :_ab .RenderParameters ,TimeoutDuration :int64 (_ab .TimeoutDuration )}; -switch _ab .Method {case "\u0077\u0065\u0062":_ddf .ContentURL =_ab .URL ;case "\u0064\u0069\u0072","\u0068\u0074\u006d\u006c":_ddf .ContentType =_ab .ContentType ;_ddf .Content =_ab .Content ;};_cb :=new (_a .Buffer );if _gf :=_b .NewEncoder (_cb ).Encode (&_ddf ); -_gf !=nil {return nil ,_ba .Errorf ("e\u006e\u0063\u006f\u0064\u0069\u006eg\u0020\u0072\u0065\u0071\u0075\u0065\u0073\u0074\u0020f\u0061\u0069\u006ce\u0064:\u0020\u0025\u0076",_gf );};_bgf :=_bag .Options .Addr ();_bgf =_ba .Sprintf ("\u0025s\u002f\u0076\u0031\u002f\u0070\u0064f",_bgf ); -_cd ,_bfe :=_eb .NewRequest ("\u0050\u004f\u0053\u0054",_bgf ,_cb );if _bfe !=nil {return nil ,_bfe ;};_cd .Header .Set ("\u0043\u006f\u006et\u0065\u006e\u0074\u002d\u0054\u0079\u0070\u0065","\u0061\u0070p\u006c\u0069\u0063a\u0074\u0069\u006f\u006e\u002f\u006a\u0073\u006f\u006e"); -_cd .Header .Set ("\u0041c\u0063e\u0070\u0074\u002d\u0045\u006e\u0063\u006f\u0064\u0069\u006e\u0067","\u0064\u0065\u0066\u006ca\u0074\u0065\u002c\u0020\u0067\u007a\u0069\u0070\u003b\u0071=\u0031.\u0030\u002c\u0020\u002a\u003b\u0071\u003d0\u002e\u0035"); -_cd =_cd .WithContext (_beg );return _cd ,nil ;}; +// ConvertHTML converts provided Query input into PDF file data. +// Implements creator.HTMLConverter interface. +func (_dg *Client )ConvertHTML (ctx _e .Context ,q *Query )(*PDFResponse ,error ){if _cfg :=q .Validate ();_cfg !=nil {return nil ,_cfg ;};_ag ,_dbb :=_dg .getGenerateRequest (ctx ,q );if _dbb !=nil {return nil ,_dbb ;};_ge .Log .Trace ("\u0052\u0065\u0071\u0075\u0065\u0073\u0074 \u002d\u0020\u0025s\u0020\u002d\u0020\u0025s\u0025\u0073\u002c\u0020\u0048\u0065\u0061\u0064\u0065\u0072\u0073\u003a\u0020\u0025\u0076\u002c\u0020\u0051\u0075\u0065\u0072\u0079\u003a\u0020\u0025\u0076",_ag .Method ,_ag .URL .Hostname (),_ag .URL .Path ,_ag .Header ,_ag .URL .Query ()); +_gg :=*_dg .Client ;if q .TimeoutDuration !=0{_gg .Timeout =q .TimeoutDuration ;};_aee ,_dbb :=_gg .Do (_ag );if _dbb !=nil {return nil ,_dbb ;};var _fb error ;switch _aee .StatusCode {case _ba .StatusNotFound :_fb =ErrNotFound ;case _ba .StatusBadRequest :_fb =ErrBadRequest ; +case _ba .StatusNotImplemented :_fb =ErrNotImplemented ;case _ba .StatusUnauthorized :_fb =ErrUnauthorized ;case _ba .StatusRequestTimeout :_fb =ErrTimedOut ;case _ba .StatusCreated :default:_fb =ErrInternalError ;};_fe :=_aee .Body ;switch _aee .Header .Get ("\u0043\u006fn\u0074\u0065\u006et\u002d\u0045\u006e\u0063\u006f\u0064\u0069\u006e\u0067"){case "\u0067\u007a\u0069\u0070":_fe ,_dbb =_c .NewReader (_aee .Body ); +if _dbb !=nil {return nil ,_dbb ;};case "\u0064e\u0066\u006c\u0061\u0074\u0065":_fe =_da .NewReader (_aee .Body );case "":default:return nil ,_fa .Errorf ("\u0075\u006e\u0073\u0075\u0070\u0070\u006f\u0072\u0074\u0065\u0064\u0020\u0043o\u006e\u0074\u0065\u006e\u0074\u002dE\u006e\u0063\u006f\u0064\u0069\u006e\u0067\u003a\u0020\u0025\u0073\u0020\u0068e\u0061\u0064\u0065\u0072",_aee .Header .Get ("\u0043\u006fn\u0074\u0065\u006et\u002d\u0045\u006e\u0063\u006f\u0064\u0069\u006e\u0067")); +};_cfb ,_dbb :=_g .ReadAll (_fe );if _dbb !=nil &&_fb ==nil {return nil ,_fa .Errorf ("\u0055\u006e\u0069HT\u004d\u004c\u0020\u0073\u0065\u0072\u0076\u0065\u0072\u0020\u0065\u0072\u0072\u006f\u0072\u0020\u0025\u0073",_dbb );};_ge .Log .Trace ("\u005b\u0025\u0064]\u0020\u0025\u0073\u0020\u0025\u0073\u0025\u0073",_aee .StatusCode ,_ag .Method ,_ag .URL .Host ,_ag .URL .Path ); +if _fb !=nil {return nil ,_fa .Errorf ("\u0025\u0073\u0020%\u0077",string (_cfb ),_fb );};_ef :=_aee .Header .Get ("\u0058\u002d\u004a\u006f\u0062\u002d\u0049\u0044");_ge .Log .Trace ("\u0052\u0065\u0073\u0070\u006f\u006e\u0073\u0065\u0020I\u0044\u0020\u0025\u0073",_ef ); +return &PDFResponse {ID :_ef ,Data :_cfb },nil ;}; -// Addr gets the HTTP address URI used by the http.Client. -func (_ddd *Options )Addr ()string {_aeb :=_ac .Builder {};_aeb .WriteString ("\u0068\u0074\u0074\u0070");if _ddd .HTTPS {_aeb .WriteRune ('s');};_aeb .WriteString ("\u003a\u002f\u002f");_aeb .WriteString (_ddd .Hostname );_aeb .WriteRune (':');_aeb .WriteString (_e .Itoa (_ddd .Port )); -if _ddd .Prefix !=""{_aeb .WriteString (_ddd .Prefix );};return _aeb .String ();}; +// RenderParameters are the parameters related with the rendering. +type RenderParameters struct{WaitTime _gac .Duration `schema:"minimum-load-time" json:"waitTime"`;WaitReady []BySelector `json:"waitReady"`;WaitVisible []BySelector `json:"waitVisible"`;}; -// MarginTop sets up the MarginTop parameter for the query. -func (_ce *QueryBuilder )MarginTop (marginTop _f .Length )*QueryBuilder {_ce ._fd .PageParameters .MarginTop =marginTop ;return _ce ;}; +// WaitVisible waits for the selector to get visible. +func (_dceb *QueryBuilder )WaitVisible (selector string ,by _be .ByType )*QueryBuilder {_dceb ._dd .RenderParameters .WaitVisible =append (_dceb ._dd .RenderParameters .WaitVisible ,BySelector {Selector :selector ,By :by });return _dceb ;}; // Landscape sets up the landscape portrait orientation. -func (_gdg *QueryBuilder )Landscape ()*QueryBuilder {_gdg ._fd .PageParameters .Orientation =_f .Landscape ;return _gdg ;}; - -// WithPrefix sets the client prefix. -func WithPrefix (prefix string )Option {return func (_ada *Options ){_ada .Prefix =prefix }}; +func (_eg *QueryBuilder )Landscape ()*QueryBuilder {_eg ._dd .PageParameters .Orientation =_bae .Landscape ;return _eg ;}; // PaperHeight sets up the PaperHeight (in cm) parameter for the query. -func (_aga *QueryBuilder )PaperHeight (paperHeight _f .Length )*QueryBuilder {_aga ._fd .PageParameters .PaperHeight =paperHeight ;return _aga ;}; +func (_aea *QueryBuilder )PaperHeight (paperHeight _bae .Length )*QueryBuilder {_aea ._dd .PageParameters .PaperHeight =paperHeight ;return _aea ;}; -// Validate checks validity of the selector. -func (_cdfg BySelector )Validate ()error {if _cdfg .Selector ==""{return _d .New ("\u0070\u0072\u006fvi\u0064\u0065\u0064\u0020\u0065\u006d\u0070\u0074\u0079\u0020\u0073\u0065\u006c\u0065\u0063\u0074\u006f\u0072");};if _ebd :=_cdfg .By .Validate ();_ebd !=nil {return _ebd ; -};return nil ;}; +// Validate checks if the parameters are valid. +func (_bff *PageParameters )Validate ()error {if _bff .PaperWidth !=nil {if _bff .PaperWidth .Millimeters ()< 0{return _ga .New ("\u006e\u0065g\u0061\u0074\u0069\u0076\u0065\u0020\u0076\u0061\u006c\u0075\u0065\u0020\u0066\u006f\u0072\u0020\u0050\u0061\u0070\u0065\u0072\u0057id\u0074\u0068"); +};};if _bff .PaperHeight !=nil {if _bff .PaperHeight .Millimeters ()< 0{return _ga .New ("\u006e\u0065\u0067\u0061\u0074\u0069\u0076\u0065\u0020\u0076a\u006c\u0075\u0065\u0020\u0066\u006f\u0072 \u0050\u0061\u0070\u0065\u0072\u0048\u0065\u0069\u0067\u0068\u0074"); +};};if _bff .MarginTop !=nil {if _bff .MarginTop .Millimeters ()< 0{return _ga .New ("\u006e\u0065\u0067\u0061t\u0069\u0076\u0065\u0020\u0076\u0061\u006c\u0075\u0065\u0020f\u006fr\u0020\u004d\u0061\u0072\u0067\u0069\u006eT\u006f\u0070");};};if _bff .MarginBottom !=nil {if _bff .MarginBottom .Millimeters ()< 0{return _ga .New ("\u006e\u0065\u0067a\u0074\u0069\u0076\u0065 \u0076\u0061\u006c\u0075\u0065\u0020\u0066o\u0072\u0020\u004d\u0061\u0072\u0067\u0069\u006e\u0042\u006f\u0074\u0074\u006f\u006d"); +};};if _bff .MarginLeft !=nil {if _bff .MarginLeft .Millimeters ()< 0{return _ga .New ("\u006e\u0065g\u0061\u0074\u0069\u0076\u0065\u0020\u0076\u0061\u006c\u0075\u0065\u0020\u0066\u006f\u0072\u0020\u004d\u0061\u0072\u0067\u0069\u006eLe\u0066\u0074");}; +};if _bff .MarginRight !=nil {if _bff .MarginRight .Millimeters ()< 0{return _ga .New ("\u006e\u0065\u0067\u0061\u0074\u0069\u0076\u0065\u0020\u0076a\u006c\u0075\u0065\u0020\u0066\u006f\u0072 \u004d\u0061\u0072\u0067\u0069\u006e\u0052\u0069\u0067\u0068\u0074"); +};};if _bff .PageSize !=nil &&!_bff .PageSize .IsAPageSize (){return _ga .New ("\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0070\u0061\u0067\u0065 \u0073\u0069\u007a\u0065");};return nil ;}; // Option is a function that changes client options. -type Option func (_bfb *Options ); +type Option func (_dce *Options ); -// QueryBuilder is the query that converts HTMLConverter defined data -type QueryBuilder struct{_fd Query ;_ece error ;}; +// Addr gets the HTTP address URI used by the http.Client. +func (_dc *Options )Addr ()string {_cde :=_cf .Builder {};_cde .WriteString ("\u0068\u0074\u0074\u0070");if _dc .HTTPS {_cde .WriteRune ('s');};_cde .WriteString ("\u003a\u002f\u002f");_cde .WriteString (_dc .Hostname );_cde .WriteRune (':');_cde .WriteString (_eb .Itoa (_dc .Port )); +if _dc .Prefix !=""{_cde .WriteString (_dc .Prefix );};return _cde .String ();}; -// WithHTTPS sets the TLS option for the client options. -func WithHTTPS (useHTTPS bool )Option {return func (_acd *Options ){_acd .HTTPS =useHTTPS }}; +// MarginBottom sets up the MarginBottom parameter for the query. +func (_ddd *QueryBuilder )MarginBottom (marginBottom _bae .Length )*QueryBuilder {_ddd ._dd .PageParameters .MarginBottom =marginBottom ;return _ddd ;}; -// TimeoutDuration sets the server query duration timeout. -// Once the timeout is reached the server will return an error. -func (_adaf *QueryBuilder )TimeoutDuration (d _bd .Duration )*QueryBuilder {_adaf ._fd .TimeoutDuration =d ;return _adaf ;}; +// Query gets the Query from provided query builder. If some error occurred during build process +// or the input is not valid the function would return an error. +func (_ff *QueryBuilder )Query ()(*Query ,error ){if _afb :=_ff .Validate ();_afb !=nil {return nil ,_afb ;};return &_ff ._dd ,nil ;};func (_fee *Client )setQueryValues (_bdd *_ba .Request ,_bf *Query ){_beg :=_bdd .URL .Query ();_dff :=_bf .PageParameters ; +if _dff .PageSize !=nil {_beg .Set ("\u0070a\u0067\u0065\u002d\u0073\u0069\u007ae",_dff .PageSize .String ());};if _dff .PaperHeight !=nil {_beg .Set ("\u0070\u0061\u0070e\u0072\u002d\u0068\u0065\u0069\u0067\u0068\u0074",_dff .PaperHeight .String ());}; +if _dff .PaperWidth !=nil {_beg .Set ("p\u0061\u0070\u0065\u0072\u002d\u0077\u0069\u0064\u0074\u0068",_dff .PaperWidth .String ());};if _dff .MarginTop !=nil {_beg .Set ("\u006d\u0061\u0072\u0067\u0069\u006e\u002d\u0074\u006f\u0070",_dff .MarginTop .String ()); +};if _dff .MarginBottom !=nil {_beg .Set ("\u006d\u0061\u0072\u0067\u0069\u006e\u002d\u0062\u006f\u0074\u0074\u006f\u006d",_dff .MarginBottom .String ());};if _dff .MarginRight !=nil {_beg .Set ("\u006d\u0061\u0072g\u0069\u006e\u002d\u0072\u0069\u0067\u0068\u0074",_dff .MarginRight .String ()); +};if _dff .MarginLeft !=nil {_beg .Set ("m\u0061\u0072\u0067\u0069\u006e\u002d\u006c\u0065\u0066\u0074",_dff .MarginLeft .String ());};if _dff .Orientation ==_bae .Landscape {_beg .Set ("o\u0072\u0069\u0065\u006e\u0074\u0061\u0074\u0069\u006f\u006e",_dff .Orientation .String ()); +};if _bf .RenderParameters .WaitTime !=0{_beg .Set ("\u006d\u0069\u006e\u0069\u006d\u0075\u006d\u002d\u006c\u006f\u0061\u0064-\u0074\u0069\u006d\u0065",_eb .FormatInt (int64 (_bf .RenderParameters .WaitTime /_gac .Millisecond ),10));};_bdd .URL .RawQuery =_beg .Encode (); +}; -// WaitReady waits for the selector to get ready - 'loaded'. -func (_ea *QueryBuilder )WaitReady (selector string ,by _be .ByType )*QueryBuilder {_ea ._fd .RenderParameters .WaitReady =append (_ea ._fd .RenderParameters .WaitReady ,BySelector {Selector :selector ,By :by });return _ea ;}; +// BuildHTMLQuery creates a Query builder that is supposed to create valid +func BuildHTMLQuery ()*QueryBuilder {return &QueryBuilder {}}; -// Client is a structure that is a HTTP client for the unihtml server. -type Client struct{Options Options ;Client *_eb .Client ;}; +// WaitTime sets the minimum load time parameter for the page rendering. +func (_acef *QueryBuilder )WaitTime (d _gac .Duration )*QueryBuilder {_acef ._dd .RenderParameters .WaitTime =d ;return _acef ;}; -// WithHostname sets the Hostname option for the client options. -func WithHostname (option string )Option {return func (_baa *Options ){_baa .Hostname =option }}; +// New creates new client with provided options. +func New (o Options )*Client {o .DefaultTimeout =_gac .Second *30;if o .Port <=0{o .Port =8080;};if o .Hostname ==""{o .Hostname ="\u00312\u0037\u002e\u0030\u002e\u0030\u002e1";};var _gb =&_ba .Transport {DialContext :(&_ebb .Dialer {Timeout :5*_gac .Second }).DialContext ,TLSHandshakeTimeout :5*_gac .Second }; +_ge .Log .Info ("\u0043l\u0069e\u006e\u0074\u0020\u0041\u0064\u0064\u0072\u003a\u0020\u0025\u0073",o .Addr ());return &Client {Options :o ,Client :&_ba .Client {Transport :_gb ,Timeout :o .DefaultTimeout }};}; -// BySelector is a structure that defines a selector with it's query 'by' type. -type BySelector struct{Selector string `json:"selector"`;By _be .ByType `json:"by"`;};type generatePDFRequestV1 struct{Content []byte `json:"content"`;ContentType string `json:"contentType"`;ContentURL string `json:"contentURL"`;Method string `json:"method"`; -ExpiresAt int64 `json:"expiresAt"`;TimeoutDuration int64 `json:"timeoutDuration,omitempty"`;PageParameters ;RenderParameters ;}; +// Validate checks if the QueryBuilder had no errors during composition and creation. +func (_fd *QueryBuilder )Validate ()error {if _fd ._bgb !=nil {return _fd ._bgb ;};return _fd ._dd .Validate ();}; -// DefaultPageParameters creates default parameters. -func DefaultPageParameters ()PageParameters {return PageParameters {Orientation :_f .Portrait }}; +// Validate checks validity of the selector. +func (_cb BySelector )Validate ()error {if _cb .Selector ==""{return _ga .New ("\u0070\u0072\u006fvi\u0064\u0065\u0064\u0020\u0065\u006d\u0070\u0074\u0079\u0020\u0073\u0065\u006c\u0065\u0063\u0074\u006f\u0072");};if _gc :=_cb .By .Validate ();_gc !=nil {return _gc ; +};return nil ;};func (_ace *Client )getGenerateRequest (_fbd _e .Context ,_ab *Query )(*_ba .Request ,error ){_ea :=generatePDFRequestV1 {Method :_ab .Method ,PageParameters :_ab .PageParameters ,RenderParameters :_ab .RenderParameters ,TimeoutDuration :int64 (_ab .TimeoutDuration )}; +switch _ab .Method {case "\u0077\u0065\u0062":_ea .ContentURL =_ab .URL ;case "\u0064\u0069\u0072","\u0068\u0074\u006d\u006c":_ea .ContentType =_ab .ContentType ;_ea .Content =_ab .Content ;};_bag :=new (_bg .Buffer );if _ce :=_d .NewEncoder (_bag ).Encode (&_ea ); +_ce !=nil {return nil ,_fa .Errorf ("e\u006e\u0063\u006f\u0064\u0069\u006eg\u0020\u0072\u0065\u0071\u0075\u0065\u0073\u0074\u0020f\u0061\u0069\u006ce\u0064:\u0020\u0025\u0076",_ce );};_bef :=_ace .Options .Addr ();_bef =_fa .Sprintf ("\u0025s\u002f\u0076\u0031\u002f\u0070\u0064f",_bef ); +_af ,_bd :=_ba .NewRequest ("\u0050\u004f\u0053\u0054",_bef ,_bag );if _bd !=nil {return nil ,_bd ;};_af .Header .Set ("\u0043\u006f\u006et\u0065\u006e\u0074\u002d\u0054\u0079\u0070\u0065","\u0061\u0070p\u006c\u0069\u0063a\u0074\u0069\u006f\u006e\u002f\u006a\u0073\u006f\u006e"); +_af .Header .Set ("\u0041c\u0063e\u0070\u0074\u002d\u0045\u006e\u0063\u006f\u0064\u0069\u006e\u0067","\u0064\u0065\u0066\u006ca\u0074\u0065\u002c\u0020\u0067\u007a\u0069\u0070\u003b\u0071=\u0031.\u0030\u002c\u0020\u002a\u003b\u0071\u003d0\u002e\u0035"); +_af =_af .WithContext (_fbd );return _af ,nil ;}; -// Err gets the error which could occur in the query. -func (_db *QueryBuilder )Err ()error {return _db ._ece }; +// Options are the client options used by the HTTP client. +type Options struct{HTTPS bool ;Hostname string ;Port int ;DefaultTimeout _gac .Duration ;Prefix string ;}; + +// HealthCheck connects to the server and check the health status of the server. +func (_dae *Client )HealthCheck (ctx _e .Context )error {_a :=_dae .Options .Addr ();_a =_fa .Sprintf ("\u0025s\u002f\u0068\u0065\u0061\u006c\u0074h",_a );_ae ,_ac :=_ba .NewRequest ("\u0047\u0045\u0054",_a ,nil );if _ac !=nil {return _ac ;};_ae =_ae .WithContext (ctx ); +_fc ,_ac :=_dae .Client .Do (_ae );if _ac !=nil {return _ac ;};switch _fc .StatusCode {case _ba .StatusOK :return nil ;case _ba .StatusNotFound :return ErrNotFound ;case _ba .StatusInternalServerError :return ErrInternalError ;case _ba .StatusBadGateway :return ErrBadGateway ; +default:return ErrNotImplemented ;};}; + +// Orientation sets the page orientation for the Query. +func (_gde *QueryBuilder )Orientation (orientation _bae .Orientation )*QueryBuilder {_gde ._dd .PageParameters .Orientation =orientation ;return _gde ;}; + +// MarginTop sets up the MarginTop parameter for the query. +func (_daf *QueryBuilder )MarginTop (marginTop _bae .Length )*QueryBuilder {_daf ._dd .PageParameters .MarginTop =marginTop ;return _daf ;}; + +// WithDefaultTimeout sets the DefaultTimeout option for the client options. +func WithDefaultTimeout (option _gac .Duration )Option {return func (_bgf *Options ){_bgf .DefaultTimeout =option };};var (ErrNotFound =_ga .New ("\u006eo\u0074\u0020\u0066\u006f\u0075\u006ed");ErrBadRequest =_ga .New ("b\u0061\u0064\u0020\u0072\u0065\u0071\u0075\u0065\u0073\u0074"); +ErrNotImplemented =_ga .New ("\u006eo\u0074 \u0069\u006d\u0070\u006c\u0065\u006d\u0065\u006e\u0074\u0065\u0064");ErrInternalError =_ga .New ("i\u006e\u0074\u0065\u0072na\u006c \u0073\u0065\u0072\u0076\u0065r\u0020\u0065\u0072\u0072\u006f\u0072");ErrBadGateway =_ga .New ("b\u0061\u0064\u0020\u0067\u0061\u0074\u0065\u0077\u0061\u0079"); +ErrUnauthorized =_ga .New ("\u0075\u006e\u0061u\u0074\u0068\u006f\u0072\u0069\u007a\u0065\u0064");ErrTimedOut =_ga .New ("\u0072\u0065\u0071\u0075\u0065\u0073\u0074\u0020\u0074\u0069\u006d\u0065d\u0020\u006f\u0075\u0074");); + +// Validate checks the validity of the RenderParameters. +func (_dgf *RenderParameters )Validate ()error {if _dgf .WaitTime > _gac .Minute *3{return _ga .New ("\u0074\u006f\u006f\u0020\u006c\u006f\u006e\u0067 \u006d\u0069\u006eim\u0075\u006d\u0020\u006c\u006f\u0061d\u0020\u0074\u0069\u006d\u0065\u002e\u0020\u004d\u0061\u0078\u0069\u006d\u0075\u006d\u0020i\u0073\u0020\u0033\u0020\u006d\u0069\u006e\u0075t\u0065\u0073"); +};for _ ,_dbd :=range _dgf .WaitReady {if _cbb :=_dbd .Validate ();_cbb !=nil {return _fa .Errorf ("\u006f\u006e\u0065\u0020\u006f\u0066\u0020w\u0061\u0069\u0074 \u0072\u0065\u0061\u0064y\u0020\u0073\u0065\u006c\u0065\u0063\u0074\u006f\u0072\u0020\u0069\u0073\u0020\u006e\u006f\u0074\u0020\u0076\u0061\u006c\u0069\u0064\u003a\u0020\u0025\u0077",_cbb ); +};};return nil ;}; + +// WithPrefix sets the client prefix. +func WithPrefix (prefix string )Option {return func (_ca *Options ){_ca .Prefix =prefix }}; // MarginRight sets up the MarginRight parameter for the query. -func (_fgb *QueryBuilder )MarginRight (marginRight _f .Length )*QueryBuilder {_fgb ._fd .PageParameters .MarginRight =marginRight ;return _fgb ;}; +func (_cab *QueryBuilder )MarginRight (marginRight _bae .Length )*QueryBuilder {_cab ._dd .PageParameters .MarginRight =marginRight ;return _cab ;}; -// MarginLeft sets up the MarginLeft parameter for the query. -func (_de *QueryBuilder )MarginLeft (marginLeft _f .Length )*QueryBuilder {_de ._fd .PageParameters .MarginLeft =marginLeft ;return _de ;}; +// Err gets the error which could occur in the query. +func (_ec *QueryBuilder )Err ()error {return _ec ._bgb }; -// Query gets the Query from provided query builder. If some error occurred during build process -// or the input is not valid the function would return an error. -func (_ca *QueryBuilder )Query ()(*Query ,error ){if _bbc :=_ca .Validate ();_bbc !=nil {return nil ,_bbc ;};return &_ca ._fd ,nil ;}; +// Query is a structure that contains query parameters and the content used for the HTMLConverter conversion process. +type Query struct{Content []byte ;ContentType string ;URL string ;Method string ;PageParameters PageParameters ;RenderParameters RenderParameters ;TimeoutDuration _gac .Duration ;}; -// HealthCheck connects to the server and check the health status of the server. -func (_ae *Client )HealthCheck (ctx _g .Context )error {_fg :=_ae .Options .Addr ();_fg =_ba .Sprintf ("\u0025s\u002f\u0068\u0065\u0061\u006c\u0074h",_fg );_cf ,_da :=_eb .NewRequest ("\u0047\u0045\u0054",_fg ,nil );if _da !=nil {return _da ;};_cf =_cf .WithContext (ctx ); -_ebg ,_da :=_ae .Client .Do (_cf );if _da !=nil {return _da ;};switch _ebg .StatusCode {case _eb .StatusOK :return nil ;case _eb .StatusNotFound :return ErrNotFound ;case _eb .StatusInternalServerError :return ErrInternalError ;case _eb .StatusBadGateway :return ErrBadGateway ; -default:return ErrNotImplemented ;};}; +// PageSize sets up the PageSize parameter for the query. +func (_gd *QueryBuilder )PageSize (pageSize _bae .PageSize )*QueryBuilder {if pageSize !=_bae .Undefined {_gd ._dd .PageParameters .PageSize =&pageSize ;};return _gd ;}; -// Validate checks if the QueryBuilder had no errors during composition and creation. -func (_fdb *QueryBuilder )Validate ()error {if _fdb ._ece !=nil {return _fdb ._ece ;};return _fdb ._fd .Validate ();}; +// Portrait sets up the portrait page orientation. +func (_cbe *QueryBuilder )Portrait ()*QueryBuilder {_cbe ._dd .PageParameters .Orientation =_bae .Portrait ;return _cbe ;}; -// BuildHTMLQuery creates a Query builder that is supposed to create valid -func BuildHTMLQuery ()*QueryBuilder {return &QueryBuilder {}}; +// SetContent sets custom data with it's content type. +func (_fg *QueryBuilder )SetContent (content _cd .Content )*QueryBuilder {if _fg ._bgb !=nil {return _fg ;};switch content .Method (){case "\u0064\u0069\u0072","\u0068\u0074\u006d\u006c":if _fg ._dd .ContentType !=""{_fg ._bgb =ErrContentTypeDeclared ; +return _fg ;};if content .ContentType ()==""{_fg ._bgb =_fa .Errorf ("\u0065\u006d\u0070\u0074y\u0020\u0063\u0075\u0073\u0074\u006f\u006d\u0020\u0063\u006fn\u0074e\u006e\u0074\u0020\u0074\u0079\u0070\u0065 \u0025\u0077",ErrContentType );return _fg ;};_fg ._dd .Content =content .Data (); +_fg ._dd .ContentType =content .ContentType ();case "\u0077\u0065\u0062":if _fg ._dd .ContentType !=""{_fg ._bgb =ErrContentTypeDeclared ;return _fg ;};_fg ._dd .URL =string (content .Data ());_fg ._dd .ContentType =content .ContentType ();default:_fg ._bgb =_fa .Errorf ("\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0063\u006f\u006et\u0065\u006e\u0074\u0020\u006d\u0065\u0074\u0068\u006f\u0064:\u0020\u0025\u0073",content .Method ()); +return _fg ;};_fg ._dd .Method =content .Method ();return _fg ;}; -// PDFResponse is the response used by the HTMLConverter. -type PDFResponse struct{ID string `json:"id"`;Data []byte `json:"data"`;}; \ No newline at end of file +// WithHTTPS sets the TLS option for the client options. +func WithHTTPS (useHTTPS bool )Option {return func (_eaf *Options ){_eaf .HTTPS =useHTTPS }}; + +// Client is a structure that is a HTTP client for the unihtml server. +type Client struct{Options Options ;Client *_ba .Client ;}; + +// MarginLeft sets up the MarginLeft parameter for the query. +func (_gdf *QueryBuilder )MarginLeft (marginLeft _bae .Length )*QueryBuilder {_gdf ._dd .PageParameters .MarginLeft =marginLeft ;return _gdf ;}; \ No newline at end of file diff --git a/common/common.go b/common/common.go index e8fbe84..2ba66b0 100644 --- a/common/common.go +++ b/common/common.go @@ -10,7 +10,7 @@ // terms that can be accessed at https://unidoc.io/eula/ // Package common contains common properties used by the subpackages. -package common ;import _gc "time";const Version ="\u0030\u002e\u0031\u0030\u002e\u0030";const _d ="\u0032\u0020\u004aan\u0075\u0061\u0072\u0079\u0020\u0032\u0030\u0030\u0036\u0020\u0061\u0074\u0020\u0031\u0035\u003a\u0030\u0034";const _e =20; +package common ;import _g "time";const _gc =2025;var ReleasedAt =_g .Date (_gc ,_e ,_gg ,_ag ,_ge ,0,0,_g .UTC );const _gg =26;const _ag =12;const _e =4; // UtcTimeFormat returns a formatted string describing a UTC timestamp. -func UtcTimeFormat (t _gc .Time )string {return t .Format (_d )+"\u0020\u0055\u0054\u0043"};const _b =2025;var ReleasedAt =_gc .Date (_b ,_c ,_gb ,_gf ,_e ,0,0,_gc .UTC );const _gb =25;const _gf =12;const _c =3; \ No newline at end of file +func UtcTimeFormat (t _g .Time )string {return t .Format (_a )+"\u0020\u0055\u0054\u0043"};const Version ="\u0030\u002e\u0031\u0031\u002e\u0030";const _ge =20;const _a ="\u0032\u0020\u004aan\u0075\u0061\u0072\u0079\u0020\u0032\u0030\u0030\u0036\u0020\u0061\u0074\u0020\u0031\u0035\u003a\u0030\u0034"; diff --git a/content/content.go b/content/content.go index e15806f..547d5b4 100644 --- a/content/content.go +++ b/content/content.go @@ -9,64 +9,63 @@ // 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 content ;import (_e "archive/zip";_fd "bytes";_b "fmt";_f "net/url";_df "os";_a "strings";);type webURL struct{_gd string }; +package content ;import (_g "archive/zip";_cg "bytes";_gf "fmt";_f "net/url";_c "os";_d "strings";); -// Data implements Content interface. -func (_fc *webURL )Data ()[]byte {return []byte (_fc ._gd )}; +// NewStringContent creates a new StringContent. +func NewStringContent (html string )(*StringContent ,error ){return &StringContent {_fdb :html },nil }; -// ContentType implements Content interface. -func (_db *zipDirectory )ContentType ()string {return "\u0061p\u0070l\u0069\u0063\u0061\u0074\u0069\u006f\u006e\u002f\u007a\u0069\u0070";}; +// Method gets the web url query method. +func (_fd *webURL )Method ()string {return "\u0077\u0065\u0062"}; // Data implements Content interface. -func (_ef *zipDirectory )Data ()[]byte {return _ef ._dff .Bytes ()}; +func (_ad *StringContent )Data ()[]byte {return []byte (_ad ._fdb )}; -// NewWebURL creates new Content webURL for provided input URL path. -func NewWebURL (path string )(Content ,error ){if _ ,_faa :=_f .Parse (path );_faa !=nil {return nil ,_faa ;};return &webURL {_gd :path },nil ;}; +// ContentType implements Content interface. +func (_bcc *zipDirectory )ContentType ()string {return "\u0061p\u0070l\u0069\u0063\u0061\u0074\u0069\u006f\u006e\u002f\u007a\u0069\u0070";}; // ContentType implements Content interface. -func (_bea *StringContent )ContentType ()string {return "\u0074e\u0078\u0074\u002f\u0068\u0074\u006dl";}; +func (_gfc *StringContent )ContentType ()string {return "\u0074e\u0078\u0074\u002f\u0068\u0074\u006dl";}; // Data implements Content interface. -func (_dbe *StringContent )Data ()[]byte {return []byte (_dbe ._fe )}; +func (_dag *zipDirectory )Data ()[]byte {return _dag ._eg .Bytes ()}; -// StringContent implements Content interface for an HTML string. -type StringContent struct{_fe string };func (_aaa *zipDirectory )zipBasePaths (_ab _df .FileInfo ,_gc ,_de string ,_da bool ,_fdf *_a .Builder )(string ,string ){_fdf .WriteString (_gc );if !_a .HasSuffix (_gc ,"\u002f"){_fdf .WriteRune ('/');};_fdf .WriteString (_ab .Name ()); -if _da {_fdf .WriteRune ('/');};_bfe :=_fdf .String ();_fdf .Reset ();_fdf .WriteString (_de );_fdf .WriteString (_ab .Name ());if _da {_fdf .WriteRune ('/');};_gf :=_fdf .String ();_fdf .Reset ();return _bfe ,_gf ;};type zipDirectory struct{_dff _fd .Buffer ; -_ce *_e .Writer ;}; +// Content is an interface used for putting the content into Client Query. +type Content interface{ContentType ()string ;Method ()string ;Data ()[]byte ;};type webURL struct{_fc string }; // NewZipDirectory creates new zip compressed file that recursively reads the directory at the 'dirPath' // and stores in it's in-memory buffer. -func NewZipDirectory (dirPath string )(Content ,error ){_dfc :=&zipDirectory {_dff :_fd .Buffer {}};_dfc ._ce =_e .NewWriter (&_dfc ._dff );if _cea :=_dfc .zipPath (dirPath ,"");_cea !=nil {return nil ,_cea ;};if _ec :=_dfc ._ce .Close ();_ec !=nil {return nil ,_ec ; -};return _dfc ,nil ;};func (_ga *zipDirectory )zipPath (_gb ,_ge string )error {_fac ,_ac :=_df .ReadDir (_gb );if _ac !=nil {return _b .Errorf ("\u0072\u0065\u0061di\u006e\u0067\u0020\u0064\u0069\u0072\u0065\u0063\u0074o\u0072y\u003a \u0027%\u0073\u0027\u0020\u0066\u0061\u0069\u006c\u0065\u0064\u003a\u0020\u0025\u0077",_gb ,_ac ); -};_cg :=&_a .Builder {};for _ ,_fca :=range _fac {_bd ,_acb :=_fca .Info ();if _acb !=nil {return _acb ;};_dd ,_ee :=_ga .zipBasePaths (_bd ,_gb ,_ge ,_fca .IsDir (),_cg );if _fca .IsDir (){if _ae :=_ga .zipPath (_dd ,_ee );_ae !=nil {return _ae ;};continue ; -};_dc ,_acb :=_df .ReadFile (_dd );if _acb !=nil {return _acb ;};_cb ,_acb :=_ga ._ce .Create (_ee );if _acb !=nil {return _acb ;};if _ ,_acb =_cb .Write (_dc );_acb !=nil {return _acb ;};};return nil ;}; - -// Data implements Content interface. -func (_fg *htmlFile )Data ()[]byte {return _fg ._c .Bytes ()}; - -// NewStringContent creates a new StringContent. -func NewStringContent (html string )(*StringContent ,error ){return &StringContent {_fe :html },nil }; +func NewZipDirectory (dirPath string )(Content ,error ){_gg :=&zipDirectory {_eg :_cg .Buffer {}};_gg ._cd =_g .NewWriter (&_gg ._eg );if _gda :=_gg .zipPath (dirPath ,"");_gda !=nil {return nil ,_gda ;};if _af :=_gg ._cd .Close ();_af !=nil {return nil ,_af ; +};return _gg ,nil ;};type zipDirectory struct{_eg _cg .Buffer ;_cd *_g .Writer ;}; // Method implements Content interface. -func (_adg *StringContent )Method ()string {return "\u0068\u0074\u006d\u006c"}; - -// ContentType implements Content interface. -func (_bg *webURL )ContentType ()string {return "\u0074\u0065\u0078\u0074\u002f\u0070\u006c\u0061\u0069\u006e";}; +func (_bgb *StringContent )Method ()string {return "\u0068\u0074\u006d\u006c"};func (_ggb *zipDirectory )zipPath (_cgd ,_db string )error {_ef ,_df :=_c .ReadDir (_cgd );if _df !=nil {return _gf .Errorf ("\u0072\u0065\u0061di\u006e\u0067\u0020\u0064\u0069\u0072\u0065\u0063\u0074o\u0072y\u003a \u0027%\u0073\u0027\u0020\u0066\u0061\u0069\u006c\u0065\u0064\u003a\u0020\u0025\u0077",_cgd ,_df ); +};_gb :=&_d .Builder {};for _ ,_dbe :=range _ef {_afc ,_aba :=_dbe .Info ();if _aba !=nil {return _aba ;};_fe ,_gff :=_ggb .zipBasePaths (_afc ,_cgd ,_db ,_dbe .IsDir (),_gb );if _dbe .IsDir (){if _de :=_ggb .zipPath (_fe ,_gff );_de !=nil {return _de ; +};continue ;};_fa ,_aba :=_c .ReadFile (_fe );if _aba !=nil {return _aba ;};_dfa ,_aba :=_ggb ._cd .Create (_gff );if _aba !=nil {return _aba ;};if _ ,_aba =_dfa .Write (_fa );_aba !=nil {return _aba ;};};return nil ;}; // Method gets the query method. -func (_be *htmlFile )Method ()string {return "\u0068\u0074\u006d\u006c"}; +func (_da *htmlFile )Method ()string {return "\u0068\u0074\u006d\u006c"};type htmlFile struct{_a _cg .Buffer }; -// Content is an interface used for putting the content into Client Query. -type Content interface{ContentType ()string ;Method ()string ;Data ()[]byte ;}; +// ContentType implements Content interface. +func (_bg *htmlFile )ContentType ()string {return "\u0074e\u0078\u0074\u002f\u0068\u0074\u006dl"}; + +// StringContent implements Content interface for an HTML string. +type StringContent struct{_fdb string };func (_egf *zipDirectory )zipBasePaths (_ac _c .FileInfo ,_afe ,_ca string ,_cee bool ,_faf *_d .Builder )(string ,string ){_faf .WriteString (_afe );if !_d .HasSuffix (_afe ,"\u002f"){_faf .WriteRune ('/');};_faf .WriteString (_ac .Name ()); +if _cee {_faf .WriteRune ('/');};_efd :=_faf .String ();_faf .Reset ();_faf .WriteString (_ca );_faf .WriteString (_ac .Name ());if _cee {_faf .WriteRune ('/');};_dbef :=_faf .String ();_faf .Reset ();return _efd ,_dbef ;}; // ContentType implements Content interface. -func (_fag *htmlFile )ContentType ()string {return "\u0074e\u0078\u0074\u002f\u0068\u0074\u006dl"};type htmlFile struct{_c _fd .Buffer }; +func (_ab *webURL )ContentType ()string {return "\u0074\u0065\u0078\u0074\u002f\u0070\u006c\u0061\u0069\u006e";}; + +// NewWebURL creates new Content webURL for provided input URL path. +func NewWebURL (path string )(Content ,error ){if _ ,_bfg :=_f .Parse (path );_bfg !=nil {return nil ,_bfg ;};return &webURL {_fc :path },nil ;}; // Method gets the zip directory method. -func (_aa *zipDirectory )Method ()string {return "\u0064\u0069\u0072"}; +func (_ff *zipDirectory )Method ()string {return "\u0064\u0069\u0072"}; + +// Data implements Content interface. +func (_e *webURL )Data ()[]byte {return []byte (_e ._fc )}; // NewHTMLFile creates new Content htmFile for provided input path. -func NewHTMLFile (path string )(Content ,error ){_fa ,_cc :=_df .Open (path );if _cc !=nil {return nil ,_cc ;};_g :=&htmlFile {_c :_fd .Buffer {}};if _ ,_cc =_g ._c .ReadFrom (_fa );_cc !=nil {return nil ,_cc ;};return _g ,nil ;}; +func NewHTMLFile (path string )(Content ,error ){_bc ,_gd :=_c .Open (path );if _gd !=nil {return nil ,_gd ;};_dc :=&htmlFile {_a :_cg .Buffer {}};if _ ,_gd =_dc ._a .ReadFrom (_bc );_gd !=nil {return nil ,_gd ;};return _dc ,nil ;}; -// Method gets the web url query method. -func (_ca *webURL )Method ()string {return "\u0077\u0065\u0062"}; \ No newline at end of file +// Data implements Content interface. +func (_ae *htmlFile )Data ()[]byte {return _ae ._a .Bytes ()}; \ No newline at end of file diff --git a/go.mod b/go.mod index d125340..9d7853e 100644 --- a/go.mod +++ b/go.mod @@ -7,7 +7,7 @@ require ( github.com/spf13/cobra v1.8.0 github.com/spf13/viper v1.16.0 github.com/stretchr/testify v1.10.0 - github.com/unidoc/unipdf/v3 v3.68.0 + github.com/unidoc/unipdf/v3 v3.69.0 ) require ( @@ -30,7 +30,9 @@ require ( github.com/spf13/jwalterweatherman v1.1.0 // indirect github.com/spf13/pflag v1.0.5 // indirect github.com/subosito/gotenv v1.6.0 // indirect + github.com/trimmer-io/go-xmp v1.0.0 // indirect github.com/unidoc/freetype v0.2.3 // indirect + github.com/unidoc/garabic v0.0.0-20220702200334-8c7cb25baa11 // indirect github.com/unidoc/pkcs7 v0.2.0 // indirect github.com/unidoc/timestamp v0.0.0-20200412005513-91597fd3793a // indirect github.com/unidoc/unichart v0.4.0 // indirect diff --git a/go.sum b/go.sum index 0938820..5b2be4b 100644 --- a/go.sum +++ b/go.sum @@ -70,8 +70,12 @@ github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOf github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= +github.com/trimmer-io/go-xmp v1.0.0 h1:zY8bolSga5kOjBAaHS6hrdxLgEoYuT875xTy0QDwZWs= +github.com/trimmer-io/go-xmp v1.0.0/go.mod h1:Aaptr9sp1lLv7UnCAdQ+gSHZyY2miYaKmcNVj7HRBwA= github.com/unidoc/freetype v0.2.3 h1:uPqW+AY0vXN6K2tvtg8dMAtHTEvvHTN52b72XpZU+3I= github.com/unidoc/freetype v0.2.3/go.mod h1:mJ/Q7JnqEoWtajJVrV6S1InbRv0K/fJerPB5SQs32KI= +github.com/unidoc/garabic v0.0.0-20220702200334-8c7cb25baa11 h1:kExUKrbi429KdVVuAc85z4P+W/Rk4bjGWB5KzZLl/l8= +github.com/unidoc/garabic v0.0.0-20220702200334-8c7cb25baa11/go.mod h1:SX63w9Ww4+Z7E96B01OuG59SleQUb+m+dmapZ8o1Jac= github.com/unidoc/pkcs7 v0.0.0-20200411230602-d883fd70d1df/go.mod h1:UEzOZUEpJfDpywVJMUT8QiugqEZC29pDq7kdIZhWCr8= github.com/unidoc/pkcs7 v0.2.0 h1:0Y0RJR5Zu7OuD+/l7bODXARn6b8Ev2G4A8lI4rzy9kg= github.com/unidoc/pkcs7 v0.2.0/go.mod h1:UEzOZUEpJfDpywVJMUT8QiugqEZC29pDq7kdIZhWCr8= @@ -81,6 +85,8 @@ github.com/unidoc/unichart v0.4.0 h1:uXk9ZjbqzKb8Lt2Qv2oM9D2ftNRXvezPevgxQhsTQys github.com/unidoc/unichart v0.4.0/go.mod h1:9QsE8RbS0fE7ndHNroeCEFkRPqqk47Qsoj6QSAtcwN0= github.com/unidoc/unipdf/v3 v3.68.0 h1:AM1wKukv75hvCtTbiPb3HSIdHS5RbmR6aYTCE0jiO+A= github.com/unidoc/unipdf/v3 v3.68.0/go.mod h1:4mQ4E8niuY+30TGxT1e/8aVoSk/nn0yCKfi+kYw98+I= +github.com/unidoc/unipdf/v3 v3.69.0 h1:lW9Ljmc/kHzNRqz7Oo9l2wG6G85mwIgBZuDqsTg1x2I= +github.com/unidoc/unipdf/v3 v3.69.0/go.mod h1:4mQ4E8niuY+30TGxT1e/8aVoSk/nn0yCKfi+kYw98+I= github.com/unidoc/unitype v0.5.1 h1:UwTX15K6bktwKocWVvLoijIeu4JAVEAIeFqMOjvxqQs= github.com/unidoc/unitype v0.5.1/go.mod h1:3dxbRL+f1otNqFQIRHho8fxdg3CcUKrqS8w1SXTsqcI= golang.org/x/crypto v0.33.0 h1:IOBPskki6Lysi0lo9qQvbxiQ+FvsCC/YWOecCHAixus= diff --git a/selector/selector.go b/selector/selector.go index 4d5b7c7..aadf285 100644 --- a/selector/selector.go +++ b/selector/selector.go @@ -9,10 +9,10 @@ // 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 selector ;import _f "errors"; - -// Validate checks validity of the ByType. -func (_e ByType )Validate ()error {if _e >=ByID &&_e <=BySearch {return nil ;};return _f .New ("\u0069\u006e\u0076\u0061li\u0064\u0020\u0062\u0079\u0020\u0073\u0065\u006c\u0065\u0063\u0074\u006f\u0072");}; +package selector ;import _g "errors"; // ByType is a 'By' selector type enumerator. -type ByType uint ;const (ByUndefined ByType =iota ;ByID ;ByQueryAll ;ByQuery ;ByNodeID ;ByJSPath ;BySearch ;); \ No newline at end of file +type ByType uint ;const (ByUndefined ByType =iota ;ByID ;ByQueryAll ;ByQuery ;ByNodeID ;ByJSPath ;BySearch ;); + +// Validate checks validity of the ByType. +func (_a ByType )Validate ()error {if _a >=ByID &&_a <=BySearch {return nil ;};return _g .New ("\u0069\u006e\u0076\u0061li\u0064\u0020\u0062\u0079\u0020\u0073\u0065\u006c\u0065\u0063\u0074\u006f\u0072");}; \ No newline at end of file diff --git a/sizes/sizes.go b/sizes/sizes.go index fe84dcc..3aa1d9c 100644 --- a/sizes/sizes.go +++ b/sizes/sizes.go @@ -12,190 +12,189 @@ // Package sizes defines basic types that determines the size units i.e. lengths. // // -package sizes ;import (_g "encoding/json";_ae "flag";_e "fmt";_ce "strconv";_c "strings";);const (_cd =float64 (1)/float64 (25.4);_b =25.4;_d =0.0139;_ac =0.3528;_cb =1.0/64;_bc =1.0/_ac ;); +package sizes ;import (_ac "encoding/json";_a "flag";_ad "fmt";_e "strconv";_d "strings";); -// MarshalPageSize marshals the page size into string. -func MarshalPageSize (p PageSize )(string ,error ){_cgg ,_ab :=p .MarshalText ();if _ab !=nil {return "",_ab ;};return string (_cgg ),nil ;}; +// ValueType implements viper.FlagValue interface. +func (_bcc Point )ValueType ()string {return _bcc .Type ()}; -// Name implements viper.FlagValue interface. -func (_bab Point )Name ()string {return "\u0070\u006f\u0069n\u0074"};var _ Length =Inch (0);var _ccc =[]PageSize {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23};const (Undefined PageSize =iota ;A0 ;A1 ;A2 ;A3 ;A4 ;A5 ;A6 ;A7 ;A8 ;A9 ;A10 ; -B0 ;B1 ;B2 ;B3 ;B4 ;B5 ;B6 ;B7 ;B8 ;B9 ;B10 ;Letter ;); +// PageSizeValues returns all values of the enum +func PageSizeValues ()[]PageSize {return _cbb }; -// String implements fmt.Stringer interface. -func (_fc Inch )String ()string {_aa :=_c .Builder {};_aa .WriteString (_ce .FormatFloat (float64 (_fc ),'f',1,64));_aa .WriteString ("\u0069\u006e");return _aa .String ();};func _eaa (_fbb string )(Point ,error ){_fbb =_c .TrimSpace (_c .Trim (_fbb ,"\u0070\u0074")); -_bbe ,_gdf :=_ce .ParseFloat (_fbb ,64);if _gdf !=nil {return 0,_gdf ;};return Point (_bbe ),nil ;}; +// Millimeters gets the float64 millimeter value. +func (_eg Millimeter )Millimeters ()Millimeter {return _eg }; -// Orientation is the page orientation type wrapper. -type Orientation bool ; +// LengthFlag is a pflag wrapper for the Length value. +type LengthFlag struct{Length Length ;}; -// Points implements Length interface. -func (_dcc Inch )Points ()Point {return Point (float64 (_dcc )*_cb )}; +// String implements fmt.Stringer interface. +func (_cg Point )String ()string {_ce :=_d .Builder {};_ce .WriteString (_e .FormatFloat (float64 (_cg ),'f',1,64));_ce .WriteString ("\u0070\u0074");return _ce .String ();}; -// Set implements pflag.Value interface. -func (_ecd *PageSize )Set (s string )error {_bdf ,_fgb :=UnmarshalPageSize (s );if _fgb !=nil {return _fgb ;};*_ecd =_bdf ;return nil ;}; +// Millimeters converts the inches value to the millimeters. +func (_eba Inch )Millimeters ()Millimeter {return Millimeter (float64 (_eba )*_g )}; -// PageSizeValues returns all values of the enum -func PageSizeValues ()[]PageSize {return _ccc };const (Portrait =Orientation (false );Landscape =Orientation (true );); +// ValueType implements pflag.Value interface. +func (_db Inch )ValueType ()string {return _db .Type ()}; // Points implements Length interface. -func (_aef Millimeter )Points ()Point {return Point (_aef *_bc )}; - -// PageSizeString retrieves an enum value from the enum constants string name. -// Throws an error if the param is not part of the enum. -func PageSizeString (s string )(PageSize ,error ){if _afb ,_bbfe :=_gde [s ];_bbfe {return _afb ,nil ;};return 0,_e .Errorf ("\u0025\u0073 \u0064\u006f\u0065\u0073 \u006e\u006ft\u0020\u0062\u0065\u006c\u006f\u006e\u0067\u0020t\u006f\u0020\u0050\u0061\u0067\u0065\u0053\u0069\u007a\u0065\u0020\u0076a\u006c\u0075\u0065\u0073",s ); +func (_ee Millimeter )Points ()Point {return Point (_ee *_af )};func _aaf (_ggd string )(Point ,error ){_ggd =_d .TrimSpace (_d .Trim (_ggd ,"\u0070\u0074"));_dgc ,_cgaf :=_e .ParseFloat (_ggd ,64);if _cgaf !=nil {return 0,_cgaf ;};return Point (_dgc ),nil ; }; -// Dimensions gets the dimensions of the given page size. -// If provided page size is not valid than the function returns 0 values. -func (_bae PageSize )Dimensions ()(_ga ,_bdfc Millimeter ){switch _bae {case A0 :return 841,1189;case A1 :return 594,841;case A2 :return 420,594;case A3 :return 297,420;case A4 :return 210,297;case A5 :return 148,210;case A6 :return 105,148;case A7 :return 74,105; -case A8 :return 52,74;case A9 :return 37,52;case A10 :return 26,37;case B0 :return 1000,1414;case B1 :return 707,1000;case B2 :return 500,707;case B3 :return 353,500;case B4 :return 250,353;case B5 :return 176,250;case B6 :return 125,176;case B7 :return 88,125; -case B8 :return 66,88;case B9 :return 44,62;case B10 :return 31,44;case Letter :return 215.9,279.4;};return _ga ,_bdfc ;};var _fdg =[...]uint8 {0,9,11,13,15,17,19,21,23,25,27,29,32,34,36,38,40,42,44,46,48,50,52,55,61}; +// Type implements pflag.Value interface. +func (_beb Orientation )Type ()string {return "o\u0072\u0069\u0065\u006e\u0074\u0061\u0074\u0069\u006f\u006e";}; -// HasChanged implements pflag.Value interface. -func (_fcd *Inch )HasChanged ()bool {return _fcd !=nil }; +// Inches gets the inches equivalent from provided millimeter value. +func (_ga Millimeter )Inches ()Inch {return Inch (float64 (_ga )*_da )}; -// Type implements pflag.Value interface. -func (_bd *LengthFlag )Type ()string {return "\u0075\u006e\u0069\u0074"}; +// HasChanged implements viper.FlagValue interface. +func (_cb *Point )HasChanged ()bool {return _cb !=nil }; -// String implements fmt.Stringer interface. -func (_cg Point )String ()string {_da :=_c .Builder {};_da .WriteString (_ce .FormatFloat (float64 (_cg ),'f',1,64));_da .WriteString ("\u0070\u0074");return _da .String ();}; +// IsAPageSize returns "true" if the value is listed in the enum definition. "false" otherwise +func (_fgg PageSize )IsAPageSize ()bool {for _ ,_gfae :=range _cbb {if _fgg ==_gfae {return true ;};};return false ;}; -// UnmarshalLength unmarshalls string value into Length. -func UnmarshalLength (length string )(Length ,error ){if _c .HasSuffix (length ,"\u006d\u006d"){return _dbf (length );};if _c .HasSuffix (length ,"\u0069\u006e"){return _fg (length );};if _c .HasSuffix (length ,"\u0070\u0074"){return _eaa (length );};return nil ,_e .Errorf ("\u0069n\u0076\u0061\u006c\u0069\u0064\u0020\u006c\u0065\u006e\u0067\u0074h\u0020\u0069\u006e\u0070\u0075\u0074\u003a\u0020\u0025\u0073",length ); -}; +// Inch is a unit that +type Inch float64 ; -// MarshalJSON implements json.Marshaler interface -func (_cda Millimeter )MarshalJSON ()([]byte ,error ){return _cff (_cda )}; +// Inches gets the inch value. Implements Length interface. +func (_ba Inch )Inches ()Inch {return _ba }; -// Type implements pflag.Value interface. -func (_aaf Point )Type ()string {return "\u0070\u006f\u0069n\u0074"}; +// Set implements flag.Value interface. +func (_dfd *Orientation )Set (s string )error {switch s {case "\u0070\u006f\u0072\u0074\u0072\u0061\u0069\u0074":*_dfd =Portrait ;case "\u006ca\u006e\u0064\u0073\u0063\u0061\u0070e":*_dfd =Landscape ;default:return _ad .Errorf ("\u0069n\u0076\u0061\u006c\u0069d\u0020\u006f\u0072\u0069\u0065n\u0074a\u0074i\u006f\u006e\u003a\u0020\u0027\u0025\u0073'",s ); +};return nil ;};func _ec (_fg Length )([]byte ,error ){if _fg ==nil {return nil ,nil ;};_abd ,_fac :=MarshalUnit (_fg );if _fac !=nil {return nil ,_fac ;};return []byte ("\u0022"+_abd +"\u0022"),nil ;}; -// MarshalJSON implements json.Marshaler interface -func (_dce Inch )MarshalJSON ()([]byte ,error ){return _cff (_dce )}; +// Point is a unit of Length commonly used to measure the height of fonts. +type Point float64 ; -// MarshalJSON implements the json.Marshaler interface for PageSize -func (_gdff PageSize )MarshalJSON ()([]byte ,error ){return _g .Marshal (_gdff .String ())}; +// String implements fmt.Stringer interface. +func (_acd Orientation )String ()string {if _acd ==Portrait {return "\u0070\u006f\u0072\u0074\u0072\u0061\u0069\u0074";};return "\u006ca\u006e\u0064\u0073\u0063\u0061\u0070e";}; -// Millimeter is the dimension unit that defines a millimeter. -type Millimeter float64 ; +// PageSize is the enum used for defining the page size. +type PageSize int ; -// UnmarshalPageSize unmarshals the page size from the string. -func UnmarshalPageSize (pageSize string )(PageSize ,error ){var _fd PageSize ;if _gce :=(&_fd ).UnmarshalText ([]byte (pageSize ));_gce !=nil {return 0,_e .Errorf ("\u0070\u0072\u006f\u0076\u0069\u0064\u0065\u0064\u0020\u0069n\u0076\u0061\u006c\u0069\u0064\u0020\u0070a\u0067\u0065\u0020\u0073\u0069\u007a\u0065\u003a\u0020\u0025\u0077",_gce ); -};return _fd ,nil ;};func _dbf (_beaf string )(Millimeter ,error ){_beaf =_c .TrimSpace (_c .TrimSuffix (_beaf ,"\u006d\u006d"));_agg ,_fa :=_ce .ParseFloat (_beaf ,64);if _fa !=nil {return 0,_e .Errorf ("\u0069\u006e\u0076\u0061l\u0069\u0064\u0020\u006d\u0069\u006c\u006c\u0069\u006d\u0065t\u0065r\u0020\u0076\u0061\u006c\u0075\u0065\u003a \u0025\u0077",_fa ); -};return Millimeter (_agg ),nil ;}; +// Orientation is the page orientation type wrapper. +type Orientation bool ; -// MarshalText implements the encoding.TextMarshaler interface for PageSize -func (_ggb PageSize )MarshalText ()([]byte ,error ){return []byte (_ggb .String ()),nil }; +// HasChanged implements pflag.Value interface. +func (_be *Inch )HasChanged ()bool {return _be !=nil };var _ _a .Value =(*Point )(nil ); -// Type implements pflag.Value interface. -func (_ee Orientation )Type ()string {return "o\u0072\u0069\u0065\u006e\u0074\u0061\u0074\u0069\u006f\u006e";};const _fdf ="U\u006e\u0064\u0065\u0066\u0069\u006e\u0065\u0064\u0041\u0030\u0041\u0031\u0041\u0032\u0041\u0033\u0041\u0034\u0041\u0035\u0041\u0036\u0041\u0037\u0041\u0038A\u0039A\u0031\u0030\u0042\u0030B\u0031\u00422\u0042\u0033\u0042\u0034\u0042\u0035\u0042\u0036\u0042\u0037\u0042\u0038\u0042\u0039\u0042\u0031\u0030\u004c\u0065\u0074\u0074\u0065\u0072"; +// ValueString implements pflag.Value interface. +func (_bc Inch )ValueString ()string {return _bc .String ()}; +// Type implements pflag.Value interface. +func (_bb Inch )Type ()string {return "\u0069\u006e\u0063\u0068"}; -// Inch is a unit that -type Inch float64 ; +// Inches gets the inch value. Implements Length interface. +func (_ab Point )Inches ()Inch {return Inch (float64 (_ab )*_eb )}; -// Set sets the unit value. -// Implements pflag.Value interface. -func (_cf *LengthFlag )Set (s string )error {if s =="\u0075n\u0064\u0065\u0066\u0069\u006e\u0065d"{_cf .Length =nil ;return nil ;};_bg ,_f :=UnmarshalLength (s );if _f !=nil {return _f ;};_cf .Length =_bg ;return nil ;}; +// Name implements pflag.Value interface. +func (_bbg Inch )Name ()string {return "\u0069\u006e\u0063\u0068"};const (_da =float64 (1)/float64 (25.4);_g =25.4;_eb =0.0139;_gg =0.3528;_f =1.0/64;_af =1.0/_gg ;); // Points implements Length interface. -func (_bea Point )Points ()Point {return _bea }; +func (_df Inch )Points ()Point {return Point (float64 (_df )*_f )}; -// String implements fmt.Stringer interface. -func (_df Millimeter )String ()string {_cea :=_c .Builder {};_cea .WriteString (_ce .FormatFloat (float64 (_df ),'f',1,64));_cea .WriteString ("\u006d\u006d");return _cea .String ();}; +// Millimeter is the dimension unit that defines a millimeter. +type Millimeter float64 ;var _cbb =[]PageSize {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23};func _gaa (_bcb string )(Millimeter ,error ){_bcb =_d .TrimSpace (_d .TrimSuffix (_bcb ,"\u006d\u006d"));_fb ,_gfa :=_e .ParseFloat (_bcb ,64); +if _gfa !=nil {return 0,_ad .Errorf ("\u0069\u006e\u0076\u0061l\u0069\u0064\u0020\u006d\u0069\u006c\u006c\u0069\u006d\u0065t\u0065r\u0020\u0076\u0061\u006c\u0075\u0065\u003a \u0025\u0077",_gfa );};return Millimeter (_fb ),nil ;}; -// Type implements pflag.Value interface. -func (_ea Inch )Type ()string {return "\u0069\u006e\u0063\u0068"}; +// UnmarshalPageSize unmarshals the page size from the string. +func UnmarshalPageSize (pageSize string )(PageSize ,error ){var _dge PageSize ;if _aba :=(&_dge ).UnmarshalText ([]byte (pageSize ));_aba !=nil {return 0,_ad .Errorf ("\u0070\u0072\u006f\u0076\u0069\u0064\u0065\u0064\u0020\u0069n\u0076\u0061\u006c\u0069\u0064\u0020\u0070a\u0067\u0065\u0020\u0073\u0069\u007a\u0065\u003a\u0020\u0025\u0077",_aba ); +};return _dge ,nil ;};const (Undefined PageSize =iota ;A0 ;A1 ;A2 ;A3 ;A4 ;A5 ;A6 ;A7 ;A8 ;A9 ;A10 ;B0 ;B1 ;B2 ;B3 ;B4 ;B5 ;B6 ;B7 ;B8 ;B9 ;B10 ;Letter ;); -// ValueString implements pflag.Value interface. -func (_ba Inch )ValueString ()string {return _ba .String ()}; +// Points implements Length interface. +func (_ef Point )Points ()Point {return _ef };var _ Length =Inch (0); // UnmarshalText implements the encoding.TextUnmarshaler interface for PageSize -func (_gdfa *PageSize )UnmarshalText (text []byte )error {var _gad error ;*_gdfa ,_gad =PageSizeString (string (text ));return _gad ;};func _cff (_cgd Length )([]byte ,error ){if _cgd ==nil {return nil ,nil ;};_ccd ,_cfb :=MarshalUnit (_cgd );if _cfb !=nil {return nil ,_cfb ; -};return []byte ("\u0022"+_ccd +"\u0022"),nil ;}; +func (_abf *PageSize )UnmarshalText (text []byte )error {var _gfg error ;*_abf ,_gfg =PageSizeString (string (text ));return _gfg ;}; -// Point is a unit of Length commonly used to measure the height of fonts. -type Point float64 ; +// Type implements pflag.Value interface. +func (_c *LengthFlag )Type ()string {return "\u0075\u006e\u0069\u0074"}; -// ValueType implements viper.FlagValue interface. -func (_ag Point )ValueType ()string {return _ag .Type ()}; +// MarshalJSON implements json.Marshaler interface. +func (_fd Point )MarshalJSON ()([]byte ,error ){return _ec (_fd )};func _ff (_aedb string )(Inch ,error ){_aedb =_d .TrimSpace (_d .Trim (_aedb ,"\u0069\u006e"));_ada ,_aea :=_e .ParseFloat (_aedb ,64);if _aea !=nil {return 0,_ad .Errorf ("\u0069\u006e\u0076\u0061li\u0064\u0020\u0069\u006e\u0063\u0068\u0020\u0076\u0061\u006c\u0075\u0065\u003a\u0020%\u0077",_aea ); +};return Inch (_ada ),nil ;}; // Set implements pflag.Value interface. -func (_dg *Inch )Set (s string )error {_dgc ,_db :=_ce .ParseFloat (s ,64);if _db !=nil {return _e .Errorf ("\u0069\u006e\u0076\u0061li\u0064\u0020\u0069\u006e\u0063\u0068\u0020\u0076\u0061\u006c\u0075\u0065\u003a\u0020%\u0077",_db );};*_dg =Inch (_dgc ); -return nil ;};func (_af PageSize )String ()string {if _af < 0||_af >=PageSize (len (_fdg )-1){return _e .Sprintf ("\u0050\u0061\u0067e\u0053\u0069\u007a\u0065\u0028\u0025\u0064\u0029",_af );};return _fdf [_fdg [_af ]:_fdg [_af +1]];}; +func (_ged *PageSize )Set (s string )error {_bg ,_egc :=UnmarshalPageSize (s );if _egc !=nil {return _egc ;};*_ged =_bg ;return nil ;};func (_cacd PageSize )String ()string {if _cacd < 0||_cacd >=PageSize (len (_caa )-1){return _ad .Sprintf ("\u0050\u0061\u0067e\u0053\u0069\u007a\u0065\u0028\u0025\u0064\u0029",_cacd ); +};return _cfa [_caa [_cacd ]:_caa [_cacd +1]];}; -// Type implements pflag.Value interface. -func (_ddf PageSize )Type ()string {return "\u0070a\u0067\u0065\u002d\u0073\u0069\u007ae"}; +// MarshalText implements the encoding.TextMarshaler interface for PageSize +func (_eacb PageSize )MarshalText ()([]byte ,error ){return []byte (_eacb .String ()),nil };var _caa =[...]uint8 {0,9,11,13,15,17,19,21,23,25,27,29,32,34,36,38,40,42,44,46,48,50,52,55,61}; -// ValueType implements pflag.Value interface. -func (_gg Inch )ValueType ()string {return _gg .Type ()}; +// Millimeters converts the inches value to the millimeters. +func (_ge Point )Millimeters ()Millimeter {return Millimeter (float64 (_ge )*_gg )}; + +// Type implements pflag.Value interface. +func (_bee PageSize )Type ()string {return "\u0070a\u0067\u0065\u002d\u0073\u0069\u007ae"}; // String implements fmt.Stringer interface. -func (_gbc Orientation )String ()string {if _gbc ==Portrait {return "\u0070\u006f\u0072\u0074\u0072\u0061\u0069\u0074";};return "\u006ca\u006e\u0064\u0073\u0063\u0061\u0070e";}; +func (_gf Millimeter )String ()string {_gb :=_d .Builder {};_gb .WriteString (_e .FormatFloat (float64 (_gf ),'f',1,64));_gb .WriteString ("\u006d\u006d");return _gb .String ();}; -// IsAPageSize returns "true" if the value is listed in the enum definition. "false" otherwise -func (_gaa PageSize )IsAPageSize ()bool {for _ ,_gf :=range _ccc {if _gaa ==_gf {return true ;};};return false ;}; +// UnmarshalInch unmarshalls provided string into unit. +func UnmarshalInch (unit string )(Inch ,error ){if _d .HasSuffix (unit ,"\u006d\u006d"){_bd ,_ag :=_gaa (unit );if _ag !=nil {return 0,_ag ;};return _bd .Inches (),nil ;};if _d .HasSuffix (unit ,"\u0069\u006e"){return _ff (unit );};return 0,_ad .Errorf ("\u0069\u006e\u0076\u0061li\u0064\u0020\u0069\u006e\u0063\u0068\u0020\u0069\u006e\u0070\u0075\u0074\u003a\u0020%\u0073",unit ); +};const _cfa ="U\u006e\u0064\u0065\u0066\u0069\u006e\u0065\u0064\u0041\u0030\u0041\u0031\u0041\u0032\u0041\u0033\u0041\u0034\u0041\u0035\u0041\u0036\u0041\u0037\u0041\u0038A\u0039A\u0031\u0030\u0042\u0030B\u0031\u00422\u0042\u0033\u0042\u0034\u0042\u0035\u0042\u0036\u0042\u0037\u0042\u0038\u0042\u0039\u0042\u0031\u0030\u004c\u0065\u0074\u0074\u0065\u0072"; +var _ _a .Value =(*Orientation )(nil ); -// MarshalJSON implements json.Marshaler interface. -func (_eb Point )MarshalJSON ()([]byte ,error ){return _cff (_eb )}; +// PageSizeString retrieves an enum value from the enum constants string name. +// Throws an error if the param is not part of the enum. +func PageSizeString (s string )(PageSize ,error ){if _bga ,_bdf :=_aafe [s ];_bdf {return _bga ,nil ;};return 0,_ad .Errorf ("\u0025\u0073 \u0064\u006f\u0065\u0073 \u006e\u006ft\u0020\u0062\u0065\u006c\u006f\u006e\u0067\u0020t\u006f\u0020\u0050\u0061\u0067\u0065\u0053\u0069\u007a\u0065\u0020\u0076a\u006c\u0075\u0065\u0073",s ); +};var (_ Length =Millimeter (0);); -// HasChanged implements viper.FlagValue interface. -func (_cga *Point )HasChanged ()bool {return _cga !=nil }; +// UnmarshalLength unmarshalls string value into Length. +func UnmarshalLength (length string )(Length ,error ){if _d .HasSuffix (length ,"\u006d\u006d"){return _gaa (length );};if _d .HasSuffix (length ,"\u0069\u006e"){return _ff (length );};if _d .HasSuffix (length ,"\u0070\u0074"){return _aaf (length );};return nil ,_ad .Errorf ("\u0069n\u0076\u0061\u006c\u0069\u0064\u0020\u006c\u0065\u006e\u0067\u0074h\u0020\u0069\u006e\u0070\u0075\u0074\u003a\u0020\u0025\u0073",length ); +}; -// PageSize is the enum used for defining the page size. -type PageSize int ; +// MarshalJSON implements json.Marshaler interface +func (_egg Inch )MarshalJSON ()([]byte ,error ){return _ec (_egg )}; -// Millimeters gets the float64 millimeter value. -func (_eg Millimeter )Millimeters ()Millimeter {return _eg }; +// UnmarshalJSON implements the json.Unmarshaler interface for PageSize +func (_eac *PageSize )UnmarshalJSON (data []byte )error {var _bgaf string ;if _feb :=_ac .Unmarshal (data ,&_bgaf );_feb !=nil {return _ad .Errorf ("P\u0061\u0067\u0065\u0053\u0069\u007ae\u0020\u0073\u0068\u006f\u0075\u006cd\u0020\u0062\u0065\u0020\u0061\u0020\u0073t\u0072\u0069\u006e\u0067\u002c\u0020\u0067\u006f\u0074\u0020%\u0073",data ); +};var _eeg error ;*_eac ,_eeg =PageSizeString (_bgaf );return _eeg ;}; -// Millimeters converts the inches value to the millimeters. -func (_dgd Inch )Millimeters ()Millimeter {return Millimeter (float64 (_dgd )*_b )}; +// MarshalPageSize marshals the page size into string. +func MarshalPageSize (p PageSize )(string ,error ){_dfc ,_eea :=p .MarshalText ();if _eea !=nil {return "",_eea ;};return string (_dfc ),nil ;}; + +// ValueString implements viper.FlagValue interface. +func (_cac Point )ValueString ()string {return _cac .String ()};const (Portrait =Orientation (false );Landscape =Orientation (true );); // MarshalUnit marshals the unit into the string. -func MarshalUnit (unit Length )(string ,error ){switch _bbf :=unit .(type ){case Millimeter :return _e .Sprintf ("\u0025\u002e\u0030\u0066\u006d\u006d",_bbf ),nil ;case Inch :return _e .Sprintf ("\u0025\u002e\u0030\u0066\u0069\u006e",_bbf ),nil ;case Point :return _e .Sprintf ("\u0025\u002e\u0030\u0066\u0070\u0074",_bbf ),nil ; -default:return "",_e .Errorf ("i\u006e\u0076\u0061\u006cid\u0020u\u006e\u0069\u0074\u0020\u0074y\u0070\u0065\u003a\u0020\u0025\u0054",unit );};}; +func MarshalUnit (unit Length )(string ,error ){switch _fe :=unit .(type ){case Millimeter :return _ad .Sprintf ("\u0025\u002e\u0030\u0066\u006d\u006d",_fe ),nil ;case Inch :return _ad .Sprintf ("\u0025\u002e\u0030\u0066\u0069\u006e",_fe ),nil ;case Point :return _ad .Sprintf ("\u0025\u002e\u0030\u0066\u0070\u0074",_fe ),nil ; +default:return "",_ad .Errorf ("i\u006e\u0076\u0061\u006cid\u0020u\u006e\u0069\u0074\u0020\u0074y\u0070\u0065\u003a\u0020\u0025\u0054",unit );};}; -// Inches gets the inch value. Implements Length interface. -func (_gb Point )Inches ()Inch {return Inch (float64 (_gb )*_d )}; +// Name implements viper.FlagValue interface. +func (_aed Point )Name ()string {return "\u0070\u006f\u0069n\u0074"}; -// Name implements pflag.Value interface. -func (_dc Inch )Name ()string {return "\u0069\u006e\u0063\u0068"}; +// MarshalJSON implements json.Marshaler interface +func (_ae Millimeter )MarshalJSON ()([]byte ,error ){return _ec (_ae )}; + +// Type implements pflag.Value interface. +func (_cf Point )Type ()string {return "\u0070\u006f\u0069n\u0074"}; + +// Set sets the unit value. +// Implements pflag.Value interface. +func (_aa *LengthFlag )Set (s string )error {if s =="\u0075n\u0064\u0065\u0066\u0069\u006e\u0065d"{_aa .Length =nil ;return nil ;};_ggf ,_bf :=UnmarshalLength (s );if _bf !=nil {return _bf ;};_aa .Length =_ggf ;return nil ;}; // Set implements flag.Value interface. -func (_dcg *Point )Set (s string )error {_cc ,_bad :=_ce .ParseFloat (s ,64);if _bad !=nil {return _e .Errorf ("\u0069\u006e\u0076\u0061li\u0064\u0020\u0069\u006e\u0063\u0068\u0020\u0076\u0061\u006c\u0075\u0065\u003a\u0020%\u0077",_bad );};*_dcg =Point (_cc ); +func (_dfa *Point )Set (s string )error {_bcd ,_cga :=_e .ParseFloat (s ,64);if _cga !=nil {return _ad .Errorf ("\u0069\u006e\u0076\u0061li\u0064\u0020\u0069\u006e\u0063\u0068\u0020\u0076\u0061\u006c\u0075\u0065\u003a\u0020%\u0077",_cga );};*_dfa =Point (_bcd ); return nil ;}; -// Millimeters converts the inches value to the millimeters. -func (_fb Point )Millimeters ()Millimeter {return Millimeter (float64 (_fb )*_ac )}; - // String gets the string value for given flag. -func (_bb *LengthFlag )String ()string {if _bb .Length ==nil {return "\u0075n\u0064\u0065\u0066\u0069\u006e\u0065d";};return _bb .Length .String ();}; +func (_gc *LengthFlag )String ()string {if _gc .Length ==nil {return "\u0075n\u0064\u0065\u0066\u0069\u006e\u0065d";};return _gc .Length .String ();}; -// LengthFlag is a pflag wrapper for the Length value. -type LengthFlag struct{Length Length ;};var _gde =map[string ]PageSize {_fdf [0:9]:0,_fdf [9:11]:1,_fdf [11:13]:2,_fdf [13:15]:3,_fdf [15:17]:4,_fdf [17:19]:5,_fdf [19:21]:6,_fdf [21:23]:7,_fdf [23:25]:8,_fdf [25:27]:9,_fdf [27:29]:10,_fdf [29:32]:11,_fdf [32:34]:12,_fdf [34:36]:13,_fdf [36:38]:14,_fdf [38:40]:15,_fdf [40:42]:16,_fdf [42:44]:17,_fdf [44:46]:18,_fdf [46:48]:19,_fdf [48:50]:20,_fdf [50:52]:21,_fdf [52:55]:22,_fdf [55:61]:23}; -var (_ Length =Millimeter (0);); - -// UnmarshalInch unmarshalls provided string into unit. -func UnmarshalInch (unit string )(Inch ,error ){if _c .HasSuffix (unit ,"\u006d\u006d"){_bf ,_fcf :=_dbf (unit );if _fcf !=nil {return 0,_fcf ;};return _bf .Inches (),nil ;};if _c .HasSuffix (unit ,"\u0069\u006e"){return _fg (unit );};return 0,_e .Errorf ("\u0069\u006e\u0076\u0061li\u0064\u0020\u0069\u006e\u0063\u0068\u0020\u0069\u006e\u0070\u0075\u0074\u003a\u0020%\u0073",unit ); -};func _fg (_ec string )(Inch ,error ){_ec =_c .TrimSpace (_c .Trim (_ec ,"\u0069\u006e"));_dbe ,_dag :=_ce .ParseFloat (_ec ,64);if _dag !=nil {return 0,_e .Errorf ("\u0069\u006e\u0076\u0061li\u0064\u0020\u0069\u006e\u0063\u0068\u0020\u0076\u0061\u006c\u0075\u0065\u003a\u0020%\u0077",_dag ); -};return Inch (_dbe ),nil ;};var _ _ae .Value =(*Point )(nil ); - -// UnmarshalJSON implements the json.Unmarshaler interface for PageSize -func (_ggg *PageSize )UnmarshalJSON (data []byte )error {var _dad string ;if _afc :=_g .Unmarshal (data ,&_dad );_afc !=nil {return _e .Errorf ("P\u0061\u0067\u0065\u0053\u0069\u007ae\u0020\u0073\u0068\u006f\u0075\u006cd\u0020\u0062\u0065\u0020\u0061\u0020\u0073t\u0072\u0069\u006e\u0067\u002c\u0020\u0067\u006f\u0074\u0020%\u0073",data ); -};var _beae error ;*_ggg ,_beae =PageSizeString (_dad );return _beae ;}; +// String implements fmt.Stringer interface. +func (_fa Inch )String ()string {_ca :=_d .Builder {};_ca .WriteString (_e .FormatFloat (float64 (_fa ),'f',1,64));_ca .WriteString ("\u0069\u006e");return _ca .String ();}; // Length is it the default dimension unit. type Length interface{Millimeters ()Millimeter ;Inches ()Inch ;Points ()Point ;String ()string ;}; -// Set implements flag.Value interface. -func (_acf *Orientation )Set (s string )error {switch s {case "\u0070\u006f\u0072\u0074\u0072\u0061\u0069\u0074":*_acf =Portrait ;case "\u006ca\u006e\u0064\u0073\u0063\u0061\u0070e":*_acf =Landscape ;default:return _e .Errorf ("\u0069n\u0076\u0061\u006c\u0069d\u0020\u006f\u0072\u0069\u0065n\u0074a\u0074i\u006f\u006e\u003a\u0020\u0027\u0025\u0073'",s ); -};return nil ;};var _ _ae .Value =(*Orientation )(nil ); +// Dimensions gets the dimensions of the given page size. +// If provided page size is not valid than the function returns 0 values. +func (_gfb PageSize )Dimensions ()(_dc ,_ecc Millimeter ){switch _gfb {case A0 :return 841,1189;case A1 :return 594,841;case A2 :return 420,594;case A3 :return 297,420;case A4 :return 210,297;case A5 :return 148,210;case A6 :return 105,148;case A7 :return 74,105; +case A8 :return 52,74;case A9 :return 37,52;case A10 :return 26,37;case B0 :return 1000,1414;case B1 :return 707,1000;case B2 :return 500,707;case B3 :return 353,500;case B4 :return 250,353;case B5 :return 176,250;case B6 :return 125,176;case B7 :return 88,125; +case B8 :return 66,88;case B9 :return 44,62;case B10 :return 31,44;case Letter :return 215.9,279.4;};return _dc ,_ecc ;}; -// Inches gets the inch value. Implements Length interface. -func (_gd Inch )Inches ()Inch {return _gd }; +// Set implements pflag.Value interface. +func (_de *Inch )Set (s string )error {_ebd ,_dg :=_e .ParseFloat (s ,64);if _dg !=nil {return _ad .Errorf ("\u0069\u006e\u0076\u0061li\u0064\u0020\u0069\u006e\u0063\u0068\u0020\u0076\u0061\u006c\u0075\u0065\u003a\u0020%\u0077",_dg );};*_de =Inch (_ebd ); +return nil ;};var _aafe =map[string ]PageSize {_cfa [0:9]:0,_cfa [9:11]:1,_cfa [11:13]:2,_cfa [13:15]:3,_cfa [15:17]:4,_cfa [17:19]:5,_cfa [19:21]:6,_cfa [21:23]:7,_cfa [23:25]:8,_cfa [25:27]:9,_cfa [27:29]:10,_cfa [29:32]:11,_cfa [32:34]:12,_cfa [34:36]:13,_cfa [36:38]:14,_cfa [38:40]:15,_cfa [40:42]:16,_cfa [42:44]:17,_cfa [44:46]:18,_cfa [46:48]:19,_cfa [48:50]:20,_cfa [50:52]:21,_cfa [52:55]:22,_cfa [55:61]:23}; -// ValueString implements viper.FlagValue interface. -func (_be Point )ValueString ()string {return _be .String ()}; -// Inches gets the inches equivalent from provided millimeter value. -func (_gc Millimeter )Inches ()Inch {return Inch (float64 (_gc )*_cd )}; \ No newline at end of file +// MarshalJSON implements the json.Marshaler interface for PageSize +func (_fde PageSize )MarshalJSON ()([]byte ,error ){return _ac .Marshal (_fde .String ())}; \ No newline at end of file diff --git a/unihtml.go b/unihtml.go index d840751..467fa0d 100644 --- a/unihtml.go +++ b/unihtml.go @@ -10,59 +10,8 @@ // terms that can be accessed at https://unidoc.io/eula/ // Package unihtml contains a plugin for the UniDoc. -package unihtml ;import (_gc "bytes";_d "context";_cg "errors";_e "fmt";_f "github.com/unidoc/unihtml/client";_ef "github.com/unidoc/unihtml/content";_ea "github.com/unidoc/unihtml/selector";_gf "github.com/unidoc/unihtml/sizes";_fa "github.com/unidoc/unipdf/v3/common"; -_a "github.com/unidoc/unipdf/v3/common/license";_ac "github.com/unidoc/unipdf/v3/creator";_cd "github.com/unidoc/unipdf/v3/model";_dff "github.com/unidoc/unipdf/v3/render";_dd "image";_g "image/color";_cb "math";_c "net/url";_de "os";_df "time";); - -// SetMarginTop sets the left margin. -func (_eaag *Document )SetMarginTop (margin _gf .Length ){_eaag ._daf .Top =margin }; - -// SetMarginLeft sets the left margin. -func (_fgd *Document )SetMarginLeft (margin _gf .Length ){_fgd ._daf .Left =margin }; - -// GeneratePageBlocks implements creator.Drawable interface. -func (_dbe *Document )GeneratePageBlocks (ctx _ac .DrawContext )([]*_ac .Block ,_ac .DrawContext ,error ){if _fc :=_dbe .validate ();_fc !=nil {return nil ,ctx ,_fc ;};var _ecg []*_ac .Block ;_ca :=_dbe .getMargins ();_fcb ,_cac :=_dbe ._db ,_dbe ._dbf ; -if _dbe ._dgg .IsRelative (){_fcb ,_cac =_gf .Point (ctx .Width ),_gf .Point (ctx .Height );ctx .X -=float64 (_ca .Left .Points ());}else {ctx .X =_dbe ._ag ;ctx .Y =_dbe ._ddb ;};_geg ,_bb :=_dbe .extract (_d .Background (),_fcb ,_cac ,_ca );if _bb !=nil {return nil ,_ac .DrawContext {},_bb ; -};for _ecd ,_dea :=range _geg {_ce ,_ff :=_ac .NewBlockFromPage (_dea );if _ff !=nil {return nil ,_ac .DrawContext {},_ff ;};var _bc float64 ;if _dbe ._ace &&_ecd ==len (_geg )-1{_gd :=_dff .NewImageDevice ();_af ,_fg :=_gd .Render (_dea );if _fg !=nil {return nil ,_ac .DrawContext {},_fg ; -};_aff ,_fg :=_dea .GetMediaBox ();if _fg !=nil {return nil ,_ac .DrawContext {},_fg ;};_bbd :=_df .Now ();_fab :=_fcg (_af );_bc =_aff .Height ()*_fab ;_fa .Log .Trace ("\u0054\u0072i\u006d\u006d\u0069\u006eg\u0020\u006ca\u0073\u0074\u0020\u0064\u006f\u0063\u0075\u006de\u006e\u0074\u0020\u0070\u0061\u0067\u0065\u0020\u0074\u0061\u006b\u0065n\u003a\u0020\u0025\u0076",_df .Since (_bbd )); -if _dbe ._daf .Bottom !=nil {_bc -=float64 (_dbe ._daf .Bottom .Points ());};if _bc < 0{_bc =0;};_fa .Log .Trace ("C\u0072\u006f\u0070\u0070\u0069\u006e\u0067\u0020\u0064\u006f\u0063\u0075\u006d\u0065\u006e\u0074\u0027\u0073\u0020\u0070\u0061\u0067\u0065\u0020\u0025\u002e2\u0066 \u0070\u006f\u0069\u006et\u0073\u0020o\u0066\u0066\u0020\u0062\u006f\u0074\u0074\u006f\u006d\u0020\u006f\u0066\u0020\u006d\u0065\u0064\u0069\u0061\u0020\u0062\u006f\u0078\u000a",_bc ); -};_ccd ,_def ,_ff :=_ce .GeneratePageBlocks (ctx );if _ff !=nil {return nil ,_ac .DrawContext {},_ff ;};ctx =_def ;ctx .Y -=_bc ;if _ecd !=len (_geg )-1&&ctx .Y > (ctx .PageHeight -ctx .Margins .Bottom )*.95{ctx .X =ctx .Margins .Left ;ctx .Y =ctx .Margins .Top ; -ctx .Page ++;};_ecg =append (_ecg ,_ccd ...);};return _ecg ,ctx ,nil ;}; - -// WriteToFile writes the document to a file defined by the output path. -func (_cfe *Document )WriteToFile (outputPath string )error {if _dee :=_cfe .validate ();_dee !=nil {return _dee ;};_eac :=_df .Second *20+_cfe ._gg ;_ffg ,_eaab :=_d .WithTimeout (_d .Background (),_eac );defer _eaab ();_bf ,_bd :=_cfe .extract (_ffg ,_cfe ._db ,_cfe ._dbf ,_cfe .getMargins ()); -if _bd !=nil {return _bd ;};_cfb :=_ac .New ();for _ ,_feg :=range _bf {if _bd =_cfb .AddPage (_feg );_bd !=nil {return _bd ;};};return _cfb .WriteToFile (outputPath );}; - -// ContainerComponent implements creator.containerElement interface. -func (_cdg *Document )ContainerComponent (container _ac .Drawable )(_ac .Drawable ,error ){switch container .(type ){case *_ac .Chapter :default:return nil ,_e .Errorf ("\u0075\u006e\u0069\u0068t\u006d\u006c\u002e\u0044\u006f\u0063\u0075\u006d\u0065n\u0074\u0020\u0063\u0061\u006e\u0027\u0074\u0020\u0062\u0065\u0020\u0061\u0020\u0063\u006f\u006d\u0070\u006fn\u0065\u006e\u0074\u0020\u006ff\u0020\u0074\u0068\u0065\u0020\u0025\u0054\u0020\u0063\u006f\u006e\u0074\u0061\u0069\u006e\u0065\u0072",container ); -};return _cdg ,nil ;}; - -// Document is HTML document wrapper that is used for extracting and converting HTML document into PDF pages. -type Document struct{_dg _ef .Content ;_daf margins ;_dgg _ac .Positioning ;_ag ,_ddb float64 ;_eaa _gf .PageSize ;_db ,_dbf _gf .Length ;_ed _gf .Orientation ;_ace bool ;_gg _df .Duration ;_dab []_f .BySelector ;_faf []_f .BySelector ;_dde *_df .Duration ; -}; - -// TrimLastPageContent trims the last page content so that next creator blocks are located just at the end of given block. -func (_agg *Document )TrimLastPageContent (){_agg ._ace =true };func (_gb *Document )extract (_gde _d .Context ,_aad ,_ccb _gf .Length ,_be margins )([]*_cd .PdfPage ,error ){_deg :=_f .BuildHTMLQuery ().SetContent (_gb ._dg ).PageSize (_gb ._eaa ).PaperWidth (_aad ).PaperHeight (_ccb ).Orientation (_gb ._ed ).MarginLeft (_be .Left ).MarginRight (_be .Right ).MarginTop (_be .Top ).MarginBottom (_be .Bottom ).TimeoutDuration (_gb .getTimeoutDuration ()).WaitTime (_gb ._gg ); -for _ ,_fec :=range _gb ._dab {_deg .WaitReady (_fec .Selector ,_fec .By );};for _ ,_dgd :=range _gb ._faf {_deg .WaitVisible (_dgd .Selector ,_dgd .By );};_gda ,_ddg :=_deg .Query ();if _ddg !=nil {return nil ,_ddg ;};var _aee _d .CancelFunc ;if _gb ._dde !=nil {_gde ,_aee =_d .WithTimeout (_gde ,*_gb ._dde ); -}else {_gde ,_aee =_d .WithTimeout (_gde ,_df .Second *15);};defer _aee ();_ade ,_ddg :=_ge .ConvertHTML (_gde ,_gda );if _ddg !=nil {return nil ,_ddg ;};_bad :=_gc .NewReader (_ade .Data );_cad ,_ddg :=_cd .NewPdfReader (_bad );if _ddg !=nil {return nil ,_ddg ; -};return _cad .PageList ,nil ;}; - -// NewDocument creates new HTML Document used as an input for the creator.Drawable. -func NewDocument (path string )(*Document ,error ){_ad :=&Document {};_cgg ,_fb :=_c .Parse (path );if _fb !=nil {return nil ,_fb ;};switch _cgg .Scheme {case "\u0068\u0074\u0074\u0070","\u0068\u0074\u0074p\u0073":_ad ._dg ,_fb =_ef .NewWebURL (path ); -if _fb !=nil {return nil ,_fb ;};return _ad ,nil ;};_gcd ,_fb :=_de .Stat (path );if _fb !=nil {return nil ,_fb ;};if !_gcd .IsDir (){_ad ._dg ,_fb =_ef .NewHTMLFile (path );}else {_ad ._dg ,_fb =_ef .NewZipDirectory (path );};if _fb !=nil {return nil ,_fb ; -};return _ad ,nil ;}; - -// SetLandscapeOrientation sets document landscape page orientation. -func (_fbf *Document )SetLandscapeOrientation (){_fbf ._ed =_gf .Landscape };func (_gac *Document )validate ()error {if _ge ==nil {return ErrNoClient ;};if _gac ._dg ==nil {return ErrContentNotDefined ;};return nil ;}; - -// SetTimeoutDuration sets the timeout duration -// the default timeout is 15 seconds. -func (_gfce *Document )SetTimeoutDuration (duration _df .Duration ){_gfce ._dde =&duration }; - -// SetMarkedContentID sets the marked content id for the document. -func (_dbec *Document )SetMarkedContentID (id int64 )*_cd .KDict {return nil }; - -// SetPageHeight sets the page height for given document. -func (_aef *Document )SetPageHeight (pageHeight _gf .Length )error {_aef ._dbf =pageHeight ;_aef ._dgg =_ac .PositionAbsolute ;return nil ;}; +package unihtml ;import (_g "bytes";_c "context";_db "errors";_a "fmt";_b "github.com/unidoc/unihtml/client";_gc "github.com/unidoc/unihtml/content";_dee "github.com/unidoc/unihtml/selector";_af "github.com/unidoc/unihtml/sizes";_gcg "github.com/unidoc/unipdf/v3/common"; +_da "github.com/unidoc/unipdf/v3/common/license";_cef "github.com/unidoc/unipdf/v3/creator";_ab "github.com/unidoc/unipdf/v3/model";_be "github.com/unidoc/unipdf/v3/render";_dc "image";_de "image/color";_dd "math";_ce "net/url";_d "os";_df "time";); // Options are the HTML Client options used for establishing the connection. type Options struct{ @@ -77,59 +26,111 @@ Port int ; Secure bool ; // Prefix is an option setting used when the server is working with the URI prefix. Default Value: ''. -Prefix string ;};func (_cbed *Document )getMargins ()margins {_gcf :=_cbed ._daf ;if _cbed ._dgg .IsRelative (){_gcf .Top =_gf .Millimeter (1);_gcf .Left =_gf .Millimeter (1);_gcf .Bottom =_gf .Millimeter (1);_gcf .Right =_gf .Millimeter (1);return _gcf ; -};if _gcf .Top ==nil {_gcf .Top =_gf .Millimeter (10);};if _gcf .Bottom ==nil {_gcf .Bottom =_gf .Millimeter (10);};if _gcf .Left ==nil {_gcf .Left =_gf .Millimeter (10);};if _gcf .Right ==nil {_gcf .Right =_gf .Millimeter (10);};return _gcf ;}; +Prefix string ;}; + +// SetMarginTop sets the left margin. +func (_cdb *Document )SetMarginTop (margin _af .Length ){_cdb ._acb .Top =margin }; + +// SetMarginBottom sets the left margin. +func (_cbg *Document )SetMarginBottom (margin _af .Length ){_cbg ._acb .Bottom =margin }; // SetMarginRight sets the left margin. -func (_gfc *Document )SetMarginRight (margin _gf .Length ){_gfc ._daf .Right =margin }; +func (_bg *Document )SetMarginRight (margin _af .Length ){_bg ._acb .Right =margin }; -// SetMargins sets the Document Margins. -func (_efd *Document )SetMargins (left ,right ,top ,bottom float64 ){_efd ._daf .Left =_gf .Point (left );_efd ._daf .Right =_gf .Point (right );_efd ._daf .Top =_gf .Point (top );_efd ._daf .Bottom =_gf .Point (bottom );_efd ._dgg =_ac .PositionAbsolute ; -};func _fcg (_bcb _dd .Image )float64 {_gfd :=_bcb .Bounds ();var (_eg int ;_aa _g .Color ;_aceg ,_egb ,_dc uint32 ;);_ffe ,_fea :=_gfd .Min .X ,_gfd .Max .Y -1;_fcd :=_bcb .At (_ffe ,_fea );_cbe ,_fbd ,_afa ,_ :=_fcd .RGBA ();_dga :=_cbe ==_cb .MaxUint16 &&_fbd ==_cb .MaxUint16 &&_afa ==_cb .MaxUint16 ; -for _fea =_gfd .Max .Y -1;_fea >=_gfd .Min .Y ;_fea --{var _ggg bool ;for _ffe =_gfd .Min .X ;_ffe < _gfd .Max .X ;_ffe ++{_aa =_bcb .At (_ffe ,_fea );_aceg ,_egb ,_dc ,_ =_aa .RGBA ();if (_dga &&!(_aceg ==_cbe &&_egb ==_fbd &&_afa ==_dc ))||(!_dga &&(_cb .Abs (float64 (_aceg )-float64 (_cbe ))/float64 (_cb .MaxUint16 )> 0.03||_cb .Abs (float64 (_egb )-float64 (_fbd ))/float64 (_cb .MaxUint16 )> 0.03||_cb .Abs (float64 (_dc )-float64 (_afa ))/float64 (_cb .MaxUint16 )> 0.03)){_ggg =true ; -break ;};};if _ggg {break ;};_eg =_fea ;};return float64 (_gfd .Max .Y -_eg )/float64 (_gfd .Max .Y );}; +// TrimLastPageContent trims the last page content so that next creator blocks are located just at the end of given block. +func (_ge *Document )TrimLastPageContent (){_ge ._eda =true };var ErrContentNotDefined =_db .New ("\u0068\u0074\u006d\u006c\u0020\u0064o\u0063\u0075\u006d\u0065\u006e\u0074\u0020\u0063\u006f\u006e\u0074\u0065\u006et\u0020\u006e\u006f\u0074\u0020\u0064\u0065f\u0069\u006e\u0065\u0064"); +func (_baa *Document )getMargins ()margins {_abb :=_baa ._acb ;if _baa ._edb .IsRelative (){_abb .Top =_af .Millimeter (1);_abb .Left =_af .Millimeter (1);_abb .Bottom =_af .Millimeter (1);_abb .Right =_af .Millimeter (1);return _abb ;};if _abb .Top ==nil {_abb .Top =_af .Millimeter (10); +};if _abb .Bottom ==nil {_abb .Bottom =_af .Millimeter (10);};if _abb .Left ==nil {_abb .Left =_af .Millimeter (10);};if _abb .Right ==nil {_abb .Right =_af .Millimeter (10);};return _abb ;}; -// SetPos sets the absolute position. Changes object positioning to absolute. -func (_baf *Document )SetPos (x ,y float64 ){_baf ._dgg =_ac .PositionAbsolute ;_baf ._ag =x ;_baf ._ddb =y ;};func _cc ()error {_ae :=_a .GetLicenseKey ();if _ae ==nil {return _cg .New ("\u006e\u006f\u0020\u006cic\u0065\u006e\u0073\u0065\u0020\u0070\u0072\u006f\u0076\u0069\u0064\u0065\u0064"); -};if !_ae .IsLicensed (){return _cg .New ("\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u006f\u0072 \u006e\u006f\u0020\u006c\u0069\u0063\u0065n\u0073\u0065\u0020\u0070\u0072\u006f\u0076\u0069\u0064\u0065\u0064");};return nil ;}; +// SetMarginLeft sets the left margin. +func (_ead *Document )SetMarginLeft (margin _af .Length ){_ead ._acb .Left =margin }; + +// SetPageWidth sets the page width for given document. +func (_gdc *Document )SetPageWidth (pageWidth _af .Length )error {_gdc ._fb =pageWidth ;_gdc ._edb =_cef .PositionAbsolute ;return nil ;};func _aga (_afa _dc .Image )float64 {_fed :=_afa .Bounds ();var (_bf int ;_ebf _de .Color ;_fgd ,_fdg ,_bfa uint32 ; +);_bc ,_fgf :=_fed .Min .X ,_fed .Max .Y -1;_fae :=_afa .At (_bc ,_fgf );_ee ,_dbf ,_ced ,_ :=_fae .RGBA ();_gf :=_ee ==_dd .MaxUint16 &&_dbf ==_dd .MaxUint16 &&_ced ==_dd .MaxUint16 ;for _fgf =_fed .Max .Y -1;_fgf >=_fed .Min .Y ;_fgf --{var _fcg bool ; +for _bc =_fed .Min .X ;_bc < _fed .Max .X ;_bc ++{_ebf =_afa .At (_bc ,_fgf );_fgd ,_fdg ,_bfa ,_ =_ebf .RGBA ();if (_gf &&!(_fgd ==_ee &&_fdg ==_dbf &&_ced ==_bfa ))||(!_gf &&(_dd .Abs (float64 (_fgd )-float64 (_ee ))/float64 (_dd .MaxUint16 )> 0.03||_dd .Abs (float64 (_fdg )-float64 (_dbf ))/float64 (_dd .MaxUint16 )> 0.03||_dd .Abs (float64 (_bfa )-float64 (_ced ))/float64 (_dd .MaxUint16 )> 0.03)){_fcg =true ; +break ;};};if _fcg {break ;};_bf =_fgf ;};return float64 (_fed .Max .Y -_bf )/float64 (_fed .Max .Y );};func _ed ()error {_acc :=_da .GetLicenseKey ();if _acc ==nil {return _db .New ("\u006e\u006f\u0020\u006cic\u0065\u006e\u0073\u0065\u0020\u0070\u0072\u006f\u0076\u0069\u0064\u0065\u0064"); +};if !_acc .IsLicensed (){return _db .New ("\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u006f\u0072 \u006e\u006f\u0020\u006c\u0069\u0063\u0065n\u0073\u0065\u0020\u0070\u0072\u006f\u0076\u0069\u0064\u0065\u0064");};return nil ;};var ErrNoClient =_db .New ("\u0055n\u0069\u0048\u0054\u004d\u004c\u0020\u0063\u006c\u0069\u0065\u006et\u0020\u006e\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064"); + + +// Connect creates UniHTML HTTP Client and tries to establish connection with the server. +func Connect (path string )error {if _fc :=_ed ();_fc !=nil {return _fc ;};_fa ,_cg :=_b .ParseOptions (path );if _cg !=nil {return _cg ;};_f =_b .New (_fa );_ba ,_fe :=_c .WithTimeout (_c .Background (),_df .Second *5);defer _fe ();if _cgc :=_f .HealthCheck (_ba ); +_cgc !=nil {return _cgc ;};return nil ;}; // WaitTime sets the waiting time before the webpage is rendered to PDF. -func (_eae *Document )WaitTime (duration _df .Duration ){_eae ._gg =duration }; +func (_eae *Document )WaitTime (duration _df .Duration ){_eae ._dda =duration }; -// NewDocumentFromString creates a new Document from the provided HTML string. -func NewDocumentFromString (html string )(*Document ,error ){_cba ,_ec :=_ef .NewStringContent (html );if _ec !=nil {return nil ,_ec ;};_dfc :=&Document {};_dfc ._dg =_cba ;return _dfc ,nil ;};func (_feaa *Document )getTimeoutDuration ()_df .Duration {if _feaa ._dde !=nil {return *_feaa ._dde ; -};return 0;};var _ge *_f .Client ;type margins struct{Left ,Right ,Bottom ,Top _gf .Length ;}; +// GetContent returns the content of the document. +func (_cgca *Document )GetContent ()_gc .Content {return _cgca ._ca };func (_ffa *Document )getTimeoutDuration ()_df .Duration {if _ffa ._fec !=nil {return *_ffa ._fec ;};return 0;}; -// ConnectOptions creates UniHTML HTTP Client and tries to establish connection with the server. -func ConnectOptions (o Options )error {_ge =_f .New (_f .Options {Hostname :o .Hostname ,Port :o .Port ,HTTPS :o .Secure });_bgg ,_cf :=_d .WithTimeout (_d .Background (),_df .Second *5);defer _cf ();if _ab :=_ge .HealthCheck (_bgg );_ab !=nil {return _ab ; -};return nil ;}; +// Document is HTML document wrapper that is used for extracting and converting HTML document into PDF pages. +type Document struct{_ca _gc .Content ;_acb margins ;_edb _cef .Positioning ;_cb ,_dg float64 ;_gd _af .PageSize ;_fb ,_edf _af .Length ;_eff _af .Orientation ;_eda bool ;_dda _df .Duration ;_bd []_b .BySelector ;_gcd []_b .BySelector ;_fec *_df .Duration ; +}; + +// WaitReady waits for the provided selector to be ready. +// A selector might be i.e. `#example` for id and `.example` for classes. The second parameter defines how to match given selector. +func (_ceb *Document )WaitReady (sel string ,by ..._dee .ByType ){_agbe :=_dee .BySearch ;if len (by )> 0{_agbe =by [0];};_ceb ._bd =append (_ceb ._bd ,_b .BySelector {Selector :sel ,By :_agbe });};func (_ebd *Document )validate ()error {if _f ==nil {return ErrNoClient ; +};if _ebd ._ca ==nil {return ErrContentNotDefined ;};return nil ;}; + +// GeneratePageBlocks implements creator.Drawable interface. +func (_ag *Document )GeneratePageBlocks (ctx _cef .DrawContext )([]*_cef .Block ,_cef .DrawContext ,error ){if _dde :=_ag .validate ();_dde !=nil {return nil ,ctx ,_dde ;};var _ec []*_cef .Block ;_gdd :=_ag .getMargins ();_fdf ,_gg :=_ag ._fb ,_ag ._edf ; +if _ag ._edb .IsRelative (){_fdf ,_gg =_af .Point (ctx .Width ),_af .Point (ctx .Height );ctx .X -=float64 (_gdd .Left .Points ());}else {ctx .X =_ag ._cb ;ctx .Y =_ag ._dg ;};_ff ,_eg :=_ag .extract (_c .Background (),_fdf ,_gg ,_gdd );if _eg !=nil {return nil ,_cef .DrawContext {},_eg ; +};for _agb ,_efb :=range _ff {_cd ,_fcf :=_cef .NewBlockFromPage (_efb );if _fcf !=nil {return nil ,_cef .DrawContext {},_fcf ;};var _ga float64 ;if _ag ._eda &&_agb ==len (_ff )-1{_gdb :=_be .NewImageDevice ();_fda ,_cc :=_gdb .Render (_efb );if _cc !=nil {return nil ,_cef .DrawContext {},_cc ; +};_dae ,_cc :=_efb .GetMediaBox ();if _cc !=nil {return nil ,_cef .DrawContext {},_cc ;};_fce :=_df .Now ();_aeb :=_aga (_fda );_ga =_dae .Height ()*_aeb ;_gcg .Log .Trace ("\u0054\u0072i\u006d\u006d\u0069\u006eg\u0020\u006ca\u0073\u0074\u0020\u0064\u006f\u0063\u0075\u006de\u006e\u0074\u0020\u0070\u0061\u0067\u0065\u0020\u0074\u0061\u006b\u0065n\u003a\u0020\u0025\u0076",_df .Since (_fce )); +if _ag ._acb .Bottom !=nil {_ga -=float64 (_ag ._acb .Bottom .Points ());};if _ga < 0{_ga =0;};_gcg .Log .Trace ("C\u0072\u006f\u0070\u0070\u0069\u006e\u0067\u0020\u0064\u006f\u0063\u0075\u006d\u0065\u006e\u0074\u0027\u0073\u0020\u0070\u0061\u0067\u0065\u0020\u0025\u002e2\u0066 \u0070\u006f\u0069\u006et\u0073\u0020o\u0066\u0066\u0020\u0062\u006f\u0074\u0074\u006f\u006d\u0020\u006f\u0066\u0020\u006d\u0065\u0064\u0069\u0061\u0020\u0062\u006f\u0078\u000a",_ga ); +};_bad ,_gcgc ,_fcf :=_cd .GeneratePageBlocks (ctx );if _fcf !=nil {return nil ,_cef .DrawContext {},_fcf ;};ctx =_gcgc ;ctx .Y -=_ga ;if _agb !=len (_ff )-1&&ctx .Y > (ctx .PageHeight -ctx .Margins .Bottom )*.95{ctx .X =ctx .Margins .Left ;ctx .Y =ctx .Margins .Top ; +ctx .Page ++;};_ec =append (_ec ,_bad ...);};return _ec ,ctx ,nil ;}; // GetPdfPages is a function that converts provided input content and -func (_aca *Document )GetPdfPages (ctx _d .Context )([]*_cd .PdfPage ,error ){if _eda :=_aca .validate ();_eda !=nil {return nil ,_eda ;};return _aca .extract (ctx ,_aca ._db ,_aca ._dbf ,_aca .getMargins ());};var ErrNoClient =_cg .New ("\u0055n\u0069\u0048\u0054\u004d\u004c\u0020\u0063\u006c\u0069\u0065\u006et\u0020\u006e\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064"); +func (_ae *Document )GetPdfPages (ctx _c .Context )([]*_ab .PdfPage ,error ){if _abdd :=_ae .validate ();_abdd !=nil {return nil ,_abdd ;};return _ae .extract (ctx ,_ae ._fb ,_ae ._edf ,_ae .getMargins ());};var _ _cef .Drawable =(*Document )(nil ); +// SetMarkedContentID sets the marked content id for the document. +func (_fbd *Document )SetMarkedContentID (id int64 )*_ab .KDict {return nil }; -// Connect creates UniHTML HTTP Client and tries to establish connection with the server. -func Connect (path string )error {if _ga :=_cc ();_ga !=nil {return _ga ;};_dfe ,_fe :=_f .ParseOptions (path );if _fe !=nil {return _fe ;};_ge =_f .New (_dfe );_da ,_ba :=_d .WithTimeout (_d .Background (),_df .Second *5);defer _ba ();if _bg :=_ge .HealthCheck (_da ); -_bg !=nil {return _bg ;};return nil ;}; +// WaitVisible waits for the provided selector to be ready. +// A selector might be i.e. `#example` for id and `.example` for classes. The second parameter defines how to match given selector. +func (_gfc *Document )WaitVisible (sel string ,by ..._dee .ByType ){_bada :=_dee .BySearch ;if len (by )> 0{_bada =by [0];};_gfc ._gcd =append (_gfc ._gcd ,_b .BySelector {Selector :sel ,By :_bada });}; -// GetContent returns the content of the document. -func (_dec *Document )GetContent ()_ef .Content {return _dec ._dg };var _ _ac .Drawable =(*Document )(nil ); +// SetLandscapeOrientation sets document landscape page orientation. +func (_fef *Document )SetLandscapeOrientation (){_fef ._eff =_af .Landscape }; -// SetPageWidth sets the page width for given document. -func (_caa *Document )SetPageWidth (pageWidth _gf .Length )error {_caa ._db =pageWidth ;_caa ._dgg =_ac .PositionAbsolute ;return nil ;}; +// SetPageHeight sets the page height for given document. +func (_fgc *Document )SetPageHeight (pageHeight _af .Length )error {_fgc ._edf =pageHeight ;_fgc ._edb =_cef .PositionAbsolute ;return nil ;}; + +// ConnectOptions creates UniHTML HTTP Client and tries to establish connection with the server. +func ConnectOptions (o Options )error {_f =_b .New (_b .Options {Hostname :o .Hostname ,Port :o .Port ,HTTPS :o .Secure });_ac ,_fd :=_c .WithTimeout (_c .Background (),_df .Second *5);defer _fd ();if _ef :=_f .HealthCheck (_ac );_ef !=nil {return _ef ; +};return nil ;}; // SetPageSize sets the page default size. -func (_dfd *Document )SetPageSize (pageSize _gf .PageSize )error {if !pageSize .IsAPageSize (){return _cg .New ("\u0070\u0072\u006f\u0076\u0069\u0064\u0065\u0064\u0020\u0069\u006ev\u0061\u006c\u0069\u0064\u0020\u0070\u0061\u0067\u0065\u0020s\u0069\u007a\u0065"); -};_dfd ._eaa =pageSize ;_dfd ._dgg =_ac .PositionAbsolute ;return nil ;}; +func (_dge *Document )SetPageSize (pageSize _af .PageSize )error {if !pageSize .IsAPageSize (){return _db .New ("\u0070\u0072\u006f\u0076\u0069\u0064\u0065\u0064\u0020\u0069\u006ev\u0061\u006c\u0069\u0064\u0020\u0070\u0061\u0067\u0065\u0020s\u0069\u007a\u0065"); +};_dge ._gd =pageSize ;_dge ._edb =_cef .PositionAbsolute ;return nil ;}; -// SetMarginBottom sets the left margin. -func (_ffc *Document )SetMarginBottom (margin _gf .Length ){_ffc ._daf .Bottom =margin }; +// SetTimeoutDuration sets the timeout duration +// the default timeout is 15 seconds. +func (_bfe *Document )SetTimeoutDuration (duration _df .Duration ){_bfe ._fec =&duration };type margins struct{Left ,Right ,Bottom ,Top _af .Length ;}; -// WaitReady waits for the provided selector to be ready. -// A selector might be i.e. `#example` for id and `.example` for classes. The second parameter defines how to match given selector. -func (_efc *Document )WaitReady (sel string ,by ..._ea .ByType ){_abc :=_ea .BySearch ;if len (by )> 0{_abc =by [0];};_efc ._dab =append (_efc ._dab ,_f .BySelector {Selector :sel ,By :_abc });};var ErrContentNotDefined =_cg .New ("\u0068\u0074\u006d\u006c\u0020\u0064o\u0063\u0075\u006d\u0065\u006e\u0074\u0020\u0063\u006f\u006e\u0074\u0065\u006et\u0020\u006e\u006f\u0074\u0020\u0064\u0065f\u0069\u006e\u0065\u0064"); +// WriteToFile writes the document to a file defined by the output path. +func (_ccf *Document )WriteToFile (outputPath string )error {if _gca :=_ccf .validate ();_gca !=nil {return _gca ;};_aa :=_df .Second *20+_ccf ._dda ;_fg ,_eb :=_c .WithTimeout (_c .Background (),_aa );defer _eb ();_fbc ,_dag :=_ccf .extract (_fg ,_ccf ._fb ,_ccf ._edf ,_ccf .getMargins ()); +if _dag !=nil {return _dag ;};_dbe :=_cef .New ();for _ ,_dce :=range _fbc {if _dag =_dbe .AddPage (_dce );_dag !=nil {return _dag ;};};return _dbe .WriteToFile (outputPath );}; +// NewDocument creates new HTML Document used as an input for the creator.Drawable. +func NewDocument (path string )(*Document ,error ){_bec :=&Document {};_cba ,_cee :=_ce .Parse (path );if _cee !=nil {return nil ,_cee ;};switch _cba .Scheme {case "\u0068\u0074\u0074\u0070","\u0068\u0074\u0074p\u0073":_bec ._ca ,_cee =_gc .NewWebURL (path ); +if _cee !=nil {return nil ,_cee ;};return _bec ,nil ;};_abd ,_cee :=_d .Stat (path );if _cee !=nil {return nil ,_cee ;};if !_abd .IsDir (){_bec ._ca ,_cee =_gc .NewHTMLFile (path );}else {_bec ._ca ,_cee =_gc .NewZipDirectory (path );};if _cee !=nil {return nil ,_cee ; +};return _bec ,nil ;};var _f *_b .Client ; -// WaitVisible waits for the provided selector to be ready. -// A selector might be i.e. `#example` for id and `.example` for classes. The second parameter defines how to match given selector. -func (_gdf *Document )WaitVisible (sel string ,by ..._ea .ByType ){_gcda :=_ea .BySearch ;if len (by )> 0{_gcda =by [0];};_gdf ._faf =append (_gdf ._faf ,_f .BySelector {Selector :sel ,By :_gcda });}; \ No newline at end of file +// SetPos sets the absolute position. Changes object positioning to absolute. +func (_beca *Document )SetPos (x ,y float64 ){_beca ._edb =_cef .PositionAbsolute ;_beca ._cb =x ;_beca ._dg =y ;}; + +// ContainerComponent implements creator.containerElement interface. +func (_gde *Document )ContainerComponent (container _cef .Drawable )(_cef .Drawable ,error ){switch container .(type ){case *_cef .Chapter :default:return nil ,_a .Errorf ("\u0075\u006e\u0069\u0068t\u006d\u006c\u002e\u0044\u006f\u0063\u0075\u006d\u0065n\u0074\u0020\u0063\u0061\u006e\u0027\u0074\u0020\u0062\u0065\u0020\u0061\u0020\u0063\u006f\u006d\u0070\u006fn\u0065\u006e\u0074\u0020\u006ff\u0020\u0074\u0068\u0065\u0020\u0025\u0054\u0020\u0063\u006f\u006e\u0074\u0061\u0069\u006e\u0065\u0072",container ); +};return _gde ,nil ;}; + +// NewDocumentFromString creates a new Document from the provided HTML string. +func NewDocumentFromString (html string )(*Document ,error ){_abe ,_ea :=_gc .NewStringContent (html );if _ea !=nil {return nil ,_ea ;};_fac :=&Document {};_fac ._ca =_abe ;return _fac ,nil ;}; + +// SetMargins sets the Document Margins. +func (_acbg *Document )SetMargins (left ,right ,top ,bottom float64 ){_acbg ._acb .Left =_af .Point (left );_acbg ._acb .Right =_af .Point (right );_acbg ._acb .Top =_af .Point (top );_acbg ._acb .Bottom =_af .Point (bottom );_acbg ._edb =_cef .PositionAbsolute ; +};func (_eaea *Document )extract (_ad _c .Context ,_ddc ,_dfa _af .Length ,_ceef margins )([]*_ab .PdfPage ,error ){_bcb :=_b .BuildHTMLQuery ().SetContent (_eaea ._ca ).PageSize (_eaea ._gd ).PaperWidth (_ddc ).PaperHeight (_dfa ).Orientation (_eaea ._eff ).MarginLeft (_ceef .Left ).MarginRight (_ceef .Right ).MarginTop (_ceef .Top ).MarginBottom (_ceef .Bottom ).TimeoutDuration (_eaea .getTimeoutDuration ()).WaitTime (_eaea ._dda ); +for _ ,_eadb :=range _eaea ._bd {_bcb .WaitReady (_eadb .Selector ,_eadb .By );};for _ ,_gge :=range _eaea ._gcd {_bcb .WaitVisible (_gge .Selector ,_gge .By );};_efc ,_cgb :=_bcb .Query ();if _cgb !=nil {return nil ,_cgb ;};var _baf _c .CancelFunc ;if _eaea ._fec !=nil {_ad ,_baf =_c .WithTimeout (_ad ,*_eaea ._fec ); +}else {_ad ,_baf =_c .WithTimeout (_ad ,_df .Second *15);};defer _baf ();_fbf ,_cgb :=_f .ConvertHTML (_ad ,_efc );if _cgb !=nil {return nil ,_cgb ;};_aad :=_g .NewReader (_fbf .Data );_cad ,_cgb :=_ab .NewPdfReader (_aad );if _cgb !=nil {return nil ,_cgb ; +};return _cad .PageList ,nil ;}; \ No newline at end of file