feat(chromium): add GenerateDocumentOutline option

This commit is contained in:
Tam Nguyen
2024-11-18 15:03:39 +11:00
committed by Julien Neuhart
parent 62ba4877ac
commit 79f396f6ff
3 changed files with 40 additions and 31 deletions

View File

@@ -213,6 +213,10 @@ type PdfOptions struct {
// PreferCssPageSize defines whether to prefer page size as defined by CSS. // PreferCssPageSize defines whether to prefer page size as defined by CSS.
// If false, the content will be scaled to fit the paper size. // If false, the content will be scaled to fit the paper size.
PreferCssPageSize bool PreferCssPageSize bool
// GenerateDocumentOutline defines whether the document outline should be
// embedded into the PDF.
GenerateDocumentOutline bool
} }
// DefaultPdfOptions returns the default values for PdfOptions. // DefaultPdfOptions returns the default values for PdfOptions.
@@ -233,6 +237,7 @@ func DefaultPdfOptions() PdfOptions {
HeaderTemplate: "<html><head></head><body></body></html>", HeaderTemplate: "<html><head></head><body></body></html>",
FooterTemplate: "<html><head></head><body></body></html>", FooterTemplate: "<html><head></head><body></body></html>",
PreferCssPageSize: false, PreferCssPageSize: false,
GenerateDocumentOutline: false,
} }
} }

View File

@@ -205,6 +205,7 @@ func FormDataChromiumPdfOptions(ctx *api.Context) (*api.FormData, PdfOptions) {
pageRanges string pageRanges string
headerTemplate, footerTemplate string headerTemplate, footerTemplate string
preferCssPageSize bool preferCssPageSize bool
generateDocumentOutline bool
) )
form. form.
@@ -221,7 +222,8 @@ func FormDataChromiumPdfOptions(ctx *api.Context) (*api.FormData, PdfOptions) {
String("nativePageRanges", &pageRanges, defaultPdfOptions.PageRanges). String("nativePageRanges", &pageRanges, defaultPdfOptions.PageRanges).
Content("header.html", &headerTemplate, defaultPdfOptions.HeaderTemplate). Content("header.html", &headerTemplate, defaultPdfOptions.HeaderTemplate).
Content("footer.html", &footerTemplate, defaultPdfOptions.FooterTemplate). Content("footer.html", &footerTemplate, defaultPdfOptions.FooterTemplate).
Bool("preferCssPageSize", &preferCssPageSize, defaultPdfOptions.PreferCssPageSize) Bool("preferCssPageSize", &preferCssPageSize, defaultPdfOptions.PreferCssPageSize).
Bool("generateDocumentOutline", &generateDocumentOutline, defaultPdfOptions.GenerateDocumentOutline)
pdfOptions := PdfOptions{ pdfOptions := PdfOptions{
Options: options, Options: options,
@@ -239,6 +241,7 @@ func FormDataChromiumPdfOptions(ctx *api.Context) (*api.FormData, PdfOptions) {
HeaderTemplate: headerTemplate, HeaderTemplate: headerTemplate,
FooterTemplate: footerTemplate, FooterTemplate: footerTemplate,
PreferCssPageSize: preferCssPageSize, PreferCssPageSize: preferCssPageSize,
GenerateDocumentOutline: generateDocumentOutline,
} }
return form, pdfOptions return form, pdfOptions

View File

@@ -48,6 +48,7 @@ func printToPdfActionFunc(logger *zap.Logger, outputPath string, options PdfOpti
WithMarginRight(options.MarginRight). WithMarginRight(options.MarginRight).
WithPageRanges(pageRanges). WithPageRanges(pageRanges).
WithPreferCSSPageSize(options.PreferCssPageSize). WithPreferCSSPageSize(options.PreferCssPageSize).
WithGenerateDocumentOutline(options.GenerateDocumentOutline).
// Does not seem to work. // Does not seem to work.
// See https://github.com/gotenberg/gotenberg/issues/831. // See https://github.com/gotenberg/gotenberg/issues/831.
WithGenerateTaggedPDF(false) WithGenerateTaggedPDF(false)