Native Elixir PDF Utilities
Native Elixir PDF Utilities brings HTML-to-PDF rendering and PDF editing directly into your Elixir application, without a browser or external PDF command-line tools. It can replace Chromium-based rendering for templates using the supported HTML/CSS features. With matched fonts and page settings, the current development build achieves less than 1% changed pixels on every compared page across 67 Chromium parity fixtures and 80 pages, including invoices, forms, purchase orders, labels, and multi-page reports.
Beyond rendering, it merges, transforms, splits, and stamps PDFs, fills forms, embeds attachments, extracts embedded text, and reads and updates metadata and bookmarks.
Package and docs
- Package: https://hex.pm/packages/native_elixir_pdf_utilities
- API docs: https://native-elixir-pdf-utilities.hexdocs.pm/api-reference.html
What it does
-
Tokenizer - turns PDF byte streams into structured Elixir tokens.
-
PDF information - reads page geometry and document metadata, detects encryption, and updates common metadata fields.
-
Merger - combines multiple PDF binaries into a fresh PDF with rewritten object references.
-
Page transforms and splitting - rebuild PDFs after selecting, reordering, deleting, rotating, or splitting pages.
-
Outlines and bookmarks - read or replace bookmarks, detect headings in existing PDFs, and generate bookmarks from HTML headings. Merging, transforms, and splitting preserve supported outlines.
-
Stamping and page numbers - adds text stamps, translucent watermarks, page numbers, and PDF artwork overlays to existing PDFs through incremental updates.
-
Reader and text extraction - strictly resolve embedded Unicode text from classic and modern PDFs.
-
HTML to PDF - renders a strict, document-oriented HTML/CSS subset to native PDF bytes, with examples for common workflows. It supports configured fonts and cross-platform discovery of installed system fonts. Rendering does not require Chromium, wkhtmltopdf, Node, SaaS calls, or a Rust toolchain. Local asset loading works on Windows, macOS, and Linux.
-
PDF forms - generates named AcroForm fields from HTML by default, inspects and fills existing fields, and flattens selected fields.
-
Attachments - embeds caller-approved file bytes with MIME detection and lists embedded metadata.
See the documentation for feature guides, configurable resource limits, and quick reference.
Installation
def deps do
[
{:native_elixir_pdf_utilities, "~> 0.20.0"}
]
end
Development
Run the complete supported-version quality matrix before contributing:
./scripts/quality-matrix
The matrix compiles and tests the supported Elixir versions, enforces formatting and 100% coverage, runs Dialyzer, and compares HTML-to-PDF fixtures with Chromium. See the contribution guide for prerequisites, quicker installed-version checks, and result interpretation.
License
The library source is MIT licensed. Bundled DejaVu font files use the Bitstream Vera license; WHATWG character-reference data and Adobe glyph-name data retain their respective BSD 3-Clause notices. See the complete license texts.