Rozwiązywanie problemów z błędami walidacji PDF/A i PDF/UA
Te wpisy opisują niepowodzenia zgłaszane przez silnik, gdy dokument ma pozostać w profilu Portable Document Format/Archive (PDF/A) lub Portable Document Format/Universal Accessibility (PDF/UA). Numery klauzul podane poniżej pochodzą z kodu źródłowego silnika oraz komunikatów wyjątków. Ta strona je parafrazuje. Silnik zgłasza wykryte naruszenia profilu; nie poświadcza zgodności dokumentu. Aby uzyskać miarodajny werdykt dotyczący zgodności, użyj zewnętrznego walidatora z własnym zestawem reguł.
Wpis: szyfrowanie jest odrzucane w trybie PDF/A
Dział zatytułowany „Wpis: szyfrowanie jest odrzucane w trybie PDF/A”- Objaw.
NextPDF\Security\Exception\IncompatiblePdfAModeExceptionz komunikatem informującym, że operacja szyfrowania jest zabroniona w trybie PDF/A. - Prawdopodobna przyczyna. Potok włączył tryb PDF/A i zażądał szyfrowania. Silnik powołuje się na International Organization for Standardization (ISO) 19005-{1,2,3,4} §6.1.3: klucz
Encryptnie może występować w zwiastunie (trailer) pliku PDF/A. Silnik bezwzględnie odrzuca tę kombinację, niezależnie od kolejności wywołań. - Dowody / diagnoza.
getContext()zwracapdfa_modeorazencryption_operation. Test ścieżki niepowodzeniatests/SecurityScenarios/PdfAEncryptionRefusalTest.phppotwierdza, że odrzucenie następuje niezależnie od tego, czy PDF/A zostanie włączone przed wywołaniem szyfrowania, czy po nim. - Rozwiązanie.
- Zdecyduj, czego potrzebuje dokument: zgodności archiwalnej czy szyfrowania.
- W przypadku dokumentu archiwalnego usuń wywołanie szyfrowania.
- W przypadku dokumentu szyfrowanego usuń wywołanie włączające PDF/A.
- Uruchom potok ponownie.
- Powiązane. Szyfrowanie i uprawnienia.
Wpis: filtr obrazu jest zabroniony w profilu PDF/A-1
Dział zatytułowany „Wpis: filtr obrazu jest zabroniony w profilu PDF/A-1”- Objaw.
Pdf14FeatureRejectedExceptionpodczas wczytywania obrazu, z komunikatem wskazującym/JPXDecodelub/JBIG2Decodeoraz klauzulęISO 19005-1:2005 §6.1.13. - Prawdopodobna przyczyna. Podczas kompilacji PDF/A-1 wczytano obraz korzystający z filtra wprowadzonego po PDF 1.4. PDF/A-1 jest ukierunkowany na zestaw funkcji PDF 1.4, więc
PdfA1FeatureGuardodrzuca Joint Photographic Experts Group (JPEG) 2000 (/JPXDecode) oraz JBIG2 (/JBIG2Decode). - Dowody / diagnoza.
src/Writer/PdfA1FeatureGuard.phpzawiera listę zabronionych filtrów i zgłasza przywołaną klauzulę.PdfA1FeatureGuardodrzuca te filtry wyłącznie w profilu PDF/A-1; profile PDF/A-2, PDF/A-3 oraz PDF 2.0 zezwalają na nie. - Rozwiązanie.
- Przekoduj obraz źródłowy bez JPEG 2000 ani JBIG2. Na przykład zapisz go ponownie jako bazowy JPEG lub obraz skompresowany metodą Flate.
- Alternatywnie wybierz PDF/A-2 lub PDF/A-3 jako profil docelowy, ponieważ zezwalają na te filtry.
- Uruchom kompilację ponownie.
- Powiązane. Materiały referencyjne dotyczące zgodności.
Wpis: czcionka nie jest osadzona w trybie PDF/A
Dział zatytułowany „Wpis: czcionka nie jest osadzona w trybie PDF/A”- Objaw. Kompilacja PDF/A kończy się niepowodzeniem na etapie walidacji czcionek lub zewnętrzny walidator zgłasza nieosadzoną czcionkę.
- Prawdopodobna przyczyna. Glif został narysowany czcionką, której program nie został osadzony. Kontrakt menedżera PDF/A stanowi, że każda czcionka musi być osadzona i że żadna czcionka standard-14 nie jest dozwolona bez osadzenia.
- Dowody / diagnoza.
src/Contracts/PdfAManagerInterface.phpdeklarujevalidateFont(string $fontName, bool $isEmbedded, array $cmapForward)i dokumentuje regułę: każda czcionka musi być osadzona, a żadna czcionka standard 14 nie jest dozwolona bez osadzenia. Za właściwe egzekwowanie tej reguły odpowiadanextpdf/pro. - Rozwiązanie.
- Zidentyfikuj czcionkę zgłoszoną jako nieosadzona.
- Skonfiguruj tę czcionkę z plikiem programu nadającym się do osadzenia, zamiast polegać na wbudowanym kroju standard-14.
- Aby zrozumieć działanie podstawienia Base 14, przeczytaj wpis o czcionkach i tagowaniu.
- Uruchom kompilację ponownie i przeprowadź walidację jeszcze raz.
- Powiązane. Czcionki i tagowanie.
Wpis: JavaScript jest obecny i walidacja PDF/A kończy się niepowodzeniem
Dział zatytułowany „Wpis: JavaScript jest obecny i walidacja PDF/A kończy się niepowodzeniem”- Objaw. Kompilacja PDF/A kończy się niepowodzeniem na etapie walidacji JavaScript lub zewnętrzny walidator zgłasza akcję JavaScript.
- Prawdopodobna przyczyna. Dokument lub pole formularza zawiera akcję JavaScript. Kontrakt menedżera PDF/A powołuje się na ISO 19005-4:2020 §6.7.1, która zabrania akcji JavaScript.
- Dowody / diagnoza. Metody
PdfAManagerInterface::validateNoJavaScript()orazvalidateNoJavaScriptActions()odwołują się do §6.7.1 w swoich docblockach. - Rozwiązanie.
- Usuń akcję JavaScript z dokumentu lub pola formularza.
- Jeśli akcja jest niezbędna do działania, dokument nie może być w formacie PDF/A. Do takiego zastosowania utwórz wariant inny niż PDF/A.
- Uruchom kompilację ponownie i przeprowadź walidację jeszcze raz.
- Powiązane. Materiały referencyjne dotyczące zgodności.
Wpis: otagowany dokument wyjściowy nie deklaruje PDF/UA-2
Dział zatytułowany „Wpis: otagowany dokument wyjściowy nie deklaruje PDF/UA-2”- Objaw. Dokument zbudowany z włączonym tagowaniem nie jest rozpoznawany jako PDF/UA-2 lub brakuje w nim deklaracji PDF/UA-2.
- Prawdopodobna przyczyna. Drzewo struktury jest puste. Silnik nie deklaruje PDF/UA-2 w przypadku dokumentu bez otagowanej struktury, ponieważ puste drzewo struktury nie spełnia wymagań profilu.
- Dowody / diagnoza. Test ścieżki niepowodzenia
tests/Integration/Accessibility/EmptyTaggedPdfDoesNotAdvertisePdfUa2Test.phppotwierdza, że pusty otagowany dokument nie deklaruje PDF/UA-2. Jest to udokumentowane zachowanie silnika, a nie wada. - Rozwiązanie.
- Potwierdź, że treść jest emitowana przez ścieżkę tagowania, tak aby drzewo struktury było wypełnione, a nie pozostawało puste.
- Sprawdź, czy sekwencje oznaczonej treści (marked-content) są odwzorowane na elementy struktury.
- Uruchom kompilację ponownie i sprawdź jeszcze raz status PDF/UA-2.
- Powiązane. Czcionki i tagowanie.
Wpis: walidacja PDF/UA-2 kończy się niepowodzeniem z powodu brakującego lub nieprawidłowego języka
Dział zatytułowany „Wpis: walidacja PDF/UA-2 kończy się niepowodzeniem z powodu brakującego lub nieprawidłowego języka”- Objaw. Sprawdzenie PDF/UA-2 kończy się niepowodzeniem, ponieważ wpis języka jest nieobecny lub nie jest prawidłowym tagiem.
- Prawdopodobna przyczyna. W dokumencie lub elemencie struktury brakuje prawidłowego języka. PDF/UA-2 wymaga deklaracji języka naturalnego; brakująca lub nieprawidłowo sformułowana wartość
Langnie przechodzi rygorystycznego sprawdzenia. - Dowody / diagnoza. Test ścieżki niepowodzenia
tests/Unit/Conformance/PdfUa2Section844LangStrictTest.phpsprawdza rygorystyczny wymóg dotyczący języka. Tagi języka są walidowane przezsrc/Accessibility/Bcp47Validator.php; nieprawidłowy tag zgłaszasrc/Accessibility/InvalidBcp47TagException.php. - Rozwiązanie.
- Ustaw język na poziomie dokumentu w postaci prawidłowego tagu Best Current Practice (BCP) 47, na przykład
en-USlubzh-Hant-TW. - Jeśli fragment jest w innym języku, ustaw język na danym elemencie struktury.
- Uruchom kompilację ponownie i przeprowadź walidację jeszcze raz.
- Ustaw język na poziomie dokumentu w postaci prawidłowego tagu Best Current Practice (BCP) 47, na przykład
- Powiązane. Czcionki i tagowanie.
Przypadki brzegowe i pułapki
Dział zatytułowany „Przypadki brzegowe i pułapki”- Opisane tutaj przypadki odrzucenia PDF/A i PDF/UA są generowane wewnątrz silnika. Są niezależne od werdyktu zewnętrznego walidatora i go nie zastępują. Aby uzyskać miarodajny wynik, uruchom walidator, taki jak veraPDF.
- Konkretny komponent zapisujący obiekty wymagane przez PDF/A (strumień metadanych Extensible Metadata Platform (XMP), zamiar wyjściowy (output intent) z profilem International Color Consortium (ICC)) jest rozwiązywany w czasie wykonywania z
nextpdf/pro. Gdy zainstalowany jest tylko pakiet core, obiekty te nie są emitowane; kompilacja oparta wyłącznie na pakiecie core nie jest kompletnym generatorem PDF/A. - Odrzucenie szyfrowania jest bezwzględne i niezależne od kolejności; włączenie PDF/A po wywołaniu szyfrowania nadal kończy się odrzuceniem.
Zobacz także
Dział zatytułowany „Zobacz także”Słownik: zamiar wyjściowy (output intent) · drzewo struktury