← Terug naar alle artikelen

PDF/UA-1 toegankelijkheid via API

SealDoc Team · · 4 min lezen

De Europese Toegankelijkheidsrichtlijn (Richtlijn 2019/882) geldt sinds 28 juni 2025 voor de genoemde producten en diensten, zoals consumentenbankieren, e-commerce en elektronische communicatie; micro-ondernemingen die diensten leveren (minder dan 10 werknemers en een omzet of balanstotaal van ten hoogste €2 miljoen) zijn vrijgesteld. Het is geen “we komen er nog op terug”-onderwerp meer. Aanbieders die eronder vallen, moeten elke klant-pdf leveren in een vorm die door een screenreader te navigeren is. Boetes verschillen per lidstaat; in Duitsland lopen ze op tot €100.000 per overtreding (BFSG § 37). Voor pdf is ISO 14289-1, oftewel PDF/UA-1, de ISO-norm voor toegankelijkheid.

PDF/UA-1 toevoegen aan dezelfde output stond al langer op de planning; de EU-mandaat verschuift het van “nuttig” naar “dragend voor onze compliance-positionering”. Vanaf vandaag kan elk document dat SealDoc genereert er als een getagde, screenreader-vriendelijke PDF/A-3u hybride uitkomen, met één extra veld op de request.

Wat verandert er

POST /api/documents/generate en POST /api/invoices/generate accepteren nu een accessibilityLevel veld. Standaard is "None", wat de byte-output van de bestaande flow ongemoeid laat. Zet het op "PdfUa1" en de converter wisselt van pad: een tagged-pdf export met een structure tree, een PDF/UA-1 metadata-identifier, en een post-flight veraPDF-check tegen ISO 14289-1.

POST /api/invoices/generate HTTP/1.1
Host: api.sealdoc.eu
X-Api-Key: ...
Content-Type: application/json

{
  "seller": { "name": "FeFem Holding B.V.", "vatNumber": "NL000000000B01", ... },
  "buyer": { "name": "Acme Corp", ... },
  "invoiceNumber": "INV-2026-001",
  "invoiceDate": "2026-05-07",
  "currency": "EUR",
  "vatRate": 0.21,
  "vatLabel": "21% BTW",
  "lines": [ ... ],
  "accessibilityLevel": "PdfUa1"
}

De response is dezelfde jobId-shape die je al gewend was. De PDF die je vervolgens kunt downloaden heeft een structure tree, alt-tekst waar van toepassing, tabel-headers correct getagd, en een taal-attribuut. Een screenreader die er overheen leest spreekt uit “Factuur 2026-001. Factuuradres: Acme Corp. Subtotaal: 1750 euro” in plaats van “Factuur 2026 001 Acme Corp 1750”.

Wat we gemeten hebben

Voordat we de flag aanzetten hebben we een corpus van 12 documenten door de nieuwe pipeline gehaald en elke output gevalideerd met verapdf -f ua1. Het corpus dekt minimale documenten, simpele en complexe facturen, meertalige alinea’s, Unicode-rijke content, diep geneste koppen, kale tabellen, tabellen met juiste headers, geneste lijsten, en een 50-secties lang document.

Resultaten: 8 van de 12 documenten passeerden alle 106 ISO 14289-1 regels. De resterende 4 passeerden 105 van 106 met dezelfde enkele faling (clause 7.4.2, heading-nesting), veroorzaakt doordat de LibreOffice HTML-importer de eerste <h1> overneemt als document Title in metadata. Onze factuur-template in InvoiceHtmlBuilder gebruikt opgemaakte alinea’s in plaats van een mix van <h1>/<h2> koppen, dus die situatie speelt daar niet. Een representatieve factuur scoort in de nieuwe pipeline 106/106 met 2778 individuele veraPDF-checks die allemaal slagen.

Waarom dit strategisch belangrijk is

De Europese Toegankelijkheidsrichtlijn is het soort regelgeving dat paniek-aankoop-vensters creëert. Compliance officers zijn nu actief op zoek, de volwassenheid van leveranciers verschilt sterk, en de meeste bestaande opties zijn desktop-tools (axesPDF Quickfix), enterprise-gelicenseerde Java-libraries (iText met de Pdf/UA module), of handmatige remediation-services die per document factureren. Geen daarvan is API-first, geen daarvan produceert een PDF/A-3 + PDF/UA-1 hybride in dezelfde aanroep, en geen daarvan is EU-soeverein van constructie.

Wij bouwden onze versie op LibreOffice’s native tagged-pdf export en de open-source Universal Accessibility validator van veraPDF. Er is geen commerciële library bij betrokken. De marginale infrastructuur-kost bovenop onze bestaande PDF/A-3 pipeline is verwaarloosbaar. We kunnen dit uitleveren tegen onze bestaande prijspunten zonder marge-impact.

Wat in scope is

In scope: documenten en facturen die SealDoc zelf genereert vanuit jouw gestructureerde input (Markdown, HTML of invoice-JSON). De template-structuur zit onder onze controle, en het conversie-pad ook.

Plan-niveau

PDF/UA-1 is een Growth-en-hoger feature (pdf_ua slug in de feature-set van je plan). Developer en Starter blijven standaard niet-getagde PDF/A-3 ontvangen. De flag wordt afgewezen met een 402 Payment Required als je plan het niet bevat, met de upgrade-target genoemd in de response zodat je client-SDK kan doorlinken naar de juiste pagina.

Zit je op Starter en vraagt een enterprise-klant je om toegankelijke facturen: dat is een Growth-gesprek, en we hebben dat gesprek graag.

Zelf valideren

SealDoc controleert PDF/UA-1 output met veraPDF. Download een gegenereerde PDF en run verapdf -f ua1 lokaal om het resultaat zelf te zien. We vragen je niet om de marketing-claim op vertrouwen aan te nemen; de validator is open source, de norm is ISO-gepubliceerd, en de output is binair reproduceerbaar per request.

Sprint 53 levert PDF/UA-1 vandaag uit.


← Terug naar alle artikelen