Guide

The Isartor Test Suite

The original PDF/A-1b conformance corpus.

The Isartor Test Suite comprises 204 PDF files, each of which is invalid in exactly one way. Published by the PDF Association, it was the first serious attempt to make "this validator works" a testable claim.

How it is built

Each file targets one clause of ISO 19005-1 and violates it deliberately, while remaining conformant in every other respect. The file names encode the clause: a name like isartor-6-3-4-t01-p01-fail-a.pdf identifies clause 6.3.4 (font embedding), test 1. A validator that rejects the file has to reject it for that clause.

That one-violation-per-file design is what makes the suite useful as a regression test. When a change breaks something, the failing file names point straight at the clause group that regressed.

What it does not prove

Every file in the suite is invalid. A validator that rejected everything would score 100%. Passing Isartor therefore says nothing about false positives, about whether a perfectly good archival document is wrongly rejected, which in production is the more expensive failure.

This is precisely why the veraPDF corpus matters alongside it: it contains matched pass and fail cases per clause, so it measures both directions.

Where the two readings diverge

Isartor predates veraPDF and encodes the strictest defensible reading of the standard. veraPDF, as the reference implementation maintained since, resolved several ambiguous clauses more leniently. Neither reading is wrong. But a document can pass one and fail the other, which is a genuine problem if you do not know which judge you will face.

gopdfrab makes that choice explicit rather than picking silently:

go
// Verify against the legacy Isartor-derived profile instead of the
// veraPDF-aligned default
v, err := doc.Verify(gopdfrab.Legacy1B)

PDFA1B is the default and follows veraPDF. Legacy1B is the spec-literal Isartor reading. The profile documentation covers when to pick which.

gopdfrab's score

Every file passes, and so does every file in the veraPDF corpus. Both suites run in CI on every change, plus a differential test against the veraPDF binary itself so a disagreement shows up as a failure. The combined corpus is also what the benchmarks are measured over.

Frequently asked

What is the Isartor Test Suite?

A corpus of deliberately non-conformant PDF/A-1b files published by the PDF Association, each violating exactly one clause of ISO 19005-1. A validator is expected to reject every one of them, for the right reason.

What does passing Isartor prove?

That the validator detects each violation the suite encodes. It does not prove the validator accepts conformant files, because every file in the suite is invalid by construction. That is what a second corpus is for.

Why do validators disagree on some Isartor files?

Because a few clauses of ISO 19005-1 admit more than one reading, and the suite was built against the strictest one. gopdfrab ships both interpretations: the default pdfa1b profile follows veraPDF, and legacy1b is the spec-literal Isartor reading.

Does gopdfrab pass the Isartor suite?

Yes, in full, and the veraPDF corpus too. Both suites run in CI, alongside a cross-check against the veraPDF binary itself.