Ландшафт стандартов
Spec: ISO 32000-2ISO 32000-2Spec: ETSI EN 319 142-1ETSI EN 319 142-1Spec: RFC 3161RFC 3161Spec: WCAG 2.2WCAG 2.2
Краткий обзор
Заголовок раздела «Краткий обзор»Движок PDF подчиняется не одному документу, а небольшой федерации стандартов, написанных разными организациями и ссылающихся друг на друга. Эта страница описывает карту этой федерации в том виде, в каком её отслеживает NextPDF. Она также показывает путь, который проходит положение от “так сказано в стандарте” до “движок так и делает, и это подтверждено тестом”.
Она написана для опытного инженера, которому нужно знать, какой документ регулирует то или иное поведение, прежде чем решать, можно ли отстоять его трактовку в NextPDF.
Почему это важно
Заголовок раздела «Почему это важно»“Поддержка PDF” — утверждение, за которым скрывается вопрос: поддержка чего именно? Базовый синтаксис — это ISO 32000-2. Подписи проходят через ETSI. Метки времени — протокол IETF. HTML и CSS, которые отрисовывает движок, — W3C. Базовая криптография — NIST. Доступность итогового документа — снова W3C.
Если библиотека воспринимает всё это как единый нерасчленённый блок, разобраться в причинах сбоя невозможно. Когда валидатор отклоняет подписанный счёт, полезный первый вопрос — не “повреждён ли PDF?”. Он звучит так: “какое положение какого стандарта не выполнено и на чьей стороне?”. Чтобы задать этот вопрос, нужна карта с организациями и честное описание того, как положение становится поведением.
Кратко о главном
Заголовок раздела «Кратко о главном»- NextPDF отслеживает пять органов стандартизации. ISO отвечает за формат. ETSI — за европейские профили подписи. IETF — за сетевые протоколы (метки времени, криптографические примитивы по ссылке). W3C — за HTML, CSS и критерии доступности. NIST — за утверждённые криптографические алгоритмы.
- Эти документы образуют цепочки, а не список: одна возможность подписанного PDF проходит ISO → ETSI → IETF → NIST, и каждый уровень нормативно ссылается на следующий.
- Положение не становится поведением просто потому, что его прочитали. Оно становится поведением, когда его перефразируют и цитируют, сопоставляют с требованием, реализуют и закрепляют тестом. Страница, описывающая поведение, заявляет об этом через свой уровень доказательности.
- Если положение обязательно, оно содержит нормативное ключевое слово (
shall,must). NextPDF рассматривает такие ключевые слова как контракт.should— рекомендация, которую он документирует именно как рекомендацию, а не как гарантию.
Как к этому подходит NextPDF
Заголовок раздела «Как к этому подходит NextPDF»Федерация, а не монолит
Заголовок раздела «Федерация, а не монолит»ISO 32000-2 — центр этой системы. Он определяет, что такое соответствующий файл. Такой файл должен удовлетворять каждому требованию документа, но может опускать любую возможность, которую документ явно не требует Spec: ISO 32000-2, §6ISO 32000-2 §6. Он также возлагает обязательство на средство записи: всё, что NextPDF создаёт или изменяет в файле, должно соответствовать формату и сохранять согласованность с уже имеющимися элементами Spec: ISO 32000-2, §6ISO 32000-2 §6. Именно из-за этого положения движок отказывается выдавать структурно несогласованное инкрементное обновление. Это не предпочтение NextPDF, а собственное правило формата.
Из этого центра ISO 32000-2 указывает наружу. Обработка подписей в нём определяется “посредством ссылки” на серию ETSI EN 319 142 для PAdES. ETSI, в свою очередь, ссылается на IETF RFC 3161 для токена метки времени и на серию NIST FIPS для алгоритмов хеширования и подписи. Поэтому любая возможность — это путь через несколько документов, каждый из которых нормативен для своего уровня.
- Step 1 of 5: ISO 32000-2 §12.8 signatures
- Step 2 of 5: ETSI EN 319 142-1 PAdES baseline
- Step 3 of 5: RFC 3161 timestamp token
- Step 4 of 5: NIST FIPS 180-4 hash strength
- Step 5 of 5: WCAG 2.2 tagged output
Как положение становится поведением
Заголовок раздела «Как положение становится поведением»Опасный способ работать со стандартами — прочитать положение и затем писать код по памяти. Путь NextPDF намеренно длиннее, потому что именно такой путь можно проверить:
- RetrieveThe clause is read from the standard, not from memory.
- CiteIt is paraphrased and pinned with a chunk digest, never quoted.
- ClassifyIts keyword (shall / should / may) sets whether it is a contract or a recommendation.
- MapThe obligation becomes a concrete engine requirement.
- ImplementThe requirement is built into the pipeline.
- PinA test holds the behaviour against drift.
- TagThe page that describes it declares its evidence level.
Именно на шаге “классифицировать” снимается большая часть неоднозначности. Спецификации кодируют уровни своих требований ключевыми словами: хорошо известным набором MUST, SHALL, SHOULD, MAY. Значение этих ключевых слов закреплено соглашением IETF о ключевых словах требований, обновлённым для уточнения, что нормативны только формы в верхнем регистре, а затем накладывается на описательный текст каждой спецификации
Spec: RFC 2119RFC 2119 Spec: RFC 8174RFC 8174.
NextPDF воспринимает shall как жёсткую границу, которую движок не пересекает, а
should — как рекомендацию, которой он следует и которую документирует как рекомендацию,
но никогда не как обещание. Именно это различие отделяет честное
заявление о возможностях от завышенного.
Соответствие градуированное, а не бинарное
Заголовок раздела «Соответствие градуированное, а не бинарное»“Соответствующий” редко сводится к одному биту. Стандарты подписи разбиты на уровни: например, европейский долговременный профиль с архивированием существует специально для добавления токенов меток времени, благодаря которым подпись остаётся проверяемой ещё долго после создания Spec: ETSI EN 319 122-1, §6ETSI EN 319 122-1 §6. Это гораздо более сильное заявление, чем просто базовая подпись. Стандарт доступности устроен так же: уровень соответствия достигается только при выполнении каждого критерия успеха на этом уровне, и заявление называет уровень, которого оно действительно достигло Spec: WCAG 2.2, §5.2.1WCAG 2.2 §5.2.1. Поэтому NextPDF указывает профиль и уровень, а не безоговорочное “совместимо”.
Практический пример
Заголовок раздела «Практический пример»Ландшафт стандартов не запускают; его читают, чтобы решить, что запрашивать у движка. В частности, вызов подписания с возможностью долговременной проверки — это заявление о том, какая точка на цепочке вам нужна:
<?php
declare(strict_types=1);
use NextPDF\Core\Document;use NextPDF\Security\Signature\CertificateInfo;use NextPDF\Security\Signature\DigitalSigner;use NextPDF\Security\Signature\SignatureLevel;
// The signature level is a coordinate on the ISO -> ETSI -> RFC trail.// PAdES B-B is the ETSI baseline CMS SignedData the Core engine produces;// B-T adds an RFC 3161 timestamp, and B-LT/B-LTA add the DSS and document// timestamps that keep a signature validatable after the certificate// expires. The level you name is the point on the trail you are asking for.$certInfo = CertificateInfo::fromFiles( certPath: 'signer-cert.pem', keyPath: 'signer-key.pem',);
// The functional signing path is the direct two-phase signing engine.// (Document::setSignature() records intent but its writer seam is not yet// wired and fail-fasts on output — see the PadesOrchestrator docblock.)$signer = new DigitalSigner( certInfo: $certInfo, level: SignatureLevel::PAdES_B_B,);
$result = $signer->sign(file_get_contents('agreement.pdf'));
printf( "PAdES %s CMS: %d bytes, timestamp=%s\n", SignatureLevel::PAdES_B_B->value, $result->getSize(), $result->hasTimestamp() ? 'yes' : 'no',);Указание PAdES_B_LTA вместо простого базового уровня — не рычаг производительности. Это решение о том, насколько далеко вниз по цепочке стандартов простирается обязательство. B-LT и B-LTA подключают уровни DSS и архивной метки времени и требуют корпоративного пакета LTV во время выполнения. Вместо тихой деградации движок отказывается делать вид, будто более низкий уровень обеспечивает более высокий.
Распространённое заблуждение
Заголовок раздела «Распространённое заблуждение»Ловушка в том, чтобы читать “NextPDF соответствует стандартам” как единую всеобъемлющую гарантию. Это не так, и ни один честный движок такой гарантии не даёт. Соответствие определяется по каждому стандарту, по каждому положению и по каждому уровню. NextPDF ориентируется на базовый уровень PDF 2.0, именованные профили PAdES и заявленные уровни доступности: каждый ограничен своей областью применения, каждый процитирован. Заявление, за которым не стоят положение и уровень, — это маркетинг, и Insider_ его не публикует.
Вторая, более тонкая ловушка — считать, что нормативное should означает обещание. Это рекомендация. NextPDF документирует рекомендации как рекомендации. Гарантии движка строятся на положениях shall, и это различие принципиально.
Пределы и границы
Заголовок раздела «Пределы и границы»Эта страница — карта, а не территория. Она не перечисляет каждое положение, которое реализует NextPDF, и не является сертификатом соответствия. Доказательство по каждому поведению находится на тематической странице, которой принадлежит это поведение, с её собственным уровнем доказательности: например, PDF 2.0: что изменилось для изменений формата.
Ландшафт стандартов тоже меняется. Выходят новые редакции. Ссылки обновляются. Положение, процитированное здесь, привязано к снимку корпуса, записанному в citations этой страницы. Когда вышестоящий стандарт пересматривается, цитата заново проверяется по новому положению, а не считается перенесённой автоматически. Там, где эта страница называет возможность уровня Premium, она говорит о том, какому стандарту она подчиняется, а не о внутреннем механизме.
Связанная документация
Заголовок раздела «Связанная документация»- PDF 2.0: что изменилось — конкретные изменения ISO 32000-2, на которые указывает уровень формата в этой карте.
- Документация как продукт — почему дисциплина сопоставления положений с поведением считается инженерной работой.
- Дисциплина цитирования — правило, определяющее, как здесь цитируется положение и что означает уровень доказательности.
Глоссарий
Заголовок раздела «Глоссарий»- Орган стандартизации — организация, публикующая спецификацию (ISO, ETSI, IETF, W3C, NIST). Каждый отвечает за свой уровень стека PDF.
- Нормативное положение — требование в стандарте, обозначенное ключевым словом (
shall/mustдля обязательного,shouldдля рекомендуемого,mayдля необязательного). - Цепочка стандартов — упорядоченная последовательность спецификаций, через которую проходит одна возможность, где каждый документ нормативно ссылается на следующий.
- Уровень соответствия — градуированная ступень соответствия (базовый профиль ETSI, уровень WCAG). Заявление называет уровень, который действительно достигнут, а не безоговорочное “совместимо”.
- PAdES — PDF Advanced Electronic Signatures, семейство профилей подписи ETSI EN 319 142, на которое ссылается ISO 32000-2 для подписания PDF.