Устранение неполадок: ошибки проверки PDF/A и PDF/UA
Область применения
Заголовок раздела «Область применения»Эти разделы описывают ошибки, которые движок выдаёт при сохранении документа с профилем Portable Document Format/Archive (PDF/A) или Portable Document Format/Universal Accessibility (PDF/UA). Номера пунктов ниже взяты из исходного кода движка и сообщений об исключениях; здесь приведён их пересказ. Движок сообщает об обнаруженных нарушениях профиля, но не подтверждает соответствие документа. Для авторитетного вердикта о соответствии используйте внешний валидатор с собственным набором правил.
Раздел: шифрование отклоняется в режиме PDF/A
Заголовок раздела «Раздел: шифрование отклоняется в режиме PDF/A»- Симптом.
NextPDF\Security\Exception\IncompatiblePdfAModeExceptionс сообщением о том, что операция шифрования запрещена в режиме PDF/A. - Вероятная причина. В конвейере включён режим PDF/A и запрошено шифрование. Движок ссылается на International Organization for Standardization (ISO) 19005-{1,2,3,4} §6.1.3: ключ
Encryptне должен присутствовать в трейлере файла PDF/A. Движок безусловно отклоняет это сочетание, независимо от порядка вызовов. - Подтверждение / диагностика.
getContext()возвращаетpdfa_modeиencryption_operation. Тест сценария ошибкиtests/SecurityScenarios/PdfAEncryptionRefusalTest.phpпроверяет, что отказ срабатывает независимо от того, включаете ли вы PDF/A до или после вызова шифрования. - Решение.
- Определите, что требуется документу: соответствие для архивирования или шифрование.
- Для архивного документа удалите вызов шифрования.
- Для зашифрованного документа удалите вызов, включающий PDF/A.
- Запустите конвейер заново.
- См. также. Шифрование и разрешения.
Раздел: фильтр изображения запрещён в PDF/A-1
Заголовок раздела «Раздел: фильтр изображения запрещён в PDF/A-1»- Симптом.
Pdf14FeatureRejectedExceptionпри загрузке изображения, с сообщением, в котором указан/JPXDecodeили/JBIG2Decodeи пунктISO 19005-1:2005 §6.1.13. - Вероятная причина. В сборку PDF/A-1 попало изображение с фильтром, появившимся после PDF 1.4. PDF/A-1 ориентирован на набор возможностей PDF 1.4, поэтому
PdfA1FeatureGuardотклоняет Joint Photographic Experts Group (JPEG) 2000 (/JPXDecode) и JBIG2 (/JBIG2Decode). - Подтверждение / диагностика.
src/Writer/PdfA1FeatureGuard.phpсодержит список запрещённых фильтров и выдаёт указанный пункт. Эта проверка отклоняет указанные фильтры только в профиле PDF/A-1; PDF/A-2, PDF/A-3 и профиль PDF 2.0 их допускают. - Решение.
- Перекодируйте исходное изображение без JPEG 2000 или JBIG2. Например, пересохраните его как базовый JPEG или изображение со сжатием Flate.
- Либо выберите целевой профиль PDF/A-2 или PDF/A-3, которые допускают эти фильтры.
- Запустите сборку заново.
- См. также. Справочник по соответствию.
Раздел: шрифт не внедрён в режиме PDF/A
Заголовок раздела «Раздел: шрифт не внедрён в режиме PDF/A»- Симптом. Сборка PDF/A завершается ошибкой при проверке шрифтов, или внешний валидатор сообщает о невнедрённом шрифте.
- Вероятная причина. Глиф выведен шрифтом, программа которого не внедрена. По контракту менеджера PDF/A каждый шрифт должен быть внедрён, и ни один из 14 стандартных шрифтов не допускается без внедрения.
- Подтверждение / диагностика.
src/Contracts/PdfAManagerInterface.phpобъявляетvalidateFont(string $fontName, bool $isEmbedded, array $cmapForward)и документирует правило: каждый шрифт должен быть внедрён, и ни один из 14 стандартных шрифтов не допускается без внедрения. Конкретная реализация этой проверки поставляется вnextpdf/pro. - Решение.
- Определите шрифт, указанный как невнедрённый.
- Настройте для этого шрифта внедряемый файл программы шрифта вместо того, чтобы полагаться на встроенное начертание из 14 стандартных шрифтов.
- Подробнее о взаимодействии с подстановкой Base 14 см. раздел о шрифтах и тегировании.
- Запустите сборку заново и выполните повторную проверку.
- См. также. Шрифты и тегирование.
Раздел: присутствует JavaScript и проверка PDF/A завершается ошибкой
Заголовок раздела «Раздел: присутствует JavaScript и проверка PDF/A завершается ошибкой»- Симптом. Сборка PDF/A завершается ошибкой при проверке JavaScript, или внешний валидатор сообщает о действии JavaScript.
- Вероятная причина. Документ или поле формы содержит действие JavaScript. Контракт менеджера PDF/A ссылается на ISO 19005-4:2020 §6.7.1, который запрещает действия JavaScript.
- Подтверждение / диагностика.
PdfAManagerInterface::validateNoJavaScript()иvalidateNoJavaScriptActions()в docblock-комментариях ссылаются на §6.7.1. - Решение.
- Удалите действие JavaScript из документа или поля формы.
- Если действие необходимо для работы документа, документ не может быть PDF/A. Для этого случая создайте вариант, не являющийся PDF/A.
- Запустите сборку заново и выполните повторную проверку.
- См. также. Справочник по соответствию.
Раздел: тегированный вывод не объявляет PDF/UA-2
Заголовок раздела «Раздел: тегированный вывод не объявляет PDF/UA-2»- Симптом. Документ, собранный с включённым тегированием, не распознаётся как PDF/UA-2, или в нём отсутствует заявление о соответствии PDF/UA-2.
- Вероятная причина. Дерево структуры пусто. Движок не объявляет PDF/UA-2 для документа без тегированной структуры, потому что пустое дерево структуры не соответствует профилю.
- Подтверждение / диагностика. Тест сценария ошибки
tests/Integration/Accessibility/EmptyTaggedPdfDoesNotAdvertisePdfUa2Test.phpпроверяет, что пустой тегированный документ не объявляет PDF/UA-2. Это документированное поведение движка, а не дефект. - Решение.
- Убедитесь, что содержимое проходит через путь тегирования, чтобы дерево структуры заполнялось, а не оставалось пустым.
- Проверьте, что последовательности маркированного содержимого сопоставлены с элементами структуры.
- Запустите сборку заново и повторно проверьте статус PDF/UA-2.
- См. также. Шрифты и тегирование.
Раздел: проверка PDF/UA-2 завершается ошибкой из-за отсутствующего или недопустимого языка
Заголовок раздела «Раздел: проверка PDF/UA-2 завершается ошибкой из-за отсутствующего или недопустимого языка»- Симптом. Проверка PDF/UA-2 завершается ошибкой, потому что запись языка отсутствует или не является допустимым тегом.
- Вероятная причина. У документа или элемента структуры отсутствует допустимый язык. PDF/UA-2 требует объявлять естественный язык; отсутствующее или некорректное значение
Langне проходит строгую проверку. - Подтверждение / диагностика. Тест сценария ошибки
tests/Unit/Conformance/PdfUa2Section844LangStrictTest.phpпроверяет строгое требование к языку. Языковые теги проверяются черезsrc/Accessibility/Bcp47Validator.php; недопустимый тег вызываетsrc/Accessibility/InvalidBcp47TagException.php. - Решение.
- Задайте язык на уровне документа в виде допустимого тега Best Current Practice (BCP) 47, например
en-USилиzh-Hant-TW. - Если фрагмент написан на другом языке, задайте язык для соответствующего элемента структуры.
- Запустите сборку заново и выполните повторную проверку.
- Задайте язык на уровне документа в виде допустимого тега Best Current Practice (BCP) 47, например
- См. также. Шрифты и тегирование.
Граничные случаи и подводные камни
Заголовок раздела «Граничные случаи и подводные камни»- Описанные здесь отказы PDF/A и PDF/UA выдаются внутри движка. Они независимы от вердикта внешнего валидатора и не заменяют его. Для авторитетного результата запустите валидатор, например veraPDF.
- Конкретный модуль записи обязательных объектов PDF/A (поток метаданных Extensible Metadata Platform (XMP), цель вывода с профилем International Color Consortium (ICC)) определяется во время выполнения из
nextpdf/pro. Если установлен только пакет core, эти объекты не выводятся; сборка только на основе core не является полноценным генератором PDF/A. - Отказ при шифровании является безусловным и не зависит от порядка вызовов; включение PDF/A после вызова шифрования всё равно вызывает отказ.
См. также
Заголовок раздела «См. также»Глоссарий: цель вывода · дерево структуры