Ga naar inhoud

Problemen oplossen: validatiefouten voor PDF/A en PDF/UA

Deze items gaan over fouten die de engine genereert wanneer een document binnen een Portable Document Format/Archive (PDF/A)- of Portable Document Format/Universal Accessibility (PDF/UA)-profiel moet blijven. De clausulenummers hieronder komen uit de broncode en de uitzonderingsmeldingen van de engine. Deze pagina parafraseert ze. De engine rapporteert profielfouten die hij detecteert; de engine certificeert de conformiteit van het document niet. Gebruik een externe validator met een eigen regelset voor het gezaghebbende conformiteitsoordeel.

Item: versleuteling wordt geweigerd onder PDF/A

Sectie met titel “Item: versleuteling wordt geweigerd onder PDF/A”
  • Symptoom. NextPDF\Security\Exception\IncompatiblePdfAModeException met een melding dat een versleutelingsbewerking in een PDF/A-modus verboden is.
  • Waarschijnlijke oorzaak. De pijplijn heeft een PDF/A-modus ingeschakeld en versleuteling aangevraagd. De engine verwijst naar International Organization for Standardization (ISO) 19005-{1,2,3,4} §6.1.3: de Encrypt-sleutel mag niet aanwezig zijn in de trailer van een PDF/A-bestand. De engine weigert deze combinatie absoluut, ongeacht de volgorde van de aanroepen.
  • Bewijs / diagnose. getContext() retourneert pdfa_mode en encryption_operation. De faalpadtest tests/SecurityScenarios/PdfAEncryptionRefusalTest.php bevestigt dat de weigering optreedt ongeacht of PDF/A vóór of na de versleutelingsaanroep wordt ingeschakeld.
  • Oplossing.
    1. Bepaal wat het document nodig heeft: archiefconformiteit of versleuteling.
    2. Verwijder voor een archiefdocument de versleutelingsaanroep.
    3. Verwijder voor een versleuteld document de PDF/A-inschakelaanroep.
    4. Voer de pijplijn opnieuw uit.
  • Gerelateerd. Versleuteling en machtigingen.

Item: afbeeldingsfilter is verboden onder PDF/A-1

Sectie met titel “Item: afbeeldingsfilter is verboden onder PDF/A-1”
  • Symptoom. Pdf14FeatureRejectedException tijdens het inlezen van een afbeelding, met een melding die /JPXDecode of /JBIG2Decode noemt en de clausule ISO 19005-1:2005 §6.1.13.
  • Waarschijnlijke oorzaak. Een PDF/A-1-build heeft een afbeelding ingelezen die een filter gebruikt dat na PDF 1.4 is geïntroduceerd. PDF/A-1 is gericht op de functieset van PDF 1.4, dus PdfA1FeatureGuard wijst Joint Photographic Experts Group (JPEG) 2000 (/JPXDecode) en JBIG2 (/JBIG2Decode) af.
  • Bewijs / diagnose. src/Writer/PdfA1FeatureGuard.php bevat de lijst met verboden filters en genereert de aangehaalde clausule. De guard wijst deze filters alleen af onder het PDF/A-1-profiel; PDF/A-2, PDF/A-3 en het PDF 2.0-profiel staan ze toe.
  • Oplossing.
    1. Codeer de bronafbeelding opnieuw zonder JPEG 2000 of JBIG2. Sla die bijvoorbeeld opnieuw op als een baseline-JPEG of een Flate-gecomprimeerde afbeelding.
    2. Kies anders voor PDF/A-2 of PDF/A-3, die deze filters toestaan.
    3. Voer de build opnieuw uit.
  • Gerelateerd. Conformiteitsreferentie.

Item: een lettertype is niet ingesloten onder PDF/A

Sectie met titel “Item: een lettertype is niet ingesloten onder PDF/A”
  • Symptoom. Een PDF/A-build mislukt tijdens de lettertypevalidatie, of een externe validator meldt een niet-ingesloten lettertype.
  • Waarschijnlijke oorzaak. Een glyph is getekend met een lettertype waarvan het lettertypeprogramma niet is ingesloten. Het contract van de PDF/A-manager bepaalt dat elk lettertype moet worden ingesloten en dat geen enkel standaard-14-lettertype zonder insluiting is toegestaan.
  • Bewijs / diagnose. src/Contracts/PdfAManagerInterface.php declareert validateFont(string $fontName, bool $isEmbedded, array $cmapForward) en documenteert de regel: elk lettertype moet worden ingesloten en geen enkel standaard-14-lettertype is toegestaan zonder insluiting. De concrete handhaving wordt geleverd in nextpdf/pro.
  • Oplossing.
    1. Identificeer het lettertype dat als niet-ingesloten wordt gemeld.
    2. Configureer dat lettertype met een insluitbaar programmabestand in plaats van te vertrouwen op een ingebouwd standaard-14-lettertype.
    3. Lees voor de interactie met de Base 14-substitutie het item over lettertypen en tagging.
    4. Voer de build opnieuw uit en valideer opnieuw.
  • Gerelateerd. Lettertypen en tagging.

Item: JavaScript is aanwezig en PDF/A-validatie mislukt

Sectie met titel “Item: JavaScript is aanwezig en PDF/A-validatie mislukt”
  • Symptoom. Een PDF/A-build mislukt tijdens de JavaScript-validatie, of een externe validator meldt een JavaScript-actie.
  • Waarschijnlijke oorzaak. Het document of een formulierveld bevat een JavaScript-actie. Het contract van de PDF/A-manager verwijst naar ISO 19005-4:2020 §6.7.1, waarin JavaScript-acties verboden zijn.
  • Bewijs / diagnose. PdfAManagerInterface::validateNoJavaScript() en validateNoJavaScriptActions() verwijzen beide in hun docblocks naar §6.7.1.
  • Oplossing.
    1. Verwijder de JavaScript-actie uit het document of formulierveld.
    2. Als de actie vereist is voor het gedrag, kan het document geen PDF/A zijn. Maak voor dat gebruik een variant die geen PDF/A is.
    3. Voer de build opnieuw uit en valideer opnieuw.
  • Gerelateerd. Conformiteitsreferentie.

Item: getagde uitvoer kondigt geen PDF/UA-2 aan

Sectie met titel “Item: getagde uitvoer kondigt geen PDF/UA-2 aan”
  • Symptoom. Een document dat is gebouwd met tagging ingeschakeld, wordt niet herkend als PDF/UA-2, of de PDF/UA-2-claim ervan ontbreekt.
  • Waarschijnlijke oorzaak. De structuurboom is leeg. De engine kondigt geen PDF/UA-2 aan voor een document zonder getagde structuur, omdat een lege structuurboom niet aan het profiel voldoet.
  • Bewijs / diagnose. De faalpadtest tests/Integration/Accessibility/EmptyTaggedPdfDoesNotAdvertisePdfUa2Test.php bevestigt dat een leeg getagd document geen PDF/UA-2 aankondigt. Dit is gedocumenteerd gedrag van de engine, geen defect.
  • Oplossing.
    1. Controleer of de inhoud via het taggingpad wordt geproduceerd, zodat de structuurboom wordt gevuld in plaats van leeg blijft.
    2. Verifieer dat de marked-content-reeksen worden gekoppeld aan structuurelementen.
    3. Voer de build opnieuw uit en controleer de PDF/UA-2-status opnieuw.
  • Gerelateerd. Lettertypen en tagging.

Item: PDF/UA-2 mislukt bij een ontbrekende of ongeldige taal

Sectie met titel “Item: PDF/UA-2 mislukt bij een ontbrekende of ongeldige taal”
  • Symptoom. Een PDF/UA-2-controle mislukt omdat een taalvermelding ontbreekt of geen geldige tag bevat.
  • Waarschijnlijke oorzaak. Het document of een structuurelement heeft geen geldige taal. PDF/UA-2 vereist een declaratie van de natuurlijke taal; een ontbrekende of onjuist gevormde Lang-waarde doorstaat de strikte controle niet.
  • Bewijs / diagnose. De faalpadtest tests/Unit/Conformance/PdfUa2Section844LangStrictTest.php toetst de strikte taalvereiste. Taaltags worden gevalideerd via src/Accessibility/Bcp47Validator.php; een ongeldige tag genereert src/Accessibility/InvalidBcp47TagException.php.
  • Oplossing.
    1. Stel op documentniveau een taal in als een geldige Best Current Practice (BCP) 47-tag, bijvoorbeeld en-US of zh-Hant-TW.
    2. Stel de taal in op het betreffende structuurelement wanneer een passage in een andere taal is.
    3. Voer de build opnieuw uit en valideer opnieuw.
  • Gerelateerd. Lettertypen en tagging.
  • De hier beschreven PDF/A- en PDF/UA-weigeringen worden binnen de engine geproduceerd. Ze staan los van het oordeel van een externe validator en vervangen dat oordeel niet. Voer een validator zoals veraPDF uit voor het gezaghebbende resultaat.
  • De concrete writer voor de vereiste PDF/A-objecten (Extensible Metadata Platform (XMP)-metadatastream, output intent met een International Color Consortium (ICC)-profiel) wordt tijdens runtime opgehaald uit nextpdf/pro. Als alleen het core-pakket is geïnstalleerd, worden die objecten niet geproduceerd; een core-only build is geen volledige PDF/A-producent.
  • De versleutelingsweigering is absoluut en volgorde-onafhankelijk; PDF/A inschakelen na de versleutelingsaanroep activeert de weigering nog steeds.

Woordenlijst: output intent · structuurboom