Gotenberg Versions Save

A developer-friendly API for converting numerous document formats into PDF files, and more!

v8.0.0

4 months ago

Gotenberg 8 is now out 🎉

For users of 7.x, the transition to this version should be relatively smooth. Most significant changes were introduced in 7.10.x. This release primarily removes deprecated elements (flags, form fields, etc.) and introduces eagerly anticipated features for Chromium. Read on for detailed information.

Upgrade from v7

If you're upgrading from Gotenberg 7, it's recommended to begin with the latest 7.x version, specifically 7.10.2. Monitor the logs of your Gotenberg instances. Pay attention to warnings at startup and during runtime to identify deprecated features in use that will be unavailable in Gotenberg 8.

Refer to the following lists for deprecated elements:

Deprecated Flags

  • --api-read-timeout
  • --api-process-timeout
  • --api-write-timeout
  • --api-webhook-allow-list
  • --api-webhook-deny-list
  • --api-webhook-error-allow-list
  • --api-webhook-error-deny-list
  • --api-webhook-max-retry
  • --api-webhook-retry-min-wait
  • --api-webhook-retry-max-wait
  • --api-disable-webhook
  • --chromium-user-agent
  • --chromium-failed-starts-threshold
  • --uno-listener-start-timeout
  • --uno-listener-restart-threshold
  • --unoconv-disable-listener

Deprecated Form Fields

Deprecated Metrics

  • chromium_active_instances_count
  • chromium_failed_starts_count
  • unoconv_active_instances_count
  • libreoffice_listener_active_instances_count
  • unoconv_listener_active_instances_count
  • libreoffice_listener_queue_length
  • unoconv_listener_queue_length
  • pdftk_active_instances_count
  • qpdf_active_instances_count

New Chromium Features

  • You can capture full-page screenshots using the following three routes, which function similarly to their PDF equivalents:
    • POST /forms/chromium/screenshot/url
    • POST /forms/chromium/screenshot/html
    • POST /forms/chromium/screenshot/markdown
    • The following form fields are available: format ("png", "jpeg" or "webp"), quality (jpeg only, 0 to 100), omitBackground, optimizeForSpeed (optimize image encoding for speed not for resulting size).
    • The following features are also available: wait before rendering, emulated media type, custom HTTP headers, invalid HTTP status codes, console exceptions, performance mode.
  • New form field failOnHttpStatusCodes: return a 409 Conflict response if the HTTP status code from the main page is not acceptable - thanks @TheRealPaco & @jmvezic!
  • New form field skipNetworkIdleEvent: do not wait for Chromium network to be idle, allowing for faster conversions - thanks @rreynier!
  • New flag --chromium-clear-cache: clear Chromium cache between each conversion - thanks @low613!
  • New flag --chromium-clear-cookies: clear Chromium cookies between each conversion - thanks @low613!

v7.10.2

5 months ago

Fixes

  • Special characters issues with files - fixes #730 & #662 - thanks @joernv & @ramonmedeiros!
  • No more panic when a lot of requests are in the Chromium queue (did not appear with default behavior, i.e., no restart) - fixes #753 - thanks @low613!
  • LibreOffice 7.6 does not produce PDF/A-1a like earlier releases, but PDF/A-1b. A warning will appear in the logs if PDF/A-1a is requested. Note that LibreOffice was never producing real PDF/A-1a, they just make it clear now. Fixes #746 - thanks @stumpylog!
  • Do not start the API unless all modules are ready. New flag --api-start-timeout (default 30s) - fixes #750 - thanks @bahag-xvisnei!

Chore

  • Updates Chromium to version 120.0.6099.109 (except for armhf).
  • Updates LibreOffice to version 7.6.4.
  • Updates Go dependencies.

v7.10.1

5 months ago

Fix

This release fixes a wrong type for the deprecated flag --uno-listener-restart-threshold that was causing panics when used.

v7.10.0

5 months ago

This is the last minor release of Gotenberg 7 before version 8 🎉 See https://github.com/gotenberg/gotenberg/issues/710 for more details.

⚠️ The Chromium and LibreOffice modules behavior is changing with this release; consider reading the details below to have a better understanding.

New Feature

New form field pdfua: PDF for Universal Access for optimal accessibility. Available for:

  • /forms/chromium/convert/*
  • /forms/libreoffice/convert
  • /forms/pdfengines/convert
  • /forms/pdfengines/merge

Closes https://github.com/gotenberg/gotenberg/issues/621 - thanks @giamma!

Fixes

Chromium

There were memory leaks due to defunct processes. As each conversion was starting a Chromium process, it was adding up quickly overtime. Alas, the issue is still upstream and it is recommended to have a long-running browser to handle conversions.

⚠️ There is now a single Chromium browser that handles all conversions. It manages them one by one, like the LibreOffice process in stateful mode. Under heavy load, you should consider increasing the number of Gotenberg instance.

Please note that this only mitigates the memory leaks; according to your metrics, consider restarting your Gotenberg instances from time to time.

New flags:

  • --chromium-restart-after - Number of conversions after which Chromium will automatically restart. Set to 0 to disable this feature (default 0).
  • --chromium-auto-start - Automatically launch Chromium upon initialization if set to true; otherwise, Chromium will start at the time of the first conversion (default false).
  • --chromium-start-timeout - Maximum duration to wait for Chromium to start or restart (default 10s).

New metrics:

  • chromium_requests_queue_size - Current number of Chromium conversion requests waiting to be treated.
  • chromium_restarts_count - Current number of Chromium restarts.

Fixes https://github.com/gotenberg/gotenberg/issues/642 - thanks @petternordlanderhelo & @JulienWeintraub!

LibreOffice

Newer versions of LibreOffice were unstable in stateful mode due to the abrupt deletion of their user profile directory. The "cleaning" system of files have been updated so that it now works with the latest LibreOffice version available on Debian.

⚠️ There is no more a stateless mode with LibreOffice, it now works the same way as the new version of the Chromium module.

New flags:

  • --libreoffice-restart-after - Number of conversions after which LibreOffice will automatically restart. Set to 0 to disable this feature (default 10).
  • --libreoffice-auto-start - Automatically launch LibreOffce upon initialization if set to true; otherwise, LibreOffice will start at the time of the first conversion (default false).
  • --libreoffice-start-timeout - Maximum duration to wait for LibreOffice to start or restart (default 10s).

New metrics:

  • libreoffice_requests_queue_size - Current number of LibreOffice conversion requests waiting to be treated.
  • libreoffice_restarts_count - Current number of LibreOffice restarts.

Fixes https://github.com/gotenberg/gotenberg/issues/576 - thanks @PierreSchwang!

Deprecations

Chromium

Form field

  • userAgent

Flag:

  • chromium-failed-starts-threshold

Metrics:

  • chromium_active_instances_count
  • chromium_failed_starts_count

LibreOffice

Flags:

  • uno-listener-start-timeout
  • uno-listener-restart-threshold

Metrics:

  • unoconv_active_instances_count
  • libreoffice_listener_active_instances_count
  • libreoffice_listener_queue_length

PDF Engines

  • pdfa now replaces the pdfFormat and nativePdfFormat form fields.

Misc

⚠️ The following modules have been renamed:

  • uno -> libreoffice-api
  • uno-pdfengine -> libreoffice-pdfengine

Chore

  • Updates base image to Debian 12 bookworm.
  • Updates Go dependencies.
  • Blocks Chromium to version 116.0.5845.180-1 for armhf variant, updates to 119.0.6045.159 for others.
  • Updates LibreOffice to version 7.5.8.2.
  • Updates Noto Emoji to version 2.040 (Unicode 15.1).

v7.9.2

7 months ago

Chore

  • Updates Golang to 1.21.
  • Updates Go dependencies.
  • Updates golangci-lint to v1.54.2.
  • Updates Google Chrome to version 117.0.5938.88 (116.0.5845.180 for armhf and i386).

v7.9.1

9 months ago

Fix

Updates PDFcpu to v0.4.2 - fixes #644 - thanks @hhrutter & @loremaps

v7.9.0

9 months ago

New Feature

Adds a new flag --log-fields-prefix that prepends a prefix to each field in the logs (see #659) - thanks @JulienWeintraub!

Chore

  • Updates Go dependencies.
  • Updates Google Chrome to version 115.0.5790.98 for amd64 variant, 114.0.5735.198-1 for others.

v7.8.3

11 months ago

New Features

  • The Chromium module now provides an health check. After a number of consecutive failed starts, defined by the property chromium-failed-starts-threshold (default 5), the /health route will return a 503 Service Unavailable error - thanks @spewu!
  • Better graceful shutdown, on Kubernetes (see #649) - thanks @kevin-lindsay-1!

Chore

  • Updates Go dependencies.
  • Updates Google Chrome to version 113.0.5672.126 for amd64 variant, 112.0.5615.138-1 for others.

v7.8.2

1 year ago

Chore

  • Updates Go dependencies.
  • Updates Google Chrome to version 111.0.5563.146 (amd64 only).

v7.8.1

1 year ago

Chore

  • Updates Golang to 1.20.
  • Updates Go dependencies.
  • Updates golangci-lint to v1.51.2.
  • Updates Google Chrome to version 110.0.5481.100 (amd64 only).