Обзор соответствия: что создаёт NextPDF и кто определяет соответствие
Утверждение о границе. Поддержка профиля не является соответствием; решение о соответствии выносит независимый валидатор.
На этой странице перечислены стандартные профили, на которые ориентируется NextPDF Core. Каждая страница этого раздела следует одному правилу из стандартов: библиотека создаёт результат, предназначенный для соответствия профилю, а независимый валидатор решает, действительно ли конкретный файл Portable Document Format (PDF) ему соответствует. Таким валидатором может быть veraPDF, средство проверки PDF/UA, валидатор электронных счетов на основе Schematron или принимающая сторона. Для PDF/A стандарт ISO 19005-4 §6.7.3 явно проводит эту границу: маркеры pdfaid:part/pdfaid:rev обозначают намерение создателя; они не определяют соответствие. Решение принимается по пункту стандарта о соответствии — в процессе за пределами создающей библиотеки.
NextPDF не заявляет о соответствии. Он создаёт структурные элементы, требуемые профилем. Если профиль недоступен из-за ограничения, NextPDF сразу завершается ошибкой на границе API, поэтому отсутствующая возможность проявляется как явная ошибка, а не как незаметно несоответствующий файл.
Установка
Заголовок раздела «Установка»composer require nextpdf/core:^3Для некоторых профилей ниже требуется пакет Premium nextpdf/pro; на каждой соответствующей странице это указано. Core предоставляет дискриминатор соответствия (NextPDF\Conformance\ConformanceMode) и валидаторы потока байтов в NextPDF\Compliance. Путь создания OutputIntent / International Color Consortium (ICC) / Extensible Metadata Platform (XMP) для архивных профилей поставляется в nextpdf/pro.
Концептуальный обзор
Заголовок раздела «Концептуальный обзор»NextPDF направляет документ к контракту соответствия через один типизированный дискриминатор — NextPDF\Conformance\ConformanceMode. Это перечисление — источник истины для контракта ISO, который должен соблюдать модуль записи. У него есть варианты Plain, PdfUa1, PdfUa2, PdfA2, PdfA3/PdfA3b/PdfA3u и PdfA4/PdfA4e/PdfA4f. Модуль записи читает режим и создаёт требуемую структуру; он никогда не устанавливает флаг, заявляющий, что файл соответствует.
Для всех страниц этого раздела действуют три границы:
- Поддержка ≠ соответствие. Создание требуемых профилем метаданных — это возможность, а не вердикт.
- Проверка ≠ сертификация. Отчёт валидатора без ошибок — это подтверждение, а не сертификат.
- Протестированный профиль ≠ сертификация. Тесты NextPDF подтверждают, что созданные байты соответствуют процитированным пунктам; это не аккредитованный аудит.
Поверхность API
Заголовок раздела «Поверхность API»Точки входа соответствия в NextPDF\Core\Document:
| Метод | Действие | Уровень |
|---|---|---|
enablePdfA(?object $version = null) | Настраивает документ на вариант PDF/A ConformanceMode (по умолчанию PdfA4); планирует OutputIntent + ICC + XMP при вызове save(). Выбрасывает InvalidConfigException, если nextpdf/pro отсутствует. | API в Core, движок в Premium |
enableTaggedPdf(string $lang = 'en', ?ConformancePolicy $policy = null) | Устанавливает ConformanceMode::PdfUa2, подключает генератор тегированного содержимого и проверяет языковой тег по политике. | Core (базовый уровень) |
Пример кода — быстрый старт
Заголовок раздела «Пример кода — быстрый старт»<?php
declare(strict_types=1);
require_once __DIR__ . '/vendor/autoload.php';
use NextPDF\Core\Document;
$doc = Document::createStandalone();$doc->enableTaggedPdf('en'); // ConformanceMode::PdfUa2$doc->setTitle('Conformance index sample');$doc->writeHtml('<h1>Hello</h1><p>Tagged content.</p>');$doc->save(getenv('NEXTPDF_COOKBOOK_OUTPUT') ?: __DIR__ . '/out.pdf');Пример кода — производственный
Заголовок раздела «Пример кода — производственный»Неприменимо. Страницы отдельных профилей содержат исполняемые производственные примеры; эта страница-указатель служит для навигации.
Граничные случаи и подводные камни
Заголовок раздела «Граничные случаи и подводные камни»- Эта страница-указатель не заявляет о каком-либо поведении. Таблицы проверенных утверждений содержатся на страницах отдельных профилей. Эта страница излагает только определяющее правило.
- Имя профиля в метаданных — это утверждение, а не доказательство. Программа просмотра, обнаружившая
pdfaid:part=4, видит намерение создателя, а не доказательство соответствия файла. - Ограничение возможностей работает по принципу немедленного отказа. При установке только Core вызов архивного пути Premium приводит к
InvalidConfigExceptionс сообщением об обновлении, а не к незаметно несоответствующему файлу.
Производительность
Заголовок раздела «Производительность»Неприменимо к странице-указателю. Страницы отдельных профилей объявляют собственные бюджеты.
Замечания по безопасности
Заголовок раздела «Замечания по безопасности»Профили соответствия ограничивают структуру, а не защищают от угроз. PDF/A-4 запрещает шифрование; PDF/UA-2 требует доступной структуры. Ни то ни другое не является средством защиты. Модель безопасности движка описана в центре доверия.
Соответствие
Заголовок раздела «Соответствие»| Утверждение | Стандарт | Пункт | reference_id (идентификатор ссылки) |
|---|---|---|---|
Маркеры pdfaid, добавленные создателем, обозначают намерение; пункт стандарта о соответствии определяет, что решение принимает валидатор или процесс, а не библиотека. | ISO 19005-4 | §6.7.3 | |
| Соответствие PDF/UA-2 оценивается по требованиям соответствия стандарта, а не заявляется создающим программным обеспечением. | ISO 14289-2 | §7.2.2 | |
| Соответствующий файл PDF 2.0 должен удовлетворять заданным требованиям к структуре файла и трейлеру; библиотека создаёт их, но не принимает решение о результате. | ISO 32000-2 | §7.5.5 |
Цитаты здесь — это указатели clause-id + reference_id на корпус проверки. Текст стандартов не воспроизводится.