Comparison

gopdfrab vs veraPDF

Both validate PDF/A-1b but differ on certain aspects around that.

Use veraPDF if you need PDF/A-2, -3, -4 or PDF/UA, or if a compliance audit names the reference implementation. Use gopdfrab if you validate PDF/A-1b at volume, want validation inside a Go service rather than beside it, or need to deploy a single binary with no runtime next to it.

Side by side

  gopdfrab veraPDF
PDF/A-1b validationYes, passing the whole veraPDF corpusYes, reference implementation
PDF/A-2, -3, -4Planned, not implementedYes
PDF/UANoYes
PDF to PDF/A conversionYes, with re-verificationNo, validation and repair metadata only
RuntimeNone, a static binaryJVM
Deployment size12.3 MB, nothing else15.3 MB jar, plus a JRE
Batch throughput2,939 files/sec130 files/sec
Cold single file9.5 ms991 ms
Peak memory80 MB728 MB
Embeddable in GoNative librarySubprocess or REST
Runs in the browserYes, via WebAssemblyNo
LicenseAGPL 3.0 or commercialGPLv3 / MPLv2

Where veraPDF is the better choice

veraPDF is the PDF Association's reference implementation, supported by the PDF industry, holding considerable institutional weight.

It also covers considerably more ground. PDF/A-2 and PDF/A-3 are widely used, and PDF/A-3 in particular underpins ZUGFeRD and Factur-X electronic invoicing. gopdfrab cannot validate either today.

Where gopdfrab fits better

The performance gap in the table is structural rather than incidental. veraPDF pays its startup cost on every invocation, which does not matter in a nightly batch and matters a great deal on a request path.

Deployment differs by less than the raw sizes suggest, and by more than they capture. The two artifacts are comparable in size, but the binary goes into a Lambda bundle or a CI image with nothing alongside it, while the jar needs a JRE to ship and to keep patched.

veraPDF also does not convert PDF to PDF/A, which gopdfrab can.

Frequently asked questions

Check your own files

Run gopdfrab against a document in your browser, or read the full benchmark methodology.