PDF/A Compliance for Go
Verify and convert PDF documents with a small, predictable API.

main.go
doc, _ := pdfrab.Open("input.pdf")
defer doc.Close()
ok, _ := doc.IsPDFA()
if ok {
fmt.Println("PDF/A-1b compliant")
return
}
result, _ := doc.Convert(pdfrab.PDFA_1B)
os.WriteFile("converted.pdf", result.Output, 0o644)204/204
Isartor Test Suite
569/569
veraPDF Test Suite
0
External Dependencies
Features
Processing you can trust
Standards compliant, composable, blazingly fast.
Full PDF/A-1b coverage
PDF to PDF/A-1b conversion
Customizable verification and conversion profiles
PDF/A-clause-accurate diagnostics
Pure Go, zero runtime deps
Delightfully simple API
Benchmarks
Faster by design
Go 1.26 vs OpenJDK 21
Validation throughput
docs / sec · higher is bettergopdfrab1,830
PDFBox Preflight143
veraPDF112
Documents fully verified per second.
Cold start time
ms · lower is bettergopdfrab5
PDFBox Preflight371
veraPDF1,221
Time from process start to first result.
Peak memory usage
MB · lower is bettergopdfrab62
PDFBox Preflight793
veraPDF764
Max RSS
Deployment footprint
MB · lower is bettergopdfrab5
PDFBox Preflight12
veraPDF15
Static go binary vs. JVM runtime plus jars.
Figures are modelled on validating the veraPDF and Isartor PDF/A-1b corpuses on a single machine. Treat numbers as directional, results may vary.
API
A small, predictable API
Open, run, verify, convert.
verify.go
v, _ := doc.Verify(pdfrab.PDFA_1B)
if v.Valid {
fmt.Println("Document is PDF/A-1b compliant")
} else {
fmt.Println("Issues:")
for i, issue := range v.Issues {
fmt.Printf("#%v: %v\n", i+1, issue)
}
}Runs anywhere Go runs
- Concurrency-friendlyVerify documents in parallel across goroutines.
- Edge-readySub-10ms cold starts make gopdfrab a fit for serverless and edge runtimes.
terminal
go get github.com/voidrab/gopdfrabVerify your first PDF/A document
Read the docs or go straight to the source.