17 tools
Pure-Python library for reading, creating, and manipulating PDFs, modeling the file as a JSON-like structure of nested lists/dictionaries/primitives for programmatic access — rather than the more common object-oriented page/content-stream abstraction most PDF libraries use. This structural, low-level modeling suits tasks that need direct access to a PDF's actual object graph rather than a higher-level document API. Ships with extensive documentation and example-driven tutorials.
RubyPDF 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.
Fast Node.js module — a native binding around the C++ PDFWriter/PDFHummus engine (also published standalone as PDF-Writer) — for creating, parsing, and manipulating PDF files and streams. Being a native addon rather than a pure-JS implementation, it trades install-time complexity (native compilation) for meaningfully better performance on large documents. Superseded by muhammara, a drop-in replacement built on the same engine with modernized bindings and continued maintenance.
JavaLegacy iText 5: core PDF creation/manipulation library (receiving security fixes only), with add-on modules for PDF 2.0 features (itext-xtra), PDF/A generation/validation (itext-pdfa), and XML/HTML-to-PDF conversion (xmlworker). Also reads existing PDFs via `PdfTextExtractor`. Targets Java 5 compatibility, which blocks upgrading some vulnerable dependencies.
Node.js module for creating, reading, and modifying PDF files and streams — a drop-in replacement for HummusJS, built on the same underlying PDF-Writer/PDFHummus C++ engine but with modernized native bindings and active maintenance where HummusJS itself has stalled. Being a native addon rather than pure JavaScript, it offers meaningfully better performance on large documents than pure-JS PDF libraries, at the cost of requiring native compilation at install time.
JavaPDF creation/manipulation library: creates PDFs from scratch and modifies existing ones (add/remove pages, edit text); HTML-to-PDF conversion (openpdf-html module); text, fonts, graphics, images, and tables; page layout control; encryption and digital signing (via BouncyCastle); text extraction; PDF-to-image rendering (openpdf-renderer); and PDF 2.0 (ISO 32000-2) features including Brotli stream compression.
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.
Dependency-free JavaScript library (works in browsers, Node, Deno, React Native) to create PDFs from scratch or modify existing ones: add/insert/remove/copy pages, draw text (with embedded custom fonts), images (PNG/JPEG), vector graphics and SVG paths; create and fill AcroForm fields (text, checkbox, radio, dropdown) and read/flatten them; embed pages from other PDFs, split and merge documents, add file attachments, and read/set document metadata.
Haskell PDF library supporting on-demand/streaming parsing (without loading the whole file into memory) at both high-level (catalog, page tree, pages) and low-level (xref, trailer, objects, incl. xref/object streams) abstraction; extracts text with exact glyph positions; supports incremental-update editing, basic PDF generation, and partial support for encrypted documents.
PerlPerl module for creating and modifying PDFs: page management (add/insert/import pages, page labels); built-in and embedded (TrueType/OpenType/Type1/bitmap) fonts; image import (GIF/JPEG/PNG/PNM/TIFF); barcode generation (Code128, Code39, EAN-13, QR, Codabar, ITF); spot/device colorspaces and custom color palettes; document metadata; outlines/bookmarks; and viewer preferences/page layout modes.
PerlPerl module for building PDFs by reusing existing pages as templates/backgrounds: adds positioned/rotated text, embeds JPEG images, hyperlinks, and raw PDF operators; supports built-in and embedded TrueType (UTF-8) fonts, hierarchical bookmarks, attached/embedded JavaScript actions, form field value assignment, and content stream compression.
JavaAndroid port of Apache PDFBox for reading and manipulating PDF documents on-device, without needing a server round-trip for PDF processing. Handles the same core PDFBox operations — text extraction, content editing, image handling — adapted to run within Android's runtime constraints, with optional JPX/JPEG2000 image support via the separate JP2Android library. Used where an Android app needs real PDF manipulation capability, not just viewing.
PDF editing library, GUI application, and command-line tools for viewing and directly editing the internal structure of PDF documents — raw objects, streams, and cross-reference tables — rather than just visual page content. Particularly useful for inspecting and repairing malformed or non-standard PDFs that better-behaved editors refuse to open. A Flatpak build is available for running it on modern Linux distributions despite the project itself being unmaintained since 2020.
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.
C++17 library for reading, writing, and modifying PDFs: full-featured low-level Unicode text extraction (with CJK support), text drawing with automatic CID encoding and font subsetting, incremental-update saving, PAdES-B digital signing (RSA/ECDSA, async), and PDF/A and PDF/UA compliance preservation when adding annotations or form fields. Does not yet render PDF content, and text shaping/kerning is limited.
Pure-Python PDF library: split, merge, crop, and transform pages; add passwords/encryption and decrypt (with optional AES support); read and add metadata; extract text; read and create annotations; and attach custom data/viewer settings. Companion CLI tool `pdfly` offers additional command-line operations.
JavaSelf-hostable PDF toolkit with 50+ tools: edit, merge, split, sign, redact, and convert PDFs; OCR scanned pages; compress files; validate signatures; apply watermarks; and automate workflows via no-code pipelines, a REST API, and webhooks. Offered as a browser-based UI, desktop client, or self-hosted server (incl. air-gapped deployment).