10 tools
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.
JavaRenders well-formed XML/XHTML using CSS 2.1 layout/formatting to Swing panels, images, or PDF (via an OpenPDF-based renderer, or by delegating to a headless Chrome shell for modern HTML5/CSS3 support); also offers SWT output for Eclipse-based apps.
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.
Community-driven, web-standards-based PDF engine maintained by Mozilla and built into Firefox as its native PDF viewer. Renders pages to canvas for in-browser viewing and exposes a document API (incl. `getTextContent()`) for reading page content programmatically. Ships as both an embeddable viewer UI and the underlying `pdfjs-dist` library, usable standalone in Node for headless processing without a browser.
WinForms control wrapping Google's PDFium rendering engine (the same engine behind Chrome's built-in PDF viewer), for embedding PDF viewing directly inside .NET desktop applications. Split into three cooperating pieces: `PdfDocument` for loading and querying page/document data, `PdfRenderer` for rendering pages with zoom and scroll support, and `PdfViewer` for a ready-made toolbar UI covering printing and saving. No longer maintained.
Extracts text (with layout preservation, tolerance settings, regex search, and word bounding boxes), detects and extracts tables (via ruling-line or text-alignment strategies), and provides low-level access to characters, lines, rectangles, curves, images, annotations, hyperlinks, and form fields, with page cropping/filtering, password-protected PDF support, and visual debugging (page-to-image rendering with overlay annotations, incl. Jupyter display). Does not generate, modify, or OCR PDFs.
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.
Python bindings for MuPDF covering text extraction (plain, rich dictionary with font/size/color/bbox, HTML/XML, raw blocks, table-to-Markdown); embedded image extraction and high-DPI page rendering to Pixmaps; Tesseract-based OCR (100+ languages); reading/writing annotations (highlights, notes, stamps, ink) and redactions (with permanent apply); AcroForm reading and filling; page insert/delete/reorder, merge/split, and metadata editing; PDF creation and Markdown-to-PDF conversion; password protection/RC4/AES encryption; hyperlink and cross-reference handling; and outline/bookmark read-write.
JavaScriptDisplays existing PDFs in React apps (built on PDF.js): renders pages via `<Document>`/`<Page>` with canvas, custom, or no rendering; shows outline/table of contents and thumbnails; selectable text and annotation/link layers; form rendering; page rotation and zoom; password-protected PDF handling; JPEG2000 and non-Latin (cMap) support. (Complementary to @react-pdf/renderer, which creates PDFs rather than displaying them.)
RubyRuby-GNOME project's binding of poppler-glib, exposing Poppler's PDF rendering and parsing capabilities — text/image extraction, page rendering, metadata — to Ruby through GObject Introspection bindings rather than a Ruby-native reimplementation. Requires the system poppler-glib library installed separately, since this package is purely the Ruby-side binding over it. Gets Poppler's actual rendering fidelity, at the cost of that native dependency.