← Back to Open-Source PDF Software

Open-Source PDF Software Capable of Rendering PDF Previews

Render/rasterize pages for viewing or thumbnails

10 tools

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.

Java

Flying Saucer

Library

Renders 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.

Java

OpenPDF

Library

PDF 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.

Tested
JavaScript

PDF.js

Library

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.

Tested
C

PdfiumViewer

Library

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.

DepreciatedStale
Python

pdfplumber

Library

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.

Tested
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

PyMuPDF

BindingsLibrary

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.

JavaScript

React-PDF

Library

Displays 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.)

Ruby

Ruby/Poppler

BindingsLibrary

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