Pro редакция
Соответствие требованиям
Краткий обзор
Заголовок раздела «Краткий обзор»NextPDF Pro формирует отчёты по событиям языковых тегов PDF/UA-2, проверяет и встраивает XML электронных счетов Factur-X / ZUGFeRD, а также встраивает или читает хранилища манифестов C2PA. Эти возможности дают отчёты и структурированные результаты. Они не сертифицируют документ и не гарантируют нормативную достаточность.
Доступность и лицензирование
Заголовок раздела «Доступность и лицензирование»Эта возможность поставляется в NextPDF Pro (nextpdf/pro) и активируется лицензионным конвертом уровня Pro. Развёртывание без такого права доступа не загружает классы этой возможности. Compliance входит в состав редакции Pro; отдельного флага лицензии для каждой возможности нет. Сравнить редакции и получить лицензию.
Установка
Заголовок раздела «Установка»composer require nextpdf/pro:^3Концептуальный обзор
Заголовок раздела «Концептуальный обзор»Модуль Compliance имеет три независимые поверхности.
Отчёты по языковым тегам. LangComplianceReporter выводит структурированную запись JSON для каждого события языкового тега PDF/UA-2. Каждая запись содержит проблемный тег, машиночитаемую причину, разобранные компоненты тега, ссылку на пункт ISO 14289-2 §8.4.4 и метку времени. ConformancePolicy — это фасад Premium, который по умолчанию использует строгую обработку языка UA-2: он завершается защищённым отказом, когда некорректный или незарегистрированный тег BCP-47 попадает в запись /Lang. Послабляющий отказ (ConformancePolicy::withStrictUa2(false)) возвращает прежнее разрешающее поведение и записывает уведомление. NextPDF помечает этот отказ как устаревший; используйте вместо него строгий режим по умолчанию. Отказ существует с версии 5.0 и исчезнет в следующем мажорном выпуске. Чтобы выполнить миграцию, проверьте свой корпус на некорректные значения /Lang, исправьте их, затем уберите вызов отказа, чтобы применялся строгий режим по умолчанию.
Обработка электронных счетов. EInvoiceValidator проверяет гибридный PDF по семантической модели данных EN 16931 и спецификации контейнера Factur-X 1.08 / ZUGFeRD 2.4. Он определяет профиль, запускает движок бизнес-правил EN 16931 и выполняет проход Schematron. Перед проверкой он извлекает встроенный XML счёта из PDF — включая PDF с потоками объектов, которые являются стандартным выводом распространённых производителей, таких как Ghostscript, Gotenberg и Antenna House, и которые прежнее извлечение не могло прочитать. Извлекатель принимает параметризованные подтипы MIME по RFC 7303 (например, text/xml; charset=UTF-8) и имена встроенных файлов в виде литеральных строк ISO 32000-2, включая экранирование. FacturXEmbedder создаёт гибридный документ PDF/A-3 с прикреплённым XML Factur-X. EInvoiceValidationResult сообщает профиль, синтаксис, нарушения правил и проверки обёртки.
Происхождение. C2paManifestEmbedder встраивает предоставленное вызывающим кодом хранилище манифестов C2PA в строку байтов PDF или извлекает его обратно. ManifestStore — это неизменяемый объект-значение, пересекающий границу. Этот шов не синтезирует заявления и не разрешает привязки хешей.
Что здесь означает «соответствие»
Заголовок раздела «Что здесь означает «соответствие»»Этот модуль сообщает о том, что он проверяет. Он не утверждает, что документ юридически соответствует требованиям, сертифицирован или юридически обязывающ, и не гарантирует, что какой-либо результат удовлетворяет нормативному акту или юрисдикции.
- Валидатор электронных счетов проверяет семантическую модель EN 16931 и спецификацию контейнера Factur-X / ZUGFeRD только. Это не валидатор налогового органа. Национальные расширения — например, итальянское SDI, французское Chorus Pro, немецкое XRechnung — вне области применения. Как отмечает сам EN 16931-1, за соблюдение правил соответствующего законодательства отвечает эмитент счёта.
- Репортёр языковых тегов формирует отчёт о событиях тегов. Он не делает документ соответствующим.
- Встраивание C2PA записывает предоставленный вызывающим кодом манифест. Оно не создаёт и не подписывает заявления внутри него.
Поддержка стандарта не равнозначна соответствию ему. Обратитесь к своей команде по комплаенсу, чтобы оценить нормативную достаточность для вашего применения.
Почему это работает именно так
Заголовок раздела «Почему это работает именно так»Несущее решение — это чёткая граница между проверкой и сертификацией. Каждая поверхность возвращает свидетельство — отчёт, результат проверки, встроенный манифест — но никогда не утверждение о том, что документ юридически соответствует требованиям. Это сохраняет шов честным во всех редакциях. ConformancePolicy завершается защищённым отказом на некорректном теге /Lang, а C2paManifestEmbedder никогда не подписывает переносимые им заявления. EInvoiceValidator::validate() возвращает EInvoiceValidationResult; зелёный isValid() — это один из входов вашего решения, а не вердикт, который можно без проверки передать регулятору. Это свидетельство сочетается с вашими собственными средствами контроля, а не заменяет их, поэтому оно остаётся правдивым даже при враждебном вводе.
Проектный контекст: Соответствие, которое можно передать аудитору.
Поверхность API
Заголовок раздела «Поверхность API»| Класс | Назначение |
|---|---|
LangComplianceReporter | Выводить структурированные записи событий языковых тегов. |
ConformancePolicy | Фасад строгой языковой политики UA-2 уровня Premium. |
EInvoiceValidator | Проверять EN 16931 / Factur-X / ZUGFeRD; возвращать результат. |
EInvoiceValidationResult | Профиль, синтаксис, нарушения правил, проверки обёртки. |
FacturXEmbedder | Создавать гибридный документ PDF/A-3 + XML Factur-X. |
C2paManifestEmbedder | Встраивать или извлекать хранилище манифестов C2PA. |
ManifestStore | Неизменяемый объект-значение хранилища манифестов C2PA. |
Пример кода — быстрый старт
Заголовок раздела «Пример кода — быстрый старт»use NextPDF\Pro\Compliance\EInvoice\EInvoiceValidator;
$result = $validator->validate('/path/to/invoice.pdf');$ok = $result->isValid(); // true only if wrapper, attachment, profile, and no fatal BRПример кода — продакшн
Заголовок раздела «Пример кода — продакшн»$result = $validator->validate($pdfPath);
foreach ($result->businessRuleViolations as $violation) { $logger->warning('einvoice.br_violation', [ 'rule' => $violation->ruleId, 'severity' => $violation->severity->value, ]);}// A green result is one input to your decision, not a compliance verdict.Граничные случаи и подводные камни
Заголовок раздела «Граничные случаи и подводные камни»- Корректный PDF, не являющийся Factur-X, возвращает результат «не электронный счёт», а не вызывает исключение.
- Извлекатель XML читает PDF с потоками объектов (стандартный вывод Ghostscript, Gotenberg и Antenna House) и принимает параметризованные подтипы MIME по RFC 7303 и имена файлов в виде литеральных строк ISO 32000-2. Это извлечение для совместимости с выводом соответствующих производителей, а не авторитетная проверка вложений против враждебного ввода — полная активация xref для враждебных публичных конечных точек является документированной отложенной границей. Относитесь к извлечению из недоверенных источников соответствующим образом.
- Пустой список нарушений бизнес-правил сам по себе не означает, что документ действителен; также применяются проверки обёртки и вложений.
- NextPDF объявляет послабляющий отказ от строгого UA-2 устаревшим; перейдите на строгий режим по умолчанию (см. «Концептуальный обзор»). Он исчезнет в следующем мажорном выпуске.
Производительность
Заголовок раздела «Производительность»Стоимость проверки растёт с размером встроенного XML и числом правил. Отчёты по языковым тегам имеют постоянную стоимость на событие.
Замечания по безопасности
Заголовок раздела «Замечания по безопасности»Весь разбор XML отключает разрешение внешних сущностей (защита от XXE) и ограничивает распаковку. Относитесь к XML электронных счетов и байтам C2PA из недоверенных источников как к враждебным.
Размещение данных и меры по защите ПДн
Заголовок раздела «Размещение данных и меры по защите ПДн»XML электронного счёта может содержать персональные и финансовые данные. Обработка выполняется внутри процесса и локально; для проверки модуль не выполняет исходящих сетевых вызовов. Применяйте к извлечённому XML и отчётам собственные меры по хранению и минимизации.
Безопасная телеметрия и очистка журналов
Заголовок раздела «Безопасная телеметрия и очистка журналов»Записи репортёра и журналы проверки могут содержать значения тегов и идентификаторы правил. Они не содержат полные полезные нагрузки счетов. Очищайте или редактируйте значения тегов перед пересылкой журналов в общие приёмники, если эти значения конфиденциальны.
Соответствие
Заголовок раздела «Соответствие»| Поведение | Ссылка | Статус |
|---|---|---|
Объявление естественного языка (/Lang) | ISO 14289-2:2024 §8.4.4 | Проверяется / сообщается |
| Семантическая модель базового счёта | EN 16931-1:2026 | Проверяется (эмитент остаётся ответственным) |
| Хранилище манифестов C2PA / JUMBF | C2PA 2.1 §11.1 | Встраивание / извлечение поддерживается |
Эта таблица фиксирует спецификации, на которые ориентирован NextPDF Pro, и то, что он проверяет. Это не заявление о сертификации или нормативной достаточности.
Поведение в режиме FIPS
Заголовок раздела «Поведение в режиме FIPS»Этот модуль не выполняет криптографическое подписание. Подписание заявлений C2PA и хранение ключей вне его области применения; поведение подписания в режиме FIPS см. в модуле Security.
Модель угроз
Заголовок раздела «Модель угроз»Недоверенный XML электронных счетов и байты C2PA — основные входные данные. Меры противодействия: разбор с защитой от XXE, ограниченная распаковка, отсутствие синтеза заявлений через шов C2PA и отсутствие сетевого ввода-вывода во время проверки.
Контракт поведения
Заголовок раздела «Контракт поведения»LangComplianceReporterвыводит структурированную запись JSON на каждое событие языкового тега PDF/UA-2 с проблемным тегом, машиночитаемой причиной, разобранными компонентами тега, ссылкой на ISO 14289-2 §8.4.4 и меткой времени.ConformancePolicyпо умолчанию использует строгую обработку языка UA-2 и завершается защищённым отказом, когда некорректный или незарегистрированный тег BCP-47 попадает в/Lang. Послабляющий отказ устарел и удаляется в следующем мажорном выпуске.EInvoiceValidatorопределяет профиль, запускает движок бизнес-правил EN 16931 и проход Schematron и возвращаетEInvoiceValidationResult. Это не валидатор налогового органа; национальные расширения вне области применения, и эмитент остаётся ответственным согласно EN 16931-1.FacturXEmbedderсоздаёт гибридный документ PDF/A-3 с прикреплённым XML Factur-X.C2paManifestEmbedderвстраивает или извлекает предоставленное вызывающим кодомManifestStore; он не синтезирует и не подписывает заявления.- Этот модуль сообщает о том, что он проверяет. Он не сертифицирует документ и не гарантирует нормативную достаточность.
Примечание о границе Enterprise
Заголовок раздела «Примечание о границе Enterprise»Compliance в Pro охватывает отчёты по языковым тегам, проверку EN 16931 / Factur-X / ZUGFeRD и встраивание/извлечение манифестов C2PA. Расширенные архивные профили и профили подписей, а также подписание заявлений C2PA с хранением ключей — это задачи уровня Enterprise, документированные отдельно, и они не предоставляются этим модулем.
Резервный вариант Core / альтернатива
Заголовок раздела «Резервный вариант Core / альтернатива»В Core нет аналога для отчётов по языковым тегам, обработки электронных счетов или встраивания манифестов C2PA. Это дополнения Pro.
Граница публикации
Заголовок раздела «Граница публикации»Эта страница документирует только внешне наблюдаемое поведение и поддерживаемую публичную поверхность API. Внутренние пути пространств имён, вспомогательные классы, таблицы механизмов, имена файлов runbook и префиксы тикетов вне области применения.
См. также
Заголовок раздела «См. также»- Security — подписание и маскирование.
- Enterprise editions — расширенные архивные профили и профили подписей.
- Specifications — индекс упомянутых стандартов.
- Compliance — Deep Reference — полная поверхность классов и методов.