From 5b9ebaae136798a22927eb23b020eabc356c04a8 Mon Sep 17 00:00:00 2001 From: UniDoc Build Date: Sun, 25 May 2025 19:48:30 +0000 Subject: [PATCH] prepare release --- README.md | 4 + cli/cmd/cmd.go | 54 ++++---- cli/main.go | 2 +- client/client.go | 293 ++++++++++++++++++++++--------------------- common/common.go | 6 +- content/content.go | 77 ++++++------ selector/selector.go | 5 +- sizes/sizes.go | 243 +++++++++++++++++------------------ unihtml.go | 163 ++++++++++++------------ 9 files changed, 426 insertions(+), 421 deletions(-) diff --git a/README.md b/README.md index 7de904f..deb3156 100644 --- a/README.md +++ b/README.md @@ -61,6 +61,10 @@ This license kind requires also an environment variable `UNIHTML_CUSTOMER_NAME` UniHTML Server accepts also a UniDoc metered license. This could be set by providing you **API Key** in the environment variable: - `UNIDOC_METERED_API_KEY` - the value of this variable should be an **API Key** matched to your license. +### Ignore Certificate Errors +If you are needed to access a self-signed certificate URL for the UniHTML, you can set the environment variable `UNIHTML_IGNORE_CERT_ERRORS` to `true` to ignore certificate errors. +*However, we did not recommend this for production use, or when you are sure it is safe to set this to `true`*. + ## Usage Following example connects to the UniHTML server, reads the content of the input file and converts it using `github.com/unidoc/unipdf/v3/creator` package. diff --git a/cli/cmd/cmd.go b/cli/cmd/cmd.go index d3956bb..dd01db4 100644 --- a/cli/cmd/cmd.go +++ b/cli/cmd/cmd.go @@ -9,22 +9,23 @@ // 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 (_b "context";_c "fmt";_g "github.com/mitchellh/go-homedir";_cc "github.com/spf13/cobra";_ef "github.com/spf13/viper";_ab "github.com/unidoc/unihtml/client";_ce "github.com/unidoc/unihtml/content";_d "github.com/unidoc/unihtml/sizes"; -_ea "github.com/unidoc/unipdf/v4/common";_ag "os";_a "path/filepath";_eg "time";);func _afg (){if _bef !=""{_ef .SetConfigFile (_bef );}else {_fa ,_fc :=_g .Dir ();if _fc !=nil {_c .Println (_fc );_ag .Exit (1);};_ef .AddConfigPath (_fa );_ef .SetConfigName ("\u002e\u0075\u006ei\u0068\u0074\u006d\u006c\u002d\u0073\u0072\u0063"); -};_ef .AutomaticEnv ();if _fg :=_ef .ReadInConfig ();_fg ==nil {_c .Println ("\u0055s\u0069n\u0067\u0020\u0063\u006f\u006ef\u0069\u0067 \u0066\u0069\u006c\u0065\u003a",_ef .ConfigFileUsed ());};}; +package cmd ;import (_f "context";_c "fmt";_ca "github.com/mitchellh/go-homedir";_cc "github.com/spf13/cobra";_bg "github.com/spf13/viper";_af "github.com/unidoc/unihtml/client";_b "github.com/unidoc/unihtml/content";_d "github.com/unidoc/unihtml/sizes"; +_gg "github.com/unidoc/unipdf/v4/common";_g "os";_ff "path/filepath";_ac "time";);var (_e =generateConfig {};_fd =parametersConfig {PaperWidth :_d .LengthFlag {Length :_d .Inch (8.5).Millimeters ()},PaperHeight :_d .LengthFlag {Length :_d .Inch (11).Millimeters ()},Orientation :_d .Portrait ,MarginTop :_d .LengthFlag {Length :_d .Millimeter (10)},MarginBottom :_d .LengthFlag {Length :_d .Millimeter (10)},MarginLeft :_d .LengthFlag {Length :_d .Millimeter (10)},MarginRight :_d .LengthFlag {Length :_d .Millimeter (10)}}; +); // 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 _gcg :=_aa .Execute ();_gcg !=nil {_c .Println (_gcg );_ag .Exit (1);};};var _aa =&_cc .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"}; -type generateConfig struct{Port int `mapstructure:"port"`;Host string `mapstructure:"host"`;Https bool `mapstructure:"https"`;Prefix string `mapstructure:"prefix"`;};func init (){_aa .AddCommand (_f );_f .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"); -_f .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"); -_f .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"); -_f .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"); -_f .Flags ().Var (&_ed .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");_f .Flags ().Var (&_ed .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"); -_f .Flags ().Var (&_ed .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");_f .Flags ().Var (&_ed .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"); -_f .Flags ().Var (&_ed .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");_f .Flags ().Var (&_ed .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"); -_f .Flags ().Var (&_ed .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");_f .Flags ().Var (&_ed .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 parametersConfig struct{ +func Execute (){if _ab :=_bd .Execute ();_ab !=nil {_c .Println (_ab );_g .Exit (1);};};func _gdd (){_bf :=_gg .LogLevelInfo ;if _dbe {_bf =_gg .LogLevelDebug ;};if _bc {_bf =_gg .LogLevelTrace ;};_gg .Log =_gg .NewConsoleLogger (_bf );};var _cf string ; +func init (){_bd .AddCommand (_fb );_fb .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");_fb .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"); +_fb .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"); +_fb .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"); +_fb .Flags ().Var (&_fd .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");_fb .Flags ().Var (&_fd .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"); +_fb .Flags ().Var (&_fd .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");_fb .Flags ().Var (&_fd .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"); +_fb .Flags ().Var (&_fd .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");_fb .Flags ().Var (&_fd .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"); +_fb .Flags ().Var (&_fd .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");_fb .Flags ().Var (&_fd .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"); +};func _feg (){if _cf !=""{_bg .SetConfigFile (_cf );}else {_ee ,_abae :=_ca .Dir ();if _abae !=nil {_c .Println (_abae );_g .Exit (1);};_bg .AddConfigPath (_ee );_bg .SetConfigName ("\u002e\u0075\u006ei\u0068\u0074\u006d\u006c\u002d\u0073\u0072\u0063"); +};_bg .AutomaticEnv ();if _bdg :=_bg .ReadInConfig ();_bdg ==nil {_c .Println ("\u0055s\u0069n\u0067\u0020\u0063\u006f\u006ef\u0069\u0067 \u0066\u0069\u006c\u0065\u003a",_bg .ConfigFileUsed ());};};var _bd =&_cc .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"}; +type parametersConfig struct{ // PaperWidth sets the width of the paper. PaperWidth _d .LengthFlag `mapstructure:"paper-width"`; @@ -48,17 +49,16 @@ MarginBottom _d .LengthFlag `mapstructure:"margin-bottom"`; MarginLeft _d .LengthFlag `mapstructure:"margin-left"`; // MarginRight sets up the Right Margin for the output. -MarginRight _d .LengthFlag `mapstructure:"margin-right"`;};func _ae (cmd *_cc .Command ,_ec []string ){_egc :=_eg .Now ();if _efc :=_ef .BindPFlags (cmd .Flags ());_efc !=nil {_c .Printf ("\u0045\u0072\u0072\u003a\u0020\u0025\u0076\u000a",_efc );_ag .Exit (1); -};if _gad :=_ef .Unmarshal (&_ga );_gad !=nil {_c .Printf ("\u0045\u0072\u0072\u003a\u0020\u0025\u0076\u000a",_gad );_ag .Exit (1);};_ecg ();_eb ,_ac :=_ag .Stat (_ec [0]);if _ac !=nil {_c .Printf ("\u0045\u0072\u0072\u003a\u0020\u0025\u0076\u000a",_ac ); -_ag .Exit (1);};if !_eb .IsDir (){if _a .Ext (_eb .Name ())!="\u002e\u0068\u0074m\u006c"{_c .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",_ec [0]); -_ag .Exit (1);};};_fb ,_ac :=_ag .OpenFile (_ec [1],_ag .O_CREATE |_ag .O_WRONLY |_ag .O_TRUNC ,0700);if _ac !=nil {_c .Printf ("\u0045\u0072\u0072\u003a\u0020\u0025\u0076\u000a",_ac );_ag .Exit (1);};defer _fb .Close ();_ee :=_ab .New (_ab .Options {HTTPS :_ga .Https ,Hostname :_ga .Host ,Port :_ga .Port ,Prefix :_ga .Prefix }); -_be ,_gc :=_b .WithTimeout (_b .Background (),_eg .Second *10);defer _gc ();_cg :=_eg .Now ();var _aeg _ce .Content ;if _eb .IsDir (){_aeg ,_ac =_ce .NewZipDirectory (_ec [0]);}else {_aeg ,_ac =_ce .NewHTMLFile (_ec [0]);};if _ac !=nil {_c .Printf ("\u0045r\u0072\u003a\u0020\u0025\u0076",_ac ); -_ag .Exit (1);};_gada ,_ac :=_ab .BuildHTMLQuery ().PaperWidth (_ed .PaperWidth .Length ).PaperHeight (_ed .PaperHeight .Length ).PageSize (_ed .PageSize ).MarginTop (_ed .MarginTop .Length ).MarginBottom (_ed .MarginBottom .Length ).MarginLeft (_ed .MarginLeft .Length ).MarginRight (_ed .MarginRight .Length ).Orientation (_ed .Orientation ).SetContent (_aeg ).Query (); -if _ac !=nil {_c .Printf ("\u0045\u0072\u0072\u003a\u0020\u0025\u0076\u000a",_ac );_ag .Exit (1);};_agf ,_ac :=_ee .ConvertHTML (_be ,_gada );if _ac !=nil {_c .Printf ("\u0045\u0072\u0072\u003a\u0020\u0025\u0076\u000a",_ac );_ag .Exit (1);};_ea .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",_eg .Since (_cg )); -_cg =_eg .Now ();_ ,_ac =_fb .Write (_agf .Data );if _ac !=nil {_c .Printf ("\u0045\u0072\u0072\u003a\u0020\u0025\u0076\u000a",_ac );_ag .Exit (1);};_ea .Log .Trace ("\u0057\u0072\u0069\u0074in\u0067\u0020\u0066\u0069\u006c\u0065\u0020\u0074\u0061\u006b\u0065\u006e\u003a\u0020%\u0073",_eg .Since (_cg )); -_c .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",_eg .Since (_egc ));};var _bef string ;var (_ga =generateConfig {};_ed =parametersConfig {PaperWidth :_d .LengthFlag {Length :_d .Inch (8.5).Millimeters ()},PaperHeight :_d .LengthFlag {Length :_d .Inch (11).Millimeters ()},Orientation :_d .Portrait ,MarginTop :_d .LengthFlag {Length :_d .Millimeter (10)},MarginBottom :_d .LengthFlag {Length :_d .Millimeter (10)},MarginLeft :_d .LengthFlag {Length :_d .Millimeter (10)},MarginRight :_d .LengthFlag {Length :_d .Millimeter (10)}}; -);var _f =&_cc .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 :_ae ,Args :_cc .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 (){_cc .OnInitialize (_afg );_aa .PersistentFlags ().BoolVarP (&_gd ,"\u0064\u0065\u0062u\u0067","\u0064",false ,"\u0044e\u0066i\u006e\u0065\u0073\u0020\u0064e\u0062\u0075g\u0020\u006d\u006f\u0064\u0065");_aa .PersistentFlags ().BoolVarP (&_gdd ,"\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"); -_aa .PersistentFlags ().StringVar (&_bef ,"\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"); -_aa .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 _ecg (){_df :=_ea .LogLevelInfo ;if _gd {_df =_ea .LogLevelDebug ; -};if _gdd {_df =_ea .LogLevelTrace ;};_ea .Log =_ea .NewConsoleLogger (_df );};var (_gd ,_gdd bool ;); \ No newline at end of file +MarginRight _d .LengthFlag `mapstructure:"margin-right"`;};var _fb =&_cc .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 :_ga ,Args :_cc .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 generateConfig struct{Port int `mapstructure:"port"`;Host string `mapstructure:"host"`;Https bool `mapstructure:"https"`;Prefix string `mapstructure:"prefix"`;};func init (){_cc .OnInitialize (_feg );_bd .PersistentFlags ().BoolVarP (&_dbe ,"\u0064\u0065\u0062u\u0067","\u0064",false ,"\u0044e\u0066i\u006e\u0065\u0073\u0020\u0064e\u0062\u0075g\u0020\u006d\u006f\u0064\u0065"); +_bd .PersistentFlags ().BoolVarP (&_bc ,"\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"); +_bd .PersistentFlags ().StringVar (&_cf ,"\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"); +_bd .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 (_dbe ,_bc bool ;);func _ga (cmd *_cc .Command ,_da []string ){_gf :=_ac .Now (); +if _be :=_bg .BindPFlags (cmd .Flags ());_be !=nil {_c .Printf ("\u0045\u0072\u0072\u003a\u0020\u0025\u0076\u000a",_be );_g .Exit (1);};if _fff :=_bg .Unmarshal (&_e );_fff !=nil {_c .Printf ("\u0045\u0072\u0072\u003a\u0020\u0025\u0076\u000a",_fff );_g .Exit (1); +};_gdd ();_eb ,_dab :=_g .Stat (_da [0]);if _dab !=nil {_c .Printf ("\u0045\u0072\u0072\u003a\u0020\u0025\u0076\u000a",_dab );_g .Exit (1);};if !_eb .IsDir (){if _ff .Ext (_eb .Name ())!="\u002e\u0068\u0074m\u006c"{_c .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",_da [0]); +_g .Exit (1);};};_bga ,_dab :=_g .OpenFile (_da [1],_g .O_CREATE |_g .O_WRONLY |_g .O_TRUNC ,0700);if _dab !=nil {_c .Printf ("\u0045\u0072\u0072\u003a\u0020\u0025\u0076\u000a",_dab );_g .Exit (1);};defer _bga .Close ();_db :=_af .New (_af .Options {HTTPS :_e .Https ,Hostname :_e .Host ,Port :_e .Port ,Prefix :_e .Prefix }); +_ffb ,_cae :=_f .WithTimeout (_f .Background (),_ac .Second *10);defer _cae ();_cad :=_ac .Now ();var _caf _b .Content ;if _eb .IsDir (){_caf ,_dab =_b .NewZipDirectory (_da [0]);}else {_caf ,_dab =_b .NewHTMLFile (_da [0]);};if _dab !=nil {_c .Printf ("\u0045r\u0072\u003a\u0020\u0025\u0076",_dab ); +_g .Exit (1);};_ggf ,_dab :=_af .BuildHTMLQuery ().PaperWidth (_fd .PaperWidth .Length ).PaperHeight (_fd .PaperHeight .Length ).PageSize (_fd .PageSize ).MarginTop (_fd .MarginTop .Length ).MarginBottom (_fd .MarginBottom .Length ).MarginLeft (_fd .MarginLeft .Length ).MarginRight (_fd .MarginRight .Length ).Orientation (_fd .Orientation ).SetContent (_caf ).Query (); +if _dab !=nil {_c .Printf ("\u0045\u0072\u0072\u003a\u0020\u0025\u0076\u000a",_dab );_g .Exit (1);};_dc ,_dab :=_db .ConvertHTML (_ffb ,_ggf );if _dab !=nil {_c .Printf ("\u0045\u0072\u0072\u003a\u0020\u0025\u0076\u000a",_dab );_g .Exit (1);};_gg .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",_ac .Since (_cad )); +_cad =_ac .Now ();_ ,_dab =_bga .Write (_dc .Data );if _dab !=nil {_c .Printf ("\u0045\u0072\u0072\u003a\u0020\u0025\u0076\u000a",_dab );_g .Exit (1);};_gg .Log .Trace ("\u0057\u0072\u0069\u0074in\u0067\u0020\u0066\u0069\u006c\u0065\u0020\u0074\u0061\u006b\u0065\u006e\u003a\u0020%\u0073",_ac .Since (_cad )); +_c .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",_ac .Since (_gf ));}; \ No newline at end of file diff --git a/cli/main.go b/cli/main.go index 9be0d6b..3ba61aa 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 _c "github.com/unidoc/unihtml/cli/cmd";func main (){_c .Execute ()}; \ No newline at end of file +package main ;import _ec "github.com/unidoc/unihtml/cli/cmd";func main (){_ec .Execute ()}; \ No newline at end of file diff --git a/client/client.go b/client/client.go index 16bf0cd..f2ae1f6 100644 --- a/client/client.go +++ b/client/client.go @@ -11,201 +11,202 @@ // 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 (_faf "bytes";_f "compress/flate";_fa "compress/gzip";_d "context";_e "encoding/json";_dc "errors";_ed "fmt";_dac "github.com/unidoc/unihtml/content";_bb "github.com/unidoc/unihtml/selector";_gc "github.com/unidoc/unihtml/sizes"; -_aa "github.com/unidoc/unipdf/v4/common";_a "io";_ae "net";_da "net/http";_bd "net/url";_af "strconv";_ff "strings";_b "time";); +package client ;import (_b "bytes";_ag "compress/flate";_aa "compress/gzip";_e "context";_g "encoding/json";_ee "errors";_eg "fmt";_be "github.com/unidoc/unihtml/content";_gf "github.com/unidoc/unihtml/selector";_dd "github.com/unidoc/unihtml/sizes";_dga "github.com/unidoc/unipdf/v4/common"; +_d "io";_gc "net";_ad "net/http";_eee "net/url";_bb "strconv";_dg "strings";_eb "time";); -// SetContent sets custom data with it's content type. -func (_cf *QueryBuilder )SetContent (content _dac .Content )*QueryBuilder {if _cf ._ddg !=nil {return _cf ;};switch content .Method (){case "\u0064\u0069\u0072","\u0068\u0074\u006d\u006c":if _cf ._bea .ContentType !=""{_cf ._ddg =ErrContentTypeDeclared ; -return _cf ;};if content .ContentType ()==""{_cf ._ddg =_ed .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 _cf ;};_cf ._bea .Content =content .Data (); -_cf ._bea .ContentType =content .ContentType ();case "\u0077\u0065\u0062":if _cf ._bea .ContentType !=""{_cf ._ddg =ErrContentTypeDeclared ;return _cf ;};_cf ._bea .URL =string (content .Data ());_cf ._bea .ContentType =content .ContentType ();default:_cf ._ddg =_ed .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 _cf ;};_cf ._bea .Method =content .Method ();return _cf ;}; +// WithHostname sets the Hostname option for the client options. +func WithHostname (option string )Option {return func (_ba *Options ){_ba .Hostname =option }}; -// WithHTTPS sets the TLS option for the client options. -func WithHTTPS (useHTTPS bool )Option {return func (_daf *Options ){_daf .HTTPS =useHTTPS }}; +// BySelector is a structure that defines a selector with it's query 'by' type. +type BySelector struct{Selector string `json:"selector"`;By _gf .ByType `json:"by"`;}; -// Option is a function that changes client options. -type Option func (_ba *Options ); +// HealthCheck connects to the server and check the health status of the server. +func (_gcd *Client )HealthCheck (ctx _e .Context )error {_bd :=_gcd .Options .Addr ();_bd =_eg .Sprintf ("\u0025s\u002f\u0068\u0065\u0061\u006c\u0074h",_bd );_c ,_ed :=_ad .NewRequest ("\u0047\u0045\u0054",_bd ,nil );if _ed !=nil {return _ed ;};_c =_c .WithContext (ctx ); +_ef ,_ed :=_gcd .Client .Do (_c );if _ed !=nil {return _ed ;};switch _ef .StatusCode {case _ad .StatusOK :return nil ;case _ad .StatusNotFound :return ErrNotFound ;case _ad .StatusInternalServerError :return ErrInternalError ;case _ad .StatusBadGateway :return ErrBadGateway ; +default:return ErrNotImplemented ;};}; // Validate checks if the QueryBuilder had no errors during composition and creation. -func (_abc *QueryBuilder )Validate ()error {if _abc ._ddg !=nil {return _abc ._ddg ;};return _abc ._bea .Validate ();};var (ErrNotFound =_dc .New ("\u006eo\u0074\u0020\u0066\u006f\u0075\u006ed");ErrBadRequest =_dc .New ("b\u0061\u0064\u0020\u0072\u0065\u0071\u0075\u0065\u0073\u0074"); -ErrNotImplemented =_dc .New ("\u006eo\u0074 \u0069\u006d\u0070\u006c\u0065\u006d\u0065\u006e\u0074\u0065\u0064");ErrInternalError =_dc .New ("i\u006e\u0074\u0065\u0072na\u006c \u0073\u0065\u0072\u0076\u0065r\u0020\u0065\u0072\u0072\u006f\u0072");ErrBadGateway =_dc .New ("b\u0061\u0064\u0020\u0067\u0061\u0074\u0065\u0077\u0061\u0079"); -ErrUnauthorized =_dc .New ("\u0075\u006e\u0061u\u0074\u0068\u006f\u0072\u0069\u007a\u0065\u0064");ErrTimedOut =_dc .New ("\u0072\u0065\u0071\u0075\u0065\u0073\u0074\u0020\u0074\u0069\u006d\u0065d\u0020\u006f\u0075\u0074");); +func (_cfe *QueryBuilder )Validate ()error {if _cfe ._ge !=nil {return _cfe ._ge ;};return _cfe ._gfa .Validate ();}; -// Client is a structure that is a HTTP client for the unihtml server. -type Client struct{Options Options ;Client *_da .Client ;}; +// Addr gets the HTTP address URI used by the http.Client. +func (_gdc *Options )Addr ()string {_aga :=_dg .Builder {};_aga .WriteString ("\u0068\u0074\u0074\u0070");if _gdc .HTTPS {_aga .WriteRune ('s');};_aga .WriteString ("\u003a\u002f\u002f");_aga .WriteString (_gdc .Hostname );_aga .WriteRune (':');_aga .WriteString (_bb .Itoa (_gdc .Port )); +if _gdc .Prefix !=""{_aga .WriteString (_gdc .Prefix );};return _aga .String ();};func (_ae *Client )setQueryValues (_aac *_ad .Request ,_gdb *Query ){_gde :=_aac .URL .Query ();_egac :=_gdb .PageParameters ;if _egac .PageSize !=nil {_gde .Set ("\u0070a\u0067\u0065\u002d\u0073\u0069\u007ae",_egac .PageSize .String ()); +};if _egac .PaperHeight !=nil {_gde .Set ("\u0070\u0061\u0070e\u0072\u002d\u0068\u0065\u0069\u0067\u0068\u0074",_egac .PaperHeight .String ());};if _egac .PaperWidth !=nil {_gde .Set ("p\u0061\u0070\u0065\u0072\u002d\u0077\u0069\u0064\u0074\u0068",_egac .PaperWidth .String ()); +};if _egac .MarginTop !=nil {_gde .Set ("\u006d\u0061\u0072\u0067\u0069\u006e\u002d\u0074\u006f\u0070",_egac .MarginTop .String ());};if _egac .MarginBottom !=nil {_gde .Set ("\u006d\u0061\u0072\u0067\u0069\u006e\u002d\u0062\u006f\u0074\u0074\u006f\u006d",_egac .MarginBottom .String ()); +};if _egac .MarginRight !=nil {_gde .Set ("\u006d\u0061\u0072g\u0069\u006e\u002d\u0072\u0069\u0067\u0068\u0074",_egac .MarginRight .String ());};if _egac .MarginLeft !=nil {_gde .Set ("m\u0061\u0072\u0067\u0069\u006e\u002d\u006c\u0065\u0066\u0074",_egac .MarginLeft .String ()); +};if _egac .Orientation ==_dd .Landscape {_gde .Set ("o\u0072\u0069\u0065\u006e\u0074\u0061\u0074\u0069\u006f\u006e",_egac .Orientation .String ());};if _gdb .RenderParameters .WaitTime !=0{_gde .Set ("\u006d\u0069\u006e\u0069\u006d\u0075\u006d\u002d\u006c\u006f\u0061\u0064-\u0074\u0069\u006d\u0065",_bb .FormatInt (int64 (_gdb .RenderParameters .WaitTime /_eb .Millisecond ),10)); +};_aac .URL .RawQuery =_gde .Encode ();}; -// WaitTime sets the minimum load time parameter for the page rendering. -func (_fc *QueryBuilder )WaitTime (d _b .Duration )*QueryBuilder {_fc ._bea .RenderParameters .WaitTime =d ;return _fc ;}; +// MarginBottom sets up the MarginBottom parameter for the query. +func (_afc *QueryBuilder )MarginBottom (marginBottom _dd .Length )*QueryBuilder {_afc ._gfa .PageParameters .MarginBottom =marginBottom ;return _afc ;}; -// WithPort sets the Port option for the client options. -func WithPort (option int )Option {return func (_aea *Options ){_aea .Port =option }}; +// SetContent sets custom data with it's content type. +func (_dgad *QueryBuilder )SetContent (content _be .Content )*QueryBuilder {if _dgad ._ge !=nil {return _dgad ;};switch content .Method (){case "\u0064\u0069\u0072","\u0068\u0074\u006d\u006c":if _dgad ._gfa .ContentType !=""{_dgad ._ge =ErrContentTypeDeclared ; +return _dgad ;};if content .ContentType ()==""{_dgad ._ge =_eg .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 _dgad ; +};_dgad ._gfa .Content =content .Data ();_dgad ._gfa .ContentType =content .ContentType ();case "\u0077\u0065\u0062":if _dgad ._gfa .ContentType !=""{_dgad ._ge =ErrContentTypeDeclared ;return _dgad ;};_dgad ._gfa .URL =string (content .Data ());_dgad ._gfa .ContentType =content .ContentType (); +default:_dgad ._ge =_eg .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 _dgad ;};_dgad ._gfa .Method =content .Method (); +return _dgad ;}; -// TimeoutDuration sets the server query duration timeout. -// Once the timeout is reached the server will return an error. -func (_ace *QueryBuilder )TimeoutDuration (d _b .Duration )*QueryBuilder {_ace ._bea .TimeoutDuration =d ;return _ace ;}; +// PageParameters are the query parameters used in the PDF generation. +type PageParameters struct{ -// Orientation sets the page orientation for the Query. -func (_fdb *QueryBuilder )Orientation (orientation _gc .Orientation )*QueryBuilder {_fdb ._bea .PageParameters .Orientation =orientation ;return _fdb ;}; +// PaperWidth sets the width of the paper. +PaperWidth _dd .Length `schema:"paper-width" json:"paperWidth"`; -// PaperWidth sets up the PaperWidth (in cm) parameter for the query. -func (_fdd *QueryBuilder )PaperWidth (paperWidth _gc .Length )*QueryBuilder {_fdd ._bea .PageParameters .PaperWidth =paperWidth ;return _fdd ;}; +// PaperHeight is the height of the output paper. +PaperHeight _dd .Length `schema:"paper-height" json:"paperHeight"`; -// DefaultPageParameters creates default parameters. -func DefaultPageParameters ()PageParameters {return PageParameters {Orientation :_gc .Portrait }}; +// PageSize is the page size string. +PageSize *_dd .PageSize `schema:"page-size" json:"pageSize"`; -// WithHostname sets the Hostname option for the client options. -func WithHostname (option string )Option {return func (_cef *Options ){_cef .Hostname =option }}; +// Orientation defines if the output should be in a landscape format. +Orientation _dd .Orientation `schema:"orientation" json:"orientation"`; -// Validate checks validity of the selector. -func (_cb BySelector )Validate ()error {if _cb .Selector ==""{return _dc .New ("\u0070\u0072\u006fvi\u0064\u0065\u0064\u0020\u0065\u006d\u0070\u0074\u0079\u0020\u0073\u0065\u006c\u0065\u0063\u0074\u006f\u0072");};if _ec :=_cb .By .Validate ();_ec !=nil {return _ec ; -};return nil ;}; +// MarginTop sets up the Top Margin for the output. +MarginTop _dd .Length `schema:"margin-top" json:"marginTop"`; -// Validate checks the validity of the RenderParameters. -func (_ggf *RenderParameters )Validate ()error {if _ggf .WaitTime > _b .Minute *3{return _dc .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 _ ,_fb :=range _ggf .WaitReady {if _afbb :=_fb .Validate ();_afbb !=nil {return _ed .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",_afbb ); -};};return nil ;}; +// MarginBottom sets up the Bottom Margin for the output. +MarginBottom _dd .Length `schema:"margin-bottom" json:"marginBottom"`; -// RenderParameters are the parameters related with the rendering. -type RenderParameters struct{WaitTime _b .Duration `schema:"minimum-load-time" json:"waitTime"`;WaitReady []BySelector `json:"waitReady"`;WaitVisible []BySelector `json:"waitVisible"`;}; +// MarginLeft sets up the Left Margin for the output. +MarginLeft _dd .Length `schema:"margin-left" json:"marginLeft"`; -// WithPrefix sets the client prefix. -func WithPrefix (prefix string )Option {return func (_ede *Options ){_ede .Prefix =prefix }}; +// MarginRight sets up the Right Margin for the output. +MarginRight _dd .Length `schema:"margin-right" json:"marginRight"`;}; -// New creates new client with provided options. -func New (o Options )*Client {o .DefaultTimeout =_b .Second *30;if o .Port <=0{o .Port =8080;};if o .Hostname ==""{o .Hostname ="\u00312\u0037\u002e\u0030\u002e\u0030\u002e1";};var _fe =&_da .Transport {DialContext :(&_ae .Dialer {Timeout :5*_b .Second }).DialContext ,TLSHandshakeTimeout :5*_b .Second }; -_aa .Log .Info ("\u0043l\u0069e\u006e\u0074\u0020\u0041\u0064\u0064\u0072\u003a\u0020\u0025\u0073",o .Addr ());return &Client {Options :o ,Client :&_da .Client {Transport :_fe ,Timeout :o .DefaultTimeout }};}; +// 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 (_ege *QueryBuilder )Query ()(*Query ,error ){if _egd :=_ege .Validate ();_egd !=nil {return nil ,_egd ;};return &_ege ._gfa ,nil ;}; -// Landscape sets up the landscape portrait orientation. -func (_gbg *QueryBuilder )Landscape ()*QueryBuilder {_gbg ._bea .PageParameters .Orientation =_gc .Landscape ;return _gbg ;}; +// DefaultPageParameters creates default parameters. +func DefaultPageParameters ()PageParameters {return PageParameters {Orientation :_dd .Portrait }}; -// Validate checks if the parameters are valid. -func (_bbc *PageParameters )Validate ()error {if _bbc .PaperWidth !=nil {if _bbc .PaperWidth .Millimeters ()< 0{return _dc .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 _bbc .PaperHeight !=nil {if _bbc .PaperHeight .Millimeters ()< 0{return _dc .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 _bbc .MarginTop !=nil {if _bbc .MarginTop .Millimeters ()< 0{return _dc .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 _bbc .MarginBottom !=nil {if _bbc .MarginBottom .Millimeters ()< 0{return _dc .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 _bbc .MarginLeft !=nil {if _bbc .MarginLeft .Millimeters ()< 0{return _dc .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 _bbc .MarginRight !=nil {if _bbc .MarginRight .Millimeters ()< 0{return _dc .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 _bbc .PageSize !=nil &&!_bbc .PageSize .IsAPageSize (){return _dc .New ("\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0070\u0061\u0067\u0065 \u0073\u0069\u007a\u0065");};return nil ;}; +// MarginLeft sets up the MarginLeft parameter for the query. +func (_fgg *QueryBuilder )MarginLeft (marginLeft _dd .Length )*QueryBuilder {_fgg ._gfa .PageParameters .MarginLeft =marginLeft ;return _fgg ;};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 ;}; -// BuildHTMLQuery creates a Query builder that is supposed to create valid -func BuildHTMLQuery ()*QueryBuilder {return &QueryBuilder {}}; +// WaitVisible waits for the selector to get visible. +func (_dbe *QueryBuilder )WaitVisible (selector string ,by _gf .ByType )*QueryBuilder {_dbe ._gfa .RenderParameters .WaitVisible =append (_dbe ._gfa .RenderParameters .WaitVisible ,BySelector {Selector :selector ,By :by });return _dbe ;}; -// PDFResponse is the response used by the HTMLConverter. -type PDFResponse struct{ID string `json:"id"`;Data []byte `json:"data"`;}; +// Validate checks the validity of the RenderParameters. +func (_fg *RenderParameters )Validate ()error {if _fg .WaitTime > _eb .Minute *3{return _ee .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 _ ,_bfd :=range _fg .WaitReady {if _gbc :=_bfd .Validate ();_gbc !=nil {return _eg .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",_gbc ); +};};return nil ;}; -// WaitVisible waits for the selector to get visible. -func (_fcc *QueryBuilder )WaitVisible (selector string ,by _bb .ByType )*QueryBuilder {_fcc ._bea .RenderParameters .WaitVisible =append (_fcc ._bea .RenderParameters .WaitVisible ,BySelector {Selector :selector ,By :by });return _fcc ;}; +// Option is a function that changes client options. +type Option func (_ea *Options ); -// Addr gets the HTTP address URI used by the http.Client. -func (_bbb *Options )Addr ()string {_egf :=_ff .Builder {};_egf .WriteString ("\u0068\u0074\u0074\u0070");if _bbb .HTTPS {_egf .WriteRune ('s');};_egf .WriteString ("\u003a\u002f\u002f");_egf .WriteString (_bbb .Hostname );_egf .WriteRune (':');_egf .WriteString (_af .Itoa (_bbb .Port )); -if _bbb .Prefix !=""{_egf .WriteString (_bbb .Prefix );};return _egf .String ();}; +// ConvertHTML converts provided Query input into PDF file data. +// Implements creator.HTMLConverter interface. +func (_af *Client )ConvertHTML (ctx _e .Context ,q *Query )(*PDFResponse ,error ){if _db :=q .Validate ();_db !=nil {return nil ,_db ;};_ebc ,_bbf :=_af .getGenerateRequest (ctx ,q );if _bbf !=nil {return nil ,_bbf ;};_dga .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",_ebc .Method ,_ebc .URL .Hostname (),_ebc .URL .Path ,_ebc .Header ,_ebc .URL .Query ()); +_eba :=*_af .Client ;if q .TimeoutDuration !=0{_eba .Timeout =q .TimeoutDuration ;};_ff ,_bbf :=_eba .Do (_ebc );if _bbf !=nil {return nil ,_bbf ;};var _ffe error ;switch _ff .StatusCode {case _ad .StatusNotFound :_ffe =ErrNotFound ;case _ad .StatusBadRequest :_ffe =ErrBadRequest ; +case _ad .StatusNotImplemented :_ffe =ErrNotImplemented ;case _ad .StatusUnauthorized :_ffe =ErrUnauthorized ;case _ad .StatusRequestTimeout :_ffe =ErrTimedOut ;case _ad .StatusCreated :default:_ffe =ErrInternalError ;};_cf :=_ff .Body ;switch _ff .Header .Get ("\u0043\u006fn\u0074\u0065\u006et\u002d\u0045\u006e\u0063\u006f\u0064\u0069\u006e\u0067"){case "\u0067\u007a\u0069\u0070":_cf ,_bbf =_aa .NewReader (_ff .Body ); +if _bbf !=nil {return nil ,_bbf ;};case "\u0064e\u0066\u006c\u0061\u0074\u0065":_cf =_ag .NewReader (_ff .Body );case "":default:return nil ,_eg .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",_ff .Header .Get ("\u0043\u006fn\u0074\u0065\u006et\u002d\u0045\u006e\u0063\u006f\u0064\u0069\u006e\u0067")); +};_ab ,_bbf :=_d .ReadAll (_cf );if _bbf !=nil &&_ffe ==nil {return nil ,_eg .Errorf ("\u0055\u006e\u0069HT\u004d\u004c\u0020\u0073\u0065\u0072\u0076\u0065\u0072\u0020\u0065\u0072\u0072\u006f\u0072\u0020\u0025\u0073",_bbf );};_dga .Log .Trace ("\u005b\u0025\u0064]\u0020\u0025\u0073\u0020\u0025\u0073\u0025\u0073",_ff .StatusCode ,_ebc .Method ,_ebc .URL .Host ,_ebc .URL .Path ); +if _ffe !=nil {return nil ,_eg .Errorf ("\u0025\u0073\u0020%\u0077",string (_ab ),_ffe );};_eff :=_ff .Header .Get ("\u0058\u002d\u004a\u006f\u0062\u002d\u0049\u0044");_dga .Log .Trace ("\u0052\u0065\u0073\u0070\u006f\u006e\u0073\u0065\u0020I\u0044\u0020\u0025\u0073",_eff ); +return &PDFResponse {ID :_eff ,Data :_ab },nil ;}; -// BySelector is a structure that defines a selector with it's query 'by' type. -type BySelector struct{Selector string `json:"selector"`;By _bb .ByType `json:"by"`;}; +// Validate checks validity of the selector. +func (_ada BySelector )Validate ()error {if _ada .Selector ==""{return _ee .New ("\u0070\u0072\u006fvi\u0064\u0065\u0064\u0020\u0065\u006d\u0070\u0074\u0079\u0020\u0073\u0065\u006c\u0065\u0063\u0074\u006f\u0072");};if _bf :=_ada .By .Validate ();_bf !=nil {return _bf ; +};return nil ;}; -// WithDefaultTimeout sets the DefaultTimeout option for the client options. -func WithDefaultTimeout (option _b .Duration )Option {return func (_egd *Options ){_egd .DefaultTimeout =option };}; +// Portrait sets up the portrait page orientation. +func (_fa *QueryBuilder )Portrait ()*QueryBuilder {_fa ._gfa .PageParameters .Orientation =_dd .Portrait ;return _fa ;}; -// QueryBuilder is the query that converts HTMLConverter defined data -type QueryBuilder struct{_bea Query ;_ddg error ;};func (_aaa *Client )getGenerateRequest (_gba _d .Context ,_gg *Query )(*_da .Request ,error ){_ce :=generatePDFRequestV1 {Method :_gg .Method ,PageParameters :_gg .PageParameters ,RenderParameters :_gg .RenderParameters ,TimeoutDuration :int64 (_gg .TimeoutDuration )}; -switch _gg .Method {case "\u0077\u0065\u0062":_ce .ContentURL =_gg .URL ;case "\u0064\u0069\u0072","\u0068\u0074\u006d\u006c":_ce .ContentType =_gg .ContentType ;_ce .Content =_gg .Content ;};_gge :=new (_faf .Buffer );if _bee :=_e .NewEncoder (_gge ).Encode (&_ce ); -_bee !=nil {return nil ,_ed .Errorf ("e\u006e\u0063\u006f\u0064\u0069\u006eg\u0020\u0072\u0065\u0071\u0075\u0065\u0073\u0074\u0020f\u0061\u0069\u006ce\u0064:\u0020\u0025\u0076",_bee );};_beeb :=_aaa .Options .Addr ();_beeb =_ed .Sprintf ("\u0025s\u002f\u0076\u0031\u002f\u0070\u0064f",_beeb ); -_fad ,_ea :=_da .NewRequest ("\u0050\u004f\u0053\u0054",_beeb ,_gge );if _ea !=nil {return nil ,_ea ;};_fad .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"); -_fad .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"); -_fad =_fad .WithContext (_gba );return _fad ,nil ;}; +// PaperHeight sets up the PaperHeight (in cm) parameter for the query. +func (_cd *QueryBuilder )PaperHeight (paperHeight _dd .Length )*QueryBuilder {_cd ._gfa .PageParameters .PaperHeight =paperHeight ;return _cd ;};var (ErrNotFound =_ee .New ("\u006eo\u0074\u0020\u0066\u006f\u0075\u006ed");ErrBadRequest =_ee .New ("b\u0061\u0064\u0020\u0072\u0065\u0071\u0075\u0065\u0073\u0074"); +ErrNotImplemented =_ee .New ("\u006eo\u0074 \u0069\u006d\u0070\u006c\u0065\u006d\u0065\u006e\u0074\u0065\u0064");ErrInternalError =_ee .New ("i\u006e\u0074\u0065\u0072na\u006c \u0073\u0065\u0072\u0076\u0065r\u0020\u0065\u0072\u0072\u006f\u0072");ErrBadGateway =_ee .New ("b\u0061\u0064\u0020\u0067\u0061\u0074\u0065\u0077\u0061\u0079"); +ErrUnauthorized =_ee .New ("\u0075\u006e\u0061u\u0074\u0068\u006f\u0072\u0069\u007a\u0065\u0064");ErrTimedOut =_ee .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 _b .Duration ;}; +// Options are the client options used by the HTTP client. +type Options struct{HTTPS bool ;Hostname string ;Port int ;DefaultTimeout _eb .Duration ;Prefix string ;}; -// MarginRight sets up the MarginRight parameter for the query. -func (_aeag *QueryBuilder )MarginRight (marginRight _gc .Length )*QueryBuilder {_aeag ._bea .PageParameters .MarginRight =marginRight ;return _aeag ;}; +// Orientation sets the page orientation for the Query. +func (_abg *QueryBuilder )Orientation (orientation _dd .Orientation )*QueryBuilder {_abg ._gfa .PageParameters .Orientation =orientation ;return _abg ;}; -// Err gets the error which could occur in the query. -func (_bbbe *QueryBuilder )Err ()error {return _bbbe ._ddg }; +// BuildHTMLQuery creates a Query builder that is supposed to create valid +func BuildHTMLQuery ()*QueryBuilder {return &QueryBuilder {}}; -// 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 (_aba *QueryBuilder )Query ()(*Query ,error ){if _dfc :=_aba .Validate ();_dfc !=nil {return nil ,_dfc ;};return &_aba ._bea ,nil ;};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 provided Query is valid. +func (_ffa *Query )Validate ()error {switch _ffa .Method {case "\u0077\u0065\u0062":if _ffa .URL ==""{return ErrMissingData ;};case "\u0064\u0069\u0072","\u0068\u0074\u006d\u006c":if len (_ffa .Content )==0{return ErrMissingData ;};if _ffa .ContentType ==""{return ErrContentType ; +};default:return _eg .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",_ffa .Method );};if _cg :=_ffa .PageParameters .Validate (); +_cg !=nil {return _cg ;};if _bff :=_ffa .RenderParameters .Validate ();_bff !=nil {return _bff ;};return nil ;}; -// PageParameters are the query parameters used in the PDF generation. -type PageParameters struct{ +// New creates new client with provided options. +func New (o Options )*Client {o .DefaultTimeout =_eb .Second *30;if o .Port <=0{o .Port =8080;};if o .Hostname ==""{o .Hostname ="\u00312\u0037\u002e\u0030\u002e\u0030\u002e1";};var _ega =&_ad .Transport {DialContext :(&_gc .Dialer {Timeout :5*_eb .Second }).DialContext ,TLSHandshakeTimeout :5*_eb .Second }; +_dga .Log .Info ("\u0043l\u0069e\u006e\u0074\u0020\u0041\u0064\u0064\u0072\u003a\u0020\u0025\u0073",o .Addr ());return &Client {Options :o ,Client :&_ad .Client {Transport :_ega ,Timeout :o .DefaultTimeout }};}; -// PaperWidth sets the width of the paper. -PaperWidth _gc .Length `schema:"paper-width" json:"paperWidth"`; +// RenderParameters are the parameters related with the rendering. +type RenderParameters struct{WaitTime _eb .Duration `schema:"minimum-load-time" json:"waitTime"`;WaitReady []BySelector `json:"waitReady"`;WaitVisible []BySelector `json:"waitVisible"`;}; -// PaperHeight is the height of the output paper. -PaperHeight _gc .Length `schema:"paper-height" json:"paperHeight"`; +// PaperWidth sets up the PaperWidth (in cm) parameter for the query. +func (_bfg *QueryBuilder )PaperWidth (paperWidth _dd .Length )*QueryBuilder {_bfg ._gfa .PageParameters .PaperWidth =paperWidth ;return _bfg ;};var (ErrMissingData =_ee .New ("\u006di\u0073s\u0069\u006e\u0067\u0020\u0069n\u0070\u0075t\u0020\u0064\u0061\u0074\u0061"); +ErrContentType =_ee .New ("i\u006ev\u0061\u006c\u0069\u0064\u0020\u0063\u006f\u006et\u0065\u006e\u0074\u0020ty\u0070\u0065");ErrContentTypeDeclared =_ee .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"); +); -// PageSize is the page size string. -PageSize *_gc .PageSize `schema:"page-size" json:"pageSize"`; +// PageSize sets up the PageSize parameter for the query. +func (_afb *QueryBuilder )PageSize (pageSize _dd .PageSize )*QueryBuilder {if pageSize !=_dd .Undefined {_afb ._gfa .PageParameters .PageSize =&pageSize ;};return _afb ;}; -// Orientation defines if the output should be in a landscape format. -Orientation _gc .Orientation `schema:"orientation" json:"orientation"`; +// WithPort sets the Port option for the client options. +func WithPort (option int )Option {return func (_dc *Options ){_dc .Port =option }}; -// MarginTop sets up the Top Margin for the output. -MarginTop _gc .Length `schema:"margin-top" json:"marginTop"`; +// 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 _eb .Duration ;}; -// MarginBottom sets up the Bottom Margin for the output. -MarginBottom _gc .Length `schema:"margin-bottom" json:"marginBottom"`; +// WaitTime sets the minimum load time parameter for the page rendering. +func (_edf *QueryBuilder )WaitTime (d _eb .Duration )*QueryBuilder {_edf ._gfa .RenderParameters .WaitTime =d ;return _edf ;}; -// MarginLeft sets up the Left Margin for the output. -MarginLeft _gc .Length `schema:"margin-left" json:"marginLeft"`; +// WaitReady waits for the selector to get ready - 'loaded'. +func (_badc *QueryBuilder )WaitReady (selector string ,by _gf .ByType )*QueryBuilder {_badc ._gfa .RenderParameters .WaitReady =append (_badc ._gfa .RenderParameters .WaitReady ,BySelector {Selector :selector ,By :by });return _badc ;};func (_fd *Client )getGenerateRequest (_gb _e .Context ,_fe *Query )(*_ad .Request ,error ){_bdg :=generatePDFRequestV1 {Method :_fe .Method ,PageParameters :_fe .PageParameters ,RenderParameters :_fe .RenderParameters ,TimeoutDuration :int64 (_fe .TimeoutDuration )}; +switch _fe .Method {case "\u0077\u0065\u0062":_bdg .ContentURL =_fe .URL ;case "\u0064\u0069\u0072","\u0068\u0074\u006d\u006c":_bdg .ContentType =_fe .ContentType ;_bdg .Content =_fe .Content ;};_abe :=new (_b .Buffer );if _ce :=_g .NewEncoder (_abe ).Encode (&_bdg ); +_ce !=nil {return nil ,_eg .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 );};_beg :=_fd .Options .Addr ();_beg =_eg .Sprintf ("\u0025s\u002f\u0076\u0031\u002f\u0070\u0064f",_beg ); +_ca ,_bbg :=_ad .NewRequest ("\u0050\u004f\u0053\u0054",_beg ,_abe );if _bbg !=nil {return nil ,_bbg ;};_ca .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"); +_ca .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"); +_ca =_ca .WithContext (_gb );return _ca ,nil ;}; -// MarginRight sets up the Right Margin for the output. -MarginRight _gc .Length `schema:"margin-right" json:"marginRight"`;}; +// Validate checks if the parameters are valid. +func (_da *PageParameters )Validate ()error {if _da .PaperWidth !=nil {if _da .PaperWidth .Millimeters ()< 0{return _ee .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 _da .PaperHeight !=nil {if _da .PaperHeight .Millimeters ()< 0{return _ee .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 _da .MarginTop !=nil {if _da .MarginTop .Millimeters ()< 0{return _ee .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 _da .MarginBottom !=nil {if _da .MarginBottom .Millimeters ()< 0{return _ee .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 _da .MarginLeft !=nil {if _da .MarginLeft .Millimeters ()< 0{return _ee .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 _da .MarginRight !=nil {if _da .MarginRight .Millimeters ()< 0{return _ee .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 _da .PageSize !=nil &&!_da .PageSize .IsAPageSize (){return _ee .New ("\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0070\u0061\u0067\u0065 \u0073\u0069\u007a\u0065");};return nil ;}; -// MarginBottom sets up the MarginBottom parameter for the query. -func (_afd *QueryBuilder )MarginBottom (marginBottom _gc .Length )*QueryBuilder {_afd ._bea .PageParameters .MarginBottom =marginBottom ;return _afd ;}; +// QueryBuilder is the query that converts HTMLConverter defined data +type QueryBuilder struct{_gfa Query ;_ge error ;}; -// Validate checks if provided Query is valid. -func (_df *Query )Validate ()error {switch _df .Method {case "\u0077\u0065\u0062":if _df .URL ==""{return ErrMissingData ;};case "\u0064\u0069\u0072","\u0068\u0074\u006d\u006c":if len (_df .Content )==0{return ErrMissingData ;};if _df .ContentType ==""{return ErrContentType ; -};default:return _ed .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",_df .Method );};if _beg :=_df .PageParameters .Validate (); -_beg !=nil {return _beg ;};if _cc :=_df .RenderParameters .Validate ();_cc !=nil {return _cc ;};return nil ;};func (_bde *Client )setQueryValues (_cdc *_da .Request ,_bba *Query ){_db :=_cdc .URL .Query ();_eg :=_bba .PageParameters ;if _eg .PageSize !=nil {_db .Set ("\u0070a\u0067\u0065\u002d\u0073\u0069\u007ae",_eg .PageSize .String ()); -};if _eg .PaperHeight !=nil {_db .Set ("\u0070\u0061\u0070e\u0072\u002d\u0068\u0065\u0069\u0067\u0068\u0074",_eg .PaperHeight .String ());};if _eg .PaperWidth !=nil {_db .Set ("p\u0061\u0070\u0065\u0072\u002d\u0077\u0069\u0064\u0074\u0068",_eg .PaperWidth .String ()); -};if _eg .MarginTop !=nil {_db .Set ("\u006d\u0061\u0072\u0067\u0069\u006e\u002d\u0074\u006f\u0070",_eg .MarginTop .String ());};if _eg .MarginBottom !=nil {_db .Set ("\u006d\u0061\u0072\u0067\u0069\u006e\u002d\u0062\u006f\u0074\u0074\u006f\u006d",_eg .MarginBottom .String ()); -};if _eg .MarginRight !=nil {_db .Set ("\u006d\u0061\u0072g\u0069\u006e\u002d\u0072\u0069\u0067\u0068\u0074",_eg .MarginRight .String ());};if _eg .MarginLeft !=nil {_db .Set ("m\u0061\u0072\u0067\u0069\u006e\u002d\u006c\u0065\u0066\u0074",_eg .MarginLeft .String ()); -};if _eg .Orientation ==_gc .Landscape {_db .Set ("o\u0072\u0069\u0065\u006e\u0074\u0061\u0074\u0069\u006f\u006e",_eg .Orientation .String ());};if _bba .RenderParameters .WaitTime !=0{_db .Set ("\u006d\u0069\u006e\u0069\u006d\u0075\u006d\u002d\u006c\u006f\u0061\u0064-\u0074\u0069\u006d\u0065",_af .FormatInt (int64 (_bba .RenderParameters .WaitTime /_b .Millisecond ),10)); -};_cdc .URL .RawQuery =_db .Encode ();}; +// PDFResponse is the response used by the HTMLConverter. +type PDFResponse struct{ID string `json:"id"`;Data []byte `json:"data"`;}; -// Options are the client options used by the HTTP client. -type Options struct{HTTPS bool ;Hostname string ;Port int ;DefaultTimeout _b .Duration ;Prefix string ;}; +// ParseOptions parses options for the Client. +func ParseOptions (connectPath string )(Options ,error ){if !_dg .HasPrefix (connectPath ,"\u0068\u0074\u0074\u0070"){connectPath ="\u0068t\u0074\u0070\u003a\u002f\u002f"+connectPath ;};_f ,_gd :=_eee .Parse (connectPath );if _gd !=nil {return Options {},_eg .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 _gg int ;if _f .Port ()!=""{_gg ,_gd =_bb .Atoi (_f .Port ());if _gd !=nil {return Options {},_eg .Errorf ("\u0070\u0061\u0072si\u006e\u0067\u0020\u0070\u006f\u0072\u0074\u0020\u0066\u0061\u0069\u006c\u0065\u0064\u003a\u0020\u0025\u0077",_gd );}; +};return Options {Hostname :_f .Hostname (),Port :_gg ,HTTPS :_f .Scheme =="\u0068\u0074\u0074p\u0073",Prefix :_f .Path },nil ;}; -// MarginLeft sets up the MarginLeft parameter for the query. -func (_ac *QueryBuilder )MarginLeft (marginLeft _gc .Length )*QueryBuilder {_ac ._bea .PageParameters .MarginLeft =marginLeft ;return _ac ;};var (ErrMissingData =_dc .New ("\u006di\u0073s\u0069\u006e\u0067\u0020\u0069n\u0070\u0075t\u0020\u0064\u0061\u0074\u0061"); -ErrContentType =_dc .New ("i\u006ev\u0061\u006c\u0069\u0064\u0020\u0063\u006f\u006et\u0065\u006e\u0074\u0020ty\u0070\u0065");ErrContentTypeDeclared =_dc .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"); -); +// MarginTop sets up the MarginTop parameter for the query. +func (_bdb *QueryBuilder )MarginTop (marginTop _dd .Length )*QueryBuilder {_bdb ._gfa .PageParameters .MarginTop =marginTop ;return _bdb ;}; -// PaperHeight sets up the PaperHeight (in cm) parameter for the query. -func (_cda *QueryBuilder )PaperHeight (paperHeight _gc .Length )*QueryBuilder {_cda ._bea .PageParameters .PaperHeight =paperHeight ;return _cda ;}; +// MarginRight sets up the MarginRight parameter for the query. +func (_efc *QueryBuilder )MarginRight (marginRight _dd .Length )*QueryBuilder {_efc ._gfa .PageParameters .MarginRight =marginRight ;return _efc ;}; -// ConvertHTML converts provided Query input into PDF file data. -// Implements creator.HTMLConverter interface. -func (_ad *Client )ConvertHTML (ctx _d .Context ,q *Query )(*PDFResponse ,error ){if _be :=q .Validate ();_be !=nil {return nil ,_be ;};_fd ,_de :=_ad .getGenerateRequest (ctx ,q );if _de !=nil {return nil ,_de ;};_aa .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",_fd .Method ,_fd .URL .Hostname (),_fd .URL .Path ,_fd .Header ,_fd .URL .Query ()); -_gd :=*_ad .Client ;if q .TimeoutDuration !=0{_gd .Timeout =q .TimeoutDuration ;};_dd ,_de :=_gd .Do (_fd );if _de !=nil {return nil ,_de ;};var _afb error ;switch _dd .StatusCode {case _da .StatusNotFound :_afb =ErrNotFound ;case _da .StatusBadRequest :_afb =ErrBadRequest ; -case _da .StatusNotImplemented :_afb =ErrNotImplemented ;case _da .StatusUnauthorized :_afb =ErrUnauthorized ;case _da .StatusRequestTimeout :_afb =ErrTimedOut ;case _da .StatusCreated :default:_afb =ErrInternalError ;};_ab :=_dd .Body ;switch _dd .Header .Get ("\u0043\u006fn\u0074\u0065\u006et\u002d\u0045\u006e\u0063\u006f\u0064\u0069\u006e\u0067"){case "\u0067\u007a\u0069\u0070":_ab ,_de =_fa .NewReader (_dd .Body ); -if _de !=nil {return nil ,_de ;};case "\u0064e\u0066\u006c\u0061\u0074\u0065":_ab =_f .NewReader (_dd .Body );case "":default:return nil ,_ed .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",_dd .Header .Get ("\u0043\u006fn\u0074\u0065\u006et\u002d\u0045\u006e\u0063\u006f\u0064\u0069\u006e\u0067")); -};_feb ,_de :=_a .ReadAll (_ab );if _de !=nil &&_afb ==nil {return nil ,_ed .Errorf ("\u0055\u006e\u0069HT\u004d\u004c\u0020\u0073\u0065\u0072\u0076\u0065\u0072\u0020\u0065\u0072\u0072\u006f\u0072\u0020\u0025\u0073",_de );};_aa .Log .Trace ("\u005b\u0025\u0064]\u0020\u0025\u0073\u0020\u0025\u0073\u0025\u0073",_dd .StatusCode ,_fd .Method ,_fd .URL .Host ,_fd .URL .Path ); -if _afb !=nil {return nil ,_ed .Errorf ("\u0025\u0073\u0020%\u0077",string (_feb ),_afb );};_eea :=_dd .Header .Get ("\u0058\u002d\u004a\u006f\u0062\u002d\u0049\u0044");_aa .Log .Trace ("\u0052\u0065\u0073\u0070\u006f\u006e\u0073\u0065\u0020I\u0044\u0020\u0025\u0073",_eea ); -return &PDFResponse {ID :_eea ,Data :_feb },nil ;}; +// WithDefaultTimeout sets the DefaultTimeout option for the client options. +func WithDefaultTimeout (option _eb .Duration )Option {return func (_bad *Options ){_bad .DefaultTimeout =option };}; -// WaitReady waits for the selector to get ready - 'loaded'. -func (_dacf *QueryBuilder )WaitReady (selector string ,by _bb .ByType )*QueryBuilder {_dacf ._bea .RenderParameters .WaitReady =append (_dacf ._bea .RenderParameters .WaitReady ,BySelector {Selector :selector ,By :by });return _dacf ;}; +// WithHTTPS sets the TLS option for the client options. +func WithHTTPS (useHTTPS bool )Option {return func (_ggb *Options ){_ggb .HTTPS =useHTTPS }}; -// Portrait sets up the portrait page orientation. -func (_fff *QueryBuilder )Portrait ()*QueryBuilder {_fff ._bea .PageParameters .Orientation =_gc .Portrait ;return _fff ;}; +// Landscape sets up the landscape portrait orientation. +func (_de *QueryBuilder )Landscape ()*QueryBuilder {_de ._gfa .PageParameters .Orientation =_dd .Landscape ;return _de ;}; -// PageSize sets up the PageSize parameter for the query. -func (_ege *QueryBuilder )PageSize (pageSize _gc .PageSize )*QueryBuilder {if pageSize !=_gc .Undefined {_ege ._bea .PageParameters .PageSize =&pageSize ;};return _ege ;}; +// TimeoutDuration sets the server query duration timeout. +// Once the timeout is reached the server will return an error. +func (_aef *QueryBuilder )TimeoutDuration (d _eb .Duration )*QueryBuilder {_aef ._gfa .TimeoutDuration =d ;return _aef ;}; -// MarginTop sets up the MarginTop parameter for the query. -func (_ddd *QueryBuilder )MarginTop (marginTop _gc .Length )*QueryBuilder {_ddd ._bea .PageParameters .MarginTop =marginTop ;return _ddd ;}; +// Client is a structure that is a HTTP client for the unihtml server. +type Client struct{Options Options ;Client *_ad .Client ;}; -// HealthCheck connects to the server and check the health status of the server. -func (_cde *Client )HealthCheck (ctx _d .Context )error {_ffb :=_cde .Options .Addr ();_ffb =_ed .Sprintf ("\u0025s\u002f\u0068\u0065\u0061\u006c\u0074h",_ffb );_dg ,_fg :=_da .NewRequest ("\u0047\u0045\u0054",_ffb ,nil );if _fg !=nil {return _fg ;};_dg =_dg .WithContext (ctx ); -_gb ,_fg :=_cde .Client .Do (_dg );if _fg !=nil {return _fg ;};switch _gb .StatusCode {case _da .StatusOK :return nil ;case _da .StatusNotFound :return ErrNotFound ;case _da .StatusInternalServerError :return ErrInternalError ;case _da .StatusBadGateway :return ErrBadGateway ; -default:return ErrNotImplemented ;};}; +// Err gets the error which could occur in the query. +func (_adg *QueryBuilder )Err ()error {return _adg ._ge }; -// ParseOptions parses options for the Client. -func ParseOptions (connectPath string )(Options ,error ){if !_ff .HasPrefix (connectPath ,"\u0068\u0074\u0074\u0070"){connectPath ="\u0068t\u0074\u0070\u003a\u002f\u002f"+connectPath ;};_c ,_cd :=_bd .Parse (connectPath );if _cd !=nil {return Options {},_ed .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 _ee int ;if _c .Port ()!=""{_ee ,_cd =_af .Atoi (_c .Port ());if _cd !=nil {return Options {},_ed .Errorf ("\u0070\u0061\u0072si\u006e\u0067\u0020\u0070\u006f\u0072\u0074\u0020\u0066\u0061\u0069\u006c\u0065\u0064\u003a\u0020\u0025\u0077",_cd );}; -};return Options {Hostname :_c .Hostname (),Port :_ee ,HTTPS :_c .Scheme =="\u0068\u0074\u0074p\u0073",Prefix :_c .Path },nil ;}; \ No newline at end of file +// WithPrefix sets the client prefix. +func WithPrefix (prefix string )Option {return func (_aad *Options ){_aad .Prefix =prefix }}; \ No newline at end of file diff --git a/common/common.go b/common/common.go index 824c89f..f6ccc7c 100644 --- a/common/common.go +++ b/common/common.go @@ -10,8 +10,8 @@ // terms that can be accessed at https://unidoc.io/eula/ // Package common contains common properties used by the subpackages. -package common ;import _f "time";const Version ="\u0030\u002e\u0031\u0032\u002e\u0030";const _gd =20;const _b =12;const _c ="\u0032\u0020\u004aan\u0075\u0061\u0072\u0079\u0020\u0032\u0030\u0030\u0036\u0020\u0061\u0074\u0020\u0031\u0035\u003a\u0030\u0034"; -var ReleasedAt =_f .Date (_g ,_e ,_ab ,_b ,_gd ,0,0,_f .UTC ); +package common ;import _b "time";const _ee =12;const _f =5; // UtcTimeFormat returns a formatted string describing a UTC timestamp. -func UtcTimeFormat (t _f .Time )string {return t .Format (_c )+"\u0020\u0055\u0054\u0043"};const _g =2025;const _ab =12;const _e =5; \ No newline at end of file +func UtcTimeFormat (t _b .Time )string {return t .Format (_e )+"\u0020\u0055\u0054\u0043"};var ReleasedAt =_b .Date (_d ,_f ,_dg ,_ee ,_be ,0,0,_b .UTC );const _be =20;const _dg =26;const _e ="\u0032\u0020\u004aan\u0075\u0061\u0072\u0079\u0020\u0032\u0030\u0030\u0036\u0020\u0061\u0074\u0020\u0031\u0035\u003a\u0030\u0034"; +const Version ="\u0030\u002e\u0031\u0033\u002e\u0030";const _d =2025; \ No newline at end of file diff --git a/content/content.go b/content/content.go index 1c0d70b..a7b8caf 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 (_dc "archive/zip";_b "bytes";_e "fmt";_ga "net/url";_df "os";_g "strings";); - -// NewWebURL creates new Content webURL for provided input URL path. -func NewWebURL (path string )(Content ,error ){if _ ,_dcf :=_ga .Parse (path );_dcf !=nil {return nil ,_dcf ;};return &webURL {_cb :path },nil ;}; +package content ;import (_ea "archive/zip";_d "bytes";_fa "fmt";_ec "net/url";_fg "os";_f "strings";); // ContentType implements Content interface. -func (_dea *zipDirectory )ContentType ()string {return "\u0061p\u0070l\u0069\u0063\u0061\u0074\u0069\u006f\u006e\u002f\u007a\u0069\u0070";}; - -// Content is an interface used for putting the content into Client Query. -type Content interface{ContentType ()string ;Method ()string ;Data ()[]byte ;}; - -// Data implements Content interface. -func (_gef *StringContent )Data ()[]byte {return []byte (_gef ._ae )}; +func (_fe *webURL )ContentType ()string {return "\u0074\u0065\u0078\u0074\u002f\u0070\u006c\u0061\u0069\u006e";}; // ContentType implements Content interface. -func (_ac *StringContent )ContentType ()string {return "\u0074e\u0078\u0074\u002f\u0068\u0074\u006dl"}; +func (_cg *zipDirectory )ContentType ()string {return "\u0061p\u0070l\u0069\u0063\u0061\u0074\u0069\u006f\u006e\u002f\u007a\u0069\u0070";};type htmlFile struct{_c _d .Buffer }; -// Data implements Content interface. -func (_gd *webURL )Data ()[]byte {return []byte (_gd ._cb )}; +// Method implements Content interface. +func (_gce *StringContent )Method ()string {return "\u0068\u0074\u006d\u006c"}; -// Data implements Content interface. -func (_ca *htmlFile )Data ()[]byte {return _ca ._bc .Bytes ()};type htmlFile struct{_bc _b .Buffer };func (_bg *zipDirectory )zipPath (_gf ,_eg string )error {_bfa ,_bfdb :=_df .ReadDir (_gf );if _bfdb !=nil {return _e .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",_gf ,_bfdb ); -};_gfg :=&_g .Builder {};for _ ,_bcb :=range _bfa {_db ,_aa :=_bcb .Info ();if _aa !=nil {return _aa ;};_aaf ,_fge :=_bg .zipBasePaths (_db ,_gf ,_eg ,_bcb .IsDir (),_gfg );if _bcb .IsDir (){if _ge :=_bg .zipPath (_aaf ,_fge );_ge !=nil {return _ge ;}; -continue ;};_fb ,_aa :=_df .ReadFile (_aaf );if _aa !=nil {return _aa ;};_ebe ,_aa :=_bg ._a .Create (_fge );if _aa !=nil {return _aa ;};if _ ,_aa =_ebe .Write (_fb );_aa !=nil {return _aa ;};};return nil ;}; +// Method gets the web url query method. +func (_ff *webURL )Method ()string {return "\u0077\u0065\u0062"};type webURL struct{_ee string }; -// Data implements Content interface. -func (_ebf *zipDirectory )Data ()[]byte {return _ebf ._gae .Bytes ()}; +// NewWebURL creates new Content webURL for provided input URL path. +func NewWebURL (path string )(Content ,error ){if _ ,_dd :=_ec .Parse (path );_dd !=nil {return nil ,_dd ;};return &webURL {_ee :path },nil ;}; -// Method gets the web url query method. -func (_eb *webURL )Method ()string {return "\u0077\u0065\u0062"}; +// Content is an interface used for putting the content into Client Query. +type Content interface{ContentType ()string ;Method ()string ;Data ()[]byte ;}; -// StringContent implements Content interface for an HTML string. -type StringContent struct{_ae string }; +// ContentType implements Content interface. +func (_ca *htmlFile )ContentType ()string {return "\u0074e\u0078\u0074\u002f\u0068\u0074\u006dl"};func (_ge *zipDirectory )zipPath (_gd ,_gc string )error {_egf ,_gbg :=_fg .ReadDir (_gd );if _gbg !=nil {return _fa .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",_gd ,_gbg ); +};_dde :=&_f .Builder {};for _ ,_fc :=range _egf {_ae ,_bg :=_fc .Info ();if _bg !=nil {return _bg ;};_fb ,_ed :=_ge .zipBasePaths (_ae ,_gd ,_gc ,_fc .IsDir (),_dde );if _fc .IsDir (){if _bf :=_ge .zipPath (_fb ,_ed );_bf !=nil {return _bf ;};continue ; +};_dab ,_bg :=_fg .ReadFile (_fb );if _bg !=nil {return _bg ;};_fce ,_bg :=_ge ._gb .Create (_ed );if _bg !=nil {return _bg ;};if _ ,_bg =_fce .Write (_dab );_bg !=nil {return _bg ;};};return nil ;}; // 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 ){_bcc :=&zipDirectory {_gae :_b .Buffer {}};_bcc ._a =_dc .NewWriter (&_bcc ._gae );if _gac :=_bcc .zipPath (dirPath ,"");_gac !=nil {return nil ,_gac ;};if _ad :=_bcc ._a .Close ();_ad !=nil {return nil ,_ad ; -};return _bcc ,nil ;}; +func NewZipDirectory (dirPath string )(Content ,error ){_db :=&zipDirectory {_cb :_d .Buffer {}};_db ._gb =_ea .NewWriter (&_db ._cb );if _cag :=_db .zipPath (dirPath ,"");_cag !=nil {return nil ,_cag ;};if _de :=_db ._gb .Close ();_de !=nil {return nil ,_de ; +};return _db ,nil ;}; -// NewHTMLFile creates new Content htmFile for provided input path. -func NewHTMLFile (path string )(Content ,error ){_de ,_ea :=_df .Open (path );if _ea !=nil {return nil ,_ea ;};_bf :=&htmlFile {_bc :_b .Buffer {}};if _ ,_ea =_bf ._bc .ReadFrom (_de );_ea !=nil {return nil ,_ea ;};return _bf ,nil ;}; +// Data implements Content interface. +func (_b *htmlFile )Data ()[]byte {return _b ._c .Bytes ()}; + +// NewStringContent creates a new StringContent. +func NewStringContent (html string )(*StringContent ,error ){return &StringContent {_faa :html },nil }; // Method gets the query method. -func (_f *htmlFile )Method ()string {return "\u0068\u0074\u006d\u006c"};type zipDirectory struct{_gae _b .Buffer ;_a *_dc .Writer ;}; +func (_g *htmlFile )Method ()string {return "\u0068\u0074\u006d\u006c"}; -// ContentType implements Content interface. -func (_bfd *htmlFile )ContentType ()string {return "\u0074e\u0078\u0074\u002f\u0068\u0074\u006dl"};func (_fa *zipDirectory )zipBasePaths (_eaf _df .FileInfo ,_dfa ,_cc string ,_ce bool ,_be *_g .Builder )(string ,string ){_be .WriteString (_dfa );if !_g .HasSuffix (_dfa ,"\u002f"){_be .WriteRune ('/'); -};_be .WriteString (_eaf .Name ());if _ce {_be .WriteRune ('/');};_faa :=_be .String ();_be .Reset ();_be .WriteString (_cc );_be .WriteString (_eaf .Name ());if _ce {_be .WriteRune ('/');};_ag :=_be .String ();_be .Reset ();return _faa ,_ag ;};type webURL struct{_cb string }; +// StringContent implements Content interface for an HTML string. +type StringContent struct{_faa string };type zipDirectory struct{_cb _d .Buffer ;_gb *_ea .Writer ;};func (_cgc *zipDirectory )zipBasePaths (_fgf _fg .FileInfo ,_bfc ,_dc string ,_ac bool ,_cd *_f .Builder )(string ,string ){_cd .WriteString (_bfc );if !_f .HasSuffix (_bfc ,"\u002f"){_cd .WriteRune ('/'); +};_cd .WriteString (_fgf .Name ());if _ac {_cd .WriteRune ('/');};_ce :=_cd .String ();_cd .Reset ();_cd .WriteString (_dc );_cd .WriteString (_fgf .Name ());if _ac {_cd .WriteRune ('/');};_aec :=_cd .String ();_cd .Reset ();return _ce ,_aec ;}; +// Data implements Content interface. +func (_ag *webURL )Data ()[]byte {return []byte (_ag ._ee )}; // ContentType implements Content interface. -func (_dfb *webURL )ContentType ()string {return "\u0074\u0065\u0078\u0074\u002f\u0070\u006c\u0061\u0069\u006e";}; +func (_eb *StringContent )ContentType ()string {return "\u0074e\u0078\u0074\u002f\u0068\u0074\u006dl"}; -// NewStringContent creates a new StringContent. -func NewStringContent (html string )(*StringContent ,error ){return &StringContent {_ae :html },nil }; +// Method gets the zip directory method. +func (_eg *zipDirectory )Method ()string {return "\u0064\u0069\u0072"}; -// Method implements Content interface. -func (_bd *StringContent )Method ()string {return "\u0068\u0074\u006d\u006c"}; +// NewHTMLFile creates new Content htmFile for provided input path. +func NewHTMLFile (path string )(Content ,error ){_a ,_dg :=_fg .Open (path );if _dg !=nil {return nil ,_dg ;};_cf :=&htmlFile {_c :_d .Buffer {}};if _ ,_dg =_cf ._c .ReadFrom (_a );_dg !=nil {return nil ,_dg ;};return _cf ,nil ;}; -// Method gets the zip directory method. -func (_bb *zipDirectory )Method ()string {return "\u0064\u0069\u0072"}; \ No newline at end of file +// Data implements Content interface. +func (_abd *zipDirectory )Data ()[]byte {return _abd ._cb .Bytes ()}; + +// Data implements Content interface. +func (_fab *StringContent )Data ()[]byte {return []byte (_fab ._faa )}; \ No newline at end of file diff --git a/selector/selector.go b/selector/selector.go index d204a37..926a018 100644 --- a/selector/selector.go +++ b/selector/selector.go @@ -9,11 +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 _b "errors"; +package selector ;import _g "errors";const (ByUndefined ByType =iota ;ByID ;ByQueryAll ;ByQuery ;ByNodeID ;ByJSPath ;BySearch ;); // ByType is a 'By' selector type enumerator. type ByType uint ; // Validate checks validity of the ByType. -func (_g ByType )Validate ()error {if _g >=ByID &&_g <=BySearch {return nil ;};return _b .New ("\u0069\u006e\u0076\u0061li\u0064\u0020\u0062\u0079\u0020\u0073\u0065\u006c\u0065\u0063\u0074\u006f\u0072");};const (ByUndefined ByType =iota ;ByID ;ByQueryAll ; -ByQuery ;ByNodeID ;ByJSPath ;BySearch ;); \ No newline at end of file +func (_gf ByType )Validate ()error {if _gf >=ByID &&_gf <=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 fd0e090..af90983 100644 --- a/sizes/sizes.go +++ b/sizes/sizes.go @@ -12,190 +12,191 @@ // Package sizes defines basic types that determines the size units i.e. lengths. // // -package sizes ;import (_f "encoding/json";_ag "flag";_ae "fmt";_b "strconv";_e "strings";); +package sizes ;import (_f "encoding/json";_c "flag";_e "fmt";_d "strconv";_af "strings";); -// MarshalJSON implements json.Marshaler interface -func (_cda Millimeter )MarshalJSON ()([]byte ,error ){return _fda (_cda )};var (_ Length =Millimeter (0);); - -// Inches gets the inch value. Implements Length interface. -func (_da Inch )Inches ()Inch {return _da }; - -// Name implements viper.FlagValue interface. -func (_ecf Point )Name ()string {return "\u0070\u006f\u0069n\u0074"};const (Portrait =Orientation (false );Landscape =Orientation (true );); +// String implements fmt.Stringer interface. +func (_aed Millimeter )String ()string {_ba :=_af .Builder {};_ba .WriteString (_d .FormatFloat (float64 (_aed ),'f',1,64));_ba .WriteString ("\u006d\u006d");return _ba .String ();}; -// MarshalPageSize marshals the page size into string. -func MarshalPageSize (p PageSize )(string ,error ){_eag ,_db :=p .MarshalText ();if _db !=nil {return "",_db ;};return string (_eag ),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 ;); +// Set implements flag.Value interface. +func (_afe *Point )Set (s string )error {_ec ,_cb :=_d .ParseFloat (s ,64);if _cb !=nil {return _e .Errorf ("\u0069\u006e\u0076\u0061li\u0064\u0020\u0069\u006e\u0063\u0068\u0020\u0076\u0061\u006c\u0075\u0065\u003a\u0020%\u0077",_cb );};*_afe =Point (_ec ); +return nil ;}; // Type implements pflag.Value interface. -func (_ceg Orientation )Type ()string {return "o\u0072\u0069\u0065\u006e\u0074\u0061\u0074\u0069\u006f\u006e";}; +func (_cf Inch )Type ()string {return "\u0069\u006e\u0063\u0068"};var _bdc =[]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}; + +// Inch is a unit that +type Inch float64 ; // LengthFlag is a pflag wrapper for the Length value. -type LengthFlag struct{Length Length ;};const _cdaa ="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"; +type LengthFlag struct{Length Length ;};var _cdc =map[string ]PageSize {_bgc [0:9]:0,_bgc [9:11]:1,_bgc [11:13]:2,_bgc [13:15]:3,_bgc [15:17]:4,_bgc [17:19]:5,_bgc [19:21]:6,_bgc [21:23]:7,_bgc [23:25]:8,_bgc [25:27]:9,_bgc [27:29]:10,_bgc [29:32]:11,_bgc [32:34]:12,_bgc [34:36]:13,_bgc [36:38]:14,_bgc [38:40]:15,_bgc [40:42]:16,_bgc [42:44]:17,_bgc [44:46]:18,_bgc [46:48]:19,_bgc [48:50]:20,_bgc [50:52]:21,_bgc [52:55]:22,_bgc [55:61]:23}; // Millimeters gets the float64 millimeter value. -func (_dgc Millimeter )Millimeters ()Millimeter {return _dgc }; +func (_gg Millimeter )Millimeters ()Millimeter {return _gg }; // Name implements pflag.Value interface. -func (_be Inch )Name ()string {return "\u0069\u006e\u0063\u0068"}; - -// Set implements pflag.Value interface. -func (_fd *Inch )Set (s string )error {_fdf ,_aec :=_b .ParseFloat (s ,64);if _aec !=nil {return _ae .Errorf ("\u0069\u006e\u0076\u0061li\u0064\u0020\u0069\u006e\u0063\u0068\u0020\u0076\u0061\u006c\u0075\u0065\u003a\u0020%\u0077",_aec );};*_fd =Inch (_fdf ); -return nil ;}; +func (_gfa Inch )Name ()string {return "\u0069\u006e\u0063\u0068"}; -// String implements fmt.Stringer interface. -func (_ga Inch )String ()string {_df :=_e .Builder {};_df .WriteString (_b .FormatFloat (float64 (_ga ),'f',1,64));_df .WriteString ("\u0069\u006e");return _df .String ();}; - -// Length is it the default dimension unit. -type Length interface{Millimeters ()Millimeter ;Inches ()Inch ;Points ()Point ;String ()string ;}; +// Type implements pflag.Value interface. +func (_gfd Orientation )Type ()string {return "o\u0072\u0069\u0065\u006e\u0074\u0061\u0074\u0069\u006f\u006e";}; -// Millimeters converts the inches value to the millimeters. -func (_fde Inch )Millimeters ()Millimeter {return Millimeter (float64 (_fde )*_d )};var _ _ag .Value =(*Point )(nil ); +// Name implements viper.FlagValue interface. +func (_cd Point )Name ()string {return "\u0070\u006f\u0069n\u0074"}; -// Set implements flag.Value interface. -func (_cb *Point )Set (s string )error {_bb ,_gf :=_b .ParseFloat (s ,64);if _gf !=nil {return _ae .Errorf ("\u0069\u006e\u0076\u0061li\u0064\u0020\u0069\u006e\u0063\u0068\u0020\u0076\u0061\u006c\u0075\u0065\u003a\u0020%\u0077",_gf );};*_cb =Point (_bb ); -return nil ;};var _ _ag .Value =(*Orientation )(nil ); +// ValueString implements pflag.Value interface. +func (_gfg Inch )ValueString ()string {return _gfg .String ()}; -// Inch is a unit that -type Inch float64 ; +// Point is a unit of Length commonly used to measure the height of fonts. +type Point float64 ;const (_fe =float64 (1)/float64 (25.4);_da =25.4;_cc =0.0139;_fd =0.3528;_b =1.0/64;_ad =1.0/_fd ;); -// ValueType implements pflag.Value interface. -func (_ec Inch )ValueType ()string {return _ec .Type ()}; +// Millimeters converts the inches value to the millimeters. +func (_bg Point )Millimeters ()Millimeter {return Millimeter (float64 (_bg )*_fd )};var _ _c .Value =(*Point )(nil );func _dca (_fbc string )(Point ,error ){_fbc =_af .TrimSpace (_af .Trim (_fbc ,"\u0070\u0074"));_bf ,_ade :=_d .ParseFloat (_fbc ,64);if _ade !=nil {return 0,_ade ; +};return Point (_bf ),nil ;};var _cee =[...]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}; // Points implements Length interface. -func (_ge Millimeter )Points ()Point {return Point (_ge *_ab )}; +func (_dcc Inch )Points ()Point {return Point (float64 (_dcc )*_b )}; -// MarshalJSON implements json.Marshaler interface -func (_ea Inch )MarshalJSON ()([]byte ,error ){return _fda (_ea )}; +// HasChanged implements viper.FlagValue interface. +func (_gfb *Point )HasChanged ()bool {return _gfb !=nil }; -// Set implements flag.Value interface. -func (_baf *Orientation )Set (s string )error {switch s {case "\u0070\u006f\u0072\u0074\u0072\u0061\u0069\u0074":*_baf =Portrait ;case "\u006ca\u006e\u0064\u0073\u0063\u0061\u0070e":*_baf =Landscape ;default:return _ae .Errorf ("\u0069n\u0076\u0061\u006c\u0069d\u0020\u006f\u0072\u0069\u0065n\u0074a\u0074i\u006f\u006e\u003a\u0020\u0027\u0025\u0073'",s ); -};return nil ;}; +// String implements fmt.Stringer interface. +func (_aaf Orientation )String ()string {if _aaf ==Portrait {return "\u0070\u006f\u0072\u0074\u0072\u0061\u0069\u0074";};return "\u006ca\u006e\u0064\u0073\u0063\u0061\u0070e";}; -// String gets the string value for given flag. -func (_ba *LengthFlag )String ()string {if _ba .Length ==nil {return "\u0075n\u0064\u0065\u0066\u0069\u006e\u0065d";};return _ba .Length .String ();};func (_fba PageSize )String ()string {if _fba < 0||_fba >=PageSize (len (_ed )-1){return _ae .Sprintf ("\u0050\u0061\u0067e\u0053\u0069\u007a\u0065\u0028\u0025\u0064\u0029",_fba ); -};return _cdaa [_ed [_fba ]:_ed [_fba +1]];}; +// Set implements pflag.Value interface. +func (_dc *Inch )Set (s string )error {_bd ,_cg :=_d .ParseFloat (s ,64);if _cg !=nil {return _e .Errorf ("\u0069\u006e\u0076\u0061li\u0064\u0020\u0069\u006e\u0063\u0068\u0020\u0076\u0061\u006c\u0075\u0065\u003a\u0020%\u0077",_cg );};*_dc =Inch (_bd ); +return nil ;}; -// UnmarshalText implements the encoding.TextUnmarshaler interface for PageSize -func (_cdgg *PageSize )UnmarshalText (text []byte )error {var _cde error ;*_cdgg ,_cde =PageSizeString (string (text ));return _cde ;};var _gc =[]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}; +// Set implements pflag.Value interface. +func (_edc *PageSize )Set (s string )error {_adf ,_dgf :=UnmarshalPageSize (s );if _dgf !=nil {return _dgf ;};*_edc =_adf ;return nil ;};func _cac (_ed string )(Inch ,error ){_ed =_af .TrimSpace (_af .Trim (_ed ,"\u0069\u006e"));_ecg ,_add :=_d .ParseFloat (_ed ,64); +if _add !=nil {return 0,_e .Errorf ("\u0069\u006e\u0076\u0061li\u0064\u0020\u0069\u006e\u0063\u0068\u0020\u0076\u0061\u006c\u0075\u0065\u003a\u0020%\u0077",_add );};return Inch (_ecg ),nil ;};const (Portrait =Orientation (false );Landscape =Orientation (true ); +); -// Points implements Length interface. -func (_baa Inch )Points ()Point {return Point (float64 (_baa )*_c )}; +// ValueType implements viper.FlagValue interface. +func (_efc Point )ValueType ()string {return _efc .Type ()}; -// MarshalJSON implements json.Marshaler interface. -func (_dde Point )MarshalJSON ()([]byte ,error ){return _fda (_dde )}; +// Set sets the unit value. +// Implements pflag.Value interface. +func (_ddb *LengthFlag )Set (s string )error {if s =="\u0075n\u0064\u0065\u0066\u0069\u006e\u0065d"{_ddb .Length =nil ;return nil ;};_ae ,_g :=UnmarshalLength (s );if _g !=nil {return _g ;};_ddb .Length =_ae ;return nil ;}; -// ValueString implements pflag.Value interface. -func (_fed Inch )ValueString ()string {return _fed .String ()}; +// UnmarshalLength unmarshalls string value into Length. +func UnmarshalLength (length string )(Length ,error ){if _af .HasSuffix (length ,"\u006d\u006d"){return _bgb (length );};if _af .HasSuffix (length ,"\u0069\u006e"){return _cac (length );};if _af .HasSuffix (length ,"\u0070\u0074"){return _dca (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 );}; -// Set implements pflag.Value interface. -func (_ddf *PageSize )Set (s string )error {_dfag ,_eba :=UnmarshalPageSize (s );if _eba !=nil {return _eba ;};*_ddf =_dfag ;return nil ;}; +// Points implements Length interface. +func (_df Point )Points ()Point {return _df }; // Type implements pflag.Value interface. -func (_g *LengthFlag )Type ()string {return "\u0075\u006e\u0069\u0074"}; +func (_efd PageSize )Type ()string {return "\u0070a\u0067\u0065\u002d\u0073\u0069\u007ae"}; -// IsAPageSize returns "true" if the value is listed in the enum definition. "false" otherwise -func (_fdec PageSize )IsAPageSize ()bool {for _ ,_efa :=range _gc {if _fdec ==_efa {return true ;};};return false ;}; +// Length is it the default dimension unit. +type Length interface{Millimeters ()Millimeter ;Inches ()Inch ;Points ()Point ;String ()string ;}; + +// Millimeter is the dimension unit that defines a millimeter. +type Millimeter float64 ; // Inches gets the inch value. Implements Length interface. -func (_dd Point )Inches ()Inch {return Inch (float64 (_dd )*_eb )}; +func (_ea Point )Inches ()Inch {return Inch (float64 (_ea )*_cc )}; -// Type implements pflag.Value interface. -func (_dc Point )Type ()string {return "\u0070\u006f\u0069n\u0074"}; +// MarshalUnit marshals the unit into the string. +func MarshalUnit (unit Length )(string ,error ){switch _fed :=unit .(type ){case Millimeter :return _e .Sprintf ("\u0025\u002e\u0030\u0066\u006d\u006d",_fed ),nil ;case Inch :return _e .Sprintf ("\u0025\u002e\u0030\u0066\u0069\u006e",_fed ),nil ;case Point :return _e .Sprintf ("\u0025\u002e\u0030\u0066\u0070\u0074",_fed ),nil ; +default:return "",_e .Errorf ("i\u006e\u0076\u0061\u006cid\u0020u\u006e\u0069\u0074\u0020\u0074y\u0070\u0065\u003a\u0020\u0025\u0054",unit );};}; -// Points implements Length interface. -func (_bf Point )Points ()Point {return _bf }; +// MarshalJSON implements json.Marshaler interface +func (_gf Millimeter )MarshalJSON ()([]byte ,error ){return _bga (_gf )};func _bga (_gfc Length )([]byte ,error ){if _gfc ==nil {return nil ,nil ;};_bb ,_cca :=MarshalUnit (_gfc );if _cca !=nil {return nil ,_cca ;};return []byte ("\u0022"+_bb +"\u0022"),nil ; +}; -// UnmarshalJSON implements the json.Unmarshaler interface for PageSize -func (_ecfg *PageSize )UnmarshalJSON (data []byte )error {var _dga string ;if _cebf :=_f .Unmarshal (data ,&_dga );_cebf !=nil {return _ae .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 _adg error ;*_ecfg ,_adg =PageSizeString (_dga );return _adg ;}; +// Type implements pflag.Value interface. +func (_ef *LengthFlag )Type ()string {return "\u0075\u006e\u0069\u0074"}; // String implements fmt.Stringer interface. -func (_ee Point )String ()string {_dfc :=_e .Builder {};_dfc .WriteString (_b .FormatFloat (float64 (_ee ),'f',1,64));_dfc .WriteString ("\u0070\u0074");return _dfc .String ();}; +func (_ce Inch )String ()string {_db :=_af .Builder {};_db .WriteString (_d .FormatFloat (float64 (_ce ),'f',1,64));_db .WriteString ("\u0069\u006e");return _db .String ();}; -// Orientation is the page orientation type wrapper. -type Orientation bool ; +// ValueString implements viper.FlagValue interface. +func (_ag Point )ValueString ()string {return _ag .String ()}; -// ValueType implements viper.FlagValue interface. -func (_bg Point )ValueType ()string {return _bg .Type ()};var _ed =[...]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}; +// Dimensions gets the dimensions of the given page size. +// If provided page size is not valid than the function returns 0 values. +func (_cgb PageSize )Dimensions ()(_ccg ,_bc Millimeter ){switch _cgb {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 _ccg ,_bc ;}; -// PageSizeValues returns all values of the enum -func PageSizeValues ()[]PageSize {return _gc }; +// Points implements Length interface. +func (_gea Millimeter )Points ()Point {return Point (_gea *_ad )};var _ Length =Inch (0); + +// IsAPageSize returns "true" if the value is listed in the enum definition. "false" otherwise +func (_fa PageSize )IsAPageSize ()bool {for _ ,_gd :=range _bdc {if _fa ==_gd {return true ;};};return false ;}; // 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 _aecg ,_ede :=_ada [s ];_ede {return _aecg ,nil ;};return 0,_ae .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 PageSizeString (s string )(PageSize ,error ){if _ecga ,_bgad :=_cdc [s ];_bgad {return _ecga ,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 ); }; -// HasChanged implements viper.FlagValue interface. -func (_add *Point )HasChanged ()bool {return _add !=nil }; +// Inches gets the inch value. Implements Length interface. +func (_fgf Inch )Inches ()Inch {return _fgf }; // PageSize is the enum used for defining the page size. type PageSize int ; -// Dimensions gets the dimensions of the given page size. -// If provided page size is not valid than the function returns 0 values. -func (_cdg PageSize )Dimensions ()(_gfg ,_acd Millimeter ){switch _cdg {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 _gfg ,_acd ;}; +// HasChanged implements pflag.Value interface. +func (_fg *Inch )HasChanged ()bool {return _fg !=nil };const _bgc ="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"; -// Point is a unit of Length commonly used to measure the height of fonts. -type Point float64 ; -// Millimeter is the dimension unit that defines a millimeter. -type Millimeter float64 ;func _fda (_cc Length )([]byte ,error ){if _cc ==nil {return nil ,nil ;};_af ,_cbd :=MarshalUnit (_cc );if _cbd !=nil {return nil ,_cbd ;};return []byte ("\u0022"+_af +"\u0022"),nil ;}; +// PageSizeValues returns all values of the enum +func PageSizeValues ()[]PageSize {return _bdc };func _bgb (_dgd string )(Millimeter ,error ){_dgd =_af .TrimSpace (_af .TrimSuffix (_dgd ,"\u006d\u006d"));_fc ,_gfbc :=_d .ParseFloat (_dgd ,64);if _gfbc !=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",_gfbc ); +};return Millimeter (_fc ),nil ;}; -// String implements fmt.Stringer interface. -func (_fbg Millimeter )String ()string {_ad :=_e .Builder {};_ad .WriteString (_b .FormatFloat (float64 (_fbg ),'f',1,64));_ad .WriteString ("\u006d\u006d");return _ad .String ();};func _abc (_ef string )(Point ,error ){_ef =_e .TrimSpace (_e .Trim (_ef ,"\u0070\u0074")); -_gaf ,_bef :=_b .ParseFloat (_ef ,64);if _bef !=nil {return 0,_bef ;};return Point (_gaf ),nil ;}; +// Type implements pflag.Value interface. +func (_aec Point )Type ()string {return "\u0070\u006f\u0069n\u0074"}; -// MarshalJSON implements the json.Marshaler interface for PageSize -func (_ecd PageSize )MarshalJSON ()([]byte ,error ){return _f .Marshal (_ecd .String ())}; +// Inches gets the inches equivalent from provided millimeter value. +func (_ge Millimeter )Inches ()Inch {return Inch (float64 (_ge )*_fe )}; -// UnmarshalPageSize unmarshals the page size from the string. -func UnmarshalPageSize (pageSize string )(PageSize ,error ){var _efe PageSize ;if _bae :=(&_efe ).UnmarshalText ([]byte (pageSize ));_bae !=nil {return 0,_ae .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",_bae ); -};return _efe ,nil ;}; +// UnmarshalInch unmarshalls provided string into unit. +func UnmarshalInch (unit string )(Inch ,error ){if _af .HasSuffix (unit ,"\u006d\u006d"){_fb ,_dda :=_bgb (unit );if _dda !=nil {return 0,_dda ;};return _fb .Inches (),nil ;};if _af .HasSuffix (unit ,"\u0069\u006e"){return _cac (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 ); +}; -// MarshalText implements the encoding.TextMarshaler interface for PageSize -func (_ecfa PageSize )MarshalText ()([]byte ,error ){return []byte (_ecfa .String ()),nil };var _ Length =Inch (0); +// MarshalJSON implements json.Marshaler interface +func (_eb Inch )MarshalJSON ()([]byte ,error ){return _bga (_eb )}; -// Set sets the unit value. -// Implements pflag.Value interface. -func (_ce *LengthFlag )Set (s string )error {if s =="\u0075n\u0064\u0065\u0066\u0069\u006e\u0065d"{_ce .Length =nil ;return nil ;};_cd ,_dg :=UnmarshalLength (s );if _dg !=nil {return _dg ;};_ce .Length =_cd ;return nil ;}; +// MarshalJSON implements json.Marshaler interface. +func (_fge Point )MarshalJSON ()([]byte ,error ){return _bga (_fge )}; -// Type implements pflag.Value interface. -func (_aeg PageSize )Type ()string {return "\u0070a\u0067\u0065\u002d\u0073\u0069\u007ae"};const (_fb =float64 (1)/float64 (25.4);_d =25.4;_eb =0.0139;_bc =0.3528;_c =1.0/64;_ab =1.0/_bc ;); +// UnmarshalPageSize unmarshals the page size from the string. +func UnmarshalPageSize (pageSize string )(PageSize ,error ){var _cea PageSize ;if _dag :=(&_cea ).UnmarshalText ([]byte (pageSize ));_dag !=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",_dag ); +};return _cea ,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 ;);func (_ebg PageSize )String ()string {if _ebg < 0||_ebg >=PageSize (len (_cee )-1){return _e .Sprintf ("\u0050\u0061\u0067e\u0053\u0069\u007a\u0065\u0028\u0025\u0064\u0029",_ebg ); +};return _bgc [_cee [_ebg ]:_cee [_ebg +1]];}; -// UnmarshalLength unmarshalls string value into Length. -func UnmarshalLength (length string )(Length ,error ){if _e .HasSuffix (length ,"\u006d\u006d"){return _dda (length );};if _e .HasSuffix (length ,"\u0069\u006e"){return _gfa (length );};if _e .HasSuffix (length ,"\u0070\u0074"){return _abc (length );}; -return nil ,_ae .Errorf ("\u0069n\u0076\u0061\u006c\u0069\u0064\u0020\u006c\u0065\u006e\u0067\u0074h\u0020\u0069\u006e\u0070\u0075\u0074\u003a\u0020\u0025\u0073",length );}; +// Millimeters converts the inches value to the millimeters. +func (_gc Inch )Millimeters ()Millimeter {return Millimeter (float64 (_gc )*_da )}; -// Inches gets the inches equivalent from provided millimeter value. -func (_fe Millimeter )Inches ()Inch {return Inch (float64 (_fe )*_fb )};func _gfa (_eeb string )(Inch ,error ){_eeb =_e .TrimSpace (_e .Trim (_eeb ,"\u0069\u006e"));_dfa ,_ceb :=_b .ParseFloat (_eeb ,64);if _ceb !=nil {return 0,_ae .Errorf ("\u0069\u006e\u0076\u0061li\u0064\u0020\u0069\u006e\u0063\u0068\u0020\u0076\u0061\u006c\u0075\u0065\u003a\u0020%\u0077",_ceb ); -};return Inch (_dfa ),nil ;}; +// MarshalText implements the encoding.TextMarshaler interface for PageSize +func (_cfd PageSize )MarshalText ()([]byte ,error ){return []byte (_cfd .String ()),nil }; -// String implements fmt.Stringer interface. -func (_efd Orientation )String ()string {if _efd ==Portrait {return "\u0070\u006f\u0072\u0074\u0072\u0061\u0069\u0074";};return "\u006ca\u006e\u0064\u0073\u0063\u0061\u0070e";}; +// UnmarshalJSON implements the json.Unmarshaler interface for PageSize +func (_ede *PageSize )UnmarshalJSON (data []byte )error {var _bbc string ;if _ebe :=_f .Unmarshal (data ,&_bbc );_ebe !=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 _eg error ;*_ede ,_eg =PageSizeString (_bbc );return _eg ;}; -// Type implements pflag.Value interface. -func (_cg Inch )Type ()string {return "\u0069\u006e\u0063\u0068"}; +// Set implements flag.Value interface. +func (_dccc *Orientation )Set (s string )error {switch s {case "\u0070\u006f\u0072\u0074\u0072\u0061\u0069\u0074":*_dccc =Portrait ;case "\u006ca\u006e\u0064\u0073\u0063\u0061\u0070e":*_dccc =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 ;}; -// UnmarshalInch unmarshalls provided string into unit. -func UnmarshalInch (unit string )(Inch ,error ){if _e .HasSuffix (unit ,"\u006d\u006d"){_eae ,_ddb :=_dda (unit );if _ddb !=nil {return 0,_ddb ;};return _eae .Inches (),nil ;};if _e .HasSuffix (unit ,"\u0069\u006e"){return _gfa (unit );};return 0,_ae .Errorf ("\u0069\u006e\u0076\u0061li\u0064\u0020\u0069\u006e\u0063\u0068\u0020\u0069\u006e\u0070\u0075\u0074\u003a\u0020%\u0073",unit ); -}; +// MarshalJSON implements the json.Marshaler interface for PageSize +func (_fbf PageSize )MarshalJSON ()([]byte ,error ){return _f .Marshal (_fbf .String ())}; -// Millimeters converts the inches value to the millimeters. -func (_gb Point )Millimeters ()Millimeter {return Millimeter (float64 (_gb )*_bc )};func _dda (_dab string )(Millimeter ,error ){_dab =_e .TrimSpace (_e .TrimSuffix (_dab ,"\u006d\u006d"));_dae ,_ac :=_b .ParseFloat (_dab ,64);if _ac !=nil {return 0,_ae .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",_ac ); -};return Millimeter (_dae ),nil ;}; +// Orientation is the page orientation type wrapper. +type Orientation bool ; -// ValueString implements viper.FlagValue interface. -func (_dcd Point )ValueString ()string {return _dcd .String ()};var _ada =map[string ]PageSize {_cdaa [0:9]:0,_cdaa [9:11]:1,_cdaa [11:13]:2,_cdaa [13:15]:3,_cdaa [15:17]:4,_cdaa [17:19]:5,_cdaa [19:21]:6,_cdaa [21:23]:7,_cdaa [23:25]:8,_cdaa [25:27]:9,_cdaa [27:29]:10,_cdaa [29:32]:11,_cdaa [32:34]:12,_cdaa [34:36]:13,_cdaa [36:38]:14,_cdaa [38:40]:15,_cdaa [40:42]:16,_cdaa [42:44]:17,_cdaa [44:46]:18,_cdaa [46:48]:19,_cdaa [48:50]:20,_cdaa [50:52]:21,_cdaa [52:55]:22,_cdaa [55:61]:23}; +// UnmarshalText implements the encoding.TextUnmarshaler interface for PageSize +func (_cfe *PageSize )UnmarshalText (text []byte )error {var _ddf error ;*_cfe ,_ddf =PageSizeString (string (text ));return _ddf ;};var _ _c .Value =(*Orientation )(nil ); +// ValueType implements pflag.Value interface. +func (_ccf Inch )ValueType ()string {return _ccf .Type ()}; -// MarshalUnit marshals the unit into the string. -func MarshalUnit (unit Length )(string ,error ){switch _ff :=unit .(type ){case Millimeter :return _ae .Sprintf ("\u0025\u002e\u0030\u0066\u006d\u006d",_ff ),nil ;case Inch :return _ae .Sprintf ("\u0025\u002e\u0030\u0066\u0069\u006e",_ff ),nil ;case Point :return _ae .Sprintf ("\u0025\u002e\u0030\u0066\u0070\u0074",_ff ),nil ; -default:return "",_ae .Errorf ("i\u006e\u0076\u0061\u006cid\u0020u\u006e\u0069\u0074\u0020\u0074y\u0070\u0065\u003a\u0020\u0025\u0054",unit );};}; +// String implements fmt.Stringer interface. +func (_dg Point )String ()string {_fdd :=_af .Builder {};_fdd .WriteString (_d .FormatFloat (float64 (_dg ),'f',1,64));_fdd .WriteString ("\u0070\u0074");return _fdd .String ();}; -// HasChanged implements pflag.Value interface. -func (_agd *Inch )HasChanged ()bool {return _agd !=nil }; \ No newline at end of file +// String gets the string value for given flag. +func (_dd *LengthFlag )String ()string {if _dd .Length ==nil {return "\u0075n\u0064\u0065\u0066\u0069\u006e\u0065d";};return _dd .Length .String ();}; + +// MarshalPageSize marshals the page size into string. +func MarshalPageSize (p PageSize )(string ,error ){_cgbd ,_addf :=p .MarshalText ();if _addf !=nil {return "",_addf ;};return string (_cgbd ),nil ;};var (_ Length =Millimeter (0);); \ No newline at end of file diff --git a/unihtml.go b/unihtml.go index 613a3c2..83b756c 100644 --- a/unihtml.go +++ b/unihtml.go @@ -10,26 +10,32 @@ // terms that can be accessed at https://unidoc.io/eula/ // Package unihtml contains a plugin for the UniDoc. -package unihtml ;import (_bb "bytes";_f "context";_bd "errors";_g "fmt";_cge "github.com/unidoc/unihtml/client";_fb "github.com/unidoc/unihtml/content";_fd "github.com/unidoc/unihtml/selector";_e "github.com/unidoc/unihtml/sizes";_ef "github.com/unidoc/unipdf/v4/common"; -_bgb "github.com/unidoc/unipdf/v4/common/license";_ca "github.com/unidoc/unipdf/v4/creator";_fa "github.com/unidoc/unipdf/v4/model";_ed "github.com/unidoc/unipdf/v4/render";_bf "image";_cg "image/color";_da "math";_b "net/url";_c "os";_bg "time";);func _eae ()error {_cd :=_bgb .GetLicenseKey (); -if _cd ==nil {return _bd .New ("\u006e\u006f\u0020\u006cic\u0065\u006e\u0073\u0065\u0020\u0070\u0072\u006f\u0076\u0069\u0064\u0065\u0064");};if !_cd .IsLicensed (){return _bd .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"); +package unihtml ;import (_fc "bytes";_e "context";_bgd "errors";_ba "fmt";_c "github.com/unidoc/unihtml/client";_cf "github.com/unidoc/unihtml/content";_af "github.com/unidoc/unihtml/selector";_ed "github.com/unidoc/unihtml/sizes";_bab "github.com/unidoc/unipdf/v4/common"; +_ac "github.com/unidoc/unipdf/v4/common/license";_ff "github.com/unidoc/unipdf/v4/creator";_ag "github.com/unidoc/unipdf/v4/model";_bf "github.com/unidoc/unipdf/v4/render";_eb "image";_f "image/color";_d "math";_bg "net/url";_b "os";_a "time";);var ErrNoClient =_bgd .New ("\u0055n\u0069\u0048\u0054\u004d\u004c\u0020\u0063\u006c\u0069\u0065\u006et\u0020\u006e\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064"); + + +// ConnectOptions creates UniHTML HTTP Client and tries to establish connection with the server. +func ConnectOptions (o Options )error {_gf =_c .New (_c .Options {Hostname :o .Hostname ,Port :o .Port ,HTTPS :o .Secure });_ee ,_da :=_e .WithTimeout (_e .Background (),_a .Second *5);defer _da ();if _eg :=_gf .HealthCheck (_ee );_eg !=nil {return _eg ; };return nil ;}; -// Connect creates UniHTML HTTP Client and tries to establish connection with the server. -func Connect (path string )error {if _ec :=_eae ();_ec !=nil {return _ec ;};_fe ,_ba :=_cge .ParseOptions (path );if _ba !=nil {return _ba ;};_ff =_cge .New (_fe );_gd ,_ce :=_f .WithTimeout (_f .Background (),_bg .Second *5);defer _ce ();if _ea :=_ff .HealthCheck (_gd ); -_ea !=nil {return _ea ;};return nil ;}; +// WriteToFile writes the document to a file defined by the output path. +func (_gba *Document )WriteToFile (outputPath string )error {if _dbg :=_gba .validate ();_dbg !=nil {return _dbg ;};_cff :=_a .Second *20+_gba ._aff ;_dgg ,_afa :=_e .WithTimeout (_e .Background (),_cff );defer _afa ();_gad ,_aga :=_gba .extract (_dgg ,_gba ._gg ,_gba ._ab ,_gba .getMargins ()); +if _aga !=nil {return _aga ;};_acd :=_ff .New ();for _ ,_cgf :=range _gad {if _aga =_acd .AddPage (_cgf );_aga !=nil {return _aga ;};};return _acd .WriteToFile (outputPath );};func _gbe (_gfb _eb .Image )float64 {_fef :=_gfb .Bounds ();var (_bfe int ;_dag _f .Color ; +_cge ,_geb ,_eeb uint32 ;);_ada ,_agf :=_fef .Min .X ,_fef .Max .Y -1;_fcd :=_gfb .At (_ada ,_agf );_fg ,_cd ,_cgfe ,_ :=_fcd .RGBA ();_gec :=_fg ==_d .MaxUint16 &&_cd ==_d .MaxUint16 &&_cgfe ==_d .MaxUint16 ;for _agf =_fef .Max .Y -1;_agf >=_fef .Min .Y ; +_agf --{var _egg bool ;for _ada =_fef .Min .X ;_ada < _fef .Max .X ;_ada ++{_dag =_gfb .At (_ada ,_agf );_cge ,_geb ,_eeb ,_ =_dag .RGBA ();if (_gec &&!(_cge ==_fg &&_geb ==_cd &&_cgfe ==_eeb ))||(!_gec &&(_d .Abs (float64 (_cge )-float64 (_fg ))/float64 (_d .MaxUint16 )> 0.03||_d .Abs (float64 (_geb )-float64 (_cd ))/float64 (_d .MaxUint16 )> 0.03||_d .Abs (float64 (_eeb )-float64 (_cgfe ))/float64 (_d .MaxUint16 )> 0.03)){_egg =true ; +break ;};};if _egg {break ;};_bfe =_agf ;};return float64 (_fef .Max .Y -_bfe )/float64 (_fef .Max .Y );}; -// SetMarginRight sets the left margin. -func (_ebd *Document )SetMarginRight (margin _e .Length ){_ebd ._a .Right =margin }; +// SetMarkedContentID sets the marked content id for the document. +func (_fce *Document )SetMarkedContentID (id int64 )*_ag .KDict {return nil };var _ _ff .Drawable =(*Document )(nil ); -// GeneratePageBlocks implements creator.Drawable interface. -func (_bbg *Document )GeneratePageBlocks (ctx _ca .DrawContext )([]*_ca .Block ,_ca .DrawContext ,error ){if _ab :=_bbg .validate ();_ab !=nil {return nil ,ctx ,_ab ;};var _ee []*_ca .Block ;_gaf :=_bbg .getMargins ();_eaa ,_ffg :=_bbg ._cdd ,_bbg ._cf ; -if _bbg ._bfd .IsRelative (){_eaa ,_ffg =_e .Point (ctx .Width ),_e .Point (ctx .Height );ctx .X -=float64 (_gaf .Left .Points ());}else {ctx .X =_bbg ._ae ;ctx .Y =_bbg ._cgd ;};_ag ,_efe :=_bbg .extract (_f .Background (),_eaa ,_ffg ,_gaf );if _efe !=nil {return nil ,_ca .DrawContext {},_efe ; -};for _edg ,_cee :=range _ag {_faa ,_db :=_ca .NewBlockFromPage (_cee );if _db !=nil {return nil ,_ca .DrawContext {},_db ;};var _caf float64 ;if _bbg ._cddf &&_edg ==len (_ag )-1{_ggc :=_ed .NewImageDevice ();_cdg ,_gfa :=_ggc .Render (_cee );if _gfa !=nil {return nil ,_ca .DrawContext {},_gfa ; -};_gc ,_gfa :=_cee .GetMediaBox ();if _gfa !=nil {return nil ,_ca .DrawContext {},_gfa ;};_fef :=_bg .Now ();_gfae :=_eg (_cdg );_caf =_gc .Height ()*_gfae ;_ef .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",_bg .Since (_fef )); -if _bbg ._a .Bottom !=nil {_caf -=float64 (_bbg ._a .Bottom .Points ());};if _caf < 0{_caf =0;};_ef .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",_caf ); -};_af ,_abf ,_db :=_faa .GeneratePageBlocks (ctx );if _db !=nil {return nil ,_ca .DrawContext {},_db ;};ctx =_abf ;ctx .Y -=_caf ;if _edg !=len (_ag )-1&&ctx .Y > (ctx .PageHeight -ctx .Margins .Bottom )*.95{ctx .X =ctx .Margins .Left ;ctx .Y =ctx .Margins .Top ; -ctx .Page ++;};_ee =append (_ee ,_af ...);};return _ee ,ctx ,nil ;};func (_fad *Document )getTimeoutDuration ()_bg .Duration {if _fad ._ga !=nil {return *_fad ._ga ;};return 0;}; +// Connect creates UniHTML HTTP Client and tries to establish connection with the server. +func Connect (path string )error {if _ad :=_gb ();_ad !=nil {return _ad ;};_db ,_cg :=_c .ParseOptions (path );if _cg !=nil {return _cg ;};_gf =_c .New (_db );_ga ,_gfd :=_e .WithTimeout (_e .Background (),_a .Second *5);defer _gfd ();if _ebb :=_gf .HealthCheck (_ga ); +_ebb !=nil {return _ebb ;};return nil ;}; + +// NewDocument creates new HTML Document used as an input for the creator.Drawable. +func NewDocument (path string )(*Document ,error ){_ebe :=&Document {};_gae ,_df :=_bg .Parse (path );if _df !=nil {return nil ,_df ;};switch _gae .Scheme {case "\u0068\u0074\u0074\u0070","\u0068\u0074\u0074p\u0073":_ebe ._cc ,_df =_cf .NewWebURL (path ); +if _df !=nil {return nil ,_df ;};return _ebe ,nil ;};_dbe ,_df :=_b .Stat (path );if _df !=nil {return nil ,_df ;};if !_dbe .IsDir (){_ebe ._cc ,_df =_cf .NewHTMLFile (path );}else {_ebe ._cc ,_df =_cf .NewZipDirectory (path );};if _df !=nil {return nil ,_df ; +};return _ebe ,nil ;}; // Options are the HTML Client options used for establishing the connection. type Options struct{ @@ -44,93 +50,88 @@ Port int ; Secure bool ; // Prefix is an option setting used when the server is working with the URI prefix. Default Value: ''. -Prefix string ;}; +Prefix string ;};var _gf *_c .Client ; -// SetTimeoutDuration sets the timeout duration -// the default timeout is 15 seconds. -func (_cae *Document )SetTimeoutDuration (duration _bg .Duration ){_cae ._ga =&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 (_deag *Document )WaitReady (sel string ,by ..._af .ByType ){_bdc :=_af .BySearch ;if len (by )> 0{_bdc =by [0];};_deag ._ae =append (_deag ._ae ,_c .BySelector {Selector :sel ,By :_bdc });}; -// SetLandscapeOrientation sets document landscape page orientation. -func (_ebf *Document )SetLandscapeOrientation (){_ebf ._cfa =_e .Landscape }; +// SetMarginTop sets the left margin. +func (_gee *Document )SetMarginTop (margin _ed .Length ){_gee ._gcg .Top =margin }; -// ContainerComponent implements creator.containerElement interface. -func (_dcc *Document )ContainerComponent (container _ca .Drawable )(_ca .Drawable ,error ){switch container .(type ){case *_ca .Chapter :default:return nil ,_g .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 _dcc ,nil ;}; +// GetPdfPages is a function that converts provided input content and +func (_fe *Document )GetPdfPages (ctx _e .Context )([]*_ag .PdfPage ,error ){if _aee :=_fe .validate ();_aee !=nil {return nil ,_aee ;};return _fe .extract (ctx ,_fe ._gg ,_fe ._ab ,_fe .getMargins ());};type margins struct{Left ,Right ,Bottom ,Top _ed .Length ; +}; + +// TrimLastPageContent trims the last page content so that next creator blocks are located just at the end of given block. +func (_bb *Document )TrimLastPageContent (){_bb ._dd =true };func (_dbea *Document )validate ()error {if _gf ==nil {return ErrNoClient ;};if _dbea ._cc ==nil {return ErrContentNotDefined ;};return nil ;}; // GetContent returns the content of the document. -func (_fdb *Document )GetContent ()_fb .Content {return _fdb ._bag }; +func (_ggc *Document )GetContent ()_cf .Content {return _ggc ._cc }; -// NewDocumentFromString creates a new Document from the provided HTML string. -func NewDocumentFromString (html string )(*Document ,error ){_aef ,_cef :=_fb .NewStringContent (html );if _cef !=nil {return nil ,_cef ;};_eb :=&Document {};_eb ._bag =_aef ;return _eb ,nil ;};func (_eag *Document )getMargins ()margins {_dfa :=_eag ._a ; -if _eag ._bfd .IsRelative (){_dfa .Top =_e .Millimeter (1);_dfa .Left =_e .Millimeter (1);_dfa .Bottom =_e .Millimeter (1);_dfa .Right =_e .Millimeter (1);return _dfa ;};if _dfa .Top ==nil {_dfa .Top =_e .Millimeter (10);};if _dfa .Bottom ==nil {_dfa .Bottom =_e .Millimeter (10); -};if _dfa .Left ==nil {_dfa .Left =_e .Millimeter (10);};if _dfa .Right ==nil {_dfa .Right =_e .Millimeter (10);};return _dfa ;};var ErrNoClient =_bd .New ("\u0055n\u0069\u0048\u0054\u004d\u004c\u0020\u0063\u006c\u0069\u0065\u006et\u0020\u006e\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064"); +// SetPageSize sets the page default size. +func (_fdd *Document )SetPageSize (pageSize _ed .PageSize )error {if !pageSize .IsAPageSize (){return _bgd .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"); +};_fdd ._ccf =pageSize ;_fdd ._de =_ff .PositionAbsolute ;return nil ;}; +// SetPos sets the absolute position. Changes object positioning to absolute. +func (_ec *Document )SetPos (x ,y float64 ){_ec ._de =_ff .PositionAbsolute ;_ec ._def =x ;_ec ._fd =y }; -// SetPageHeight sets the page height for given document. -func (_cab *Document )SetPageHeight (pageHeight _e .Length )error {_cab ._cf =pageHeight ;_cab ._bfd =_ca .PositionAbsolute ;return nil ;}; +// SetTimeoutDuration sets the timeout duration +// the default timeout is 15 seconds. +func (_dfd *Document )SetTimeoutDuration (duration _a .Duration ){_dfd ._agd =&duration };func (_ffc *Document )getTimeoutDuration ()_a .Duration {if _ffc ._agd !=nil {return *_ffc ._agd ;};return 0;}; -// SetPageSize sets the page default size. -func (_bge *Document )SetPageSize (pageSize _e .PageSize )error {if !pageSize .IsAPageSize (){return _bd .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"); -};_bge ._eca =pageSize ;_bge ._bfd =_ca .PositionAbsolute ;return nil ;}; +// ContainerComponent implements creator.containerElement interface. +func (_gd *Document )ContainerComponent (container _ff .Drawable )(_ff .Drawable ,error ){switch container .(type ){case *_ff .Chapter :default:return nil ,_ba .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 _gd ,nil ;}; -// GetPdfPages is a function that converts provided input content and -func (_cb *Document )GetPdfPages (ctx _f .Context )([]*_fa .PdfPage ,error ){if _dad :=_cb .validate ();_dad !=nil {return nil ,_dad ;};return _cb .extract (ctx ,_cb ._cdd ,_cb ._cf ,_cb .getMargins ());};func (_afg *Document )extract (_aa _f .Context ,_dgg ,_bgd _e .Length ,_aefe margins )([]*_fa .PdfPage ,error ){_dd :=_cge .BuildHTMLQuery ().SetContent (_afg ._bag ).PageSize (_afg ._eca ).PaperWidth (_dgg ).PaperHeight (_bgd ).Orientation (_afg ._cfa ).MarginLeft (_aefe .Left ).MarginRight (_aefe .Right ).MarginTop (_aefe .Top ).MarginBottom (_aefe .Bottom ).TimeoutDuration (_afg .getTimeoutDuration ()).WaitTime (_afg ._bfb ); -for _ ,_efeb :=range _afg ._cga {_dd .WaitReady (_efeb .Selector ,_efeb .By );};for _ ,_cgac :=range _afg ._fg {_dd .WaitVisible (_cgac .Selector ,_cgac .By );};_fff ,_gac :=_dd .Query ();if _gac !=nil {return nil ,_gac ;};var _ffa _f .CancelFunc ;if _afg ._ga !=nil {_aa ,_ffa =_f .WithTimeout (_aa ,*_afg ._ga ); -}else {_aa ,_ffa =_f .WithTimeout (_aa ,_bg .Second *15);};defer _ffa ();_fae ,_gac :=_ff .ConvertHTML (_aa ,_fff );if _gac !=nil {return nil ,_gac ;};_ebe :=_bb .NewReader (_fae .Data );_cdcd ,_gac :=_fa .NewPdfReader (_ebe );if _gac !=nil {return nil ,_gac ; -};return _cdcd .PageList ,nil ;};var _ff *_cge .Client ;var ErrContentNotDefined =_bd .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"); -var _ _ca .Drawable =(*Document )(nil );type margins struct{Left ,Right ,Bottom ,Top _e .Length ;}; +// GeneratePageBlocks implements creator.Drawable interface. +func (_aa *Document )GeneratePageBlocks (ctx _ff .DrawContext )([]*_ff .Block ,_ff .DrawContext ,error ){if _ccd :=_aa .validate ();_ccd !=nil {return nil ,ctx ,_ccd ;};var _aec []*_ff .Block ;_ge :=_aa .getMargins ();_fda ,_ccc :=_aa ._gg ,_aa ._ab ;if _aa ._de .IsRelative (){_fda ,_ccc =_ed .Point (ctx .Width ),_ed .Point (ctx .Height ); +ctx .X -=float64 (_ge .Left .Points ());}else {ctx .X =_aa ._def ;ctx .Y =_aa ._fd ;};_cfa ,_gbb :=_aa .extract (_e .Background (),_fda ,_ccc ,_ge );if _gbb !=nil {return nil ,_ff .DrawContext {},_gbb ;};for _gff ,_fa :=range _cfa {_ccb ,_dg :=_ff .NewBlockFromPage (_fa ); +if _dg !=nil {return nil ,_ff .DrawContext {},_dg ;};var _ebf float64 ;if _aa ._dd &&_gff ==len (_cfa )-1{_aeb :=_bf .NewImageDevice ();_ea ,_ccdg :=_aeb .Render (_fa );if _ccdg !=nil {return nil ,_ff .DrawContext {},_ccdg ;};_ca ,_ccdg :=_fa .GetMediaBox (); +if _ccdg !=nil {return nil ,_ff .DrawContext {},_ccdg ;};_dde :=_a .Now ();_bba :=_gbe (_ea );_ebf =_ca .Height ()*_bba ;_bab .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",_a .Since (_dde )); +if _aa ._gcg .Bottom !=nil {_ebf -=float64 (_aa ._gcg .Bottom .Points ());};if _ebf < 0{_ebf =0;};_bab .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",_ebf ); +};_ega ,_gffa ,_dg :=_ccb .GeneratePageBlocks (ctx );if _dg !=nil {return nil ,_ff .DrawContext {},_dg ;};ctx =_gffa ;ctx .Y -=_ebf ;if _gff !=len (_cfa )-1&&ctx .Y > (ctx .PageHeight -ctx .Margins .Bottom )*.95{ctx .X =ctx .Margins .Left ;ctx .Y =ctx .Margins .Top ; +ctx .Page ++;};_aec =append (_aec ,_ega ...);};return _aec ,ctx ,nil ;}; // SetPageWidth sets the page width for given document. -func (_dfd *Document )SetPageWidth (pageWidth _e .Length )error {_dfd ._cdd =pageWidth ;_dfd ._bfd =_ca .PositionAbsolute ;return nil ;}; +func (_abf *Document )SetPageWidth (pageWidth _ed .Length )error {_abf ._gg =pageWidth ;_abf ._de =_ff .PositionAbsolute ;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 (_deb *Document )WaitVisible (sel string ,by ..._fd .ByType ){_cgg :=_fd .BySearch ;if len (by )> 0{_cgg =by [0];};_deb ._fg =append (_deb ._fg ,_cge .BySelector {Selector :sel ,By :_cgg });}; +// SetMarginBottom sets the left margin. +func (_ggg *Document )SetMarginBottom (margin _ed .Length ){_ggg ._gcg .Bottom =margin }; // Document is HTML document wrapper that is used for extracting and converting HTML document into PDF pages. -type Document struct{_bag _fb .Content ;_a margins ;_bfd _ca .Positioning ;_ae ,_cgd float64 ;_eca _e .PageSize ;_cdd ,_cf _e .Length ;_cfa _e .Orientation ;_cddf bool ;_bfb _bg .Duration ;_cga []_cge .BySelector ;_fg []_cge .BySelector ;_ga *_bg .Duration ; -};func (_gca *Document )validate ()error {if _ff ==nil {return ErrNoClient ;};if _gca ._bag ==nil {return ErrContentNotDefined ;};return nil ;}; +type Document struct{_cc _cf .Content ;_gcg margins ;_de _ff .Positioning ;_def ,_fd float64 ;_ccf _ed .PageSize ;_gg ,_ab _ed .Length ;_cfe _ed .Orientation ;_dd bool ;_aff _a .Duration ;_ae []_c .BySelector ;_ce []_c .BySelector ;_agd *_a .Duration ; +}; -// WaitTime sets the waiting time before the webpage is rendered to PDF. -func (_gbg *Document )WaitTime (duration _bg .Duration ){_gbg ._bfb =duration }; +// NewDocumentFromString creates a new Document from the provided HTML string. +func NewDocumentFromString (html string )(*Document ,error ){_bfd ,_bff :=_cf .NewStringContent (html );if _bff !=nil {return nil ,_bff ;};_aea :=&Document {};_aea ._cc =_bfd ;return _aea ,nil ;}; -// SetPos sets the absolute position. Changes object positioning to absolute. -func (_gbc *Document )SetPos (x ,y float64 ){_gbc ._bfd =_ca .PositionAbsolute ;_gbc ._ae =x ;_gbc ._cgd =y ;}; +// WaitTime sets the waiting time before the webpage is rendered to PDF. +func (_bc *Document )WaitTime (duration _a .Duration ){_bc ._aff =duration }; -// SetMarginLeft sets the left margin. -func (_bdg *Document )SetMarginLeft (margin _e .Length ){_bdg ._a .Left =margin }; +// SetMarginRight sets the left margin. +func (_gbaa *Document )SetMarginRight (margin _ed .Length ){_gbaa ._gcg .Right =margin };func (_geg *Document )extract (_ege _e .Context ,_gbbg ,_dba _ed .Length ,_dc margins )([]*_ag .PdfPage ,error ){_ebd :=_c .BuildHTMLQuery ().SetContent (_geg ._cc ).PageSize (_geg ._ccf ).PaperWidth (_gbbg ).PaperHeight (_dba ).Orientation (_geg ._cfe ).MarginLeft (_dc .Left ).MarginRight (_dc .Right ).MarginTop (_dc .Top ).MarginBottom (_dc .Bottom ).TimeoutDuration (_geg .getTimeoutDuration ()).WaitTime (_geg ._aff ); +for _ ,_cffc :=range _geg ._ae {_ebd .WaitReady (_cffc .Selector ,_cffc .By );};for _ ,_bda :=range _geg ._ce {_ebd .WaitVisible (_bda .Selector ,_bda .By );};_cb ,_gfe :=_ebd .Query ();if _gfe !=nil {return nil ,_gfe ;};var _caf _e .CancelFunc ;if _geg ._agd !=nil {_ege ,_caf =_e .WithTimeout (_ege ,*_geg ._agd ); +}else {_ege ,_caf =_e .WithTimeout (_ege ,_a .Second *15);};defer _caf ();_ggf ,_gfe :=_gf .ConvertHTML (_ege ,_cb );if _gfe !=nil {return nil ,_gfe ;};_ccbc :=_fc .NewReader (_ggf .Data );_bad ,_gfe :=_ag .NewPdfReader (_ccbc );if _gfe !=nil {return nil ,_gfe ; +};return _bad .PageList ,nil ;}; -// SetMarkedContentID sets the marked content id for the document. -func (_bba *Document )SetMarkedContentID (id int64 )*_fa .KDict {return nil }; +// SetLandscapeOrientation sets document landscape page orientation. +func (_be *Document )SetLandscapeOrientation (){_be ._cfe =_ed .Landscape }; -// WaitReady waits for the provided selector to be ready. +// 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 (_ebfa *Document )WaitReady (sel string ,by ..._fd .ByType ){_bfe :=_fd .BySearch ;if len (by )> 0{_bfe =by [0];};_ebfa ._cga =append (_ebfa ._cga ,_cge .BySelector {Selector :sel ,By :_bfe });}; - -// SetMarginTop sets the left margin. -func (_face *Document )SetMarginTop (margin _e .Length ){_face ._a .Top =margin }; - -// SetMarginBottom sets the left margin. -func (_dg *Document )SetMarginBottom (margin _e .Length ){_dg ._a .Bottom =margin };func _eg (_bca _bf .Image )float64 {_efa :=_bca .Bounds ();var (_dadf int ;_geb _cg .Color ;_faf ,_agc ,_dc uint32 ;);_gb ,_cc :=_efa .Min .X ,_efa .Max .Y -1;_dfb :=_bca .At (_gb ,_cc ); -_gdb ,_gfc ,_cdc ,_ :=_dfb .RGBA ();_ad :=_gdb ==_da .MaxUint16 &&_gfc ==_da .MaxUint16 &&_cdc ==_da .MaxUint16 ;for _cc =_efa .Max .Y -1;_cc >=_efa .Min .Y ;_cc --{var _gad bool ;for _gb =_efa .Min .X ;_gb < _efa .Max .X ;_gb ++{_geb =_bca .At (_gb ,_cc ); -_faf ,_agc ,_dc ,_ =_geb .RGBA ();if (_ad &&!(_faf ==_gdb &&_agc ==_gfc &&_cdc ==_dc ))||(!_ad &&(_da .Abs (float64 (_faf )-float64 (_gdb ))/float64 (_da .MaxUint16 )> 0.03||_da .Abs (float64 (_agc )-float64 (_gfc ))/float64 (_da .MaxUint16 )> 0.03||_da .Abs (float64 (_dc )-float64 (_cdc ))/float64 (_da .MaxUint16 )> 0.03)){_gad =true ; -break ;};};if _gad {break ;};_dadf =_cc ;};return float64 (_efa .Max .Y -_dadf )/float64 (_efa .Max .Y );}; - -// TrimLastPageContent trims the last page content so that next creator blocks are located just at the end of given block. -func (_gg *Document )TrimLastPageContent (){_gg ._cddf =true }; - -// WriteToFile writes the document to a file defined by the output path. -func (_bfc *Document )WriteToFile (outputPath string )error {if _bc :=_bfc .validate ();_bc !=nil {return _bc ;};_cfe :=_bg .Second *20+_bfc ._bfb ;_ged ,_gce :=_f .WithTimeout (_f .Background (),_cfe );defer _gce ();_de ,_df :=_bfc .extract (_ged ,_bfc ._cdd ,_bfc ._cf ,_bfc .getMargins ()); -if _df !=nil {return _df ;};_fac :=_ca .New ();for _ ,_baag :=range _de {if _df =_fac .AddPage (_baag );_df !=nil {return _df ;};};return _fac .WriteToFile (outputPath );}; - -// ConnectOptions creates UniHTML HTTP Client and tries to establish connection with the server. -func ConnectOptions (o Options )error {_ff =_cge .New (_cge .Options {Hostname :o .Hostname ,Port :o .Port ,HTTPS :o .Secure });_baa ,_bdd :=_f .WithTimeout (_f .Background (),_bg .Second *5);defer _bdd ();if _ecd :=_ff .HealthCheck (_baa );_ecd !=nil {return _ecd ; +func (_fdg *Document )WaitVisible (sel string ,by ..._af .ByType ){_eag :=_af .BySearch ;if len (by )> 0{_eag =by [0];};_fdg ._ce =append (_fdg ._ce ,_c .BySelector {Selector :sel ,By :_eag });};var ErrContentNotDefined =_bgd .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 _gb ()error {_ef :=_ac .GetLicenseKey ();if _ef ==nil {return _bgd .New ("\u006e\u006f\u0020\u006cic\u0065\u006e\u0073\u0065\u0020\u0070\u0072\u006f\u0076\u0069\u0064\u0065\u0064");};if !_ef .IsLicensed (){return _bgd .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 (_fga *Document )SetMarginLeft (margin _ed .Length ){_fga ._gcg .Left =margin };func (_gadg *Document )getMargins ()margins {_cda :=_gadg ._gcg ;if _gadg ._de .IsRelative (){_cda .Top =_ed .Millimeter (1);_cda .Left =_ed .Millimeter (1);_cda .Bottom =_ed .Millimeter (1); +_cda .Right =_ed .Millimeter (1);return _cda ;};if _cda .Top ==nil {_cda .Top =_ed .Millimeter (10);};if _cda .Bottom ==nil {_cda .Bottom =_ed .Millimeter (10);};if _cda .Left ==nil {_cda .Left =_ed .Millimeter (10);};if _cda .Right ==nil {_cda .Right =_ed .Millimeter (10); +};return _cda ;}; + // SetMargins sets the Document Margins. -func (_caa *Document )SetMargins (left ,right ,top ,bottom float64 ){_caa ._a .Left =_e .Point (left );_caa ._a .Right =_e .Point (right );_caa ._a .Top =_e .Point (top );_caa ._a .Bottom =_e .Point (bottom );_caa ._bfd =_ca .PositionAbsolute ;}; +func (_age *Document )SetMargins (left ,right ,top ,bottom float64 ){_age ._gcg .Left =_ed .Point (left );_age ._gcg .Right =_ed .Point (right );_age ._gcg .Top =_ed .Point (top );_age ._gcg .Bottom =_ed .Point (bottom );_age ._de =_ff .PositionAbsolute ; +}; -// NewDocument creates new HTML Document used as an input for the creator.Drawable. -func NewDocument (path string )(*Document ,error ){_ge :=&Document {};_gf ,_fbg :=_b .Parse (path );if _fbg !=nil {return nil ,_fbg ;};switch _gf .Scheme {case "\u0068\u0074\u0074\u0070","\u0068\u0074\u0074p\u0073":_ge ._bag ,_fbg =_fb .NewWebURL (path ); -if _fbg !=nil {return nil ,_fbg ;};return _ge ,nil ;};_be ,_fbg :=_c .Stat (path );if _fbg !=nil {return nil ,_fbg ;};if !_be .IsDir (){_ge ._bag ,_fbg =_fb .NewHTMLFile (path );}else {_ge ._bag ,_fbg =_fb .NewZipDirectory (path );};if _fbg !=nil {return nil ,_fbg ; -};return _ge ,nil ;}; \ No newline at end of file +// SetPageHeight sets the page height for given document. +func (_bd *Document )SetPageHeight (pageHeight _ed .Length )error {_bd ._ab =pageHeight ;_bd ._de =_ff .PositionAbsolute ;return nil ;}; \ No newline at end of file