PDF 2.0: o que mudou
ISO 32000-2 Evidence: Standard-backed
Visão geral
Seção intitulada “Visão geral”PDF 2.0 é a ISO 32000-2. É a primeira especificação PDF de propriedade integral da ISO, e não da Adobe. Trata-se, acima de tudo, de uma consolidação e limpeza da 1.7, não de uma reinvenção drástica. Esta página explica o que de fato mudou, quais dessas mudanças você vai sentir na prática e como o NextPDF adota a base 2.0 por padrão, mas ainda consegue escrever a estrutura de arquivo mais antiga quando um perfil exige isso.
Por que isso importa
Seção intitulada “Por que isso importa”“PDF 2.0” soa como se devesse ser um formato diferente. Não é. Um arquivo 2.0 usa o mesmo modelo de objetos, xref e trailer que a 1.7, o que facilita subestimar as mudanças reais. As mudanças que causam problemas não são os recursos de destaque. São os enrijecimentos: regras que eram opcionais na 1.7 e agora são esperadas, e recursos que foram discretamente removidos. Um documento que era um arquivo 1.7 perfeitamente válido pode se tornar um arquivo 2.0 não conforme sem uma única diferença visível.
O outro motivo pelo qual isso importa é a direção. O NextPDF é um motor PDF 2.0. Depois que você entende o que a 2.0 espera e onde ela difere deliberadamente da 1.7, fica mais fácil raciocinar sobre por que o motor recusa algumas coisas, incorpora fontes de forma mais rigorosa e usa, por padrão, um stream de referência cruzada em vez de uma tabela.
A versão resumida
Seção intitulada “A versão resumida”- PDF 2.0 = ISO 32000-2, de propriedade da ISO, baseada na 1.7 (sem substituí-la).
- O cabeçalho passa a ser
%PDF-2.0; um escritor conforme declara a versão como 2.0 no cabeçalho ou no/Versiondo catálogo. - A maior parte da estrutura do arquivo permanece inalterada — os mesmos objetos indiretos, o mesmo trailer, a mesma disciplina de
startxref/%%EOF. - O stream de referência cruzada é o padrão natural da 2.0; a clássica tabela de 20 bytes continua válida e ainda é exigida por alguns perfis PDF/A.
- A 2.0 adiciona elementos (por exemplo, estrutura mais rica de arquivos associados e de partes do documento, criptografia mais forte por meio da extensão AES-256-GCM) e remove outros (algumas tags de estrutura; expectativas mais rigorosas de incorporação de fontes; coleções de caracteres CJK descontinuadas).
- O NextPDF adota a 2.0 como alvo por padrão e consegue serializar a estrutura 1.7/1.4 quando um perfil de conformidade exige isso.
Como o NextPDF aborda isso
Seção intitulada “Como o NextPDF aborda isso”A versão é uma decisão, expressa em um único ponto: a estratégia de serialização.
Pdf20StreamStrategy (src/Writer/Pdf20StreamStrategy.php) escreve o cabeçalho %PDF-2.0, informa /2.0 como a versão do catálogo e emite um stream de referência cruzada comprimido. Ela também aplica diretamente o enrijecimento de fontes da 2.0. No perfil 2.0, ela pode impor uma regra contra uma fonte Type 1 padrão não incorporada, em vez de apenas emitir um aviso, porque o padrão agora espera que essas fontes sejam incorporadas. As duas estratégias de tabela (Pdf17TableStrategy, Pdf14TableStrategy) existem justamente porque alguns perfis precisam do formato mais antigo. PDF/A-2/-3 exigem a tabela tradicional de referência cruzada, e PDF/A-1 ainda proíbe streams de objetos e de referência cruzada. Todas as três estratégias implementam a única interface PdfSerializationStrategy, de modo que o escritor permanece idêntico acima dessa fronteira. Apenas o formato de trailer/xref muda.
A criptografia mais forte é conectada com a mesma intencionalidade. O PdfXrefWriter (src/Writer/PdfXrefWriter.php) propaga uma opção de adesão ao AES-256-GCM (a extensão ISO/TS 32003 da 2.0) para o dicionário de criptografia, de modo que a versão do handler e as entradas de modo de cifra emitidas correspondam aos bytes realmente produzidos. O motor não anuncia uma cifra e escreve outra.
O desenho geral é este: a 2.0 é o padrão; a estrutura mais antiga é acessível de propósito, nunca por acidente; e, onde a 2.0 enrijece uma regra, o NextPDF consegue manter o critério mais rigoroso em vez de relaxá-lo silenciosamente.
- Step 1 of 3: ISO 32000-1 PDF 1.7 — the Adobe-authored base, adopted by ISO
- Step 2 of 3: ISO 32000-2 PDF 2.0 — ISO-owned consolidation, tightening, and additions
- Step 3 of 3: ISO/TS 32003 AES-256-GCM (AESV4) — an encryption extension to PDF 2.0
O que as evidências dizem
Seção intitulada “O que as evidências dizem”A declaração da versão é normativa. Spec: ISO 32000-2, §7.5.2 ISO 32000-2 §7.5.2 estabelece que um processador que escreve um arquivo conforme deve identificar a versão — seja no cabeçalho, seja como a entrada /Version do catálogo — como 2.0, e que o cabeçalho é %PDF-1.n ou %PDF-2.n, seguido de um único marcador de fim de linha.
Spec: ISO 32000-2, §7.7.2 ISO 32000-2 §7.7.2 acrescenta que o
/Version do catálogo prevalece sobre uma versão de cabeçalho anterior, o que é exatamente o que torna possível
um incremento de versão. Evidence: Standard-backed
O fato de a 2.0 ser uma consolidação, e não uma reescrita, aparece naquilo que ela mantém: o stream de referência cruzada (/Type /XRef) é o mesmo mecanismo introduzido no PDF 1.5 e mantido como padrão da 2.0 ( Spec: ISO 32000-2, §7.5.8 ISO 32000-2 §7.5.8 ). A estrutura de objetos indiretos, trailer e startxref permanece inalterada em relação à descrição da página anterior.
As mudanças que importam são remoções e enrijecimentos. O padrão registra que seis elementos de estrutura padrão presentes no namespace de estrutura padrão do PDF 1.7 não fazem parte do namespace do PDF 2.0 — Art, BlockQuote, TOC, Reference, BibEntry e Code ( Spec: ISO 32000-2, Annex L.3 ISO 32000-2 Annex L.3 , com as diferenças de namespace definidas conforme a Spec: ISO 32000-2, §14.8.6 ISO 32000-2 §14.8.6 ). Ele também enrijece as quatorze fontes Type 1 padrão: onde a 1.0–1.7 permitia que seus dicionários omitissem as entradas de métricas, a 2.0 encerra essa permissão ( Spec: ISO 32000-2, §9.6.2.1 ISO 32000-2 §9.6.2.1 ). E revisa as coleções de caracteres CJK predefinidas. Por exemplo, a Adobe-Korea1 está descontinuada na 2.0. A Adobe-KR é adicionada. Nenhuma dessas mudanças altera a aparência de uma página existente. Todas elas podem alterar se ela está em conformidade.
| Categoria | Exemplos (2.0 vs. 1.7) | Muda a aparência? | Por que importa |
|---|---|---|---|
| Inalterado | Objetos indiretos, trailer, startxref/%%EOF, streams de xref | — | A 2.0 usa o mesmo modelo de objetos; a maior parte das ferramentas continua valendo |
| Adicionado | Estrutura mais rica de arquivos associados / partes do documento; criptografia AES-256-GCM (ISO/TS 32003) | Não | Novo recurso ao qual você adere; ignorado com segurança por leitores mais antigos |
| Enrijecido | Espera-se que as fontes Standard-14 estejam incorporadas; as métricas não podem mais ser omitidas | Não | Um arquivo 1.7 válido pode ser um arquivo 2.0 não conforme |
| Removido | Seis elementos de estrutura do namespace 1.7 (Art, BlockQuote, TOC, Reference, BibEntry, Code); coleções CJK descontinuadas (por exemplo, Adobe-Korea1) | Não | Silencioso: nada visível sinaliza a conformidade perdida |
As mudanças do PDF 2.0 que importam são predominantemente invisíveis: adições às quais você adere, além de tightenings/removals que alteram a conformidade sem alterar um único pixel renderizado.
Exemplo prático
Seção intitulada “Exemplo prático”A única diferença visível entre um arquivo 2.0 e um arquivo 1.7, muitas vezes, está em duas linhas — o cabeçalho e a versão do catálogo —, ainda que as regras de conformidade por trás delas sejam substancialmente diferentes.
%PDF-2.0 % was %PDF-1.7...1 0 obj<< /Type /Catalog /Version /2.0 % catalog states 2.0; overrides header if later /Pages 2 0 R >>endobj...% Cross-reference STREAM is the 2.0 default (was often a 20-byte table)99 0 obj<< /Type /XRef /Size 100 /W [1 2 2] /Filter /FlateDecode /Root 1 0 R >>stream<binary xref entries>endstreamendobjstartxref12345%%EOFUm leitor vê %PDF-2.0 e um /Version /2.0. O que ele não vê — e o que um verificador de conformidade vê — é que agora se espera que esse arquivo incorpore as fontes padrão e não use as tags de estrutura que a 2.0 removeu. Os bytes que diferem são poucos. As regras que diferem não são.
Equívoco comum
Seção intitulada “Equívoco comum”A armadilha é “geramos PDF 2.0, então somos mais conformes do que antes.” Escrever %PDF-2.0 é uma afirmação, não uma garantia. Um arquivo pode trazer o cabeçalho 2.0 e ainda assim violar a 2.0 — referenciando uma fonte padrão não incorporada ou usando um recurso que a 2.0 removeu — exatamente da forma que era tolerada na 1.7. O marcador de versão eleva o critério pelo qual o arquivo é avaliado. Ele não eleva o arquivo acima desse critério. O erro inverso é supor que um arquivo 1.7 passa a funcionar como 2.0 ao trocar o cabeçalho: em geral, ele é renderizado de forma idêntica e falha na conformidade, porque os enrijecimentos são reais, ainda que invisíveis.
Limites e fronteiras
Seção intitulada “Limites e fronteiras”Ter a base 2.0 como alvo significa que o NextPDF usa, por padrão, a estrutura de arquivo 2.0 e consegue manter as regras mais rigorosas da 2.0. Isso não significa que todo recurso opcional da 2.0 esteja implementado, nem que emitir um cabeçalho 2.0 certifique um documento em relação a PDF/A, PDF/UA ou qualquer outro perfil. Esses são alvos de conformidade separados e mais rigorosos, sobrepostos à especificação base, cada um com a própria validação.
Esta página é uma orientação prática sobre as diferenças entre as versões, não um registro exaustivo das mudanças da ISO 32000-2 em relação à 32000-1. Quando um recurso específico da 2.0 ou uma descontinuação rege o comportamento do motor, esse comportamento é ancorado em sua própria cláusula. Esta página mapeia o panorama em vez de enumerar cada diferença em nível de cláusula.
Mini-FAQ
Seção intitulada “Mini-FAQ”A PDF 2.0 é retrocompatível com leitores 1.7? Em grande parte, para a estrutura inalterada. Os novos recursos da 2.0 costumam ser projetados de modo que um leitor mais antigo possa ignorar o que não entende. Mas um recurso exclusivo da 2.0 não será respeitado por um leitor 1.7.
O cabeçalho ou o /Version do catálogo prevalece? O /Version do catálogo tem precedência quando indica uma versão posterior à do cabeçalho. É isso que permite que uma atualização incremental eleve a versão de um arquivo sem reescrever o cabeçalho.
Por que o NextPDF usa, por padrão, um stream de referência cruzada, e não uma tabela? O stream de referência cruzada é o mecanismo natural do PDF 2.0 — compacto e capaz de indexar objetos comprimidos. A tabela de 20 bytes ainda é escrita quando um perfil (notadamente alguns níveis de PDF/A) exige isso.
Documentos relacionados
Seção intitulada “Documentos relacionados”- O que um PDF realmente é — o modelo de objetos e o xref que o PDF 2.0 mantém da 1.7.
- O panorama dos padrões — onde a ISO 32000-2 se posiciona entre os padrões que o NextPDF acompanha e como uma cláusula se torna comportamento.
- Fontes: a parte difícil — o enrijecimento da incorporação de fontes é uma das mudanças da 2.0 que você de fato sente.
Glossário
Seção intitulada “Glossário”- PDF 2.0 — a especificação PDF padronizada como ISO 32000-2, a primeira edição de propriedade da ISO, e não da Adobe.
- ISO 32000-1 — a padronização ISO do PDF 1.7 da Adobe; a base sobre a qual o PDF 2.0 se constrói.
- ISO/TS 32003 — uma especificação técnica que estende o PDF 2.0 com criptografia AES-256-GCM (AESV4).
/Versiondo catálogo — a entrada do catálogo do documento que declara a versão do PDF; prevalece sobre o cabeçalho quando nomeia uma versão posterior.- Stream de referência cruzada — o mecanismo de referência cruzada do PDF 1.5+ / 2.0 (
/Type /XRef); é o padrão do NextPDF, com a tabela clássica ainda disponível para perfis mais antigos. - Enrijecimento — uma regra que era opcional ou permitida na 1.7 e passa a ser esperada ou exigida na 2.0, alterando a conformidade sem alterar a aparência.