Solución de problemas: errores de validación de PDF/A y PDF/UA
Alcance
Sección titulada «Alcance»Estas entradas cubren los errores que el motor genera al mantener un documento dentro del perfil PDF/A o PDF/UA. Los números de cláusula que aparecen a continuación son los que el motor cita en su propio código y en sus mensajes de excepción. Esta página los parafrasea. El motor informa de los errores de perfil que detecta; no certifica que un documento sea conforme. El veredicto de conformidad autorizado proviene de un validador externo que ejecuta su propio conjunto de reglas.
Entrada: el cifrado se rechaza en PDF/A
Sección titulada «Entrada: el cifrado se rechaza en PDF/A»- Síntoma.
NextPDF\Security\Exception\IncompatiblePdfAModeExceptioncon un mensaje que indica que una operación de cifrado está prohibida en un modo PDF/A. - Causa probable. La canalización habilitó un modo PDF/A y, al mismo tiempo, solicitó cifrado. El motor cita ISO 19005-{1,2,3,4} §6.1.3: la clave
Encryptno debe estar presente en el tráiler de un archivo PDF/A. El motor lo trata como un rechazo absoluto, con independencia del orden de llamada. - Evidencia / diagnóstico.
getContext()devuelvepdfa_modeyencryption_operation. La prueba de la ruta de fallotests/SecurityScenarios/PdfAEncryptionRefusalTest.phpverifica que el rechazo se dispara tanto si PDF/A se habilita antes como después de la llamada de cifrado. - Resolución.
- Decidir qué propiedad necesita el documento: conformidad de archivado o cifrado.
- Para un documento de archivado, eliminar la llamada de cifrado.
- Para un documento cifrado, eliminar la llamada que habilita PDF/A.
- Volver a ejecutar la canalización.
- Relacionado. Cifrado y permisos.
Entrada: un filtro de imagen está prohibido en PDF/A-1
Sección titulada «Entrada: un filtro de imagen está prohibido en PDF/A-1»- Síntoma.
Pdf14FeatureRejectedExceptiongenerada durante el procesamiento de la imagen, con un mensaje que nombra/JPXDecodeo/JBIG2Decodey la cláusulaISO 19005-1:2005 §6.1.13. - Causa probable. Una compilación PDF/A-1 procesó una imagen que usa un filtro introducido después de PDF 1.4. PDF/A-1 se basa en el conjunto de características de PDF 1.4, por lo que
PdfA1FeatureGuardrechaza JPEG 2000 (/JPXDecode) y JBIG2 (/JBIG2Decode). - Evidencia / diagnóstico.
src/Writer/PdfA1FeatureGuard.phpmantiene la lista de filtros prohibidos y genera la excepción con la cláusula citada. La comprobación solo rechaza en el perfil PDF/A-1; PDF/A-2, PDF/A-3 y el perfil PDF 2.0 permiten esos filtros. - Resolución.
- Recodificar la imagen de origen sin JPEG 2000 ni JBIG2 (por ejemplo, volver a guardarla como un JPEG de línea base o como una imagen comprimida con Flate).
- Como alternativa, usar PDF/A-2 o PDF/A-3 como destino, ya que permiten esos filtros.
- Volver a ejecutar la compilación.
- Relacionado. Referencia de conformidad.
Entrada: una fuente no está incrustada en PDF/A
Sección titulada «Entrada: una fuente no está incrustada en PDF/A»- Síntoma. Una compilación PDF/A falla durante el paso de validación de fuentes; un validador externo informa de una fuente sin incrustar.
- Causa probable. Se dibujó un glifo con una fuente cuyo programa no está incrustado. El contrato del gestor de PDF/A establece que toda fuente debe estar incrustada; no se permite ninguna fuente standard-14 sin incrustación.
- Evidencia / diagnóstico.
src/Contracts/PdfAManagerInterface.phpdeclaravalidateFont(string $fontName, bool $isEmbedded, array $cmapForward)con la regla documentada «All fonts must be embedded; no standard 14 fonts allowed without embedding.» La implementación concreta de la regla se entrega ennextpdf/pro. - Resolución.
- Identificar la fuente reportada como no incrustada.
- Configurar esa fuente con un archivo de programa incrustable en lugar de depender de una fuente standard-14 integrada.
- Para la interacción de sustitución de las Base 14, leer la entrada de fuentes y etiquetado.
- Volver a ejecutar la compilación y volver a validar.
- Relacionado. Fuentes y etiquetado.
Entrada: hay JavaScript presente y la validación de PDF/A falla
Sección titulada «Entrada: hay JavaScript presente y la validación de PDF/A falla»- Síntoma. Una compilación PDF/A falla durante el paso de validación de JavaScript, o un validador externo informa de una acción de JavaScript.
- Causa probable. El documento, o un campo de formulario, incluye una acción de JavaScript. El contrato del gestor de PDF/A cita ISO 19005-4:2020 §6.7.1, que prohíbe las acciones de JavaScript.
- Evidencia / diagnóstico.
PdfAManagerInterface::validateNoJavaScript()yvalidateNoJavaScriptActions()citan §6.7.1 en sus docblocks. - Resolución.
- Eliminar la acción de JavaScript del documento o del campo de formulario.
- Si la acción es necesaria para el comportamiento, el documento no puede ser PDF/A; producir una variante que no sea PDF/A para ese uso.
- Volver a ejecutar la compilación y volver a validar.
- Relacionado. Referencia de conformidad.
Entrada: la salida etiquetada no anuncia PDF/UA-2
Sección titulada «Entrada: la salida etiquetada no anuncia PDF/UA-2»- Síntoma. Un documento compilado con el etiquetado habilitado no se reconoce como PDF/UA-2, o falta la declaración de PDF/UA-2.
- Causa probable. El árbol de estructura está vacío. El motor no anuncia PDF/UA-2 para un documento que no contiene estructura etiquetada, porque un árbol de estructura vacío no satisface el perfil.
- Evidencia / diagnóstico. La prueba de la ruta de fallo
tests/Integration/Accessibility/EmptyTaggedPdfDoesNotAdvertisePdfUa2Test.phpverifica que un documento etiquetado vacío no anuncia PDF/UA-2. Es el comportamiento documentado del motor, no un defecto. - Resolución.
- Confirmar que el contenido se emite a través de la ruta de etiquetado para que el árbol de estructura quede poblado y no vacío.
- Verificar que las secuencias de contenido marcado se asignan a elementos de estructura.
- Volver a ejecutar la compilación y volver a comprobar el estado de PDF/UA-2.
- Relacionado. Fuentes y etiquetado.
Entrada: PDF/UA-2 falla por un idioma ausente o inválido
Sección titulada «Entrada: PDF/UA-2 falla por un idioma ausente o inválido»- Síntoma. Una comprobación de PDF/UA-2 falla porque una entrada de idioma está ausente o no es una etiqueta válida.
- Causa probable. El documento o un elemento de estructura no declara un idioma válido. PDF/UA-2 exige una declaración de idioma natural; un valor
Langausente o mal formado no supera la comprobación estricta. - Evidencia / diagnóstico. La prueba de la ruta de fallo
tests/Unit/Conformance/PdfUa2Section844LangStrictTest.phpcubre el requisito estricto de idioma. Las etiquetas de idioma se validan a través desrc/Accessibility/Bcp47Validator.php; una etiqueta inválida generasrc/Accessibility/InvalidBcp47TagException.php. - Resolución.
- Establecer un idioma a nivel de documento como una etiqueta BCP-47 válida, por ejemplo
en-USozh-Hant-TW. - Cuando un pasaje esté en un idioma distinto, establecer el idioma en ese elemento de estructura.
- Volver a ejecutar la compilación y volver a validar.
- Establecer un idioma a nivel de documento como una etiqueta BCP-47 válida, por ejemplo
- Relacionado. Fuentes y etiquetado.
Casos límite y trampas
Sección titulada «Casos límite y trampas»- Los rechazos de PDF/A y PDF/UA descritos aquí se producen dentro del motor. Son independientes del veredicto de un validador externo y no lo reemplazan; ejecutar un validador como veraPDF para obtener el resultado autorizado.
- El componente que escribe los objetos requeridos por PDF/A (flujo de metadatos XMP, output intent con un perfil ICC) se resuelve en tiempo de ejecución desde
nextpdf/pro. Con solo el paquete core instalado, esos objetos no se emiten; una compilación solo con el core no es un productor de PDF/A completo. - El rechazo del cifrado es absoluto e independiente del orden: habilitar PDF/A después de la llamada de cifrado sigue generando el rechazo.
Véase también
Sección titulada «Véase también»Glosario: output intent · árbol de estructura