Native Elixir PDF Utilities
Native Elixir PDF Utilities renders HTML/CSS to PDF, reads and updates metadata and bookmarks, extracts embedded text, and merges, transforms, and splits PDFs. It runs inside Elixir applications without external PDF command-line tools.
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.
- 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, Python, SaaS calls, or a Rust toolchain.
See the documentation for feature guides, configurable resource limits, and quick reference.
Installation
def deps do
[
{:native_elixir_pdf_utilities, "~> 0.16.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.