pdfua_validation_failed
HTTP 422 · code: "pdfua_validation_failed" · type: https://docs.formfeed.dev/errors/pdfua-validation-failed
Das Rendering hat pdf.ua mit strenger Prüfung gesetzt, und die fertige Datei verletzt mindestens eine der maschinell prüfbaren Regeln von PDF/UA-1. Es wird nichts ausgeliefert: Eine Datei, die als PDF/UA-1 verlangt wurde, kommt nie stattdessen als gewöhnliches PDF zurück.
accessibility.failures nennt jede verletzte Regel: ihre Nummer im Regelwerk des Validators, was an der Vorlage zu ändern ist, und die Start-Tags der betroffenen Elemente. Das Rendering ist failed und behält denselben Block, sodass GET /renders/{id} und das Render-Protokoll ihn auch später zeigen. Es wird keine Datei gespeichert, und ein fehlgeschlagenes Rendering kostet nichts.
War das Rendering zugleich eine E-Rechnung, trägt das Problem einvoice neben accessibility: Die Rechnung selbst war gültig, und die Datei, in die sie umgewandelt wurde, ist diejenige, die PDF/UA-1 nicht bestanden hat. Auch eine E-Rechnung wird dann nicht ausgeliefert.
Beispiel
{
"type": "https://docs.formfeed.dev/errors/pdfua-validation-failed",
"title": "PDF/UA validation failed",
"status": 422,
"detail": "The PDF fails 1 of the 106 machine-checkable rules of PDF/UA-1 (7.4.2-1)",
"code": "pdfua_validation_failed",
"location": null,
"render_id": "rnd_7da09ab6cd9946b798c187c2a9350852",
"accessibility": {
"standard": "PDF/UA-1",
"check": "strict",
"conformant": false,
"validator": "veraPDF 1.30.2",
"rules": { "passed": 105, "failed": 1 },
"failures": [
{
"rule": "7.4.2-1",
"code": "heading-order",
"count": 1,
"message": "This h3 follows an h1, so a heading level is skipped. Make it an h2 and size it with CSS.",
"elements": ["<h3 class=\"section\">"]
}
],
"warnings": []
},
"request_id": "req_4b7c1e9a2f3d4c5b8a6e7f9012"
}
Häufige Ursachen
- Eine Überschriftenebene wird übersprungen (
heading-order): einh3direkt nach einemh1, oder ein Dokument, das mit einemh2beginnt. Meist wurden die Überschriften nach ihrer Größe gewählt. - Ein Bild hat kein
alt-Attribut (image-alt), oder ein Diagramm, eincanvasoder einsvgmitrole="img"hat keinen Namen (figure-name). - Das Dokument hat keinen Titel (
document-title): keinpdf.metadata.titlein den Einstellungen und kein<title>. - Die Zeilen einer Tabelle erstrecken sich über unterschiedlich viele Spalten (
table-rows), oft wegen einescolspan, das nicht aufgeht. - Eine Datenzelle einer Tabelle ist leer (
table-cell-empty). Der Browser schreibt für ein leerestdkeine Zelle, die Zeile ist in der Datei also kürzer als im Markup; ein geschütztes Leerzeichen in der Zelle genügt. - Text liegt unter einer CSS-
mask(masked-text).
Ein Befund ohne code ist eine Regel, zu der die Vorlagenprüfung nichts gefunden hat; seine message ist die Beschreibung der Regel durch den Validator selbst.
So beheben Sie es
- Ändern Sie die Vorlage, wie
messagees sagt.elementszeigt, welche Tags gemeint sind. - Schalten Sie im Editor in der Seiteneinrichtung im Abschnitt Dokument Barrierefreies PDF (PDF/UA-1) ein. Die Vorschauen Fließend und Seiten prüfen dann die Seite, und die Liste Probleme nennt jeden Befund an seiner Zeile, bevor etwas gerendert wird.
formfeed validatemeldet, was schon der Quelltext zeigt: einen fehlenden Titel, ein Bild ohnealt.- Um die Datei zu erhalten, während Sie die Vorlage korrigieren, stellen Sie die Prüfung auf
report:"pdf": { "ua": { "check": "report" } }. Das Rendering gelingt dann, die Datei wird ohne die PDF/UA-Kennung ausgeliefert, undaccessibility.conformantistfalse.
Barrierefreie PDFs erklärt jeden Befund und was die Prüfung belegt und was nicht.
Wiederholen?
Nein. Dieselbe Anfrage zu wiederholen ergibt dieselbe Antwort; ändern Sie zuerst die Vorlage oder die Daten. Senden Sie die korrigierte Anfrage mit einem neuen Idempotency-Key oder ohne: Eine 4xx-Antwort wird 24 Stunden unter ihrem Schlüssel gespeichert, der alte Schlüssel liefert also wieder dieses Problem. Siehe Wiederholen.