Solução de problemas: falhas de validação de PDF/A e PDF/UA
Estas entradas cobrem falhas que o engine gera ao manter um documento em um perfil Portable Document Format/Archive (PDF/A) ou Portable Document Format/Universal Accessibility (PDF/UA). Os números de cláusula abaixo vêm do código-fonte do engine e das mensagens de exceção. Esta página os apresenta em paráfrase. O engine relata as falhas de perfil que detecta; ele não certifica a conformidade do documento. Use um validador externo, com seu próprio conjunto de regras, para o veredito de conformidade definitivo.
Entrada: a criptografia é recusada em PDF/A
Seção intitulada “Entrada: a criptografia é recusada em PDF/A”- Sintoma.
NextPDF\Security\Exception\IncompatiblePdfAModeExceptioncom uma mensagem que diz que uma operação de criptografia é proibida em um modo PDF/A. - Causa provável. O pipeline habilitou um modo PDF/A e solicitou criptografia. O engine cita a International Organization for Standardization (ISO) 19005-{1,2,3,4} §6.1.3: a chave
Encryptnão deve estar presente no trailer de um arquivo PDF/A. O engine recusa essa combinação de forma absoluta, independentemente da ordem das chamadas. - Evidência / diagnóstico.
getContext()retornapdfa_modeeencryption_operation. O teste do caminho de falhatests/SecurityScenarios/PdfAEncryptionRefusalTest.phpverifica que a recusa é disparada independentemente de você habilitar o PDF/A antes ou depois da chamada de criptografia. - Resolução.
- Decida o que o documento precisa: conformidade de arquivamento ou criptografia.
- Para um documento de arquivamento, remova a chamada de criptografia.
- Para um documento criptografado, remova a chamada que habilita o PDF/A.
- Execute o pipeline novamente.
- Relacionado. Criptografia e permissões.
Entrada: o filtro de imagem é proibido em PDF/A-1
Seção intitulada “Entrada: o filtro de imagem é proibido em PDF/A-1”- Sintoma.
Pdf14FeatureRejectedExceptiondurante a ingestão da imagem, com uma mensagem que cita/JPXDecodeou/JBIG2Decodee a cláusulaISO 19005-1:2005 §6.1.13. - Causa provável. Uma build PDF/A-1 processou uma imagem que usa um filtro introduzido após o PDF 1.4. O PDF/A-1 tem como alvo o conjunto de recursos do PDF 1.4; por isso, o
PdfA1FeatureGuardrejeita Joint Photographic Experts Group (JPEG) 2000 (/JPXDecode) e JBIG2 (/JBIG2Decode). - Evidência / diagnóstico.
src/Writer/PdfA1FeatureGuard.phpcontém a lista de filtros proibidos e gera a cláusula citada. O guard rejeita esses filtros apenas no perfil PDF/A-1; o PDF/A-2, o PDF/A-3 e o perfil PDF 2.0 os permitem. - Resolução.
- Recodifique a imagem de origem sem JPEG 2000 ou JBIG2. Por exemplo, salve-a novamente como um JPEG baseline ou uma imagem comprimida com Flate.
- Como alternativa, gere em PDF/A-2 ou PDF/A-3, que permitem esses filtros.
- Execute a build novamente.
- Relacionado. Referência de conformidade.
Entrada: uma fonte não está incorporada em PDF/A
Seção intitulada “Entrada: uma fonte não está incorporada em PDF/A”- Sintoma. Uma build em PDF/A falha na validação de fontes, ou um validador externo relata uma fonte não incorporada.
- Causa provável. Um glifo foi desenhado com uma fonte cujo programa não está incorporado. O contrato do gerenciador PDF/A determina que toda fonte deve ser incorporada e que nenhuma fonte standard-14 é permitida sem incorporação.
- Evidência / diagnóstico.
src/Contracts/PdfAManagerInterface.phpdeclaravalidateFont(string $fontName, bool $isEmbedded, array $cmapForward)e documenta a regra: toda fonte deve ser incorporada e nenhuma fonte standard 14 é permitida sem incorporação. A imposição concreta é distribuída emnextpdf/pro. - Resolução.
- Identifique a fonte relatada como não incorporada.
- Configure essa fonte com um arquivo de programa que possa ser incorporado, em vez de depender de uma face standard-14 embutida.
- Para entender a interação com a substituição de Base 14, leia a entrada sobre fontes e marcação.
- Execute a build novamente e revalide.
- Relacionado. Fontes e marcação.
Entrada: JavaScript está presente e a validação de PDF/A falha
Seção intitulada “Entrada: JavaScript está presente e a validação de PDF/A falha”- Sintoma. Uma build em PDF/A falha na validação de JavaScript, ou um validador externo relata uma ação JavaScript.
- Causa provável. O documento ou um campo de formulário carrega uma ação JavaScript. O contrato do gerenciador PDF/A cita a ISO 19005-4:2020 §6.7.1, que proíbe ações JavaScript.
- Evidência / diagnóstico.
PdfAManagerInterface::validateNoJavaScript()evalidateNoJavaScriptActions()citam o §6.7.1 em seus docblocks. - Resolução.
- Remova a ação JavaScript do documento ou do campo de formulário.
- Se a ação for necessária para o funcionamento, o documento não pode ser PDF/A. Produza uma variante não PDF/A para esse uso.
- Execute a build novamente e revalide.
- Relacionado. Referência de conformidade.
Entrada: a saída marcada (tagged) não anuncia PDF/UA-2
Seção intitulada “Entrada: a saída marcada (tagged) não anuncia PDF/UA-2”- Sintoma. Um documento construído com a marcação (tagging) habilitada não é reconhecido como PDF/UA-2, ou sua declaração de PDF/UA-2 está ausente.
- Causa provável. A árvore de estrutura está vazia. O engine não anuncia PDF/UA-2 para um documento sem estrutura marcada (tagged), porque uma árvore de estrutura vazia não satisfaz o perfil.
- Evidência / diagnóstico. O teste do caminho de falha
tests/Integration/Accessibility/EmptyTaggedPdfDoesNotAdvertisePdfUa2Test.phpverifica que um documento marcado (tagged) vazio não anuncia PDF/UA-2. Esse é um comportamento documentado do engine, não um defeito. - Resolução.
- Confirme que o conteúdo é emitido pelo caminho de marcação (tagging), de modo que a árvore de estrutura seja preenchida em vez de ficar vazia.
- Verifique se as sequências de marked-content são mapeadas para elementos de estrutura.
- Execute a build novamente e verifique outra vez o status de PDF/UA-2.
- Relacionado. Fontes e marcação.
Entrada: o PDF/UA-2 falha por um idioma ausente ou inválido
Seção intitulada “Entrada: o PDF/UA-2 falha por um idioma ausente ou inválido”- Sintoma. Uma verificação de PDF/UA-2 falha porque uma entrada de idioma está ausente ou não é uma tag válida.
- Causa provável. O documento ou um elemento de estrutura não define um idioma válido. O PDF/UA-2 exige uma declaração de idioma natural; um valor de
Langausente ou malformado faz a verificação estrita falhar. - Evidência / diagnóstico. O teste do caminho de falha
tests/Unit/Conformance/PdfUa2Section844LangStrictTest.phptesta o requisito estrito de idioma. As tags de idioma são validadas por meio desrc/Accessibility/Bcp47Validator.php; uma tag inválida lançasrc/Accessibility/InvalidBcp47TagException.php. - Resolução.
- Defina um idioma no nível do documento como uma tag Best Current Practice (BCP) 47 válida, por exemplo,
en-USouzh-Hant-TW. - Quando uma passagem estiver em um idioma diferente, defina o idioma nesse elemento de estrutura.
- Execute a build novamente e revalide.
- Defina um idioma no nível do documento como uma tag Best Current Practice (BCP) 47 válida, por exemplo,
- Relacionado. Fontes e marcação.
Casos extremos e armadilhas
Seção intitulada “Casos extremos e armadilhas”- As recusas de PDF/A e PDF/UA descritas aqui são produzidas dentro do engine. Elas são independentes do veredito de um validador externo e não o substituem. Execute um validador como o veraPDF para obter o resultado definitivo.
- O writer concreto de objetos obrigatórios de PDF/A (stream de metadados Extensible Metadata Platform (XMP), output intent com um perfil International Color Consortium (ICC)) é resolvido em tempo de execução a partir de
nextpdf/pro. Com apenas o pacote core instalado, esses objetos não são emitidos; uma build apenas com o core não é um produtor de PDF/A completo. - A recusa de criptografia é absoluta e independente da ordem; habilitar o PDF/A após a chamada de criptografia ainda gera a recusa.
Veja também
Seção intitulada “Veja também”Glossário: output intent · árvore de estrutura