← Back to Open-Source PDF Software

Open-Source PDF Driver Software

Automates or shells out to a separate standalone program or browser rather than linking it in-process

21 tools

Java

Apache Tika

CliDriverLibraryServer

Content-analysis toolkit that detects file types and extracts text and metadata from over a thousand file formats (including PDF, DOCX, PPTX, XLSX) through a single parsing interface; supports OCR (via Tesseract), language detection, named-entity recognition, and parsing of embedded documents/attachments. Available as a Java library, CLI (tika-app), or REST server (tika-server).

Tested
Perl

App::pdfsize

CliDriver

Thin CLI wrapper that reports a PDF's page dimensions by chaining three existing tools together rather than parsing the PDF itself: extracts the first page with pdftk, converts it to JPEG via ImageMagick, then measures the resulting image with imgsize. A small, single-purpose utility for scripts that just need a page's width/height without pulling in a full PDF-parsing library dependency.

Stale
PHP

browsershot

DriverLibrary

PHP package that drives headless Chrome (via Puppeteer, run through a small Node.js bridge script) to convert a URL, HTML string, or local HTML file into a PDF or image, getting genuine modern browser rendering rather than a PDF-specific rendering engine's approximation. Can also extract the rendered HTML body after JavaScript execution completes and list every network request the page triggered — useful for debugging what a page actually loaded before capture.

Go

docconv

CliDriverLibraryServer

Go library, CLI, and HTTP service that converts PDF, DOC, DOCX, XML, HTML, RTF, ODT, Pages, and image files to plain text plus metadata (as JSON), aiming to be a single conversion entry point across many document formats rather than a PDF-specific tool. Optional OCR support (via Tesseract, enabled with the `ocr` build tag) handles image-based input. Its multi-format scope suits ingestion pipelines that need to normalize mixed document types into plain text.

Stale
Ruby

Gimli

CliDockerDriver

CLI tool that converts GitHub-Markup-supported markup files (Markdown, Textile, etc., except roff) to PDF via wkhtmltopdf: embeds images (local/relative/remote), CodeRay syntax highlighting with a GitHub theme, custom CSS, Jekyll front-matter stripping, cover-page generation, direct wkhtmltopdf option passthrough (TOC, page numbering), and Docker support.

Stale
Ruby

Grover

DriverLibraryPlugin

Ruby gem that uses Puppeteer/headless Chromium (or Firefox) to convert URLs, inline HTML, local files, or Rails view templates into PDF, PNG, or JPEG: configurable page layout/margins/viewport, cookies/headers, CSS/JS injection, cover pages, HTTP basic auth, remote-browser connections, wait conditions (network idle, element visibility), and Rack middleware for URL-extension-triggered conversion.

Ruby

Kitabu

CliDriver

Ruby framework that converts Markdown (with ERB templating) into PDF (via Prince XML), EPUB, Mobi, and HTML e-books: auto-generated tables of contents from headings, Rouge syntax highlighting, custom @font-face fonts, book-layout stylesheets per format, frontmatter metadata/variables, and pre/post-render content hooks.

Stale
PHP

markdown-resume

CliDockerDriver

CLI/Docker tool that converts a Markdown resume into a responsive HTML5/CSS3 page and a matching PDF (rendered via wkhtmltopdf), with selectable visual themes and a live-reload watch mode for editing. Also generates word-frequency stats analysis of the resume content, a distinctive extra not found in most other Markdown-to-resume tools in this directory. Outputs a single self-contained HTML file with embedded styles alongside the PDF.

Stale
JavaScript

markdown-resume.js

CliDriver

CLI tool (`md2resume`) that converts a Markdown resume into both a responsive HTML page and a PDF version, rendering the PDF via wkhtmltopdf under the hood. Includes a watch mode for live-reload editing while writing the resume, plus Docker support for running it without a local wkhtmltopdf install. One of several Markdown-to-resume tools in this directory (see also Kitabu, Gimli) built around the same 'write once, get HTML and PDF' workflow.

Stale
Python

OCRmyPDF

CliDriverLibrary

Adds a searchable OCR text layer beneath page images and produces a validated PDF/A file: deskews crooked pages, optionally cleans images pre-OCR, optimizes/compresses images, recognizes 100+ languages via Tesseract, rotates misrotated pages, edits output metadata, parallelizes across CPU cores, and processes multi-thousand-page files in place.

Tested
PHP

pdf-to-image

DriverLibrary

Converts PDFs to JPG, JPEG, PNG, or WebP images via ImageMagick and Ghostscript under the hood: render specific pages or all of them, control output quality/DPI/dimensions/background color, read page count and page dimensions, and handle password-protected PDFs. Requires ImageMagick 7 specifically (not the older ImageMagick 6 many systems still ship), since it relies on API changes introduced in that major version.

Ruby

PDFKit

DriverLibrary

Ruby gem that generates PDFs from HTML+CSS via wkhtmltopdf (WebKit rendering): converts HTML strings, URLs, or files; attaches stylesheets; passes cookies; configures default/global wkhtmltopdf options; and provides Rack/Rails middleware for `.pdf`-suffixed routes with forced-download support.

Stale
PHP

phpgearbox/pdf

DriverLibrary

Generates PDFs two ways from the same package: DOCX templating (variable substitution like `${FOO}`, block cloning, table row duplication, then converted to PDF) for template-driven document generation, or direct HTML-to-PDF conversion via PhantomJS for cases where a DOCX template isn't the right fit. The DOCX-templating path is the more distinctive of the two, letting non-developers design the template layout directly in Word.

DepreciatedStale
Python

Python-PDFKit

DriverLibrary

Python wrapper around wkhtmltopdf: converts HTML from URLs, files, or strings (single or multiple at once) to PDF, with configurable wkhtmltopdf options, TOC generation, cover pages, external CSS, and HTML meta-tag-based settings.

DepreciatedStale
JavaScript

scissors

Driver

Node.js wrapper around PDFtk, Ghostscript, and ImageMagick for PDF manipulation: split/select/reorder/reverse pages, filter even/odd pages, join multiple PDFs, rotate (90/180/270/360°), crop (noted as unreliable), extract text and embedded images, extract metadata/properties, and render pages to PNG at a given DPI.

Stale
JavaScript

Serverless LibreOffice

Driver

Runs a precompiled LibreOffice binary inside AWS Lambda to convert documents to PDF (and between other office formats) at low cost, with Terraform examples, a Node.js Lambda handler (with S3 integration), and a Docker setup for compiling LibreOffice yourself.

Stale
PHP

Snappy

DriverLibrary

PHP wrapper around wkhtmltopdf/wkhtmltoimage that generates PDFs or image snapshots/thumbnails from URLs or HTML, merges multiple URLs into a single PDF, supports XSL-based tables of contents, and passes through wkhtmltox options (page size, margins, cookies, JS); includes Symfony, Laravel, and Zend Framework integrations.

Scala

sPDF

DriverLibrary

Scala wrapper around wkhtmltopdf that generates PDFs from HTML/CSS/JS: accepts input as files, streams, URLs, Scala XML elements, or raw strings; writes to files or output streams; supports wkhtmltopdf's extended parameters (orientation, page size, margins); referenced images/stylesheets; async conversion via Scala `Future`; and a `WrappedPdf` mode for headless environments (e.g. via xvfb-run).

Stale
JavaScript

textract

CliDriverLibrary

Node.js module (CLI + API) that extracts text from HTML, PDF, DOC/DOCX, ODT, RTF, XLS/XLSX/XLSB/XLSM, CSV, ODS, PPTX/ODP, XML, Markdown, EPUB, and image formats (PNG/JPG/GIF via Tesseract OCR); wraps external tools (pdftotext, antiword, tesseract, unrtf) and supports password-protected PDFs and configurable OCR language.

Stale
Python

Unstructured

DriverLibrary

Open-source ETL library that converts complex documents (including PDFs) into clean, structured data for LLM ingestion: PDF text extraction, OCR on scanned pages (via tesseract-ocr/poppler-utils), document layout detection, and partitioning into logical elements via a single `partition()` auto-detection function.

Ruby

Wicked PDF

DriverLibraryPlugin

Rails plugin that uses wkhtmltopdf to render standard HTML views (or raw HTML/URLs/files) as PDF, avoiding a specialized PDF DSL: `format.pdf` controller responses, saving/emailing PDFs, CSS styling and JS execution, custom headers/footers, Rack middleware for `.pdf`-suffixed URLs, and an HTML debug-preview mode.