mirror of
https://github.com/gotenberg/gotenberg.git
synced 2026-08-17 04:32:15 +01:00
adding form field web fonts timeout
This commit is contained in:
@@ -47,5 +47,10 @@ func convertHTML(c echo.Context) error {
|
||||
return hijackErr(err, r)
|
||||
}
|
||||
p.Landscape = landscape
|
||||
chromeWebFontsTimeout, err := r.webFontsTimeout()
|
||||
if err != nil {
|
||||
return hijackErr(err, r)
|
||||
}
|
||||
p.WebFontsTimeout = chromeWebFontsTimeout
|
||||
return print(c, p, r)
|
||||
}
|
||||
|
||||
@@ -46,5 +46,10 @@ func convertMarkdown(c echo.Context) error {
|
||||
return hijackErr(err, r)
|
||||
}
|
||||
p.Landscape = landscape
|
||||
chromeWebFontsTimeout, err := r.webFontsTimeout()
|
||||
if err != nil {
|
||||
return hijackErr(err, r)
|
||||
}
|
||||
p.WebFontsTimeout = chromeWebFontsTimeout
|
||||
return print(c, p, r)
|
||||
}
|
||||
|
||||
@@ -13,15 +13,16 @@ import (
|
||||
)
|
||||
|
||||
const (
|
||||
remoteURL string = "remoteURL"
|
||||
webhookURL string = "webhookURL"
|
||||
paperWidth string = "paperWidth"
|
||||
paperHeight string = "paperHeight"
|
||||
marginTop string = "marginTop"
|
||||
marginBottom string = "marginBottom"
|
||||
marginLeft string = "marginLeft"
|
||||
marginRight string = "marginRight"
|
||||
landscape string = "landscape"
|
||||
remoteURL string = "remoteURL"
|
||||
webhookURL string = "webhookURL"
|
||||
paperWidth string = "paperWidth"
|
||||
paperHeight string = "paperHeight"
|
||||
marginTop string = "marginTop"
|
||||
marginBottom string = "marginBottom"
|
||||
marginLeft string = "marginLeft"
|
||||
marginRight string = "marginRight"
|
||||
landscape string = "landscape"
|
||||
webFontsTimeout string = "webFontsTimeout"
|
||||
)
|
||||
|
||||
// resource facilitates storing and accessing
|
||||
@@ -42,6 +43,7 @@ func newResource(c echo.Context) (*resource, error) {
|
||||
v[marginLeft] = c.FormValue(marginLeft)
|
||||
v[marginRight] = c.FormValue(marginRight)
|
||||
v[landscape] = c.FormValue(landscape)
|
||||
v[webFontsTimeout] = c.FormValue(webFontsTimeout)
|
||||
dirPath, err := rand.Get()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@@ -190,5 +192,17 @@ func (r *resource) remoteURL() (string, error) {
|
||||
return r.values[remoteURL], nil
|
||||
}
|
||||
|
||||
func (r *resource) webFontsTimeout() (int64, error) {
|
||||
webFontsTimeoutStr := r.values[webFontsTimeout]
|
||||
if webFontsTimeoutStr == "" {
|
||||
return 500, nil
|
||||
}
|
||||
timeout, err := strconv.ParseInt(webFontsTimeoutStr, 10, 64)
|
||||
if err != nil {
|
||||
return 500, fmt.Errorf("web fonts timeout: %v", err)
|
||||
}
|
||||
return timeout, nil
|
||||
}
|
||||
|
||||
func (r *resource) webhookURL() string { return r.values[webhookURL] }
|
||||
func (r *resource) removeAll() error { return os.RemoveAll(r.dirPath) }
|
||||
|
||||
@@ -47,5 +47,10 @@ func convertURL(c echo.Context) error {
|
||||
return hijackErr(err, r)
|
||||
}
|
||||
p.Landscape = landscape
|
||||
chromeWebFontsTimeout, err := r.webFontsTimeout()
|
||||
if err != nil {
|
||||
return hijackErr(err, r)
|
||||
}
|
||||
p.WebFontsTimeout = chromeWebFontsTimeout
|
||||
return print(c, p, r)
|
||||
}
|
||||
|
||||
@@ -18,17 +18,18 @@ import (
|
||||
|
||||
// HTML facilitates HTML to PDF conversion.
|
||||
type HTML struct {
|
||||
Context context.Context
|
||||
URL string
|
||||
HeaderHTML string
|
||||
FooterHTML string
|
||||
PaperWidth float64
|
||||
PaperHeight float64
|
||||
MarginTop float64
|
||||
MarginBottom float64
|
||||
MarginLeft float64
|
||||
MarginRight float64
|
||||
Landscape bool
|
||||
Context context.Context
|
||||
URL string
|
||||
HeaderHTML string
|
||||
FooterHTML string
|
||||
PaperWidth float64
|
||||
PaperHeight float64
|
||||
MarginTop float64
|
||||
MarginBottom float64
|
||||
MarginLeft float64
|
||||
MarginRight float64
|
||||
Landscape bool
|
||||
WebFontsTimeout int64
|
||||
}
|
||||
|
||||
const defaultHeaderFooterHTML string = "<html><head></head><body></body></html>"
|
||||
@@ -103,12 +104,12 @@ func (html *HTML) Print(destination string) error {
|
||||
return fmt.Errorf("waiting for page loading: %v", err)
|
||||
}
|
||||
// inject a script to make sure web fonts are loaded.
|
||||
script := `new Promise((resolve, reject) => {
|
||||
script := fmt.Sprintf(`new Promise((resolve, reject) => {
|
||||
document.fonts.ready.then(function () {
|
||||
resolve('fonts loaded');
|
||||
});
|
||||
setTimeout(resolve.bind(resolve, 'timeout'), 500);
|
||||
});`
|
||||
setTimeout(resolve.bind(resolve, 'timeout'), %d);
|
||||
});`, html.WebFontsTimeout)
|
||||
scriptArg := runtime.NewEvaluateArgs(script).SetAwaitPromise(true)
|
||||
returnObj, _ := c.Runtime.Evaluate(html.Context, scriptArg)
|
||||
if returnObj.ExceptionDetails != nil {
|
||||
|
||||
@@ -15,17 +15,18 @@ import (
|
||||
|
||||
// Markdown facilitates Markdown to PDF conversion.
|
||||
type Markdown struct {
|
||||
Context context.Context
|
||||
TemplatePath string
|
||||
HeaderHTML string
|
||||
FooterHTML string
|
||||
PaperWidth float64
|
||||
PaperHeight float64
|
||||
MarginTop float64
|
||||
MarginBottom float64
|
||||
MarginLeft float64
|
||||
MarginRight float64
|
||||
Landscape bool
|
||||
Context context.Context
|
||||
TemplatePath string
|
||||
HeaderHTML string
|
||||
FooterHTML string
|
||||
PaperWidth float64
|
||||
PaperHeight float64
|
||||
MarginTop float64
|
||||
MarginBottom float64
|
||||
MarginLeft float64
|
||||
MarginRight float64
|
||||
Landscape bool
|
||||
WebFontsTimeout int64
|
||||
|
||||
html *HTML
|
||||
}
|
||||
@@ -52,6 +53,7 @@ func (md *Markdown) Print(destination string) error {
|
||||
md.html.MarginLeft = md.MarginLeft
|
||||
md.html.MarginRight = md.MarginRight
|
||||
md.html.Landscape = md.Landscape
|
||||
md.html.WebFontsTimeout = md.WebFontsTimeout
|
||||
tmpl, err := template.
|
||||
New(filepath.Base(md.TemplatePath)).
|
||||
Funcs(template.FuncMap{"toHTML": toHTML}).
|
||||
|
||||
Reference in New Issue
Block a user