Deterministic PDF engine for Java.
Same input. Same bytes. Every time.
Same input → same bytes. No timestamps, no random IDs, no reordering. Compare hashes across builds.
One JAR. No transitive pulls. No iText, no PDFBox, no Bouncy Castle. Just your code and PDFixa.
Modern API surface: try-with-resources, streams, records. No legacy compat baggage.
One line in your pom.xml or build.gradle. No custom repositories, no license keys.
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"));
}
<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.