ISO 19005-4 (PDF/A-4): карта возможностей NextPDF
International Organization for Standardization (ISO) 19005-4:2020 — это архивный профиль Portable Document Format (PDF) 2.0, известный как PDF/A-4. Эта страница сверяет профиль с возможностями NextPDF без завышения уровня поддержки: что формирует Core, что добавляет расширение nextpdf/pro и что явно остаётся вне охвата NextPDF. NextPDF формирует структуры, относящиеся к PDF/A-4; только валидатор может подтвердить, что файл соответствует профилю.
Установка
Заголовок раздела «Установка»composer require nextpdf/core:^3# PDF/A-4 file authoring (OutputIntent + ICC + XMP) requires:# composer require nextpdf/proКонцептуальный обзор
Заголовок раздела «Концептуальный обзор»ISO 19005-4:2020 основан на ISO 32000-2:2020 (PDF 2.0), тогда как PDF/A-2 и PDF/A-3 основаны на ISO 32000-1:2008 (PDF 1.7). NextPDF отражает это различие в базовой версии через ConformanceMode::requiresPdf17(). Метод возвращает false для всех вариантов PDF/A-4 и true для PDF/A-2 и PDF/A-3.
PDF/A-4 определяет три варианта соответствия. Базовый профиль не задаёт букву pdfa:conformance. PDF/A-4e (приложение B, инженерный / 3D-контент) задаёт pdfa:conformance = E. PDF/A-4f (приложение A, встроенные файлы) задаёт pdfa:conformance = F. ISO 19005-4:2020 §6.7.3 определяет схему идентификации PDF/A в пространстве имён Association for Intelligent Information Management (AIIM). Согласно этой схеме, файл, который не относится ни к PDF/A-4e, ни к PDF/A-4f, не содержит записи pdfa:conformance. NextPDF точно воспроизводит это поведение в ConformanceMode::pdfaConformanceLetter(): PdfA4 возвращает пустую строку, PdfA4e возвращает E, PdfA4f возвращает F.
Ключевая граница между редакциями — создание файла PDF/A-4. Словарь OutputIntent, встроенный профиль International Color Consortium (ICC), схема расширения Extensible Metadata Platform (XMP), гарантии создания подмножеств шрифтов и запрет на шифрование реализованы в Enterprise PdfAManager. Enterprise PdfAManager поставляется в расширении nextpdf/pro. В установке только с Core Document::enablePdfA() выбрасывает InvalidConfigException, потому что возможность security.pdfa не зарегистрирована. Готовый к запуску пример (examples/32-pdfa4-icc.php) показывает это: он проверяет реестр возможностей и завершается понятным сообщением без трассировки стека.
Поэтому в одном лишь Core область PDF/A-4 — только дискриминатор. NextPDF фиксирует, какой вариант PDF/A-4 объявляет документ. NextPDF формирует маркеры pdfaid:part = 4 / pdfa:conformance, определённые схемой. Создание полного файла PDF/A-4 — и проверка его соответствия — отдельные шаги. Для первого шага требуется nextpdf/pro. Для второго шага требуется veraPDF.
Поверхность API
Заголовок раздела «Поверхность API»| Поверхность | Редакция | Что предоставляет |
|---|---|---|
ConformanceMode::PdfA4 / PdfA4e / PdfA4f | core | Дискриминатор варианта |
ConformanceMode::pdfaPart() → 4 | core | Номер части ISO 19005 |
ConformanceMode::pdfaConformanceLetter() → '' / 'E' / 'F' | core | Буква соответствия §6.7.3 |
ConformanceMode::requiresPdf17() → false | core | Контроль происхождения PDF 2.0 |
Document::enablePdfA() | pro | Создание OutputIntent + ICC + XMP; выбрасывает InvalidConfigException в Core |
Пример кода — быстрый старт
Заголовок раздела «Пример кода — быстрый старт»<?php
declare(strict_types=1);
use NextPDF\Conformance\ConformanceMode;
// Core: introspect the declared PDF/A-4f contract.$mode = ConformanceMode::PdfA4f;$mode->pdfaPart(); // 4$mode->pdfaConformanceLetter(); // 'F' (ISO 19005-4:2020 §6.7.3 / Annex A)$mode->requiresPdf17(); // false (PDF/A-4 is PDF 2.0 lineage)Пример кода — рабочая среда
Заголовок раздела «Пример кода — рабочая среда»<?php
declare(strict_types=1);
use NextPDF\Core\Document;use NextPDF\Exception\InvalidConfigException;use NextPDF\Support\CapabilityRegistry;
// PDF/A-4 file authoring requires the Premium extension. Probe first so a// Core-only install gets a clear rationale, not a stack trace.$registry = CapabilityRegistry::getInstance();if (!$registry->get('security.pdfa')->isAvailable()) { throw new InvalidConfigException( configKey: 'security.pdfa', givenValue: 'Core-only install', expectedType: 'nextpdf/pro extension (Enterprise PdfAManager)', );}
$doc = Document::createStandalone();$doc->enablePdfA(); // Emits OutputIntent + ICC + pdfaid XMP (Premium).// … write content …$doc->save(__DIR__ . '/out/archive-a4.pdf');
// The file now CARRIES PDF/A-4 structures. Conformance is still unproven// until veraPDF asserts it://// verapdf --flavour 4 out/archive-a4.pdfГраничные случаи и подводные камни
Заголовок раздела «Граничные случаи и подводные камни»- Core не может создать файл PDF/A-4.
enablePdfA()выбрасывает исключение в Core. Core предоставляет только дискриминатор и маркеры XMP. - Базовый PDF/A-4 не формирует
pdfa:conformance. Согласно ISO 19005-4:2020 §6.7.3, букву задают только PDF/A-4e и PDF/A-4f.ConformanceMode::PdfA4возвращает пустую строку намеренно. - Происхождение от PDF 2.0, а не от PDF 1.7. Частая ошибка — повторно использовать конвейер PDF/A-3, который ожидает
%PDF-1.7. PDF/A-4 — это PDF 2.0;requiresPdf17()возвращаетfalseдля всех вариантов PDF/A-4. - Проверка ICC относится к Premium. Проверку OutputIntent ICC по ISO 19005-4:2020 §6.2.2 (сигнатура
acsp, таблица тегов, белая точка D50) выполняет EnterprisePdfAManager, а не Core. - Библиотека не сертифицирует файл. Установка
PdfA4fи формирование маркеров не делают результат корректным файлом PDF/A-4f. Проверьте с помощью veraPDF.
Производительность
Заголовок раздела «Производительность»Интерфейс PDF/A-4 в Core — это чистая интроспекция типизированных значений: диспетчеризация enum match, O(1) и без выделений памяти. Путь создания в Premium добавляет OutputIntent и пакет ICC во время записи. Его стоимость — размер встроенного профиля, который учитывается в бюджете записи. Проверка veraPDF выполняется вне основного пути генерации.
Примечания по безопасности
Заголовок раздела «Примечания по безопасности»PDF/A-4 запрещает шифрование. Enterprise PdfAManager гарантирует инвариант запрета шифрования и применяет его в правильном порядке относительно enablePdfA(), чтобы вызывающий код не мог случайно совместить Advanced Encryption Standard in Galois/Counter Mode (AES-GCM) с архивным режимом. Предварительная защита Core в HasSecurity::enablePdfA() отклоняет неподдерживаемое сочетание до того, как будет записан хотя бы один байт. Подробности об архивном конвейере см. в модели угроз проекта.
Соответствие
Заголовок раздела «Соответствие»Эта страница представляет собой сопоставление возможностей, а не заявление о соответствии.
| Область ISO 19005-4:2020 | Раздел | Охват NextPDF | Статус |
|---|---|---|---|
| Схема идентификации варианта | §6.7.3 | ConformanceMode формирует pdfaid:part = 4 и букву pdfa:conformance, определённую схемой | Заявлено (Core; модульные тесты в tests/Unit/Conformance/) |
| Контроль происхождения PDF 2.0 | §6.7.3 / базовый | requiresPdf17() возвращает false для всех случаев PDF/A-4 | Проверено (модульными тестами) |
| OutputIntent + встроенный ICC | §6.2.2 | Компонент Enterprise PdfAManager (nextpdf/pro) | Только Premium (не Core) |
| Схема расширения XMP, создание подмножеств шрифтов, запрет на шифрование | §6 / приложения A/B | Компонент Enterprise PdfAManager (nextpdf/pro) | Только Premium (не Core) |
| Определение соответствия | Раздел 5 | Не выполняется NextPDF — veraPDF | Явный отказ от охвата |
Поддержка — это не соответствие, и эта страница намеренно разделяет эти два понятия. (a) NextPDF Core формирует структуры, которые ISO 19005-4:2020 §6.7.3 определяет для идентификации варианта; это реализация, подтверждённая tests/Unit/Conformance/ConformanceModePdfAVariantTest.php (тест проходит). (b) Соответствие файла профилю PDF/A-4 — отдельное утверждение; согласно ISO 19005-4:2020, раздел 5, его может сделать только валидатор. Раздел 5 устанавливает, что фактическое определение соответствия нормативным требованиям выполняет инструмент проверки. NextPDF заявляет только (a). NextPDF не заявляет (b). Проверьте с помощью veraPDF (verapdf --flavour 4 … или php oracle/run.php для oracle-обвязки — она запускается только при наличии двоичного файла veraPDF и включается вручную).
Формулировки “PDF/A-4 compliant”, “fully conformant” и “PDF/A-4 certified” намеренно отсутствуют на этой странице. NextPDF формирует структуры, относящиеся к PDF/A-4; он не гарантирует, что файл соответствует профилю.
Цитаты перефразированы из корпуса соответствия NextPDF. Полные 64-символьные дайджесты reference_id записаны во вступительных метаданных страницы и в docs/public/modules/core/_normative-evidence-conf.md.
См. также
Заголовок раздела «См. также»- Модуль Conformance — маршрутизация
ConformanceModeи оракул veraPDF - Модуль Compliance — валидатор PDF/R-1 и грамматика Arlington
- Сопоставление спецификации PDF/UA-2 — аналог для профиля доступности