GetPDFUADiagnostics

PDF/UA & Acessibilidade

Descrição

Retorna uma lista separada por quebras de linha de possíveis problemas de conformidade com PDF/UA-1 (ISO 14289-1) encontrados no documento atual. Cada linha contém um código de problema seguido por dois-pontos e uma descrição legível. Retorna uma string vazia quando nenhum problema é detectado

Sintaxe

Delphi

Function TPDFlib.GetPDFUADiagnostics: WideString;

ActiveX

Function PDFlib::GetPDFUADiagnostics() As String

DLL

const wchar_t * DLGetPDFUADiagnostics(int InstanceID);

Parâmetros

PDF-VERSION-LOWA versão PDF do documento (conforme registrada no header do arquivo) é anterior a 1.7. O PDF/UA-1 é definido com base na ISO 32000-1:2008 (PDF 1.7). Chame SetPDFUAMode para elevar automaticamente a versão para 1.7.
MARKED-FALSEMarkInfo/Marked não está definido como true; o documento não é um PDF marcado.
LANG-MISSINGA entrada /Lang do catálogo do documento está ausente ou vazia. A ISO 14289-1 §7.3 exige uma declaração de idioma natural.
DISPLAYDOCTITLE-FALSEViewerPreferences/DisplayDocTitle não está true. Exigido pela ISO 14289-1 §7.1 para que o título do documento apareça na barra de título.
DOCINFO-TITLE-MISSINGA entrada /Title do dicionário de informações do documento está ausente ou vazia. O PDF/UA-1 exige um título de documento para que a tecnologia assistiva possa anunciá-lo quando o documento é aberto. Esta verificação é complementar a DISPLAYDOCTITLE-FALSE: aquela confere se o título é exposto no visualizador; esta confere se o valor do título em si existe. Chame SetInformation com a chave Title para defini-lo.
XMP-NO-PDFUAIDO stream de metadados XMP não contém uma entrada pdfuaid:part. Exigido pela ISO 14289-1 §7.2.
ANNOT-NO-CONTENTS:NN anotações não isentas (excluindo os subtipos Widget, PrinterMark e TrapNet) estão sem entrada Contents. Exigido pela ISO 14289-1 §7.18.1.
EMBED-NO-AFR:NN embedded files are missing an AFRelationship entry in their file specification dictionary. Required by ISO 14289-1 §7.11.
FIGURE-NO-ALT:NN elementos de estrutura Figure ou Formula estão sem valor de texto alternativo. A ISO 14289-1 §7.5 e a ISO 32000-1 §14.9.3 exigem descrições alternativas tanto para figuras gráficas quanto para fórmulas matemáticas.
HEADING-LEVEL-SKIP:NN saltos de nível de heading detectados na ordem do documento (por exemplo, um H1 imediatamente seguido de um H3, pulando o H2). A ISO 14289-1 §7.1 e o WCAG 2.x Success Criterion 1.3.1 exigem que headings se aninhem sem lacunas.
STRUCT-UNCLOSED:NN elementos de estrutura continuam abertos porque EndTag não foi chamado o número correto de vezes. Esses elementos ficarão ausentes da raiz da árvore de estruturas.
TABLE-TH-NO-SCOPE:NN elementos de estrutura TH (célula de cabeçalho de tabela) não têm atributo Scope. A ISO 32000-1 §14.8.4.3.4 Tabela 337 define Scope (Row, Column ou Both) como o atributo que descreve a quais células de dados cada célula de cabeçalho se aplica. Sem ele, a tecnologia assistiva não consegue associar cabeçalhos a células de dados de forma confiável em tabelas complexas ou com múltiplos cabeçalhos. Chame SetStructElemScope (ou AddTagAttribute com Owner='Table', Name='Scope') imediatamente após marcar cada elemento TH.
FORM-NO-TOOLTIP:NN campos de formulário interativos (anotações Widget) estão sem entrada TU (tooltip / nome acessível). A ISO 14289-1 §7.18.4 exige que todos os campos de formulário interativos tenham uma entrada TU para que a tecnologia assistiva possa anunciar ao usuário a finalidade do campo. /TU é o nome acessível que os screen readers leem em voz alta; é distinto de /T (o nome parcial do campo usado programaticamente). Defina o valor de TU ao criar ou carregar campos de formulário.
LIST-STRUCT:NN elementos de estrutura LI ou LBody aparecem fora do pai exigido. A ISO 32000-1 §14.8.4.4 exige que LI seja filho direto de L (list) e que LBody seja filho direto de LI (list item). Aninhamento de listas malformado impede a tecnologia assistiva de navegar pelas listas corretamente. Verifique a sequência de chamadas BeginTag / EndTag de todos os elementos de lista.
ROLEMAP-UNMAPPED:NN tipos de elemento de estrutura customizados aparecem no documento sem entrada no dicionário /RoleMap. A ISO 14289-1 §7.1 e a ISO 32000-1 §14.7.3 exigem que todo tipo de estrutura não padrão seja mapeado para um tipo PDF padrão, para que a tecnologia assistiva saiba como tratar o elemento. Chame AddRoleMap para cada tipo customizado antes de salvar. A descrição do problema lista os nomes dos tipos não mapeados.
SUSPECTS-TRUEMarkInfo/Suspects está definido como true. A ISO 14289-1 §7.1 exige que arquivos que declaram conformidade PDF/UA tenham valor Suspects igual a false. Um valor true marca a marcação como sabidamente contendo erros. Chame SetMarkInfo depois que o documento estiver totalmente marcado para repor Suspects em false.
ROLEMAP-STANDARD-REMAP:NN tipos de estrutura padrão aparecem como chave "custom" em /RoleMap e seriam remapeados ao salvar. A ISO 14289-1 §7.1 proíbe remapear tags padrão definidas na ISO 32000-1 §14.8.4 (P, H1..H6, Figure, Table etc.). A linha de detalhe lista os nomes das tags padrão em questão. Remova as chamadas AddRoleMap afetadas.
DC-TITLE-MISSINGO dc:title do Dublin Core no fluxo de metadados XMP está ausente ou vazio. A ISO 14289-1 §7.1 exige que o fluxo Metadata contenha uma entrada dc:title que identifique claramente o documento. Esta verificação é independente de DOCINFO-TITLE-MISSING, que inspeciona somente a entrada /Info /Title. Chame SetPDFUAMode para copiar o título /Info para o pacote XMP
TRAPNET-ANNOT:NN anotações TrapNet foram encontradas nas páginas do documento. A ISO 14289-1 §7.18.2 proíbe explicitamente TrapNet em arquivos conformes ao PDF/UA-1. Remova as anotações em questão antes de salvar.
ANNOT-PAGE-NO-TABS-S:NN páginas têm uma ou mais anotações, mas o dicionário de página delas não define /Tabs /S. A ISO 14289-1 §7.18.3 exige que a ordem de tabulação nessas páginas siga a árvore de estrutura, sinalizada por /Tabs /S. Defina /Tabs /S no dicionário de página de toda página que contenha anotações.
ENCRYPT-NO-ACCESSThe document is encrypted and PDFUAMode is active, but bit 10 of the encryption /P permission key (mask $200, accessibility extract) is cleared. ISO 14289-1 §7.16 requires every encrypted conforming file to permit accessibility extraction. When PDFUAMode is set before Encrypt is called, the bit is forced on automatically. When the call order is the opposite, the encrypt dictionary is already in place with the old /P value — call Encrypt again so the dictionary is re-emitted.
FIRST-HEADING-NOT-H1O primeiro elemento de título na ordem do documento não é H1 (o sentinel H de documento fortemente estruturado também conta como nível 1). A ISO 14289-1 §7.4.2 exige que a primeira tag de título em um documento não fortemente estruturado seja H1. A linha de detalhe informa o nível em questão.
WIDGET-NO-STRUCTPARENT:NN anotações Widget não têm a entrada /StructParent. A ISO 14289-1 §7.18.4 exige que anotações Widget estejam aninhadas dentro de uma tag de estrutura Form; sem /StructParent o Widget fica inalcançável a partir da árvore de estruturas. A linha de detalhe reporta a contagem. Esta é uma verificação parcial — a verificação completa de que o pai resolvido tem /S igual a Form ainda não está implementada.
LIST-NO-NUMBERING:NN elementos de estrutura L (list) não têm o atributo ListNumbering. A ISO 14289-1 §7.6 exige que toda tag L declare seu estilo de numeração via este atributo (valores válidos conforme a Tabela 347 da ISO 32000-1: None, Disc, Circle, Square, Decimal, UpperRoman, LowerRoman, UpperAlpha, LowerAlpha). Chame SetStructElemListNumbering após abrir cada tag L.
MULTIPLE-H-CHILDREN:NN nós da árvore de estrutura contêm mais de um filho H (heading genérico) direto. A ISO 14289-1 §7.4.4 proíbe isso — divida a seção pai ou substitua as tags H por sequências numeradas H1..H6.

Valor de retorno

A newline-separated string of issue descriptions, or an empty string if no compliance issues are detected.

Observações

Esta função destina-se a ajudar no diagnóstico pelos desenvolvedores. Ela verifica o estado atual do documento na memória e relata problemas que poderiam causar falhas de validação PDF/UA-1. Chame-a depois de carregar ou construir um documento para identificar problemas antes de gravar

Quando SetPDFUAMode está ativo e o documento é salvo, várias ocorrências (ANNOT-NO-CONTENTS, EMBED-NO-AFR) são corrigidas automaticamente durante o salvamento. GetPDFUADiagnostics reporta o estado anterior ao salvamento; ocorrências que serão autocorrigidas ao salvar continuam listadas se existirem antes de salvar.

Esta função não modifica o documento

Exemplo

var
  Diag: WideString;
begin
  PDFlib.SetPDFUAMode('en-US');
  // ... build document
  Diag := PDFlib.GetPDFUADiagnostics;
  if Diag <> '' then
    ShowMessage('PDF/UA issues found:'#10 + Diag);
end;

Veja também

SetPDFUAMode, SetDocumentLanguage, SetEmbeddedFileAFRelationship