PDF/UA-1 linter (ISO 14289-1) and draft PDF/UA-2 (ISO 14289-2).

Module pdfUaTagged | Source packages/front/office/pdf/src/extra/pdf-ua-tagged.js | Deps pdfErrors, pdfParser | Worker-safe yes

Static linter. Catalog checks: /StructTreeRoot required, /MarkInfo /Marked true, /Lang, /ViewerPreferences /DisplayDocTitle true. Structure-element checks: Figures need /Alt or /ActualText; /Span is discouraged as a top-level type; the accessible-permission bit (bit 10) must be set.

Resolve

const ext = runtime.resolve('pdfUaTagged');
// Returns: { validatePdfUa, validateUaStructElement, UA_STRUCTURE }

API

Member Signature Returns
validatePdfUa (typedDoc) => { pass, errors, warnings } Document-level lint.
validateUaStructElement (node) => { pass, errors, warnings } Lints a single structure node.
UA_STRUCTURE frozen catalog { required, forbidden, figure, headings } structural rule lists.

Examples

Global lint

const ext = runtime.resolve('pdfUaTagged');
const r = ext.validatePdfUa(typedDoc);
r.pass;      // false
r.errors;    // [ 'catalog requires /Lang string', … ]

Lint a node

const r = ext.validateUaStructElement(figureNode);
r.errors[0];  // 'Figure requires /Alt or /ActualText'

Errors

Code Class When
pdf/extra/pdfua/bad-doc ParseError typedDoc is not an object.
pdf/extra/pdfua/struct/bad-node ParseError node is not an object.

See also