Skip to main content

PDFixa

Deterministic PDF engine for Java.
Same input. Same bytes. Every time.

Deterministic output

Same input → same bytes. No timestamps, no random IDs, no reordering. Compare hashes across builds.

Zero dependencies

One JAR. No transitive pulls. No iText, no PDFBox, no Bouncy Castle. Just your code and PDFixa.

Java 17+

Modern API surface: try-with-resources, streams, records. No legacy compat baggage.

Maven Central

One line in your pom.xml or build.gradle. No custom repositories, no license keys.

5 lines to your first PDF

QuickStart.java
import dev.offixa.pdfixa.PdfDocument;
import dev.offixa.pdfixa.PdfPage;

try (PdfDocument doc = new PdfDocument()) {
PdfPage page = doc.addPage(595, 842); // A4
page.drawTextBox(72, 750, 450, 40, "Hello from PDFixa!");
doc.writeTo(new FileOutputStream("output.pdf"));
}

Add it

pom.xml
<dependency>
<groupId>dev.offixa</groupId>
<artifactId>pdfixa</artifactId>
<version>1.0.0</version>
</dependency>

Also available as implementation("dev.offixa:pdfixa:1.0.0") for Gradle.