From 79f396f6ffb37d1809b0e95065b61d1d34be5832 Mon Sep 17 00:00:00 2001 From: Tam Nguyen Date: Mon, 18 Nov 2024 15:03:39 +1100 Subject: [PATCH] feat(chromium): add GenerateDocumentOutline option --- pkg/modules/chromium/chromium.go | 35 ++++++++++++++++++-------------- pkg/modules/chromium/routes.go | 35 +++++++++++++++++--------------- pkg/modules/chromium/tasks.go | 1 + 3 files changed, 40 insertions(+), 31 deletions(-) diff --git a/pkg/modules/chromium/chromium.go b/pkg/modules/chromium/chromium.go index 08f3c64e..b31c5e70 100644 --- a/pkg/modules/chromium/chromium.go +++ b/pkg/modules/chromium/chromium.go @@ -213,26 +213,31 @@ type PdfOptions struct { // PreferCssPageSize defines whether to prefer page size as defined by CSS. // If false, the content will be scaled to fit the paper size. PreferCssPageSize bool + + // GenerateDocumentOutline defines whether the document outline should be + // embedded into the PDF. + GenerateDocumentOutline bool } // DefaultPdfOptions returns the default values for PdfOptions. func DefaultPdfOptions() PdfOptions { return PdfOptions{ - Options: DefaultOptions(), - Landscape: false, - PrintBackground: false, - Scale: 1.0, - SinglePage: false, - PaperWidth: 8.5, - PaperHeight: 11, - MarginTop: 0.39, - MarginBottom: 0.39, - MarginLeft: 0.39, - MarginRight: 0.39, - PageRanges: "", - HeaderTemplate: "", - FooterTemplate: "", - PreferCssPageSize: false, + Options: DefaultOptions(), + Landscape: false, + PrintBackground: false, + Scale: 1.0, + SinglePage: false, + PaperWidth: 8.5, + PaperHeight: 11, + MarginTop: 0.39, + MarginBottom: 0.39, + MarginLeft: 0.39, + MarginRight: 0.39, + PageRanges: "", + HeaderTemplate: "", + FooterTemplate: "", + PreferCssPageSize: false, + GenerateDocumentOutline: false, } } diff --git a/pkg/modules/chromium/routes.go b/pkg/modules/chromium/routes.go index 4662371c..a806838c 100644 --- a/pkg/modules/chromium/routes.go +++ b/pkg/modules/chromium/routes.go @@ -205,6 +205,7 @@ func FormDataChromiumPdfOptions(ctx *api.Context) (*api.FormData, PdfOptions) { pageRanges string headerTemplate, footerTemplate string preferCssPageSize bool + generateDocumentOutline bool ) form. @@ -221,24 +222,26 @@ func FormDataChromiumPdfOptions(ctx *api.Context) (*api.FormData, PdfOptions) { String("nativePageRanges", &pageRanges, defaultPdfOptions.PageRanges). Content("header.html", &headerTemplate, defaultPdfOptions.HeaderTemplate). Content("footer.html", &footerTemplate, defaultPdfOptions.FooterTemplate). - Bool("preferCssPageSize", &preferCssPageSize, defaultPdfOptions.PreferCssPageSize) + Bool("preferCssPageSize", &preferCssPageSize, defaultPdfOptions.PreferCssPageSize). + Bool("generateDocumentOutline", &generateDocumentOutline, defaultPdfOptions.GenerateDocumentOutline) pdfOptions := PdfOptions{ - Options: options, - Landscape: landscape, - PrintBackground: printBackground, - Scale: scale, - SinglePage: singlePage, - PaperWidth: paperWidth, - PaperHeight: paperHeight, - MarginTop: marginTop, - MarginBottom: marginBottom, - MarginLeft: marginLeft, - MarginRight: marginRight, - PageRanges: pageRanges, - HeaderTemplate: headerTemplate, - FooterTemplate: footerTemplate, - PreferCssPageSize: preferCssPageSize, + Options: options, + Landscape: landscape, + PrintBackground: printBackground, + Scale: scale, + SinglePage: singlePage, + PaperWidth: paperWidth, + PaperHeight: paperHeight, + MarginTop: marginTop, + MarginBottom: marginBottom, + MarginLeft: marginLeft, + MarginRight: marginRight, + PageRanges: pageRanges, + HeaderTemplate: headerTemplate, + FooterTemplate: footerTemplate, + PreferCssPageSize: preferCssPageSize, + GenerateDocumentOutline: generateDocumentOutline, } return form, pdfOptions diff --git a/pkg/modules/chromium/tasks.go b/pkg/modules/chromium/tasks.go index 4e841d75..5f19a288 100644 --- a/pkg/modules/chromium/tasks.go +++ b/pkg/modules/chromium/tasks.go @@ -48,6 +48,7 @@ func printToPdfActionFunc(logger *zap.Logger, outputPath string, options PdfOpti WithMarginRight(options.MarginRight). WithPageRanges(pageRanges). WithPreferCSSPageSize(options.PreferCssPageSize). + WithGenerateDocumentOutline(options.GenerateDocumentOutline). // Does not seem to work. // See https://github.com/gotenberg/gotenberg/issues/831. WithGenerateTaggedPDF(false)