Pular para o conteúdo

Baseline do PDF 2.0: cláusulas da ISO 32000-2 implementadas pelo NextPDF

Declaração de limite. O NextPDF implementa as cláusulas citadas; a conformidade total com a ISO 32000-2 não é afirmada como uma declaração genérica.

A ISO 32000-2:2020 é o padrão base do PDF 2.0. O NextPDF Core emite PDF 2.0 sem restrições por padrão (ConformanceMode::Plain): um cabeçalho %PDF-2.0, um catálogo de documento, uma estrutura de referência cruzada e um trailer em conformidade. Esta página documenta as cláusulas de baseline que o NextPDF implementa e o limite explícito dessa implementação. A biblioteca implementa as cláusulas citadas. Ela não faz uma declaração genérica de “totalmente em conformidade com a ISO 32000-2”. Um arquivo em conformidade é aquele que um leitor em conformidade consegue processar de acordo com o padrão. Essa determinação cabe a um verificador, não a uma flag da biblioteca.

Terminal window
composer require nextpdf/core:^3

A saída de baseline do PDF 2.0 é o padrão do Core; você não precisa fazer uma chamada de perfil. ConformanceMode::Plain é o discriminador padrão. Os perfis PDF/A-4, PDF/UA-2, PDF/X e ZUGFeRD são subconjuntos restritos construídos sobre esse baseline.

Todo documento do NextPDF começa como um arquivo PDF 2.0 antes que qualquer perfil seja aplicado. O gravador atende às obrigações estruturais que a ISO 32000-2 impõe a um arquivo em conformidade:

  • Catálogo de documento — §7.7.2: o objeto raiz referenciado pelo /Root do trailer, presente em toda saída.
  • Estrutura de referência cruzada — §7.5.8: uma tabela ou stream de referência cruzada que localiza cada objeto.
  • Trailer — §7.5.5: o dicionário de trailer que um arquivo em conformidade deve carregar, incluindo o identificador /ID do arquivo. O /ID é único por arquivo e é excluído por normalização na comparação. É por isso que a maioria das saídas com múltiplos objetos usa reproducibility_profile: structural, não bit a bit.
  • Estrutura lógica — §14.7.2: quando o modo marcado está habilitado, o baseline de StructTreeRoot que dá suporte ao perfil PDF/UA-2.
  • Extensão de versão — §7.12: quando uma extensão de desenvolvedor é declarada, o mecanismo do dicionário Extensions / prefixo de desenvolvedor.

O NextPDF implementa essas cláusulas. Ele não executa uma avaliação completa de conformidade com a ISO 32000-2. Use um validador externo, como o verificador de gramática Arlington ou o veraPDF, para obter esse veredito. O NextPDF\Compliance fornece as verificações cruzadas de fluxo de bytes (ArlingtonValidator) que evidenciam divergências estruturais. Elas ajudam na verificação. Elas não são um certificado.

SímboloEfeito
ConformanceMode::PlainPadrão — saída PDF 2.0 sem restrições.
ConformanceMode::requiresPdf17(): boolRetorna False para os modos PDF 2.0; o gravador emite um cabeçalho %PDF-2.0.
NextPDF\Compliance\Validator\ArlingtonValidatorVerificação cruzada de gramática contra o modelo PDF Arlington (auxilia a verificação).
<?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";

Em produção, execute um validador estrutural externo (Arlington / veraPDF) na integração contínua (CI) contra uma saída representativa e use o relatório gerado como gate. A biblioteca emite a estrutura; o verificador determina se ela está em conformidade. A biblioteca não faz nenhuma declaração genérica de conformidade.

  • /ID é único por arquivo. Uma saída de baseline que contém um /ID de trailer, /CreationDate ou prefixos de subconjunto de fonte não é estável byte a byte. Compare usando o perfil estrutural (qpdf-normalize), não um sha256 bruto.
  • Plain ≠ arquivamento. ConformanceMode::Plain não é PDF/A. Ele não carrega nenhum OutputIntent nem marcador pdfaid. Não o trate como arquivamento.
  • Implementa ≠ totalmente em conformidade. Esta página lista as cláusulas que o NextPDF implementa. Ela não afirma que cada cláusula da ISO 32000-2 é atendida para cada documento. Esse é um veredito por documento emitido por um verificador.
  • As extensões têm namespace. Uma extensão de desenvolvedor usa o dicionário Extensions da §7.12 com um prefixo registrado. Uma chave privada sem prefixo é um desvio do baseline.

A emissão do baseline é o caminho central do mecanismo. O orçamento é de tempo de parede ≤ 1500 ms e pico ≤ 64 MB para um documento típico. O gravador de baseline tem suporte na matriz de backport (PHP 8.1–8.4).

A saída de baseline do PDF 2.0 não inclui criptografia nem assinatura, a menos que você adicione uma explicitamente. A criptografia oferece confidencialidade e é abordada em uma receita separada. Os bits de permissão da ISO dependem da cooperação do leitor; eles não são controle de acesso. O baseline não oferece nenhuma garantia de segurança.

DeclaraçãoEspecificaçãoCláusulareference_id
Um arquivo PDF 2.0 em conformidade deve carregar um trailer / estrutura de arquivo em conformidade.ISO 32000-2§7.5.5
Cada objeto é localizável por meio de uma tabela ou stream de referência cruzada.ISO 32000-2§7.5.8
O arquivo tem um catálogo de documento como objeto raiz.ISO 32000-2§7.7.2
A conformidade é definida em termos de gravadores e leitores em conformidade.ISO 32000-2§7.2
As extensões de versão usam o dicionário Extensions / prefixo de desenvolvedor.ISO 32000-2§7.12
A saída marcada se apoia no baseline de estrutura lógica da ISO 32000-2.ISO 32000-2§14.7.2

As citações são referências de clause-id + reference_id para o corpus de verificação. Nenhum texto de normas é reproduzido; o NextPDF resume as cláusulas com suas próprias palavras.