A Docker-powered stateless API for PDF files.

Overview

Gotenberg Logo

Gotenberg

A Docker-powered stateless API for PDF files

Documentation ยท ๐Ÿ”ฅ Live Demo


Gotenberg provides a developer-friendly API to interact with powerful tools like Chromium and LibreOffice to convert many documents (HTML, Markdown, Word, Excel, etc.) to PDF, transform them, merge them, and more!

Quick Start

Open a terminal and run the following command:

docker run --rm -p 3000:3000 gotenberg/gotenberg:7

Alternatively, using the historic Docker repository from our sponsor TheCodingMachine:

docker run --rm -p 3000:3000 thecodingmachine/gotenberg:7

The API is now available on your host at http://localhost:3000.

Head to the documentation to learn how to interact with it ๐Ÿš€

Sponsors

TheCodingMachine Logo

Badges

Docker pulls Docker pulls Continuous Integration Go Reference Codecov Go Report Card

Issues
  • Anyone tried this on Cloudrun? GCP.

    Anyone tried this on Cloudrun? GCP.

    Cloud Run is a managed compute platform that automatically scales your stateless containers. Cloud Run is serverless: it abstracts away all infrastructure management, so you can focus on what matters most โ€” building great applications

    Anyone tried Gotenberg on Cloudrun? Im assuming it would work as its stateless? Could have huge cost savings...

    help wanted 
    opened by andrewmclagan 20
  • Latest 7.5.0 docker image intermittently crashes

    Latest 7.5.0 docker image intermittently crashes

    Every so often, the latest 7.5 docker image will crash on startup. Here's the docker logs:

    pdfgen_1     | 
    pdfgen_1     |   _____     __           __               
    pdfgen_1     |  / ___/__  / /____ ___  / /  ___ _______ _
    pdfgen_1     | / (_ / _ \/ __/ -_) _ \/ _ \/ -_) __/ _ '/
    pdfgen_1     | \___/\___/\__/\__/_//_/_.__/\__/_/  \_, / 
    pdfgen_1     |                                    /___/
    pdfgen_1     | 
    pdfgen_1     | A Docker-powered stateless API for PDF files.
    pdfgen_1     | Version: 7.5.0
    pdfgen_1     | -------------------------------------------------------
    pdfgen_1     | [SYSTEM] modules: api chromium gc libreoffice logging pdfcpu pdfengines pdftk prometheus qpdf uno uno-pdfengine webhook 
    pdfgen_1     | [SYSTEM] gc: application started
    pdfgen_1     | [SYSTEM] api: server listening on port 3000
    pdfgen_1     | [SYSTEM] prometheus: collecting metrics
    pdfgen_1     | [SYSTEM] pdfengines: pdfcpu pdftk qpdf uno-pdfengine
    pdfgen_1     | [FATAL] starting uno: start long-running LibreOffice listener: waiting for the LibreOffice listener socket to be available: context deadline exceeded
    

    Is this a timeout issue? I don't believe the previous docker image (7.4.3) had this issue.

    bug libreoffice 
    opened by jash 18
  • Performance of Libreoffice PDF generation

    Performance of Libreoffice PDF generation

    We are currently using a Libreoffice + unoconv + api (node) architecture to generate our PDF, and we are considering switching to the more recent, maintained and beautifully coded Gotenberg ;) but we noticed some performance drawbacks.

    The doc says It starts a dedicated LibreOffice instance for each request.. This seems to add about 2 to 3s to the generation time, vs. our current architecture where the Libreoffice instance is just constantly idling, waiting for a new request (unoconv in listener mode).

    3 additional seconds per conversion feels quite like a long time =/ Is there any way to improve that? Do you envision an option in the future to keep the LibreOffice open for longer than one request?

    Also, it says It starts a dedicated LibreOffice instance for each REQUEST but according to our preliminary tests, it seems like it does it for every conversion, not every request : if we make a request with multiple files to convert (and merge), the conversion time seems to just be linear with the number of docs (vs. our expectation of faster conversion for subsequent files once the LibreOffice instance is started for the first one). Do you confirm that's what is happening?

    enhancement libreoffice 
    opened by HadrienKulik 16
  • `unoconv` listener process may become a zombie

    `unoconv` listener process may become a zombie

    On the Live Demo, the unoconv listener process did become a zombie for some reason.

    While unoconv is still working (it creates a dedicated LibreOffice instance in such a scenario), the conversions are way slower.

    In order to prevent this from happening, we have to:

    1. Check the state of the unoconv listener process.
    2. If state is invalid (no such process / zombie), try to restart the listener.
    3. If restart fails, /health endpoint should return an error.
    bug pdf-engines libreoffice 
    opened by gulien 15
  • feat: add qpdf engine

    feat: add qpdf engine

    I never programmed in Go before, so I don't clearly understand what I am doing.

    This PR aims to add QPDF as a tool to merge PDFs, because it can deal with invalid PDFs files, which PDFtk can not do.

    Also, I think that would be cool if Gotenberg have another tool on it.

    opened by skhaz 15
  • Support Proxy Server for Chromium Headless

    Support Proxy Server for Chromium Headless

    Hi

    Is there any way to support a proxy server for the chromium module? I have tried setting the system proxy, but that doesn't seem to do the trick. So there's still the --proxy-server flag for chromium but I guess that's not supported, is it?

    enhancement chromium 
    opened by inzanez 15
  • HTML to PDF rendering fails with 'rpc error: Printing failed (code = -32000)'

    HTML to PDF rendering fails with 'rpc error: Printing failed (code = -32000)'

    When I send a significantly large payload of HTML (about 800kb) that contains a lot of images (say ~3-4 per page, 250 pages in total) - rendering fails with the following error message:

    {
        "level": "error",
        "msg": "cdp.Page: PrintToPDF: rpc error: Printing failed (code = -32000)",
        "op": "xhttp.htmlHandler: xhttp.convertSync: printer.chromePrinter.Print",
        "time": "2020-09-22T18:04:50Z",
        "trace": "s1azQwaNSYBE6zK3y5R7VhstCYbPtrix"
    }
    

    and

    {
        "level": "debug",
        "msg": "[0922/180450.372244:ERROR:print_render_frame_helper.cc(1889)] Printing failed.",
        "op": "stderr.google-chrome-stable.--no-sandbox.--headless.--disable-dev-shm-usage.--font-render-hinting=none.--remote-debugging-port=9222.--disable-gpu.--disable-translate.--disable-extensions.--disable-background-networking.--safebrowsing-disable-auto-update.--disable-sync.--disable-default-apps.--hide-scrollbars.--metrics-recording-only.--mute-audio.--no-first-run",
        "time": "2020-09-22T18:04:50Z",
        "trace": "system"
    }
    

    Is there anything I can do / tweak in the environment variables to mitigate this? I've already increased the RPC buffer without success. System is running on AWS Fargate, 2vCPUs, 8GB of RAM.

    Expected Behavior

    Rendered document is returned.

    Current Behavior

    Rendering fails with HTTP 500.

    Your Environment

    • Version used: 6.3.0
    • Operating System and version: Docker container running on AWS Fargate 2/8GB
    bug 
    opened by sebastian-schlecht 15
  • Very slow POST request to gotenberg to convert html -> pdf

    Very slow POST request to gotenberg to convert html -> pdf

    I noticed that sending the post request with file that has 150โ€ฏ344 bytes is slow. In my local enviroment I takes about 4 sec to get the Response. In my production enviroment I takes about 40 sec! We use python request library and we send just the attached file to the server. Do we need to use some extrat options to zip the html file or sth?

    opened by Przemek625 15
  • Memory usage constantly increasing

    Memory usage constantly increasing

    Hey there,

    We're experiencing an issue with Gotenberg where by the memory usage is constantly increasing over time, up to a point that it is being killed by the container orchestrator, ECS in this instance. Here's a graph of gotenbergs memory usage over time. image

    The large drops are ECS killing the container when the memory limit is reached. (the last restart is a manual one by me) We've given the container 512MB of memory in this example.

    Have you experienced this behaviour yourselves? Is 512MB sufficient? (We used 512MB as it is in the docs as a 'production' config) Is there a possible memory leak somewhere?

    Many thanks in advance!

    Your Environment

    • Version used: 5.1.0
    • Operating System and version: vendor provided docker image.
    bug 
    opened by bendavies 14
  • Bug 7.4.1 - Context deadline exceeded

    Bug 7.4.1 - Context deadline exceeded

    Hi @gulien Everything was fine with 7.4.0, but we just upgraded to 7.4.1 and when running the container with these parameters, we are getting this error :

    docker run --rm -d -p xxxx:3000 --name gotenberg xxxxx/gotenberg gotenberg --chromium-disable-routes --pdfengines-disable-routes --webhook-disable --prometheus-disable-collect --prometheus-disable-route-logging

    image

    If we downgrade back to 7.4.0 it starts working again (iso parameters). Since the latest release is all about timeout, it seems like a big coincidence ^^

    Is this meant btw? image https://github.com/gotenberg/gotenberg/compare/v7.4.0...v7.4.1#diff-51bc8303a14a97d22bd6cf1de23da23a89d419b96fe2e37972552a0b4cec8f77R393

    bug pdf-engines libreoffice 
    opened by HadrienKulik 13
  • go mod incompatibility

    go mod incompatibility

    Trying to use this module in other a go mod enabled repo of us is causing issues with some of the unused dependencies (particularly delve). Running go mod tidy fixes these issues.

    Expected Behavior

    GO111MODULE=on go get -u github.com/thecodingmachine/[email protected] Should allow us to use the go module.

    Current Behavior

    The gotenberg module is marked as incompatible.

    Possible Solution

    run go mod tidy

    Context

    We are unable to use the go module for talking to the gotenberg service in our k8s cluster.

    I have a commit ready on a fork. Wanted to raise an issue first, happy to raise PR if accepted.

    bug help wanted 
    opened by trelore 13
  • Support for conversion of documents inside ZIP files

    Support for conversion of documents inside ZIP files

    I'm trying to figure out what the best way to add some form of support for ASIC-E files to paperless-ngx. ASIC-E is a signed container format - it's effectively a zip file that stores one or more documents and cryptographic signature metadata for the files. It's a standardized format, but mostly used in Estonia, where it is the default for any kind of contract or such that needs signing (electronic signatures are legally recognized and fairly common here). A simple way to support this format would be if the importer - using Gotenberg - could just transparently convert the document (or documents, though typically it is just one) inside of the asic-e zip archive.

    enhancement 
    opened by halcy 1
  • Error converting simple pptx file to pdf

    Error converting simple pptx file to pdf

    Hi there,

    When I attempt to convert a simple pptx file to pdf using the POST forms/libreoffice/convert endpoint in gotenberg I get a 500 error.
    The pptx file that I am attempting to convert to pdf using the libre office engine is very simple. It has one slide with two images and a text label. I think the issue is related to the images used in the pptx but I'm not sure why they would cause the pdf conversion to fail. When I remove one of the images from the pptx the pdf conversion runs successfully.

    See the below screen grab of the erroneous slide in the pptx. I have also attached the pptx that is causing the conversion failure

    FailingGotenbergConversionImage

    The following is a snippet of debug logs central to the issue. Full logs are here

    {"level":"debug","ts":1654172407.363404,"logger":"api.formslibreofficeconvert.usrliblibreofficeprogramsoffice.bin","msg":"unix process already killed","trace":"656a0796-af74-4b8c-9acd-456409a7fff5"}
    {"level":"error","ts":1654172407.3656774,"logger":"api","msg":"convert to PDF: unoconv PDF: unix process error: wait for unix process: exit status 6","trace":"6922e459-19b5-41e2-aff1-ab95297d3c4d","remote_ip":"10.1.18.135","host":"gotenberg-service:3000","uri":"/forms/libreoffice/convert","method":"POST","path":"/forms/libreoffice/convert","referer":"","user_agent":"Apache-HttpClient/4.5.13 (Java/11.0.10)","status":500,"latency":14209214897,"latency_human":"14.209214897s","bytes_in":775610,"bytes_out":21}
    {"level":"debug","ts":1654172407.3685727,"logger":"api.formslibreofficeconvert.usrliblibreofficeprogramsoffice.bin","msg":"start unix process: /usr/lib/libreoffice/program/soffice.bin --headless --invisible --nocrashreport --nodefault --nologo --nofirststartwizard --norestore -env:UserInstallation=file:///tmp/bd7353dc-0119-4d19-aa82-308b96069ef8 --accept=socket,host=127.0.0.1,port=41679,tcpNoDelay=1;urp;StarOffice.ComponentContext","trace":"6922e459-19b5-41e2-aff1-ab95297d3c4d"}
    {"level":"debug","ts":1654172409.1584835,"logger":"api.formslibreofficeconvert.usrliblibreofficeprogramsoffice.bin","msg":"unix process already killed","trace":"6922e459-19b5-41e2-aff1-ab95297d3c4d"}
    {"level":"debug","ts":1654172409.1585321,"logger":"api.formslibreofficeconvert","msg":"got exit code 81, e.g., LibreOffice listener first start","trace":"6922e459-19b5-41e2-aff1-ab95297d3c4d"}
    
    

    Docker file used to build Gotenberg image

    FROM gotenberg/gotenberg:7.5.2
    USER root
    COPY /resources/fonts/* /usr/local/share/fonts/
    USER gotenberg
    CMD ["gotenberg", "--pdfengines-engines=uno-pdfengine", "--api-disable-health-check-logging=true", "--log-level=debug", "--api-timeout=60s"]
    

    Any help with this would be much appreciated!

    Thanks, Keith

    documentation 
    opened by keithcaff 8
  • Feature request: Limit the queue size for stateful mode LibreOffice conversions

    Feature request: Limit the queue size for stateful mode LibreOffice conversions

    The stateful mode LibreOffice conversion is nice because it is faster than stateless mode. I tried some performance tests by launching multiple instances (stateful mode) with a load balancer in the front.

    Problem

    The conversion queue size in Gotenberg looks unlimited. So Gotenberg will keep accepting a new request no matter how many pending conversion is.

    End up the instances may:

    • Be easily overloaded if there is a spike or unbalanced traffic
    • Most of the requests will keep being timeout (loop in client side: timeout->retry->timeout->retry...)
    • The overloaded instances cannot be recovered even scale up more instances after a while
    • A possibility that Gotenberg started a conversion but the API request just timed out at the same time (wasted conversion)

    Suggestion

    It would be good if having an option to limit the queue size of LibreOffice stateful mode. And it will throttle/reject the new request immediately (avoid too many requests waiting for timeout) when there are a lot of pending conversions (based on libreoffice_listener_queue_length).

    Then, client side can monitor easily and based on the rejected number to scale up more instances

    Thanks and appreciated! ๐Ÿ™

    enhancement pdf-engines libreoffice 
    opened by NathanLamSeekasia 1
  • Files with signatures taking long time to convert

    Files with signatures taking long time to convert

    Discussed in https://github.com/gotenberg/gotenberg/discussions/456

    Originally posted by Anki0804 May 5, 2022 Hi All

    My java code is calling the gotenberg API through HttpClient post method to convert files to pdf. It is taking around 6-8 minutes, to convert doc files with signatures to PDF . Tried using version 7.4.2 and 7.4.3 both. Attached logs from docker container for gotenberg. Is there any specific setting which can improve the performance in this case? Gotenberg docker logs

    bug libreoffice 
    opened by gulien 0
Releases(v7.5.3)
  • v7.5.3(Jun 7, 2022)

    Chore

    • Update LibreOffice to version 7.3.4.1.
    • Update Google Chrome to version 102.0.5005.61 (amd64 only) and Chromium to version 99.0.4844.74-1 (other platforms).
    • Update Go dependencies.
    • Upgrade golangci-lint to v1.46.2.
    Source code(tar.gz)
    Source code(zip)
  • v7.5.2(Mar 22, 2022)

  • v7.5.1(Mar 21, 2022)

    Fixes

    • The previous version was intermittently crashing on startup because of the long-running LibreOffice listener. It now starts on the first LibreOffice conversion - fixes #420 - thanks @jash, @adetiamarhadi and @mferuglio!
    • The module property --chromium-allow-list switches its default value with --chromium-deny-list (see #429) - thanks @ubiuser!

    Chore

    • Upgrade Go to 1.18.
    • Update Go dependencies.
    • Upgrade golangci-lint to v1.45.0.
    Source code(tar.gz)
    Source code(zip)
  • v7.5.0(Feb 8, 2022)

    New Features

    • Instead of using unoconv for creating the LibreOffice listener, Gotenberg now directly creates the listener (fixes #406).
      • Before a conversion, if the listener is unhealthy, Gotenberg restarts it.
      • After a conversion, if the conversion threshold is reached or the listener is unhealthy, Gotenberg restarts it.
    • New flag --uno-listener-start-timeout - the time limit for starting the LibreOffice listener.
    • New flag --uno-listener-restart-threshold - operations limit after which the LibreOffice listener is restarted (0 means no long-running LibreOffice listener).
    • New PDF formats available: PDF/A-2b and PDF/A-3b.
    • If the long-running LibreOffice listener fails to restart, the /health endpoint returns a 503 Service Unavailable.

    Deprecations

    • --unoconv-disable-listener flag is deprecated in favor of --uno-listener-restart-threshold (with value 0).
    • nativePdfA1aFormat form field is deprecated in favor of nativePdfFormat.
    • unoconv_listener_active_instances_count metric is deprecated in favor of libreoffice_listener_active_instances_count.
    • unoconv_listener_queue_length metric is deprecated in favor of libreoffice_listener_queue_length.
    • The PDF engine name unoconv-pdfengine is deprecated if favor of uno-pdfengine.
    • Chromium: injecting local files through <link> and <script> HTML elements in a remote URL was not working, so the feature has been removed from the codebase (see #418).

    Misc

    • unoconv module has been renamed into uno ("Universal Network Objects" API from LibreOffice).
    • ๐Ÿš€ Deno client from @mathe42.

    Chore

    • Update Go dependencies.
    • Upgrade golangci-lint to v1.44.0.
    • Upgrade Noto Color Emoji to v.2.034.
    • Upgrade PDFtk to v3.3.2.
    Source code(tar.gz)
    Source code(zip)
  • v7.4.3(Jan 25, 2022)

  • v7.4.2(Jan 5, 2022)

    Fixes

    • Switches from sid to bullseye-backports distribution for installing LibreOffice 7.2 (see #403) - thanks @HadrienKulik & @FabienLucini!
    • Adds Noto CJK fonts as ttf-wqy-zenhei is not actively maintained (see #399) - thanks @fengkaijia!
    Source code(tar.gz)
    Source code(zip)
  • v7.4.1(Dec 19, 2021)

    Fixes

    • As the API module timeout properties were not working as expected (see #396), this release adds a new property --api-timeout that is more explicit and fixes the mentioned issue - thanks @gautam-nutalapati!
    • New property --webhook-client-timeout - set the time limit for requests to the webhook.
    • The Noto Emoji Font is now properly downloaded in the Docker image (version was missing).

    Deprecations

    • The properties --api-read-timeout, --api-process-timeout and --api-write-timeout have been deprecated in favor of the --api-timeout property.
    Source code(tar.gz)
    Source code(zip)
  • v7.4.0(Dec 8, 2021)

    New Features

    • ๐Ÿš€ Now starts a unoconv listener for substantial performance improvements for the LibreOffice module / the unoconv PDF engine (new default) - closes #373 - thanks @HadrienKulik for bringing up the discussion! Feedbacks welcome at #391 โค๏ธ
    • New property --unoconv-disable-listener - do not start a unoconv listener - save resources in detriment of performance.
    • New PDF engine: QPDF - thanks @skhaz & @AndreiRegiani!
    • New metric {namespace}_unoconv_listener_active_instances_count - current number of active unoconv listener instances.
    • New metric {namespace}_unoconv_listener_queue_length - current number of processes in the queue.
    • New metric {namespace}_qpdf_active_instances_count - current number of active QPDF instances.

    Misc

    • Improves the shutdown process.
    • Improves logger field in logging.

    Chore

    • Updates Go dependencies.
    Source code(tar.gz)
    Source code(zip)
  • v7.3.1(Dec 7, 2021)

    Fix

    • The flag --pdfengines-engines now works as expected (see #380).

    Misc

    • New module interface SystemLogger for modules that want to display messages on startup.
    • The PDF Engines module now prints the selected PDF engines.
    Source code(tar.gz)
    Source code(zip)
  • v7.3.0(Nov 24, 2021)

    This release brings a lot of new features for the Chromium module ๐Ÿš€ ๐Ÿš€

    New Features

    • New property --chromium-disable-web-security - Don't enforce the same-origin policy.
    • New property --chromium-disable-javascript - Disable JavaScript (closes #175).
    • New form field userAgent - Override the default User-Agent header.
    • New form field waitForExpression - The JavaScript expression to wait before converting an HTML document to PDF until it returns true.
    • New form field emulatedMediaType - The media type to emulate, either "screen" or "print" - empty means "print" (closes #349).
    • New form field failOnConsoleExceptions - Return a 409 Conflict response if there are exceptions in the Chromium console (closes #262).
    • URL endpoint - now auto-detects .woff2, .woff, .ttf, .css and .js files send in the request and adds on the fly corresponding <link> and <script> HTML elements in the DOM of the target URL.
    • URL endpoint - auto-detection may be overridden thanks to the new form fields extraLinkTags and extraScriptTags.

    Deprecations

    • The property --chromium-user-agent has been deprecated in favor of the userAgent form field.
    • The form field waitForWindowStatus has been deprecated in favor of the waitForExpression form field.

    Misc

    • Higher verbosity when converting with unoconv if --log-level=debug.

    Chore

    • Update Go dependencies.
    • Upgrade golangci-lint to 1.43.0.
    Source code(tar.gz)
    Source code(zip)
  • v7.2.0(Nov 12, 2021)

    New Feature

    • A new property --chromium-proxy-server for the Chromium module (see #376) - thanks @inzanez!

    Fix

    • The property --chromium-user-agent was not working, but now it does.

    Chore

    • Update Go dependencies.
    Source code(tar.gz)
    Source code(zip)
  • v7.1.1(Nov 2, 2021)

    This release brings a newer version of Google Chrome (95.x) for the amd64 Docker image.

    Fixe

    • Fixes #375 - thanks @remoteexception!

    Chore

    • Update Go dependencies.
    Source code(tar.gz)
    Source code(zip)
  • v7.1.0(Oct 19, 2021)

    :wave:

    New Features

    • HTTP/2 support (H2C) - thanks @Svendegroote91 & @KillianMeersman!
    • Prometheus module - thanks @ArcRiiad!

    Deprecations

    • The webhook feature is now a dedicated module - previous flags --api-webhook-* are deprecated.

    Documentation

    • ๐Ÿšง OpenAPI documentation - thanks @grofoli!

    Chore

    • Update Go dependencies.
    • Upgrade PDFtk version.
    Source code(tar.gz)
    Source code(zip)
  • v7.0.7(Sep 21, 2021)

    This release brings the following fixes:

    • Support armhf and i386 architectures - fixes #338 - thanks @kmandalas & @KubikDezimeter!
    • Force Google Chrome to use exact colors - fixes #354 - thanks @tibi22!
    • Chromium module: add new flag --chromium-allow-file-access-from-files - fixes #356 - thanks @josephdicarlo1!
    Source code(tar.gz)
    Source code(zip)
  • v7.0.6(Sep 15, 2021)

  • v7.0.5(Sep 9, 2021)

    This release brings the following fixes:

    • Add Noto Color emoji font - fixes #174, #324 - thanks @toooni!
    • Update to latest Google Chrome version (amd64) - fixes #344
    • Tests: OS restrictions on port range - fixes #339 - thanks @remoteexception!
    • Add missing unoconv file extensions (.tif, .jpeg, .odp) - thanks @remoteexception!
    Source code(tar.gz)
    Source code(zip)
  • v7.0.4(Aug 27, 2021)

    This release brings:

    • A stable version of Google Chrome (92.x) for the amd64 Docker image.
    • A stable version of LibreOffice (7.2) for both amd64 and arm64 Docker images.

    Fixes

    • Fixes #328.
    • Fixes #249 - thanks @mrcageman!

    Chore

    • Upgrade Go to version 1.17.
    Source code(tar.gz)
    Source code(zip)
  • v7.0.3(Aug 27, 2021)

    On a server, there is (most of the time) no GPU. By adding the --disable-gpu flag to Chromium, we make sure it works on most environments.

    Fixes

    • Fixes #327.
    • Add missing Chinese serif font.

    Chore

    • Upgrade the base image to a stable version of Debian - closes #329, closes #306.
    Source code(tar.gz)
    Source code(zip)
  • v7.0.2(Aug 23, 2021)

  • v7.0.1(Aug 23, 2021)

  • v7.0.0(Aug 22, 2021)

    ๐Ÿ‘‹

    After more than a year of intermittent work, this release move Gotenberg to its next version ๐Ÿ˜„

    This version brings a lot of long-awaited fixes, and, even if there are few new features, the code base is now better suited for evolutions and custom variants from the community ๐Ÿš€

    New Features

    • arm64 support.
    • PDF/A-1a conversions support.
    • Better stability - no more long-running Chrome process.
    • A new modular platform - add your modules to customize Gotenberg to your flavor.
    • And more ๐Ÿ˜„ - check the new documentation ๐Ÿ‘‰ https://gotenberg.dev

    Breaking Changes

    • Endpoints are different (i.e., /forms/chromium/convert/html vs /convert/html) and do not necessarily uses the same form data.
    • Configuration is no more possible via environment variables, but via flags.
    • Chromium paper size options have been rollback to default ones (Letter format, 0.39in margins).
    • You now have to send a webhook URL for errors alongside the webhook URL for output files.

    Fixes

    Chromium

    • user-agent flag for Chromium - fixes #311
    • preferCssPageSize as form field - fixes #258
    • waitWindowStatus as form field - fixes #193

    LibreOffice / unoonv

    • Support all document types - fixes #248, fixes #234, fixes #28

    Webhook

    • Call webhook in case of error - fixes #181

    Security

    • Support allow/deny lists for Chromium - fixes #261, fixes #215

    Misc

    • Support upper case extensions - fixes #228
    • Garbage Collector - fixes #192
    • Provide a custom trace - fixes #170
    • Better explanations about trace (request ID) in logs - fixes #180
    • Support arm64 - fixes #213
    • CloudRun Docker image - fixes #221
    • PDF/A-1a conversions - fixes #120
    • Support for multiple PDF engines - fixes #29
    Source code(tar.gz)
    Source code(zip)
  • 6.4.4(May 14, 2021)

  • 6.4.3(Apr 15, 2021)

  • 6.4.2(Mar 31, 2021)

  • 6.4.1(Mar 24, 2021)

  • 6.4.0(Jan 7, 2021)

  • 6.3.1(Sep 21, 2020)

  • 6.3.0(Jun 22, 2020)

    This version fixes several critical vulnerabilities. We strongly advise everyone to update their Gotenberg instances with this new version.

    On a side note, those several critical vulnerabilities are not a problem if your Gotenberg instances are called from trusted sources.

    New feature

    Google Chrome ignore certificate errors

    When performing a URL conversion, Google Chrome will not accept certificate errors .

    You may allow insecure connections by setting GOOGLE_CHROME_IGNORE_CERTIFICATE_ERRORS environment variable to "1".

    You should be careful with this feature and only enable it in your development environment.

    Fixes #189.

    Thanks @tomjvdberg.

    Fixes

    • Several critical vulnerabilities - thanks @br0xpl for the help (fixes #199).
    Source code(tar.gz)
    Source code(zip)
  • 6.2.1(May 1, 2020)

    No more disk space leaks as user profile directories created by LibreOffice are now correctly being removed after an Office conversion - thanks @Dannecron for pointing out this issue.

    Fixes #192.

    Source code(tar.gz)
    Source code(zip)
  • 6.2.0(Feb 10, 2020)

goldmark-pdf is a renderer for goldmark that allows rendering to PDF.

A PDF renderer for the goldmark markdown parser.

Stephen Afam-Osemene 85 May 10, 2022
Golang wrapper for Exiftool : extract as much metadata as possible (EXIF, ...) from files (pictures, pdf, office documents, ...)

go-exiftool go-exiftool is a golang library that wraps ExifTool. ExifTool's purpose is to extract as much metadata as possible (EXIF, IPTC, XMP, GPS,

null 114 Jun 22, 2022
Go-wk - PDF Generation API with wkhtmltopdf

Simple PDF Generation API with wkhtmltopdf Quick start Clone the repo locally an

Gustavo Andrioli 0 Jan 25, 2022
A PDF processor written in Go.

pdfcpu: a Go PDF processor pdfcpu is a PDF processing library written in Go supporting encryption. It provides both an API and a CLI. Supported are al

pdfcpu 3.2k Jun 24, 2022
A simple library for generating PDF written in Go lang

gopdf gopdf is a simple library for generating PDF document written in Go lang. Features Unicode subfont embedding. (Chinese, Japanese, Korean, etc.)

Signin Technology 1.6k Jun 26, 2022
A PDF document generator with high level support for text, drawing and images

GoFPDF document generator Package go-pdf/fpdf implements a PDF document generator with high level support for text, drawing and images. Features UTF-8

null 140 Jun 22, 2022
PDF tools for reMarkable tablets

rm-pdf-tools - PDF tools for reMarkable Disclaimer: rm-pdf-tools is currently in a very early version, bugs are to be expected. Furthermore, the inten

Niels Saurer 11 Jun 18, 2022
A command line tool for mainly exporting logbook records from Google Spreadsheet to PDF file in EASA format

Logbook CLI This is a command line tool for mainly exporting logbook records from Google Spreadsheet to PDF file in EASA format. It also supports rend

Vladimir Simakhin 0 Feb 6, 2022
PDF file parser

#pdf A pdf document parsing and modifying library The libary provides functions to parse and show elements in PDF documents. It checks the validity

null 0 Nov 7, 2021
create PDF from ASCII File for Cable labels

CableLable create PDF from ASCII File for Cable labels file format is one label per line, a line containing up to 3 words, each word is a line on the

null 0 Nov 8, 2021
Convert document to pdf with golang

Convert document to pdf Build docker: docker build --pull --rm -f "Dockerfile" -t convertdocument:latest "." docker run -p 3000:3000 registry.gitlab.

null 0 Nov 29, 2021
Ghostinthepdf - This is a small tool that helps to embed a PostScript file into a PDF

This is a small tool that helps to embed a PostScript file into a PDF in a way that GhostScript will run the PostScript code during the

Emil Lerner 123 Jun 18, 2022
Read data from rss, convert in pdf and send to kindle. Amazon automatically convert them in azw3.

Kindle-RSS-PDF-AZW3 The Kindle RSS PDF AZW3 is a personal project. The Kindle RSS PDF AZW3 is a personal project. I received a Kindle for Christmas, a

Elia 0 Jan 10, 2022
Newser is a simple utility to generate a pdf with you favorite news articles

Newser A simple utility to crawl some news sites or other resources and download content into a pdf Building Make sure you have config.yaml setup and

Nenad 75 May 29, 2022
PDF Annotator of Nightmares ๐ŸŽƒ

PDFrankenstein is a GUI tool that intends to fill the gap on Linux where a good capable PDF annotator like Adobe Acrobat does not exist. What can you

Mansour Behabadi 145 Jun 20, 2022
Split text files into gzip files with x lines

hakgzsplit split lines of text into multiple gzip files

Luke Stephens (hakluke) 6 Jun 21, 2022
Easily create Go files from stub files

go-stubs Easily create .go files from stub files in your projects. Usage go get github.com/nwby/go-stubs Create a stub file: package stubs type {{.Mo

Sam Newby 4 Jan 27, 2022
app-services-go-linter plugin analyze source tree of Go files and validates the availability of i18n strings in *.toml files

app-services-go-linter app-services-go-linter plugin analyze source tree of Go files and validates the availability of i18n strings in *.toml files. A

Red Hat Developer 2 Nov 29, 2021