GetPDFUADiagnostics
PDF/UA & Acessibilidade
Descrição
Devolve uma lista separada por novas linhas de possíveis problemas de conformidade PDF/UA-1 (ISO 14289-1) encontrados no documento atual. Cada linha contém um código de problema seguido de dois-pontos e uma descrição legível. Devolve uma cadeia vazia quando não são detetados problemas
Sintaxe
Delphi
Function TPDFlib.GetPDFUADiagnostics: WideString;
ActiveX
Function PDFlib::GetPDFUADiagnostics() As String
DLL
const wchar_t * DLGetPDFUADiagnostics(int InstanceID);
Códigos de problemas
| PDF-VERSION-LOW | A versão PDF do documento (registada no cabeçalho do ficheiro) é inferior a 1.7. O PDF/UA-1 é definido em relação à norma ISO 32000-1:2008 (PDF 1.7). Chame SetPDFUAMode para elevar automaticamente a versão para 1.7 |
|---|---|
| MARKED-FALSE | MarkInfo/Marked não está definido como true; o documento não é um PDF etiquetado |
| LANG-MISSING | A entrada /Lang do catálogo do documento está ausente ou vazia. A norma ISO 14289-1 §7.3 exige uma declaração de idioma natural |
| DISPLAYDOCTITLE-FALSE | ViewerPreferences/DisplayDocTitle não é true. É exigido pela ISO 14289-1 §7.1 para que o título do documento seja apresentado na barra de título |
| DOCINFO-TITLE-MISSING | A entrada /Title do dicionário de informações do documento está ausente ou vazia. O PDF/UA-1 exige um título do documento para que a tecnologia de apoio o possa anunciar quando o documento é aberto. Esta verificação complementa DISPLAYDOCTITLE-FALSE: essa verificação confirma que o título é apresentado no visualizador; esta confirma que o próprio valor do título existe. Chame SetInformation com a chave Title para o definir |
| XMP-NO-PDFUAID | O fluxo de metadados XMP não contém uma entrada pdfuaid:part. Exigido pela norma ISO 14289-1 §7.2 |
| ANNOT-NO-CONTENTS:N | N anotações não isentas (excluindo os subtipos Widget, PrinterMark e TrapNet) não têm uma entrada Contents. Exigido pela norma ISO 14289-1 §7.18.1 |
| EMBED-NO-AFR:N | N ficheiros incorporados não têm uma entrada AFRelationship no respetivo dicionário de especificação de ficheiro. Exigido pela norma ISO 14289-1 §7.11 |
| FIGURE-NO-ALT:N | N elementos de estrutura Figure ou Formula não têm um valor de texto Alt. A norma ISO 14289-1 §7.5 e a norma ISO 32000-1 §14.9.3 exigem descrições alternativas para figuras gráficas e fórmulas matemáticas |
| HEADING-LEVEL-SKIP:N | Foram detetados N saltos de nível de cabeçalhos pela ordem do documento (por exemplo, um H1 seguido imediatamente de um H3, omitindo H2). A ISO 14289-1 §7.1 e o Critério de Sucesso 1.3.1 das WCAG 2.x exigem que os cabeçalhos sejam aninhados sem lacunas |
| STRUCT-UNCLOSED:N | N elementos de estrutura continuam abertos porque EndTag não foi chamado o número correto de vezes. Estes elementos estarão em falta na raiz da árvore de estrutura |
| TABLE-TH-NO-SCOPE:N | N elementos de estrutura TH (célula de cabeçalho de tabela) não têm o atributo Scope. A ISO 32000-1 §14.8.4.3.4, Tabela 337, define Scope (Row, Column ou Both) como o atributo que descreve as células de dados às quais cada célula de cabeçalho se aplica. Sem este atributo, a tecnologia de apoio não consegue associar de forma fiável os cabeçalhos às células de dados em tabelas complexas ou com vários cabeçalhos. Chame SetStructElemScope (ou AddTagAttribute com Owner='Table', Name='Scope') imediatamente depois de etiquetar cada elemento TH |
| FORM-NO-TOOLTIP:N | N campos de formulário interativos (anotações Widget) não têm uma entrada TU (descrição / nome acessível). A norma ISO 14289-1 §7.18.4 exige que todos os campos de formulário interativos tenham uma entrada TU para que a tecnologia de apoio possa anunciar ao utilizador a finalidade do campo. /TU é o nome acessível que os leitores de ecrã leem em voz alta; é distinto de /T (o nome parcial do campo utilizado programaticamente). Defina o valor TU ao criar ou carregar campos de formulário |
| LIST-STRUCT:N | N elementos de estrutura LI ou LBody aparecem fora do elemento principal obrigatório. A norma ISO 32000-1 §14.8.4.4 exige que LI seja um elemento subordinado direto de L (lista) e LBody um elemento subordinado direto de LI (item de lista). Um aninhamento de listas malformado impede as tecnologias de apoio de navegarem corretamente nas listas. Verifique a sequência de chamadas BeginTag / EndTag de todos os elementos relacionados com listas |
| ROLEMAP-UNMAPPED:N | Aparecem no documento N tipos personalizados de elementos de estrutura sem entrada no dicionário /RoleMap. As normas ISO 14289-1 §7.1 e ISO 32000-1 §14.7.3 exigem que cada tipo de estrutura não padrão seja mapeado para um tipo PDF padrão, para que a tecnologia de apoio determine como tratar o elemento. Chame AddRoleMap para cada tipo personalizado antes de guardar. A descrição do problema enumera os nomes dos tipos não mapeados |
| SUSPECTS-TRUE | MarkInfo/Suspects está definido como true. ISO 14289-1 §7.1 exige que os ficheiros que declarem conformidade PDF/UA tenham um valor Suspects igual a false. Um valor true assinala que a etiquetagem contém erros conhecidos. Invoque SetMarkInfo depois de o documento estar totalmente etiquetado para repor Suspects como false |
| ROLEMAP-STANDARD-REMAP:N | N tipos de estrutura padrão aparecem como chave "custom" em /RoleMap e seriam remapeados ao guardar. A norma ISO 14289-1 §7.1 proíbe o remapeamento de etiquetas padrão definidas na norma ISO 32000-1 §14.8.4 (P, H1..H6, Figure, Table, etc.). A linha de detalhes apresenta os nomes das etiquetas padrão em causa. Remova as chamadas AddRoleMap afetadas |
| DC-TITLE-MISSING | O dc:title de Dublin Core do fluxo de metadados XMP está ausente ou vazio. 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 apenas a entrada /Info /Title. Chame SetPDFUAMode para copiar o título /Info para o pacote XMP |
| TRAPNET-ANNOT:N | Foram encontradas N anotações TrapNet nas páginas do documento. A norma ISO 14289-1 §7.18.2 proíbe explicitamente TrapNet em ficheiros conformes com PDF/UA-1. Remova as anotações em causa antes de guardar |
| ANNOT-PAGE-NO-TABS-S:N | N páginas contêm uma ou mais anotações, mas o respetivo dicionário de página não define /Tabs /S. A norma ISO 14289-1 §7.18.3 exige que a ordem de tabulação nessas páginas siga a árvore de estrutura, indicada por /Tabs /S. Defina /Tabs /S no dicionário de cada página que contenha anotações |
| ENCRYPT-NO-ACCESS | O documento está encriptado e PDFUAMode está ativo, mas o bit 10 da chave de permissões de encriptação /P (máscara $200, extração de acessibilidade) está limpo. ISO 14289-1 §7.16 exige que todos os ficheiros conformes encriptados permitam a extração de acessibilidade. Quando PDFUAMode é definido antes de chamar Encrypt, o bit é ativado automaticamente. Quando a ordem das chamadas é inversa, o dicionário de encriptação já existe com o antigo valor /P — chame novamente Encrypt para voltar a emitir o dicionário |
| FIRST-HEADING-NOT-H1 | O primeiro elemento de título pela ordem do documento não é H1 (o sentinela H fortemente estruturado também conta como nível 1). ISO 14289-1 §7.4.2 exige que a primeira etiqueta de título dum documento não fortemente estruturado seja H1. A linha de detalhes indica o nível em falta |
| WIDGET-NO-STRUCTPARENT:N | N anotações Widget não têm uma entrada /StructParent. A ISO 14289-1 §7.18.4 exige que as anotações Widget estejam aninhadas numa etiqueta de estrutura Form; sem /StructParent, o Widget não pode ser alcançado a partir da árvore de estrutura. A linha de detalhes comunica a contagem. Esta é uma verificação parcial — ainda não está implementada a verificação completa de que o /S do elemento principal resolvido é Form |
| LIST-NO-NUMBERING:N | N elementos de estrutura L (lista) não têm o atributo ListNumbering. A ISO 14289-1 §7.6 exige que cada etiqueta L declare o respetivo estilo de numeração através deste atributo (os valores válidos segundo a Tabela 347 da ISO 32000-1 são None, Disc, Circle, Square, Decimal, UpperRoman, LowerRoman, UpperAlpha, LowerAlpha). Chame SetStructElemListNumbering depois de abrir cada etiqueta L |
| MULTIPLE-H-CHILDREN:N | N nós da árvore de estrutura contêm mais de um filho H (cabeçalho genérico) direto. A ISO 14289-1 §7.4.4 proíbe-o — divida a secção principal ou substitua as etiquetas H por sequências numeradas H1..H6 |
Valor devolvido
Uma cadeia de descrições de problemas separadas por novas linhas, ou uma cadeia vazia se não forem detetados problemas de conformidade
Observações
Esta função destina-se a auxiliar os programadores no diagnóstico. Verifica o estado atual do documento na memória e comunica problemas que possam causar falhas de validação PDF/UA-1. Chame-a depois de carregar ou construir um documento para identificar problemas antes da gravação
Quando SetPDFUAMode está ativo e o documento é guardado, vários problemas (ANNOT-NO-CONTENTS, EMBED-NO-AFR) são corrigidos automaticamente durante a gravação. GetPDFUADiagnostics indica o estado anterior à gravação; os problemas que serão corrigidos automaticamente ao guardar continuam a ser listados se existirem antes da gravação
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;Consulte também
SetPDFUAMode, SetDocumentLanguage, SetEmbeddedFileAFRelationship