Enterprise PDF for Java

The enterprise PDF library
Java without the AGPL.

Generate archival PDF/A, sign documents with PAdES, encrypt with AES-256 and produce accessible PDF/UA from idiomatic Java. One memory-safe core, the same behavior as every other binding, running entirely on your servers: no per-document SaaS fees, no data leaving your network, no AGPL strings.

Add one Maven dependency. Bound through JNA, no native build step.
<dependency>
  <groupId>dev.rustpdf</groupId>
  <artifactId>rustpdf</artifactId>
  <version>0.1.0</version>
</dependency>
Validated by independent tools: veraPDFpdfsigopenssl cmsqpdfmutool

Why Java teams pick rust-pdf

Java runs the back office of banks, insurers and the public sector, exactly where PDF/A archival, qualified signatures, AES-256 and PDF/UA are mandatory. The dominant option, iText, is AGPL unless you buy a commercial per-deployment license, and Aspose bills per server. PDFBox covers the basics but not easy PAdES or full PDF/A.

rust-pdf is one Maven dependency bound through JNA (pure FFI, no native build), with a clean Document / EditableDoc API and a single offline license that unlocks the corporate features.

  • No AGPL trap: a commercial per-application license, never the AGPL of iText or the per-server billing of Aspose.
  • Pure FFI: bound through JNA, so there is no JNI to compile and no native toolchain on your build agents.
  • Runs on your servers: documents never leave your network and nothing phones home, ideal for LGPD/GDPR, fintech and health.
  • Deterministic output: the same input always produces the same bytes, so you can diff and audit it.
  • Free to build with: everyday PDF generation is free forever; you only license the regulated-grade features.

Free to build with. Licensed when you ship.

Prototype and generate everyday PDFs for free. When you need archival, signatures, encryption or accessibility, one license unlocks them all in Java and every other binding.

Community free

  • Pages & vector graphics
  • Embedded/subset fonts, Unicode shaping
  • Justified paragraphs & tables
  • Images (JPEG/PNG/alpha/16-bit)
  • Merge / split / rotate
  • Text extraction & optimize

Corporate licensed

  • PDF/A: 1b / 2b / 2a / 3b / 3a archival
  • Digital signatures: PKCS#7, visible & multiple
  • PAdES: B-B / B-LT / B-LTA + RFC 3161 timestamps
  • Encryption: RC4 / AES-128 / AES-256 (R6)
  • Accessibility: Tagged PDF / PDF/UA-1
  • AcroForm: fields with generated appearances

Author a tagged PDF/A in a few lines of Java

// Maven: dev.rustpdf:rustpdf:0.1.0
try (Document doc = new Document()) {
    doc.pdfa(PdfaLevel.A2A).tagged().setTitle("Q3 Report");
    int f = doc.addFontFile("Roboto-Regular.ttf");
    doc.addPage().showText(f, 26, 72, 760, "Annual report", 1); // H1
    byte[] bytes = doc.toBytes();  // archival-grade, accessible PDF
}

See the shared API surface, identical across bindings, in the documentation.

Start building in Java

Add the dev.rustpdf:rustpdf dependency and ship your first archival PDF today. Free for everyday generation; license the corporate features when you go to production.