Базовый уровень PDF 2.0: пункты ISO 32000-2, реализованные в NextPDF
Заявление о границах. NextPDF реализует приведённые пункты; полное соответствие ISO 32000-2 в целом не заявляется.
ISO 32000-2:2020 — это базовый стандарт PDF 2.0. NextPDF Core по умолчанию формирует неограниченный PDF 2.0 (ConformanceMode::Plain): заголовок %PDF-2.0, каталог документа, структуру перекрёстных ссылок и соответствующий стандарту трейлер. На этой странице перечислены базовые пункты, которые реализует NextPDF, и явно обозначена граница. Библиотека реализует приведённые пункты, но не заявляет о “полном соответствии ISO 32000-2” в целом. Соответствующий файл — это файл, который соответствующий стандарту читатель может обработать в рамках стандарта. Такой вывод делает средство проверки, а не флаг библиотеки.
Установка
Заголовок раздела «Установка»composer require nextpdf/core:^3Базовый вывод PDF 2.0 используется в Core по умолчанию; вызывать профиль не нужно. ConformanceMode::Plain — дискриминатор по умолчанию. Профили PDF/A-4, PDF/UA-2, PDF/X и ZUGFeRD представляют собой ограниченные подмножества, наложенные на этот базовый уровень.
Концептуальный обзор
Заголовок раздела «Концептуальный обзор»Каждый документ NextPDF начинается как файл PDF 2.0 ещё до применения какого-либо профиля. Модуль записи выполняет структурные требования, которые ISO 32000-2 предъявляет к соответствующему файлу:
- Каталог документа — §7.7.2: корневой объект, на который ссылается
/Rootв трейлере, присутствует в каждом выводе. - Структура перекрёстных ссылок — §7.5.8: таблица или поток перекрёстных ссылок, которые определяют местоположение каждого объекта.
- Трейлер — §7.5.5: словарь трейлера, который должен быть в соответствующем файле, включая идентификатор файла
/ID./IDуникален для каждого файла и нормализуется при сравнении. Именно поэтому для большинства выводов с несколькими объектами используетсяreproducibility_profile: structural, а не побитовое сравнение. - Логическая структура — §14.7.2: когда включён режим тегирования, базовый уровень
StructTreeRootподдерживает профиль PDF/UA-2. - Расширение версии — §7.12: когда объявлено расширение разработчика, используется механизм словаря Extensions / префикса разработчика.
NextPDF реализует эти пункты, но не выполняет полную оценку соответствия ISO 32000-2. Для такого заключения используйте внешнее средство проверки, например грамматический анализатор Arlington или veraPDF. NextPDF\Compliance поставляет перекрёстные проверки байтового потока (ArlingtonValidator), которые выявляют структурные расхождения. Они помогают при проверке, но не являются сертификатом.
Состав API
Заголовок раздела «Состав API»| Символ | Действие |
|---|---|
ConformanceMode::Plain | По умолчанию — неограниченный вывод PDF 2.0. |
ConformanceMode::requiresPdf17(): bool | False для режимов PDF 2.0; модуль записи формирует заголовок %PDF-2.0. |
NextPDF\Compliance\Validator\ArlingtonValidator | Грамматическая перекрёстная проверка по модели Arlington PDF (помогает в проверке). |
Пример кода — быстрый старт
Заголовок раздела «Пример кода — быстрый старт»<?php
declare(strict_types=1);
require_once __DIR__ . '/vendor/autoload.php';
use NextPDF\Core\Document;
$out = getenv('NEXTPDF_COOKBOOK_OUTPUT') ?: __DIR__ . '/baseline.pdf';
$doc = Document::createStandalone(); // ConformanceMode::Plain — PDF 2.0$doc->setTitle('PDF 2.0 baseline');$doc->writeHtml('<h1>Hello PDF 2.0</h1><p>Unconstrained baseline output.</p>');$doc->save($out);
echo "Wrote {$out} (%PDF-2.0). Validate structure with an external checker.\n";Пример кода — промышленная эксплуатация
Заголовок раздела «Пример кода — промышленная эксплуатация»Для промышленной эксплуатации запускайте внешнее средство структурной проверки (Arlington / veraPDF) в CI на репрезентативном выводе и принимайте решение по его отчёту. Библиотека формирует структуру; средство проверки определяет, соответствует ли она требованиям. Библиотека не заявляет о соответствии в целом.
Граничные случаи и подводные камни
Заголовок раздела «Граничные случаи и подводные камни»/IDуникален для каждого файла. Базовый вывод, содержащий в трейлере/ID,/CreationDateили префиксы подмножеств шрифтов, не является побитово стабильным. Сравнивайте по структурному профилю (qpdf-normalize), а не по исходному sha256.- Plain ≠ архивный.
ConformanceMode::Plain— это не PDF/A. Он не содержит ни OutputIntent, ни маркераpdfaid. Не рассматривайте его как архивный. - Реализует ≠ полностью соответствует. На этой странице перечислены пункты, которые реализует NextPDF. Она не утверждает, что каждый пункт ISO 32000-2 выполняется для каждого документа. Такой вердикт выносит средство проверки для каждого отдельного документа.
- Расширения имеют пространство имён. Расширение разработчика использует словарь Extensions из §7.12 с зарегистрированным префиксом. Частный ключ без префикса — отклонение от базового уровня.
Производительность
Заголовок раздела «Производительность»Формирование базового вывода — основной путь движка. Бюджет для типичного документа: реальное время ≤ 1500 мс и пик памяти ≤ 64 МБ. Базовый модуль записи поддерживает матрицу обратного портирования (PHP 8.1–8.4).
Замечания по безопасности
Заголовок раздела «Замечания по безопасности»Базовый вывод PDF 2.0 не содержит ни шифрования, ни подписи, пока вы не добавите их явно. Шифрование обеспечивает конфиденциальность и рассматривается в отдельном рецепте. Биты разрешений ISO зависят от того, будет ли читатель их соблюдать, и не являются контролем доступа. Базовый уровень не даёт гарантий безопасности.
Соответствие
Заголовок раздела «Соответствие»| Утверждение | Стандарт | Пункт | reference_id (идентификатор ссылки) |
|---|---|---|---|
| Соответствующий файл PDF 2.0 должен содержать соответствующий трейлер / структуру файла. | ISO 32000-2 | §7.5.5 | |
| Каждый объект можно найти через таблицу или поток перекрёстных ссылок. | ISO 32000-2 | §7.5.8 | |
| Корневой объект файла — каталог документа. | ISO 32000-2 | §7.7.2 | |
| Соответствие описывается через соответствующие стандарту модули записи и читатели. | ISO 32000-2 | §7.2 | |
| Расширения версии используют словарь Extensions / префикс разработчика. | ISO 32000-2 | §7.12 | |
| Тегированный вывод строится на базовом уровне логической структуры ISO 32000-2. | ISO 32000-2 | §14.7.2 |
Ссылки — это указатели clause-id + reference_id на корпус проверки. Текст стандартов не воспроизводится; NextPDF пересказывает пункты своими словами.