← Back to Open-Source PDF Software

Open-Source PDF Software Capable of PDF Print Layout and Typesetting

Paginate/typeset content for print output

19 tools

Java

Apache XML Graphics FOP

Library

Print formatter driven by XSL Formatting Objects (XSL-FO): reads an FO tree (often produced via XSLT from semantic XML) and renders it to PDF (its primary target, targeting the PDF 1.4 spec), plus PostScript, PCL, AFP, PNG, RTF, TXT, and other outputs. Handles multi-page tables, footnotes, static page regions, and external graphics; usable standalone, embedded, via servlet, or via an Ant task.

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

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

LaTeX

CV Boilerplate

Library

LaTeX/Pandoc template that separates CV content (stored in a YAML file) from a LaTeX presentation template, compiling to a professionally typeset PDF via a makefile; supports configurable fonts, sizes, language/hyphenation, and margins.

Stale
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

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

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
LaTeX

Invoice Boilerplate

Library

LaTeX/Pandoc/XeTeX template that generates invoice PDFs from a YAML data file (`details.yml`), auto-calculating line totals and VAT via the `spreadtab` package, with configurable fonts/margins/currency/language, optional embedded signature image, and optional custom letterhead PDF layered underneath.

Stale
LaTeX

Letter Boilerplate

Library

LaTeX/XeTeX/Pandoc template that generates letter PDFs from a Markdown file with a YAML header (recipient, date, subject); supports custom fonts, sizes, margins, language/hyphenation, an auto-embedded signature image, and an optional custom letterhead PDF background, built via a makefile.

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.

Perl

PDF::Template

Library

Perl module that generates PDFs from XML templates (an HTML::Template-style approach) using PDFlib as the rendering backend, with precise element positioning, parameter substitution with hierarchical scoping, automatic page breaks accounting for headers/footers, and one header/footer per page definition.

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

Python

pdfrw

Library

Reads and writes PDFs: subset/merge/rotate pages, modify metadata, build reusable Form XObjects, N-up and booklet layouts, watermarking (overlay/underlay), image and Form-XObject extraction, poster-sized output, and splitting 2-up PDFs; integrates with ReportLab (embedding existing PDF content into newly generated documents) and rst2pdf. No encryption/decryption support, and limited compression-filter support (external tools like pdftk needed for full decompression).

Stale
Python

rinohtype

Library

Pure-Python, batch-mode document processor that renders reStructuredText or CommonMark to PDF (and can run as a Sphinx builder in place of LaTeX): page layout with columns, running headers/footers, floats and footnotes; auto-generated TOC and index; auto-numbered/cross-referenced headings, figures, and tables; OpenType/TrueType/Type1 fonts with kerning/ligatures/small-caps (incl. 1000+ bundled Google Fonts); embedded PDF/PNG/JPEG images with preserved transparency/color profiles; and optional math typesetting.

C++

Scribus

Gui

Free, open-source desktop publishing (DTP) application for laying out newspapers, brochures, newsletters, posters, and books, with professional-grade PDF export: PDF/X-3 and PDF/X-4 support, native PDF 1.6 output with embedded OpenType fonts, transparency and encryption, and interactive PDF form fields, annotations, and bookmarks.

Python

WeasyPrint

Library

Python library that renders HTML and CSS to PDF using a custom Python-built CSS layout/pagination engine (not WebKit/Gecko), targeting print-oriented CSS/HTML standards for generating reports, invoices, tickets, and similar structured documents.