GetPDFUADiagnosticsA
PDF/UA & accesibilidad
Descripción
El sufijo A indica el punto de entrada ANSI (char) de la DLL; la superficie ActiveX/COM expone únicamente la forma Unicode. El comportamiento es idéntico a GetPDFUADiagnostics y los argumentos de cadena se interpretan utilizando la página de códigos SetAnsiMode actual
Devuelve una lista por líneas de posibles incumplimientos PDF/UA-1, cada una con código, dos puntos y descripción; vacía si no hay incidencias
Sintaxis
Delphi
Function DLGetPDFUADiagnosticsA(InstanceID: Integer): PAnsiChar;
DLL
const char * DLGetPDFUADiagnosticsA(int InstanceID);
Códigos de incidencia
| PDF-VERSION-LOW | La versión PDF del documento (según se registra en la cabecera del archivo) es anterior a 1.7. PDF/UA-1 se define respecto de ISO 32000-1:2008 (PDF 1.7). Llame a SetPDFUAMode para elevar automáticamente la versión a 1.7 |
|---|---|
| MARKED-FALSE | MarkInfo/Marked no está establecido en true; el documento no es un PDF etiquetado |
| LANG-MISSING | La entrada /Lang del catálogo del documento no existe o está vacía. ISO 14289-1 §7.3 exige declarar un idioma natural |
| DISPLAYDOCTITLE-FALSE | ViewerPreferences/DisplayDocTitle no es true. ISO 14289-1 §7.1 lo exige para mostrar el título del documento en la barra de título |
| DOCINFO-TITLE-MISSING | La entrada /Title del diccionario de información del documento está ausente o vacía. PDF/UA-1 requiere un título de documento para que las tecnologías de asistencia puedan anunciarlo al abrirlo. Esta comprobación complementa a DISPLAYDOCTITLE-FALSE: aquella verifica que el título se muestre en el visor; esta comprueba que exista el propio valor del título. Llame a SetInformation con la clave Title para establecerlo |
| XMP-NO-PDFUAID | El flujo de metadatos XMP no contiene ninguna entrada pdfuaid:part. ISO 14289-1 §7.2 la exige |
| ANNOT-NO-CONTENTS:N | Falta una entrada Contents en N anotaciones no exentas (salvo subtipos Widget, PrinterMark y TrapNet). ISO 14289-1 §7.18.1 la exige |
| EMBED-NO-AFR:N | A N archivos incrustados les falta una entrada AFRelationship en su diccionario de especificación de archivo. ISO 14289-1 §7.11 la exige |
| FIGURE-NO-ALT:N | N elementos de estructura Figure o Formula no tienen ningún valor de texto Alt. ISO 14289-1 §7.5 e ISO 32000-1 §14.9.3 exigen descripciones alternativas tanto para las figuras gráficas como para las fórmulas matemáticas |
| HEADING-LEVEL-SKIP:N | Se detectaron N saltos de nivel de encabezado en el orden del documento (p. ej., un H1 seguido inmediatamente por un H3, omitiendo H2). ISO 14289-1 §7.1 y el criterio de conformidad 1.3.1 de WCAG 2.x exigen que los encabezados se aniden sin saltos |
| STRUCT-UNCLOSED:N | Siguen abiertos N elementos de estructura porque no se llamó a EndTag el número correcto de veces. Faltarán en la raíz del árbol de estructura |
| TABLE-TH-NO-SCOPE:N | N elementos de estructura TH (celda de encabezado de tabla) no tienen ningún atributo Scope. ISO 32000-1 §14.8.4.3.4 Table 337 define Scope (Row, Column o Both) como el atributo que describe a qué celdas de datos se aplica cada celda de encabezado. Sin él, las tecnologías de asistencia no pueden asociar de forma fiable los encabezados con las celdas de datos en tablas complejas o con varios encabezados. Llame a SetStructElemScope (o a AddTagAttribute con Owner='Table', Name='Scope') inmediatamente después de etiquetar cada elemento TH |
| FORM-NO-TOOLTIP:N | Falta TU en N campos interactivos. ISO 14289-1 §7.18.4 lo exige como nombre accesible para que tecnología asistencial anuncie el propósito. /TU difiere de /T, nombre parcial programático |
| LIST-STRUCT:N | N elementos de estructura LI o LBody aparecen fuera de su padre obligatorio. ISO 32000-1 §14.8.4.4 exige que LI sea hijo directo de L (lista) y que LBody sea hijo directo de LI (elemento de lista). Un anidamiento de listas mal formado impide que la tecnología de asistencia navegue correctamente por ellas. Compruebe la secuencia de llamadas BeginTag / EndTag de todos los elementos relacionados con listas |
| ROLEMAP-UNMAPPED:N | Aparecen N tipos de elementos de estructura personalizados en el documento, pero no tienen ninguna entrada en el diccionario /RoleMap. ISO 14289-1 §7.1 e ISO 32000-1 §14.7.3 exigen que cada tipo de estructura no estándar se asigne a un tipo PDF estándar para que las tecnologías de asistencia puedan determinar cómo gestionar el elemento. Llame a AddRoleMap para cada tipo personalizado antes de guardar. La descripción del problema enumera los nombres de tipos sin asignar |
| SUSPECTS-TRUE | MarkInfo/Suspects es true. ISO 14289-1 §7.1 exige false para PDF/UA. Llame a SetMarkInfo tras etiquetar para restablecerlo |
| ROLEMAP-STANDARD-REMAP:N | N tipos de estructura estándar aparecen como clave "custom" en /RoleMap y se volverían a asignar al guardar. ISO 14289-1 §7.1 prohíbe reasignar las etiquetas estándar definidas en ISO 32000-1 §14.8.4 (P, H1..H6, Figure, Table, etc.). La línea de detalles muestra los nombres de las etiquetas estándar infractoras. Elimine las llamadas afectadas a AddRoleMap |
| DC-TITLE-MISSING | Falta dc:title Dublin Core en XMP. ISO 14289-1 §7.1 lo exige. Es distinto de DOCINFO-TITLE-MISSING; SetPDFUAMode copia /Info title al paquete XMP |
| TRAPNET-ANNOT:N | Se encontraron N anotaciones TrapNet. ISO 14289-1 §7.18.2 las prohíbe expresamente en PDF/UA-1. Elimine las anotaciones antes de guardar |
| ANNOT-PAGE-NO-TABS-S:N | N páginas tienen anotaciones sin /Tabs /S. ISO 14289-1 §7.18.3 exige orden estructural; establezca /Tabs /S en cada página afectada |
| ENCRYPT-NO-ACCESS | El documento está cifrado y PDFUAMode activo, pero el bit 10 de /P (máscara $200) está borrado. ISO 14289-1 §7.16 exige extracción accesible. Si se activó después de Encrypt, el valor /P ya existe — llame de nuevo a Encrypt |
| FIRST-HEADING-NOT-H1 | El primer elemento de encabezado en el orden del documento no es H1 (el centinela H de estructura estricta también cuenta como nivel 1). ISO 14289-1 §7.4.2 exige que la primera etiqueta de encabezado de un documento sin estructura estricta sea H1. La línea de detalle indica el nivel infractor |
| WIDGET-NO-STRUCTPARENT:N | N anotaciones Widget carecen de una entrada /StructParent. ISO 14289-1 §7.18.4 exige que las anotaciones Widget estén anidadas dentro de una etiqueta de estructura Form; sin /StructParent, no se puede acceder a Widget desde el árbol de estructura. La línea de detalles indica el número. Esta es una comprobación parcial — aún no se ha implementado la verificación completa de que el elemento primario /S resuelto sea Form |
| LIST-NO-NUMBERING:N | N elementos de estructura L (lista) carecen del atributo ListNumbering. ISO 14289-1 §7.6 exige que cada etiqueta L declare su estilo de numeración mediante este atributo (los valores válidos según ISO 32000-1 Table 347 son None, Disc, Circle, Square, Decimal, UpperRoman, LowerRoman, UpperAlpha y LowerAlpha). Llame a SetStructElemListNumbering después de abrir cada etiqueta L |
| MULTIPLE-H-CHILDREN:N | N nodos del árbol de estructura contienen más de un elemento secundario H directo (encabezado genérico). ISO 14289-1 §7.4.4 lo prohíbe; divida la sección principal o sustituya las etiquetas H por secuencias numeradas H1..H6 |
Valor devuelto
Cadena de descripciones de problemas separadas por saltos de línea o cadena vacía si no se detecta ningún problema de conformidad
Observaciones
Ayuda de diagnóstico para desarrolladores que comprueba el estado en memoria e informa de problemas PDF/UA-1 antes de guardar
Con SetPDFUAMode activo, algunas incidencias se corrigen al guardar. GetPDFUADiagnostics informa del estado previo y aún las enumera antes del guardado
Esta función no modifica el documento
Ejemplo
var
Diag: WideString;
begin
PDFlib.SetPDFUAMode('en-US');
// ... build document
Diag := PDFlib.GetPDFUADiagnostics;
if Diag <> '' then
ShowMessage('PDF/UA issues found:'#10 + Diag);
end;Véase también
SetPDFUAMode, SetDocumentLanguage, SetEmbeddedFileAFRelationship