October DealsAmazon USOctober deal check: compare before you payAmazon US: current deals, useful picks and tech finds.Check DealsClean PCRecommendedOne scan can reveal what keeps slowing WindowsLook for cleanup and repair opportunities.Run ScanOctober DealsAmazon USDeal season is back - check today's better picksAmazon US: current deals, useful picks and tech finds.See Picks×
Skip to content
World desk5 min

How to Use wkhtmltopdf in a Docker Container

A practical guide to running wkhtmltopdf in Docker: choose a compatible package, install libraries and fonts, persist output, verify build features, and isolate untrusted input.
Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Install a wkhtmltopdf build made for your container’s Linux distribution and CPU architecture, include its runtime libraries and font configuration, then run it against an HTML file or URL and save the PDF somewhere persistent. The converter is headless, so the upstream build does not require a display service. The crucial details are package compatibility, fonts, feature differences between builds, and safe handling of HTML.

Build a Docker image with the right wkhtmltopdf package

There is no single official Dockerfile that fits every base image. The wkhtmltopdf downloads page lists packages for particular distributions and architectures, and explains that even builds described as static still need system packages and runtime font configuration. Choose a package that matches both the container distribution and its architecture; do not assume a generic Linux binary will run in any image.

As an Amazon Associate I earn from qualifying purchases.

In particular, Alpine uses musl, while many Linux packages expect glibc. A package built for a different C library or distribution may fail to start or may lack required libraries. Check the package’s documented dependencies and paths for the exact base image you select. See the wkhtmltopdf downloads and installation notes.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Include fonts and font configuration

Rendering depends on runtime font configuration, including fontconfig and freetype. Install the required libraries and the fonts your documents use in the image. Missing fonts can change line wrapping, pagination, and the appearance of glyphs even when conversion succeeds.

The project’s Amazon Linux 2 example sets LD_LIBRARY_PATH=/opt/lib and FONTCONFIG_PATH=/opt/fonts before invoking an extracted binary. Those paths are specific to that example; use the library and font paths documented for the package you install rather than copying them blindly.

Use the official container example as a pattern, not a universal recipe

The project illustrates running an Amazon Linux 2 container with extracted files mounted at /opt, then invoking /opt/bin/wkhtmltopdf with the library and font environment variables. This shows how to bundle a distribution-specific executable and its dependencies. It does not mean Amazon Linux is the right base for every deployment.

Run the converter and keep the PDF

The basic command accepts either a local HTML file or a URL:

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
wkhtmltopdf input.html output.pdf
wkhtmltopdf https://example.com output.pdf

The command-line form is wkhtmltopdf [GLOBAL OPTION]... [OBJECT]... <output file>. If a container writes the output only to its short-lived writable filesystem, the file may disappear when that container is removed. Write to a host-mounted directory or send the file to storage managed by your application.

Assemble multi-part documents deliberately

The command-line interface supports document objects such as pages, a cover, and a table of contents, in the order you want them to appear. Global options belong before the objects; options that apply to an individual page can be set on that page object. Check the command documentation and your installed build before depending on multi-object documents, headers, or footers.

For example, the general structure is:

wkhtmltopdf [global-options] cover cover.html page.html [page-options] toc output.pdf

This illustrates object placement, not a guarantee that every package supports every feature. The project notes that patched-Qt builds and distribution builds can behave differently. Confirm the installed build’s feature set before designing a production document around those options. See the wkhtmltopdf command-line documentation.

Verify the installed build before relying on it

Check the binary inside the final image, not just on the machine where the Dockerfile was built:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
wkhtmltopdf --version

Record the version and determine whether it is a patched-Qt build if your output depends on headers, footers, or multi-object PDFs. A successful version check confirms that the executable starts; it does not prove that fonts, page layout, or every required option work. Test representative documents in the actual container image.

The downloads page identifies 0.12.6 as the stable series and dates its release to June 11, 2020. That is dated release information, not a promise about the latest available package today. Check the project’s current release and package listing when selecting or pinning a version. The project’s status page describes its Qt/WebKit foundation as old: Qt 4 had been unsupported since 2015, and the WebKit version in it had not been updated since 2012.

Protect the container from unsafe input

The project warns: “Do not use wkhtmltopdf with any untrusted HTML – be sure to sanitize any user-supplied HTML/JS, otherwise it can lead to complete takeover of the server it runs on!” Do not pass arbitrary user markup or scripts to the renderer without appropriate sanitization and isolation.

  • Run conversion with least privilege and limit what the process can access.
  • Keep untrusted input away from sensitive files, credentials, and services; use suitable process and container isolation.
  • Consider mandatory access controls such as AppArmor or SELinux, which the project specifically suggests.

Troubleshoot common container failures

Symptom Likely cause What to check
Executable fails to start or reports a missing library The package does not match the image’s distribution or architecture, or a runtime dependency is absent. Choose the matching package, inspect its documented dependencies, and install them in the image. Pay particular attention to musl-versus-glibc compatibility on Alpine.
Text is missing or the PDF layout differs from expectations Required fonts or font configuration are missing or point to the wrong paths. Install the document’s fonts and the required fontconfig/freetype runtime components; use the paths documented for the selected package.
Headers, footers, or multi-object output do not behave as expected The installed build may not include patched Qt, or options may be placed in the wrong part of the command. Check wkhtmltopdf --version, confirm build capabilities, and follow the global-option and per-object ordering in the command documentation.
The PDF is missing after the container exits The output was written only to the container’s disposable filesystem. Write to a mounted host directory or application-managed storage.
Rendering fails for a document that works on a developer machine The container may differ in package build, libraries, fonts, or runtime paths. Test the exact image used in deployment and compare its binary, dependencies, font configuration, and input access with the working environment.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

When to choose a different renderer

wkhtmltopdf is a legacy rendering choice because its Qt/WebKit foundation is old. Assess the renderer against the security and maintenance needs of your workload, the CSS and JavaScript your pages use, container package availability, and document features such as covers, headers, footers, and tables of contents.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The project suggests WeasyPrint or the commercial tool Prince for report generation from HTML you control. For sites that depend on dynamic JavaScript, it suggests Puppeteer or one of its wrappers. These are the project’s suggestions, not an independent ranking; choose based on your input trust model and rendering requirements. See its status guidance.

Best Value
Docker Container Linux Devops Programming Coding T-Shirt
  • Docker, Docker Swarm, Docker Compose, Programmer, Developer, Coding, Programming, Software Engineer, Code, DevOps, Deploy, Deployment, Kubernetes, Salt, Puppet, Chef, Terraform, Container, AWS, Azure, Cloud, Geek, Funny, Computer, Software, Tech, IT
  • Integration, Scrum, Compile, Compilation, Science, Bug, Debug, Python, Linux, Java, Javascript, Scala, Dotnet, Kotlin
  • Lightweight, Classic fit, Double-needle sleeve and bottom hem

Or skip the browser setup

If your task is to capture a website as an image or PDF rather than run wkhtmltopdf inside your own container, ScreenshotNeo provides a screenshot API and MCP server. Its one-call API example in cURL is:

curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp

See the ScreenshotNeo API documentation for request options. Cookie banners, newsletter popups, and chat widgets are removed before capture; bot checks, blank pages, and failed loads are never billed. An MCP server lets AI agents take screenshots. The free plan includes 1,000 screenshots a month with no card, and paid plans start at $5 for 3,000. Sign up for free.

Frequently Asked Questions

Does wkhtmltopdf need an X server in Docker?

No. The upstream project describes wkhtmltopdf as headless, so a display service is not required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Is wkhtmltopdf safe for arbitrary user-submitted HTML?

No. The project explicitly warns against processing untrusted HTML or JavaScript without sanitization and isolation.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Leave a Reply

Your email address will not be published. Required fields are marked *

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

More from the Wire

  1. World desk4 min
    How to Spot an AI Voice Scam Before Sending MoneyDon’t rely on how a caller sounds. Pause, call back through a known number, and verify the emergency with another trusted person before sending money.
  2. Mountain View desk4 min
    Google’s SynthID Detector: How to Check AI-Generated Images, Video and AudioGoogle’s SynthID Detector looks for an embedded watermark in supported images, video and audio. Here is what its results do—and do not—show.
  3. Redmond desk20 min
    How to create a link to File or Folder in Windows 11Windows 11 gives you several ways to point to a file or folder without moving or duplicating it. You can create a desktop shortcut,…
Recommended PC Tool
Recommended PC Tool
Windows Errors? Fix Them Before They SpreadFree repair scan
Crashes, No Sound, or Screen Glitches?Free driver scan

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.