← Back to Open-Source PDF Software

Open-Source PDF CLI Software

Standalone command-line executable, invokable from any language via a subprocess

74 tools

C++

AbiWord

CliGui

Cross-platform word processor whose CLI conversion mode (`abiword --to=txt`) doubles as a lightweight PDF text-extraction tool: imports a PDF's text content and exports it to plain text, HTML, ODT, DOCX, and other formats supported by its plugin system. Originally built as a free, cross-platform alternative to Microsoft Word, with PDF import/export handled through its own document-filter architecture rather than a dedicated PDF engine. Well-suited for batch format conversion where PDF is one of several formats needed.

Tested
Java

Apache PDFBox

CliLibrary

Java library and CLI toolset covering PDF creation from scratch (with embedded fonts and images), Unicode text extraction, splitting and merging, form field extraction and filling, PDF/A-1b validation via its Preflight module, rendering pages to PNG/JPEG, printing via the Java printing API, and digital signing. The de facto standard Java PDF library, used as the underlying engine behind numerous other tools in this directory (PDFsam, PDFLayoutTextStripper, PdfBox-Android, and more).

Tested
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
Ruby

Asciidoctor PDF

Cli

Native PDF converter for AsciiDoc (the `pdf` Asciidoctor backend), converting directly to PDF without an intermediate DocBook/LaTeX step: style/layout control via YAML theme files, syntax highlighting, tables, images, and SVG. Built on the Prawn gem and its extensions (prawn-svg, prawn-table, prawn-icon).

Go

Athenapdf

CliDockerServer

Docker-packaged drop-in alternative to wkhtmltopdf: a CLI (`athenapdf`, built on Electron) for direct HTML-to-PDF conversion with an 'aggressive mode' that strips page clutter like ads and navigation before rendering. Also ships a `weaver` HTTP microservice (written in Go) for running conversions as a scalable, horizontally-deployable service on Kubernetes or AWS ECS. Built on Electron/Chromium rather than the discontinued Qt WebKit engine wkhtmltopdf itself relies on.

DepreciatedStale
JavaScript

backslide

Cli

CLI tool that builds HTML slide presentations from Markdown (via Remark.js), with a live-reload dev server, Sass-based custom templates, static-site/self-contained-HTML export, presenter-notes stripping, and PDF export through DeckTape integration.

Stale
Python

Calibre

CliGui

E-book library management application built around organizing, converting, and reading large personal e-book collections; its bundled `ebook-convert` CLI happens to double as a capable PDF-to-plain-text (and PDF-to-other-e-book-format) converter, alongside dozens of other supported formats. Not a PDF-specific tool — PDF is just one of many formats its conversion pipeline handles — but a genuinely useful one when PDF-to-text conversion is needed as part of a broader e-book workflow.

Tested
Python

Camelot

CliLibrary

Extracts tables from text-based PDFs (not scanned documents) into pandas DataFrames, exportable to CSV/JSON/Excel/HTML/SQLite, with accuracy/whitespace quality metrics and a CLI. Five parsing strategies: `lattice` (ruled tables), `stream` (whitespace-based), `network`/`hybrid` (text-alignment), and an optional neural `ml` parser (Table Transformer) for hard borderless cases.

OCaml

Caradoc

Cli

OCaml parser and validator for PDF file structure, built by the French national cybersecurity agency (ANSSI) specifically for security-focused PDF analysis rather than general-purpose PDF processing. Offers CLI analysis commands and an interactive console for exploring a PDF's object graph directly, aimed at spotting structural anomalies (malformed objects, suspicious cross-references) that a normal PDF reader would silently paper over or reject outright.

DepreciatedStale
Python

Code2pdf

Cli

CLI tool and Python module that converts source code files to PDF with syntax highlighting across 23+ selectable style themes (matching Pygments' theme library), optional line numbering, and configurable paper sizes from A2 down to A5. Aimed at producing readable, printable PDF snapshots of source code — for code review handoffs, archival, or printing — rather than any PDF-reading or extraction capability.

Stale
OCaml

Coherent PDF (cpdf)

Cli

Command-line PDF manipulation toolkit: split, merge, and extract pages while preserving bookmarks; encrypt/decrypt (AES 128/256); scale, rotate, crop, and flip pages; stamp text, watermarks, and page numbers; manage annotations, metadata, and file attachments; rasterize pages to images; and produce PDF/UA-tagged output.

Tested
LaTeX

ConTeXt

Cli

General-purpose document processor built on top of TeX, alongside LaTeX one of the two major TeX-based typesetting systems, with its own markup syntax and a strong focus on programmable, highly-configurable document layout. Used by pandoc as one of its PDF-producing backend engines, alongside pdflatex/xelatex/lualatex. Particularly favored for complex technical documents needing fine-grained layout control that LaTeX's more macro-package-driven approach makes harder to achieve directly.

JavaScript

DeckTape

Cli

Puppeteer-based (headless Chrome) command-line tool that exports HTML slide presentations to high-quality PDF, with native support for 13 frameworks (reveal.js, impress.js, remark, Bespoke.js, deck.js, etc.) plus a generic mode for others; can also capture slides as PNG/JPG images, export slide ranges, and set PDF metadata.

C++

diff-pdf

CliGui

Compares two PDF files page-by-page and reports whether they differ, either as a simple exit code for scripting or, with `--output-diff`, a new PDF that visually highlights every difference between the two inputs. Also offers a GUI mode for interactive side-by-side comparison with synchronized zoom and page-shifting, useful for spotting translation-only or formatting-only changes between two revisions of the same document. Commonly used in CI pipelines to catch unintended visual regressions.

Python

digital-born-pdf-scanner

Cli

CLI tool that checks whether PDF files are 'born-digital' (created directly from a digital source, with a real text layer) versus scanned images with no underlying text — a distinction that matters before running OCR or text extraction on a large batch of unknown-provenance PDFs. Scans single files or whole directories recursively, reporting results as TSV/CSV for easy filtering in a spreadsheet or further scripting.

Stale
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
Python

Docling

CliLibrary

Document-conversion toolkit that parses PDFs (and Office/image formats) into a unified structured representation, with layout analysis, OCR (EasyOCR by default), table structure recognition, and optional vision-language-model image description; exports to Markdown, HTML, or JSON.

Java

Docs to PDF Converter

CliLibrary

Standalone CLI tool and embeddable Java library that converts DOC, DOCX, PPT, PPTX, and ODT files to PDF without requiring a LibreOffice or Microsoft Office installation as a dependency — useful in server environments where installing a full office suite isn't practical. PPT/PPTX slides are converted to PDFs with each slide embedded as a rendered PNG image rather than reconstructed as native PDF content, preserving visual fidelity at the cost of the text no longer being selectable.

DepreciatedStale
Ruby

Docsplit

CliLibrary

CLI utility and Ruby library that extracts searchable UTF-8 plain text from documents, generates page images and thumbnails in any format, splits documents into single-page or full PDFs, and extracts metadata (title, author, page count). Built by DocumentCloud for processing large volumes of source documents in journalism/investigative-reporting workflows, wrapping several underlying tools (Poppler, ImageMagick, Tesseract) behind one consistent CLI.

JavaScript

Electron-PDF

Cli

CLI tool and Node.js API (built on Electron/Chromium) that converts URLs, HTML files, or Markdown files to PDF or PNG, with custom CSS injection, page size/orientation/margin control, print-background support, custom request headers, and batch/concurrent job handling.

C

Ghostscript

CliLibrary

PostScript and PDF interpreter/renderer from Artifex — the reference engine that many other PDF tools build on or shell out to under the hood. Converts PostScript and PDF to raster images, plain text, DOCX, PCL, and XPS; compresses PDFs while preserving visual quality; converts to and validates against the PDF/A archival standard; and adds a searchable OCR text layer to scanned pages. Also handles imposition (N-up page layout), ICC color management, and ZUGFeRD/Factur-X e-invoicing embedding.

Tested
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
C#

Gios.PSM

CliGuiLibrary

Free, portable utility for splitting and merging PDF files, distributed as a reusable library, a console tool, and a GUI — pick whichever interface fits a given workflow. Also converts JPG images directly into PDF pages. Requires no installation, running as a self-contained portable executable, which is its main draw over heavier split/merge alternatives in the same niche.

Stale
Ruby

HexaPDF

CliLibrary

PDF library and CLI (positioned as a pdftk/Poppler-utils alternative): creates PDFs from scratch with vector drawing, JPEG/PNG/PDF image embedding, and TrueType text with subsetting; a high-level document composition engine (automatic layout, text flow, page breaks, lists, multi-column, reusable styles); modifies and merges existing PDFs; creates AcroForms with Adobe-like appearances; adds annotations, outlines, and file attachments; extracts metadata/text/images/files; encrypts (incl. PDF 2.0 AES-256) and digitally signs; and optimizes file size with object validation.

Tested
Ruby

InvoicePrinter

CliLibraryServer

Pure-Ruby (no external system libraries) invoice-PDF generator, usable as a library, CLI, or server: A4/US Letter formats, purchaser/provider info boxes with addresses and tax IDs, SWIFT/IBAN payment details, itemized tables (description/quantity/price/tax/totals), automatic page numbering, customizable labels, custom fonts/logos/backgrounds/stamps/signatures/QR codes, and JSON-driven invoice data — fast enough for real-time request handling.

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
LaTeX

latexmk

Cli

Perl script that automates the process of generating a LaTeX document by running pdflatex, xelatex, or lualatex (plus bibtex/makeindex for bibliographies and indexes) the correct number of times — LaTeX often needs 2-3 passes to resolve cross-references, tables of contents, and citations correctly, and latexmk figures out exactly how many are needed rather than requiring the author to guess. Also offers a continuous-preview mode that watches source files and reruns automatically on changes.

C++

LibreOffice

CliGui

Full office suite (Writer, Calc, Impress, Draw) that doubles as a batch PDF-conversion tool via its headless CLI mode (`--headless --convert-to`): imports PDF content through the `writer_pdf_import` filter and exports it to plain text, ODF, and dozens of other document formats it already supports natively. Since it's a general office suite rather than a PDF-specific tool, conversion fidelity depends on how cleanly a given PDF's layout maps back onto Writer's own document model.

Tested
LaTeX

LuaLaTeX

Cli

TeX engine that combines LaTeX with the LuaTeX extension, allowing Lua scripts to be embedded directly in the typesetting process for programmatic control over layout, font handling, and document generation that plain LaTeX macros can't easily express. Ships as part of standard TeX Live/MiKTeX distributions and is one of pandoc's selectable PDF-producing backend engines. Preferred over pdfLaTeX when a document needs Lua-level scripting or more modern font/Unicode handling.

Python

malicious-pdf

Cli

Generates 48+ test PDF files for security research: phone-home/callback detection, SSRF, XSS injection, NTLM credential theft via UNC paths, data exfiltration, and XXE injection, with four levels of payload obfuscation and integration with Burp Collaborator/Interact.sh. For authorized penetration testing, bug bounty research, and security product validation only.

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

MarkItDown

CliLibrary

Converts PDFs, Office documents, images, audio, HTML, and other formats to Markdown for use as LLM input; ships both a CLI and a Python library, and can keep embedded images as base64 data URIs instead of discarding them.

Tested
Python

MinerU

CliLibraryServerWeb App

Converts PDF, DOCX, PPTX, XLSX, images, and web pages into Markdown or JSON: strips headers/footers/page numbers while preserving structure, converts formulas to LaTeX and tables to HTML, OCRs scanned/garbled PDFs in 109 languages, handles single/multi-column and complex layouts (incl. cross-page table merging), and extracts images with captions. Offers CLI, FastAPI, and Gradio WebUI, plus Python/Go/TypeScript SDKs; builds on PDF-Extract-Kit's models.

C

MuPDF

CliGuiLibrary

Lightweight, fast C library, desktop viewer, and CLI toolset for PDF, XPS, and e-book formats, built by Artifex around the same rendering core used in Ghostscript. Renders pages and extracts text/images/metadata/structured content; creates, splits, merges, and compresses PDFs; adds annotations (highlights, stamps, shapes); permanently redacts content; and digitally signs documents. Converts between PDF, SVG, PNG, HTML, and PostScript, and embeds into web pages and native apps via its library bindings.

Tested
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
Ruby

Origami

Cli

Pure-Ruby framework for parsing, modifying, and creating PDF files, with lazy on-demand parsing: compression filters with predictors, RC4/AES encryption (including Revision 6), digital signatures and usage rights, file attachments, AcroForm/XFA forms, and object streams. Ships CLI tools including `pdfcop` for detecting dangerous PDF content (not a full malware-analysis/forensics suite by the author's own description) plus decompression, decryption, encryption, resource-extraction, and metadata-inspection utilities.

Stale
JavaScript

pagedjs-cli

Cli

Command-line interface for Paged.js, a free and open-source library that paginates HTML/CSS content the way a browser would lay out a printed page, then produces print-ready PDFs from the result. Built specifically for CSS Paged Media use cases (page counters, running headers/footers, cross-references) that plain headless-browser screenshot-to-PDF pipelines don't handle correctly. Runs Paged.js inside a headless Chromium instance under the hood.

Haskell

Pandoc

Cli

Universal document converter between Markdown, HTML, LaTeX/ConTeXt, DOCX/RTF/ODT, EPUB, man/ms roff, DocBook, JATS, TEI, Jupyter notebooks, PowerPoint/reveal.js/Beamer slides, and dozens more formats. Uses external PDF-producing engines (context, latexmk, lualatex, pdflatex, xelatex, wkhtmltopdf, weasyprint, prince, pagedjs-cli, tectonic, pdfroff) to convert into PDF, and preserves metadata, footnotes, tables, math, syntax highlighting, and citations/bibliographies (via CSL) across formats.

Python

pdf-parser

Cli

Part of the Didier Stevens Suite of security tools: parses a PDF document to identify and inspect its fundamental elements/objects, with an option to search for specific strings within indirect objects — used for PDF malware analysis and forensic triage. Public domain.

C++

pdf-text-extraction

Cli

Command-line tool for extracting text and tabular data from PDF files, with table output written directly to CSV for further processing. Built as a focused, single-purpose alternative to heavier PDF libraries for when all that's needed is getting content out of a document, without pulling in a full parsing/rendering engine as a dependency. Written by the same author as the PDF-Writer/HummusJS engine, sharing some of its low-level PDF parsing code.

PHP

pdf-to-text

Cli

Thin PHP wrapper around the `pdftotext` CLI binary (from Poppler) that extracts text from a PDF, with support for a custom binary path, password-protected PDFs, and passthrough of `pdftotext`'s own options (e.g. layout preservation). Requires `pdftotext` installed as a system binary — this package is purely a PHP-friendly API over it, not an independent text-extraction implementation.

Python

pdf2docx

CliGuiLibrary

Converts PDF files to DOCX (Word) format, preserving formatting and layout — fonts, positioning, images — rather than dumping plain text into a Word document, and extracts tables as genuine Word tables rather than flattened text. Offers both a CLI and a GUI, covering scripted batch conversion and one-off interactive use. A common need for taking a PDF that needs further editing back into an editable Word document.

JavaScript

pdf2json

CliLibrary

Node.js library/CLI (built on Mozilla's pdf.js engine) that converts PDFs to JSON: extracts text (with position, rotation, styling, color, and font metadata), page layout, and interactive AcroForm field data (text inputs, checkboxes, radio buttons, dropdowns, signature fields); also outputs plain-text files, and runs as a REST service or stream-based parser.

Tested
Python

Pdfalyzer

Cli

PDF forensics/analysis tool that visualizes a PDF's internal tree-like object structure as large, color-coded diagrams, scans embedded binary streams for suspicious/malicious content using YARA rules (via the companion Yaralyzer), and force-decodes suspicious font binaries.

Go

pdfcpu

CliLibrary

Go PDF processor (CLI + library) supporting PDF up to 2.0 (ISO 32000-2): validate, optimize, split, trim, and merge PDFs; encrypt/decrypt; resize, rotate, and crop pages; extract/manipulate images, fonts, and metadata; manage attachments and portfolios; validate, report, and remove digital signatures; add/remove stamps and watermarks; process forms, bookmarks, and annotations; and generate booklets, N-up/N-down layouts, grids, and posters.

Tested
LaTeX

pdfLaTeX

Cli

TeX engine (pdfTeX running in LaTeX mode) that produces PDF output directly from LaTeX source, instead of the older DVI-then-convert-to-PostScript-then-to-PDF pipeline classic TeX used. The most common default LaTeX engine in TeX Live/MiKTeX distributions and the one most LaTeX tutorials assume, though XeLaTeX and LuaLaTeX have since become preferred for documents needing modern font handling or Unicode input pdfLaTeX doesn't natively support.

Python

pdfly

Cli

Pure-Python CLI (companion to pypdf) with commands including 2-up/booklet page layout, cat (extract/merge pages), check-sign (verify signatures), compress/uncompress, extract-annotated-pages, extract-images, extract-links, extract-text, meta/pagemeta, rm (delete pages), rotate, sign, update-offsets (repair simple PDFs), and x2pdf (convert other formats to PDF pages).

Tested
Python

PDFMathTranslate

CliDockerGuiLibraryPlugin

Translates scientific PDF documents while preserving layout, formulas, charts, tables of contents, and annotations; supports Google Translate, DeepL, Ollama, OpenAI, and other translation backends via CLI, GUI, Docker, or a Zotero plugin, with batch/directory translation and partial-document translation.

Python

pdfmd

Cli

CLI that converts a PDF to Markdown, built as a thin wrapper around PyMuPDF4LLM — the actual conversion logic lives in PyMuPDF4LLM, with pdfmd providing a simple, single-command CLI entry point over it rather than requiring a Python script. A lightweight choice for command-line/shell-script workflows that just need 'PDF in, Markdown out' without writing any Python code.

Tested
JavaScript

pdfme

Cli

TypeScript PDF generation toolkit for Node.js and browsers: generates PDFs from simple JSON templates rather than imperative drawing code, and includes a WYSIWYG template designer plus a PDF viewer component for previewing the result. Also ships CLI tools for template validation, diagnostics, and image-based layout inspection. The template-driven approach suits use cases like invoices or certificates where non-developers need to adjust the layout.

Rust

PDFOxide

BindingsCliLibraryServer

PDF toolkit built around a Rust engine, exposed as native bindings for ~20 languages (Python, JavaScript/TypeScript, Go, C#/.NET, Java, and more), a CLI, and an MCP server for AI-assistant integration: text/character-level and image extraction, form-field reading and filling, Markdown/HTML conversion with heading detection, PDF creation and editing, watermarking, merging/splitting, regex-based search, and metadata access.

Tested
Python

pdfparanoia

CliLibrary

PDF watermark-removal library/CLI targeting academic-publisher watermarks (institution names, personal identifiers, IP addresses, timestamps) for AIP, IEEE, JSTOR, RSC, and SPIE papers; also removes arbitrary user-specified strings from page content and/or XMP/DocInfo metadata, with in-place overwrite support.

C

pdfroff

Cli

Wrapper script bundled with GNU groff (the free reimplementation of the classic Unix `troff` typesetting system) that automates producing a finished PDF from groff source. Transparently handles multi-pass processing — formatting a table of contents and body text separately, then combining them in the correct final order — and post-processes groff's output stream through Ghostscript to produce the finished PDF. Commonly used for man pages and other troff-formatted technical documents that need a polished, paginated PDF alongside their plain-text form.

C#

PDFTK Builder

CliGui

Free Windows GUI front-end for the PDFtk command-line tool, exposing its operations — split, merge, stamp, add page numbers, rotate, edit metadata, manage bookmarks and attachments — through point-and-click dialogs instead of the command line. Aimed at users who want PDFtk's capabilities without writing or remembering CLI invocations, or learning PDFtk's own multi-flag command syntax for routine batch operations.

Stale
Java

PDFtk Server

Cli

Command-line tool to merge, split, and rotate PDFs; fill forms with FDF/XFDF data and flatten them (or generate an FDF stencil from a form's fields); encrypt and decrypt with passwords; add watermarks and stamps; manage bookmarks, metadata, and attachments; repair damaged PDFs; and recompress page streams. The Java-rewritten 'Server' edition of the classic PDFtk command-line tool, maintaining the same CLI interface and command syntax as the original.

Tested
C++

pdftohtml (SourceForge)

Cli

Standalone PDF-to-HTML/XML converter built on Xpdf 2.02's parsing code, producing an HTML or XML rendering of a PDF's text and layout — not to be confused with the same-named `pdftohtml` binary bundled with Poppler, a separate, newer implementation that superseded this project. Distributed only as source and Windows binaries via its old SourceForge project page, with no activity since Xpdf 2.02's era.

Stale
C++

pdftojson

Cli

Command-line tool built on the Xpdf library that extracts per-word text with bounding-box coordinates (top, left, width, height) from every page of a PDF, outputting the result as structured JSON alongside page dimensions and page count. Useful when downstream code needs to know exactly where each word sits on the page — for reconstructing tables, matching form-field positions, or any layout-aware processing that plain-text extraction throws away.

Stale
Java

pdftoxml (SourceForge)

Cli

Data-extraction application that converts PDF files into XML, built on an old snapshot of the JPedal library rather than being independently maintained. An abandoned, CVS/SourceForge-era project with no development activity since — kept here for completeness rather than as a recommended active tool, since Poppler's own `pdftohtml -xml` and similar actively-maintained tools now cover the same ground more reliably.

Stale
Python

PDFx

Cli

CLI tool and Python package that extracts metadata (creation date, creator, page count, producer) and detects references (other PDFs, URLs, DOIs, arXiv IDs) within a PDF, with parallel downloading of referenced PDFs, plain-text extraction, and broken-hyperlink detection; outputs plain text or JSON, and accepts local files or URLs.

Tested
DepreciatedStale
PHP

PHPPdf

Cli

Converts XML (or Markdown) documents to PDF or images (JPEG/PNG via GD/Imagick/Gmagick) with HTML-like tags (div, p, table, headings, lists, images, links); supports auto-breakable/fixed pages, multi-column layouts, headers/footers/watermarks, page numbering, metadata, internal/external links, bookmarks, sticky notes, barcodes (via Zend), simple pie charts, borders, backgrounds, rotation/transparency, and stylesheets; usable via web or CLI, with Symfony2 integration.

Stale
C++

Poppler

CliLibrary

PDF rendering library and command-line suite — a fork of Xpdf that's become the de facto standard PDF engine underlying much of the open-source PDF ecosystem, powering tools like Evince, Okular, and countless downstream wrappers. Ships pdftotext, pdfimages, pdftoppm, pdftocairo, pdftohtml, pdftops, pdfinfo, pdffonts, pdfdetach, pdfattach, pdfseparate, pdfunite, and pdfsig, covering text/image extraction, page rendering, format conversion, metadata, attachments, and signature verification.

Tested
Python

pypdf2xml

Cli

Converts PDF text to XML, built on pdfminer rather than a from-scratch parser; created as an alternative to Poppler's `pdftoxml` specifically because of better handling of CID Type2 font decoding that the Poppler tool got wrong on certain PDFs. Ships three separate CLI utilities — `pdf2xml`, `pdfxml2csv`, and `headerfilter` — covering the conversion itself plus two post-processing steps for turning the XML output into cleaner tabular data.

Stale
JavaScript

Scribe.js

CliLibrary

OCR and text-extraction library for images and PDFs: extracts existing text from text-native PDFs, runs OCR on image-native PDFs/scans, and can insert a text layer into an existing PDF to make it searchable. Usable from the browser, Node.js, or its own CLI; a hosted GUI is available separately at scribeocr.com.

Java

tabula-java

CliLibrary

Table-extraction library (powers the Tabula tool) that pulls tabular data out of PDFs using lattice mode (ruled cell borders) or stream mode (no borders), exporting to CSV, TSV, or JSON; usable as a CLI for batch processing or as a Java API, with support for selective pages, custom extraction areas, and password-protected files.

Tested
Rust

Tectonic

Cli

Modernized, complete, self-contained TeX/LaTeX engine powered by XeTeX and TeXLive, written in Rust with a focus on reproducible builds and not requiring a separate, multi-gigabyte TeX Live installation — it fetches only the packages a given document actually needs, on demand, from a versioned bundle. Used by pandoc as one of its selectable PDF-producing backend engines. Aimed at users who find installing and maintaining a full TeX distribution more friction than the documents warrant.

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

TextRank

Cli

Graph-based keyword/keyphrase extraction and extractive text summarization implementing the TextRank algorithm, exposed via `extract_summary` and `extract_phrases` CLI commands. Operates on plain text files — the README describes no PDF-specific handling, so PDF content needs to be extracted to text by a separate tool first before TextRank can summarize or extract keyphrases from it.

Stale
Java

veraPDF

CliLibrary

Industry-backed, open-source validation library and CLI for checking PDF files against the PDF/A and PDF/UA standards, developed by a consortium including the PDF Association and major archives/libraries specifically to be the reference validator for these standards. Produces a detailed machine-readable validation report identifying exactly which conformance rules a file violates, rather than a simple pass/fail result. Widely used in digital-preservation workflows where formal PDF/A compliance is a hard requirement.

C++

wkhtmltoimage

CliLibrary

Headless command-line tool (and C library) that renders HTML into image files using the Qt WebKit rendering engine, without requiring a display server or window manager — useful for automated screenshot/thumbnail pipelines running on a server. Can capture live URLs or local HTML files, applying the same CSS/JavaScript rendering a real browser would. Shares its rendering engine and codebase with the companion wkhtmltopdf; both are archived and unmaintained, since Qt WebKit itself was deprecated in favor of Chromium-based headless rendering.

DepreciatedStale
C++

wkhtmltopdf

CliLibrary

Headless command-line tool (and C library) that renders HTML into PDF using the Qt WebKit rendering engine, without requiring a display server or window manager — long the default choice for server-side 'print this webpage to PDF' pipelines before headless Chrome existed. Can capture live URLs or local HTML files, applying the same CSS/JavaScript rendering a real browser would. Archived and unmaintained since Qt WebKit was deprecated; numerous language wrappers throughout this directory still drive it as a subprocess.

DepreciatedStale
LaTeX

XeLaTeX

Cli

TeX engine (XeTeX running in LaTeX mode) with native support for Unicode text input and system fonts — TrueType and OpenType — accessed through the operating system's own font layout engine rather than TeX's traditional font metric files. The natural choice for LaTeX documents needing non-Latin scripts, emoji, or any font already installed on the system rather than a TeX-specific font package. One of pandoc's selectable PDF-producing backend engines alongside pdfLaTeX and LuaLaTeX.

Stale
C++

Xpdf

CliGui

PDF viewer plus a full command-line toolset (pdftotext, pdftops, pdftoppm, pdftopng, pdftohtml, pdfinfo, pdfimages, pdffonts, pdfdetach) for viewing PDFs and converting them to text, PostScript, image, or HTML, alongside metadata, image, font, and attachment extraction. The original codebase Poppler itself forked from; poppler-utils has since become the more actively maintained fork of these same tools, but Xpdf continues independent development under its original author.