ISO 19005-4 (PDF/A-4): mapeamento dos recursos do NextPDF
Visão geral
Seção intitulada “Visão geral”A ISO 19005-4:2020 da International Organization for Standardization (ISO) define o perfil de arquivamento do Portable Document Format (PDF) 2.0 conhecido como PDF/A-4. Esta página mapeia esse perfil para o NextPDF sem exagerar o suporte: o que o Core emite, o que a extensão nextpdf/pro acrescenta e o que o NextPDF explicitamente não cobre. O NextPDF emite estruturas relevantes para PDF/A-4; apenas um validador pode afirmar que um arquivo está em conformidade.
Instalação
Seção intitulada “Instalação”composer require nextpdf/core:^3# PDF/A-4 file authoring (OutputIntent + ICC + XMP) requires:# composer require nextpdf/proVisão conceitual
Seção intitulada “Visão conceitual”A ISO 19005-4:2020 baseia-se na ISO 32000-2:2020 (PDF 2.0), enquanto o PDF/A-2 e o PDF/A-3 baseiam-se na ISO 32000-1:2008 (PDF 1.7). O NextPDF registra essa diferença de linhagem em ConformanceMode::requiresPdf17(). O método retorna false para todos os modos de PDF/A-4 e true para PDF/A-2 e PDF/A-3.
O PDF/A-4 define três formas de conformidade. O perfil base não usa uma letra pdfa:conformance. O PDF/A-4e (Anexo B, conteúdo de engenharia / 3D) define pdfa:conformance = E. O PDF/A-4f (Anexo A, arquivos incorporados) define pdfa:conformance = F. A ISO 19005-4:2020 §6.7.3 especifica o esquema de identificação PDF/A no namespace da Association for Intelligent Information Management (AIIM). A norma afirma que um arquivo que não esteja em conformidade nem com PDF/A-4e nem com PDF/A-4f não fornece nenhuma entrada pdfa:conformance. O NextPDF reproduz esse comportamento exatamente em ConformanceMode::pdfaConformanceLetter(): PdfA4 retorna a string vazia, PdfA4e retorna E, PdfA4f retorna F.
A fronteira crítica entre as edições é a criação de arquivos PDF/A-4. O dicionário OutputIntent, o perfil incorporado do International Color Consortium (ICC), o esquema de extensão do Extensible Metadata Platform (XMP), as garantias de subconjunto de fontes e a proibição de criptografia são implementados no PdfAManager Enterprise. O PdfAManager Enterprise é fornecido pela extensão nextpdf/pro. Em uma instalação apenas com o Core, Document::enablePdfA() lança InvalidConfigException porque a capacidade security.pdfa não está registrada. O exemplo executável (examples/32-pdfa4-icc.php) demonstra isso verificando o registro de capacidades e falhando de forma controlada com uma mensagem clara em vez de um rastreamento de pilha.
Portanto, somente no Core, a superfície PDF/A-4 é apenas o discriminador. O NextPDF registra qual variante de PDF/A-4 um documento declara. O NextPDF emite os marcadores pdfaid:part = 4 / pdfa:conformance que o esquema define. Produzir um arquivo PDF/A-4 completo — e validar sua conformidade — são etapas separadas. A primeira etapa requer nextpdf/pro. A segunda etapa requer o veraPDF.
Superfície de API
Seção intitulada “Superfície de API”| Superfície | Edição | O que fornece |
|---|---|---|
ConformanceMode::PdfA4 / PdfA4e / PdfA4f | core | O discriminador de variante |
ConformanceMode::pdfaPart() → 4 | core | Número da parte ISO 19005 |
ConformanceMode::pdfaConformanceLetter() → '' / 'E' / 'F' | core | Letra de conformidade §6.7.3 |
ConformanceMode::requiresPdf17() → false | core | Controle de linhagem PDF 2.0 |
Document::enablePdfA() | pro | Criação de OutputIntent + ICC + XMP; lança InvalidConfigException no Core |
Exemplo de código — Início rápido
Seção intitulada “Exemplo de código — Início rápido”<?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)Exemplo de código — Produção
Seção intitulada “Exemplo de código — Produção”<?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.pdfCasos extremos & pegadinhas
Seção intitulada “Casos extremos & pegadinhas”- O Core não pode criar um arquivo PDF/A-4.
enablePdfA()lança uma exceção no Core. O Core expõe apenas o discriminador e os marcadores XMP. - O PDF/A-4 base não emite nenhuma
pdfa:conformance. De acordo com a ISO 19005-4:2020 §6.7.3, apenas o PDF/A-4e e o PDF/A-4f definem a letra.ConformanceMode::PdfA4retorna a string vazia por design. - Linhagem PDF 2.0, não PDF 1.7. Um erro comum é reutilizar um pipeline de PDF/A-3 que assume
%PDF-1.7. O PDF/A-4 é PDF 2.0;requiresPdf17()retornafalsepara todos os modos de PDF/A-4. - A validação ICC é Premium. A validação ICC do OutputIntent da ISO 19005-4:2020 §6.2.2 (magia
acsp, tabela de tags, ponto branco D50) é tratada peloPdfAManagerEnterprise, não pelo Core. - A biblioteca não certifica o arquivo. Definir
PdfA4fe emitir os marcadores não torna a saída um arquivo PDF/A-4f válido. Valide com o veraPDF.
Desempenho
Seção intitulada “Desempenho”A superfície PDF/A-4 do Core é apenas introspecção de tipos por valor: despacho por enum match, O(1) e sem alocações. O caminho de criação Premium adiciona o OutputIntent e o pacote ICC durante a gravação. Seu custo corresponde ao tamanho do perfil incorporado, tratado dentro do orçamento do gravador. A validação do veraPDF é executada fora de banda, não durante a geração.
Notas de segurança
Seção intitulada “Notas de segurança”O PDF/A-4 proíbe a criptografia. O PdfAManager Enterprise impõe a invariante que proíbe criptografia e define sua ordem em relação a enablePdfA() para que um chamador não combine acidentalmente o Advanced Encryption Standard em Galois/Counter Mode (AES-GCM) com o modo de arquivamento. A proteção antecipada do Core em HasSecurity::enablePdfA() rejeita a combinação não suportada antes que qualquer byte seja gravado. Consulte o modelo de ameaças do projeto para detalhes do pipeline de arquivamento.
Conformidade
Seção intitulada “Conformidade”Esta página é um mapeamento de recursos, e não uma declaração de conformidade.
| Área da ISO 19005-4:2020 | Cláusula | Cobertura do NextPDF | Status |
|---|---|---|---|
| Esquema de identificação de variante | §6.7.3 | ConformanceMode emite pdfaid:part = 4 e a letra pdfa:conformance correspondente | Declarado (Core; testado por unidade em tests/Unit/Conformance/) |
| Controle de linhagem PDF 2.0 | §6.7.3 / base | requiresPdf17() retorna false para todos os casos de PDF/A-4 | Verificado (testado por unidade) |
| OutputIntent + ICC incorporado | §6.2.2 | O PdfAManager Enterprise (nextpdf/pro) | Somente Premium (não Core) |
| Esquema de extensão XMP, subconjunto de fontes, proibição de criptografia | §6 / Anexo A/B | O PdfAManager Enterprise (nextpdf/pro) | Somente Premium (não Core) |
| Determinação de conformidade | Cláusula 5 | Não realizado pelo NextPDF — veraPDF | Não cobertura explícita |
Suporte não é conformidade — e esta página separa os dois deliberadamente. (a) O NextPDF Core emite as estruturas que a ISO 19005-4:2020 §6.7.3 define para a identificação de variante; isso é implementação, comprovado por tests/Unit/Conformance/ConformanceModePdfAVariantTest.php (testes passando). (b) Um arquivo estar em conformidade com PDF/A-4 é uma afirmação separada que somente um validador pode fazer, de acordo com a ISO 19005-4:2020 Cláusula 5. A Cláusula 5 afirma que uma ferramenta de verificação faz a determinação efetiva da conformidade em relação aos requisitos normativos. O NextPDF faz a afirmação (a). O NextPDF não faz a afirmação (b). Valide com o veraPDF (verapdf --flavour 4 …, ou php oracle/run.php para o harness do oracle — que só é executado quando o binário do veraPDF está presente, como controle opcional).
As expressões “PDF/A-4 compliant”, “fully conformant” e “PDF/A-4 certified” estão deliberadamente ausentes desta página. O NextPDF emite estruturas relevantes para PDF/A-4; ele não garante que o arquivo esteja em conformidade.
As citações são parafraseadas do corpus de conformidade do NextPDF. Os resumos completos de 64 caracteres dos reference_id são registrados no front matter da página e em docs/public/modules/core/_normative-evidence-conf.md.
Veja também
Seção intitulada “Veja também”- Módulo de conformidade — roteamento de
ConformanceModee o oracle do veraPDF - Módulo de conformidade regulatória — validador PDF/R-1 e gramática Arlington
- Mapeamento da especificação PDF/UA-2 — a contraparte do perfil de acessibilidade