Zum Inhalt springen

Fehlerbehebung: Validierungsfehler in PDF/A und PDF/UA

Diese Einträge behandeln Fehler, die die Engine auslöst, während sie ein Dokument innerhalb des PDF/A- oder PDF/UA-Profils hält. Die unten genannten Klauselnummern sind diejenigen, die die Engine in ihrem eigenen Quellcode und in ihren Ausnahmemeldungen zitiert. Diese Seite paraphrasiert sie. Die Engine meldet die Profilfehler, die sie erkennt — sie zertifiziert nicht die Konformität eines Dokuments. Das maßgebliche Konformitätsurteil stammt von einem externen Validator, der seinen eigenen Regelsatz ausführt.

Eintrag: Verschlüsselung wird unter PDF/A abgelehnt

Abschnitt betitelt „Eintrag: Verschlüsselung wird unter PDF/A abgelehnt“
  • Symptom. NextPDF\Security\Exception\IncompatiblePdfAModeException mit einer Meldung, die besagt, dass eine Verschlüsselungsoperation in einem PDF/A-Modus verboten ist.
  • Wahrscheinliche Ursache. Die Pipeline hat sowohl einen PDF/A-Modus aktiviert als auch eine Verschlüsselung angefordert. Die Engine zitiert ISO 19005-{1,2,3,4} §6.1.3: Der Encrypt-Schlüssel darf im Trailer einer PDF/A-Datei nicht vorhanden sein. Die Engine behandelt dies unabhängig von der Aufrufreihenfolge als absolute Ablehnung.
  • Nachweis / Diagnose. getContext() gibt pdfa_mode und encryption_operation zurück. Der Fehlerpfad-Test tests/SecurityScenarios/PdfAEncryptionRefusalTest.php stellt sicher, dass die Ablehnung ausgelöst wird, unabhängig davon, ob PDF/A vor oder nach dem Verschlüsselungsaufruf aktiviert wird.
  • Behebung.
    1. Entscheiden Sie, welche Eigenschaft das Dokument benötigt: Archivierungskonformität oder Verschlüsselung.
    2. Entfernen Sie bei einem Archivdokument den Verschlüsselungsaufruf.
    3. Entfernen Sie bei einem verschlüsselten Dokument den PDF/A-Aktivierungsaufruf.
    4. Führen Sie die Pipeline erneut aus.
  • Verwandt. Verschlüsselung und Berechtigungen.
  • Symptom. Pdf14FeatureRejectedException wird während der Bildaufnahme ausgelöst, mit einer Meldung, die /JPXDecode oder /JBIG2Decode und die Klausel ISO 19005-1:2005 §6.1.13 benennt.
  • Wahrscheinliche Ursache. Ein PDF/A-1-Build hat ein Bild aufgenommen, das einen erst nach PDF 1.4 eingeführten Filter verwendet. PDF/A-1 zielt auf den Funktionsumfang von PDF 1.4 ab; deshalb lehnt PdfA1FeatureGuard JPEG 2000 (/JPXDecode) und JBIG2 (/JBIG2Decode) ab.
  • Nachweis / Diagnose. src/Writer/PdfA1FeatureGuard.php enthält die Liste der verbotenen Filter und löst die Ausnahme mit der zitierten Klausel aus. Der Guard lehnt nur unter dem PDF/A-1-Profil ab; PDF/A-2, PDF/A-3 und das PDF 2.0-Profil erlauben diese Filter.
  • Behebung.
    1. Kodieren Sie das Quellbild ohne JPEG 2000 oder JBIG2 neu — speichern Sie es zum Beispiel erneut als Baseline-JPEG oder als Flate-komprimiertes Bild.
    2. Zielen Sie alternativ auf PDF/A-2 oder PDF/A-3 ab, die diese Filter erlauben.
    3. Erstellen Sie den Build erneut.
  • Verwandt. Konformitätsreferenz.

Eintrag: Eine Schrift ist unter PDF/A nicht eingebettet

Abschnitt betitelt „Eintrag: Eine Schrift ist unter PDF/A nicht eingebettet“
  • Symptom. Ein PDF/A-Build scheitert im Schrift-Validierungsschritt; ein externer Validator meldet eine nicht eingebettete Schrift.
  • Wahrscheinliche Ursache. Ein Glyph wurde mit einer Schrift gezeichnet, deren Programm nicht eingebettet ist. Der PDF/A-Manager-Vertrag legt fest, dass jede Schrift eingebettet sein muss; keine der Standard-14-Schriften ist ohne Einbettung zulässig.
  • Nachweis / Diagnose. src/Contracts/PdfAManagerInterface.php deklariert validateFont(string $fontName, bool $isEmbedded, array $cmapForward) mit der dokumentierten Regel „All fonts must be embedded; no standard 14 fonts allowed without embedding.“ Die konkrete Durchsetzung wird in nextpdf/pro ausgeliefert.
  • Behebung.
    1. Identifizieren Sie die als nicht eingebettet gemeldete Schrift.
    2. Konfigurieren Sie diese Schrift mit einer einbettbaren Programmdatei, anstatt sich auf eine integrierte Standard-14-Schriftart zu verlassen.
    3. Lesen Sie für die Base-14-Ersetzung den Eintrag zu Schriften und Auszeichnung.
    4. Erstellen Sie den Build erneut und validieren Sie ihn erneut.
  • Verwandt. Schriften und Auszeichnung.

Eintrag: JavaScript ist vorhanden und die PDF/A-Validierung schlägt fehl

Abschnitt betitelt „Eintrag: JavaScript ist vorhanden und die PDF/A-Validierung schlägt fehl“
  • Symptom. Ein PDF/A-Build scheitert an seinem JavaScript-Validierungsschritt, oder ein externer Validator meldet eine JavaScript-Aktion.
  • Wahrscheinliche Ursache. Das Dokument oder ein Formularfeld enthält eine JavaScript-Aktion. Der PDF/A-Manager-Vertrag zitiert ISO 19005-4:2020 §6.7.1, wonach JavaScript-Aktionen verboten sind.
  • Nachweis / Diagnose. PdfAManagerInterface::validateNoJavaScript() und validateNoJavaScriptActions() zitieren beide in ihren Docblocks §6.7.1.
  • Behebung.
    1. Entfernen Sie die JavaScript-Aktion aus dem Dokument oder Formularfeld.
    2. Wenn die Aktion für das Verhalten erforderlich ist, kann das Dokument nicht PDF/A sein; erzeugen Sie für diesen Einsatz eine Nicht-PDF/A-Variante.
    3. Erstellen Sie den Build erneut und validieren Sie ihn erneut.
  • Verwandt. Konformitätsreferenz.

Eintrag: Ausgezeichnete Ausgabe weist sich nicht als PDF/UA-2 aus

Abschnitt betitelt „Eintrag: Ausgezeichnete Ausgabe weist sich nicht als PDF/UA-2 aus“
  • Symptom. Ein mit aktivierter Auszeichnung erstelltes Dokument wird nicht als PDF/UA-2 erkannt, oder der PDF/UA-2-Anspruch fehlt.
  • Wahrscheinliche Ursache. Der Strukturbaum ist leer. Die Engine weist ein Dokument, das keine ausgezeichnete Struktur trägt, nicht als PDF/UA-2 aus, weil ein leerer Strukturbaum das Profil nicht erfüllt.
  • Nachweis / Diagnose. Der Fehlerpfad-Test tests/Integration/Accessibility/EmptyTaggedPdfDoesNotAdvertisePdfUa2Test.php stellt sicher, dass ein leeres ausgezeichnetes Dokument sich nicht als PDF/UA-2 ausweist. Dies ist das dokumentierte Verhalten der Engine, kein Defekt.
  • Behebung.
    1. Stellen Sie sicher, dass Inhalte über den Auszeichnungspfad ausgegeben werden, damit der Strukturbaum befüllt ist und nicht leer bleibt.
    2. Prüfen Sie, dass die Marked-Content-Sequenzen auf Strukturelemente abgebildet werden.
    3. Erstellen Sie den Build erneut und prüfen Sie den PDF/UA-2-Status erneut.
  • Verwandt. Schriften und Auszeichnung.

Eintrag: PDF/UA-2 scheitert an einer fehlenden oder ungültigen Sprache

Abschnitt betitelt „Eintrag: PDF/UA-2 scheitert an einer fehlenden oder ungültigen Sprache“
  • Symptom. Eine PDF/UA-2-Prüfung schlägt fehl, weil ein Spracheintrag fehlt oder der Eintrag kein gültiges Tag ist.
  • Wahrscheinliche Ursache. Dem Dokument oder einem Strukturelement fehlt eine gültige Sprache. PDF/UA-2 erfordert eine Deklaration der natürlichen Sprache; ein fehlender oder fehlerhafter Lang-Wert besteht die strenge Prüfung nicht.
  • Nachweis / Diagnose. Der Fehlerpfad-Test tests/Unit/Conformance/PdfUa2Section844LangStrictTest.php übt die strenge Sprachanforderung aus. Sprach-Tags werden über src/Accessibility/Bcp47Validator.php validiert; ein ungültiges Tag löst src/Accessibility/InvalidBcp47TagException.php aus.
  • Behebung.
    1. Legen Sie auf Dokumentebene eine Sprache als gültiges BCP-47-Tag fest, zum Beispiel en-US oder zh-Hant-TW.
    2. Wenn eine Passage in einer anderen Sprache vorliegt, legen Sie die Sprache auf diesem Strukturelement fest.
    3. Erstellen Sie den Build erneut und validieren Sie ihn erneut.
  • Verwandt. Schriften und Auszeichnung.
  • Die hier beschriebenen PDF/A- und PDF/UA-Ablehnungen werden innerhalb der Engine erzeugt. Sie sind unabhängig vom Urteil eines externen Validators und ersetzen es nicht — führen Sie für das maßgebliche Ergebnis einen Validator wie veraPDF aus.
  • Der konkrete Writer für PDF/A-Pflichtobjekte (XMP-Metadaten-Stream, Ausgabebedingung mit einem ICC-Profil) wird zur Laufzeit aus nextpdf/pro aufgelöst. Mit nur installiertem Core-Paket werden diese Objekte nicht ausgegeben; ein Core-only-Build ist kein vollständiger PDF/A-Produzent.
  • Die Verschlüsselungsablehnung ist absolut und reihenfolgenunabhängig — wird PDF/A nach dem Verschlüsselungsaufruf aktiviert, wird die Ablehnung dennoch ausgelöst.

Glossar: Ausgabebedingung · Strukturbaum