Ir al contenido

Correspondencia con la especificación PDF/UA-2 (ISO 14289-2)

Esta página pone en correspondencia las funciones de NextPDF Core con las disposiciones de ISO 14289-2 (PDF/UA-2). Indica qué disposiciones ayuda la biblioteca a cumplir durante la creación del documento y cuáles quedan explícitamente fuera de alcance. No constituye una declaración de conformidad. La conformidad de un archivo depende del contenido aportado por el autor, del marcado de origen y de la validación con un verificador externo de PDF/UA.

Ventana de terminal
composer require nextpdf/core

PDF/UA-2 (ISO 14289-2) define requisitos para que un PDF sea accesible. Estos requisitos se basan en los mecanismos de estructura lógica de ISO 32000-2 §14.7 y en las entradas de soporte de accesibilidad de ISO 32000-2 §14.9. Un archivo conforme se identifica mediante el esquema de identificación de ISO 14289-2 §5 y contiene un árbol de estructura cuya raíz tiene un único elemento Document (ISO 14289-2 §8.2.5.2). También usa tipos de estructura estándar para que la tecnología de asistencia pueda resolver cada etiqueta a un rol conocido.

NextPDF proporciona las primitivas de autoría de este modelo: construcción del árbol de estructura, asignación de roles estándar, etiquetado de contenido marcado a partir de HTML semántico y atributos de idioma BCP-47. NextPDF no infiere semántica ausente en el contenido de origen. NextPDF no ejecuta un verificador de conformidad. El objetivo de estas primitivas es el modelo de ISO 14289-2 §3.1, en el que la tecnología de asistencia consume el árbol de estructura. Que un documento concreto cumpla cada disposición lo determinan los datos de entrada del autor y un validador externo.

Área de la disposiciónPunto de entrada de NextPDF
Activación de PDF etiquetado, mark-info e idioma del catálogoDocument::enableTaggedPdf(string $lang, ?ConformancePolicy)
Idioma natural a nivel de documentoDocument::setLanguage(string $lang)
Árbol de estructura y raíz Document únicaStructureTree::createRoot(), StructureTree::addElement()
Vocabulario de tipos de estructura estándarRoleMap::standard()
Idioma por elemento, texto alternativo y texto de reemplazoStructureElement atributos del constructor
Validación estricta de BCP-47Bcp47Validator, ConformancePolicy::strictUa2()
Remediación heurística (opcional)AccessibilityAutoFixerRegistry
<?php
declare(strict_types=1);
use NextPDF\Core\Document;
$doc = Document::createStandalone();
$doc->enableTaggedPdf(lang: 'en');
$doc->setTitle('PDF/UA-2 structure demonstration');
$doc->addPage();
$doc->writeHtml('<h1>Title</h1><p>Body.</p><ul><li>Item</li></ul>');
$doc->save(__DIR__ . '/output/ua2.pdf');
// Then validate with an external checker. NextPDF does not assert
// conformance on your behalf:
// verapdf --flavour ua2 output/ua2.pdf

Consultar el ejemplo de producción del módulo de accesibilidad para conocer el escritor con inyección de dependencias, validación estricta de BCP-47, registro de avisos y manejo de errores. La misma configuración se aplica a un flujo de autoría PDF/UA-2. Lo único que se añade es el paso de validación externa posterior a la generación. Este paso es obligatorio para una declaración de conformidad y es responsabilidad del código llamante.

  • Un documento que habilita el PDF etiquetado pero no adjunta descendientes de estructura no anuncia el bloque de identificación de PDF/UA-2, por diseño (ISO 14289-2 §5). Los validadores rechazan un árbol de estructura vacío.
  • Combinar enablePdfA() y enableTaggedPdf() deja el discriminador de conformidad, que acepta un único valor, bajo el criterio de que gana el último valor, mientras conserva como acumulativos los efectos secundarios estructurales. La advertencia CONFORMANCE_MODE_CLOBBERED hace visible esta situación.
  • ISO 14289-2 §7.2.2 permite que un documento conforme declare además conformidad con regulaciones de accesibilidad más amplias. NextPDF emite únicamente el esquema de identificación de PDF/UA-2 y no emite otros metadatos de declaración regulatoria.

Correspondencia de disposiciones y exclusiones explícitas

Sección titulada «Correspondencia de disposiciones y exclusiones explícitas»
Área de la disposición (ISO 14289-2 / ISO 32000-2)Soporte de NextPDFNotas
Esquema de identificación de PDF/UA-2 (ISO 14289-2 §5)CompatibleSe emite solo cuando el árbol de estructura tiene descendientes.
Elemento único Document bajo la raíz del árbol de estructura (ISO 14289-2 §8.2.5.2; ISO 32000-2 §14.7.2)CompatiblecreateRoot() obliga a una única raíz Document.
Tipos de estructura estándar y mapa de roles (ISO 32000-2 §14.7; Well-Tagged PDF §8.2.5.1)CompatibleRoleMap::standard() más el espacio de nombres de PDF 2.0.
Secuencias de contenido marcado y árbol de padres (ISO 32000-2 §14.7.2)CompatibleIdentificadores por página, continuación entre páginas.
Idioma natural del catálogo y por elemento (ISO 32000-2 §14.9; ISO 14289-2 §8.4.4)CompatibleBCP-47; el modo estricto rechaza las etiquetas mal formadas.
Portadores de texto alternativo y de reemplazo (ISO 32000-2 §14.9)Admite el portador; el contenido lo aporta el autorLa biblioteca no genera texto alternativo.
Orden de lectura lógico (ISO 32000-2 §14.7)Respeta el orden de origen; no reordenaCorregir el orden de lectura es responsabilidad del autor.
Asociación y ámbito de encabezados de tablaFuera de alcance más allá del marcado HTMLNo se infiere; depende del marcado de origen.
Corrección del nivel de encabezado y esquemaFuera de alcanceEl autor debe aportar una jerarquía de encabezados correcta.
Verificación PDF/UA-2 de extremo a extremoFuera de alcanceSin verificador incluido; debe validarse de forma externa.
Atestación o certificación de conformidadFuera de alcanceLa biblioteca no lo proporciona.

Las funcionalidades del árbol de estructura añaden una sola pasada de serialización lineal sobre el conjunto de elementos; el coste está dominado por el pipeline HTML, no por la emisión de etiquetas. El límite de performance_budget se aplica a un documento semántico típico de varias páginas.

Los valores de idioma y de atributos de accesibilidad se escapan mediante PdfStringEscaper antes de incorporarse a la sintaxis de objetos PDF, y la validación BCP-47 en modo estricto reduce, en el límite de la API, la superficie de entrada de etiquetas de idioma. Tratar el texto alternativo y los títulos aportados por el autor como salida no confiable.

NextPDF emite una estructura coherente con el modelo de árbol de estructura de PDF/UA-2 definido en ISO 14289-2 e ISO 32000-2 §14.7. No afirma que un documento concreto sea conforme con PDF/UA-2. Validar con un verificador de PDF/UA (por ejemplo, veraPDF); la biblioteca no afirma la conformidad en nombre del usuario. La prueba dorada veraPDF UA-2 incluida es condicional y se omite cuando falta el binario de veraPDF, por lo que aquí no se reclama ningún paso de conformidad. Las cláusulas citadas se parafrasean, nunca se citan textualmente; los hashes de fragmentos se registran en docs/public/modules/core/_normative-evidence-a11y.md.

Una declaración de conformidad con PDF/UA-2 requiere semántica aportada por el autor (texto alternativo, jerarquía de encabezados correcta, asociación de encabezados de tabla, orden de lectura previsto, clasificación de contenido decorativo), además de la validación con un verificador externo. La biblioteca no produce ni verifica ninguno de estos elementos. El runtime emite un aviso Degraded / ComplianceRisk que indica al código llamante que valide de forma externa antes de la aprobación para producción. La conformidad es una propiedad del documento final y del proceso de autoría, no del hecho de llamar a la API.