Cobertura de validación automatizada

La actualización 3.56.37 de los informes de preflight agregó una ruta de automatización documentada sobre las comprobaciones existentes de PDF/A y PDF/UA-1. La demostración PreflightReport de Delphi ahora cubre informes de un solo archivo, lotes por directorio, salida de texto, JSON, HTML y CSV, archivos CSV de resumen en UTF-8 y comparación base de texto plano mediante ComparePreflightReports

La serie de auditoría PDF/UA de 3.56.0 a 3.56.25 amplía los diagnósticos de lector y escritor alrededor de los metadatos PDF/UA-1, MarkInfo, RoleMap, permisos de accesibilidad de cifrado, XFA, Reference XObjects, orden de tabulación y descripciones de anotaciones, nombres FileSpec, diccionarios de configuración OCG, incrustación de fuentes y codificación TrueType, orden de encabezados, numeración de listas, IDs de notas, clips multimedia y elementos hijos H directos repetidos. La ruta de lectura de bajo nivel se expone mediante CheckFileCompliance; la ruta en memoria del lado del escritor se expone mediante GetPDFUADiagnostics

El trabajo de validación PAdES de 3.56.x agrega pruebas y cobertura de referencia para la selección de digest, atributos autenticados PAdES-B-B, IssuerSerial de signing-certificate-v2, ampliación de sello de tiempo de firma, ensamblado DSS/VRI, indicación de tipo de compromiso y atributos de política de firma. Estas comprobaciones están cubiertas por las pruebas de firma y por las páginas de referencia PAdES dedicadas en Seguridad y firmas

La actualización de validación 3.23.0 vuelve estricta la compuerta de compatibilidad de versión PDF para PDF 1.2 y agrega verificaciones de nivel de extensión Adobe PDF 1.7. Los destinos de guardado PDF 1.2 ahora rechazan funciones PDF 1.3 como los datos TrimBox de página antes de escribir la salida. AESV3, AES-256, RichMedia, Projection, los diccionarios geoespaciales y los subfiltros de firma ETSI se comprueban frente a la declaración requerida /Extensions /ADBE /ExtensionLevel. Los puntos de entrada del escritor que emiten esas funciones de nivel de extensión ahora declaran automáticamente el nivel de extensión ADBE correspondiente, y los guardados anexados ejecutan el mismo preflight que los guardados completos

La actualización de validación 3.20.0 amplía la cobertura de EnsureMinVersion del lado del escritor a ocho puntos de entrada más de PDFlib: SetDocumentMetadata, SetPDFAMode, PageJavaScriptAction, DocJavaScriptAction, SetTabOrderMode, NewOptionalContentGroup, SetNeedAppearances y NewFormField para campos de firma. En combinación con las entradas de 3.15.0 y 3.17.0, PDFlib ahora eleva automáticamente FVersion en veintiún puntos de entrada de escritor. NewOptionalContentGroup antes elevaba FVersion directamente, sin pasar por EnsureMinVersion ni LockSaveVersion; ahora sigue la ruta correcta para que el bloqueo se respete y el aumento aparezca en AutoBumpedFeatures

La actualización de validación 3.19.0 implementa cuatro reglas SSOT que antes estaban pendientes. La bandera NoToggleToOff del campo Btn (/Ff bit 15, máscara 16384) limita el comportamiento solo a botones de opción para PDF 1.4 y discrimina según /FT = 'Btn'. La regla DeviceN /Subtype /NChannel reconoce la refinación de espacio de color NChannel de PDF 1.6 codificada en el diccionario de atributos en el índice 4 del arreglo DeviceN. La regla FontFile3 /Subtype /OpenType reconoce programas de fuente OpenType de PDF 1.6 cuando el flujo se alcanza mediante una clave principal llamada FontFile3. La regla Sig /SubFilter ETSI se activa en diccionarios de firma con /SubFilter ETSI.CAdES.detached o /SubFilter ETSI.RFC3161, ambos PDF 1.7

La actualización de validación 3.18.6 agrega reglas sensibles al contexto para /AA y acciones adicionales. /AA aparece en cuatro contenedores de diccionario PDF con versiones mínimas distintas: Catalog /AA para desencadenadores a nivel de documento, Annot /AA para desencadenadores de anotación, Page /AA para desencadenadores de página y Form field /AA para PDF 1.2, válido dentro de destinos estrictos PDF 1.2. Tres nuevos callbacks fmkCustom discriminan según /Type, de modo que /AA solo activa la regla que coincide con el contenedor en el que vive. La /AA de una anotación widget, que es un campo de formulario y también una anotación /Subtype /Widget, activa a propósito la rama Annot /AA en PDF 1.4; es una aproximación aceptada porque todos los contratos de guardado desde PDF 1.4 en adelante ya aceptan /AA de campos de formulario

La actualización de validación 3.18.5 corrige una mala clasificación de la regla /Tabs y agrega una regla /NeedAppearances. /Tabs para el orden de tabulación de página estaba antes listado como PDF 1.4 en PDFFeatureRules, pero la especificación Adobe PDF 1.4 Technical Note #5409 no introduce /Tabs; la entrada aparece por primera vez en la tabla 8.10 de PDF 1.5 para el objeto de página. Ahora la regla vive en la sección de PDF 1.5. Una nueva regla cubre AcroForm /NeedAppearances en PDF 1.5, que antes no tenía representación en la tabla

La actualización de validación 3.18.1 amplía el conjunto de reglas a nivel de bit con siete callbacks de bandera /Ff de campos de formulario y el bit AppendOnly de AcroForm /SigFlags: FileSelect, MultiSelect, DoNotSpellCheck y DoNotScroll van a PDF 1.4, mientras que Comb, RichText / Btn RadiosInUnison, CommitOnSelChange y SigFlags AppendOnly van a PDF 1.5. La herencia /Parent no se sigue; solo los diccionarios que llevan explícitamente /Ff o /SigFlags activan las reglas

La actualización de validación 3.18.0 empieza a agregar reglas de subclave y de bit a PDFFeatureRules. Tres reglas de banderas de anotación a nivel de bit cubren los valores de máscara /F para Locked, ToggleNoView y LockedContents; solo se activan cuando el diccionario es /Type /Annot. Seis reglas nuevas de fmkDictKey cubren subclaves distintivas de catálogo y página: /BoxColorInfo, /Permissions, /Legal, /PresSteps, /VP y /Collection

La actualización de validación 3.17.0 amplía la cobertura de EnsureMinVersion del lado del escritor a ocho puntos de entrada más de PDFlib. En combinación con el conjunto original de 3.15.0, PDFlib ahora cubre de forma automática trece puntos de entrada de escritor de versión alta. Las pruebas confirman además que el trío de JavaScript AddGlobalJavaScript, SetOpenActionJavaScript y AddLinkToJavaScript eleva un documento nuevo de PDF 1.2 a PDF 1.3

La actualización de validación 3.16.3 agrega un bloqueo opcional de versión. La nueva API LockSaveVersion(Version) fija FVersion en Version y evita que EnsureMinVersion del lado del escritor la aumente; UnlockSaveVersion elimina el bloqueo. La compuerta de guardado no cambia, así que un documento bloqueado que incorpora una función de versión superior mediante una llamada de escritor sigue fallando el guardado con LastErrorCode 602

La actualización de validación 3.16.2 agrega una vista solo para contribuyentes de la detección de funciones en tiempo de carga. CollectMatchesForObject y DetectFeaturesInObjectTree ahora toman un parámetro BaselineVersion para que el llamador pueda separar las funciones coincidentes en DetectedFeatures y en ContributorFeatures, es decir, las que empujan la versión efectiva por encima de la línea base. TPDFDocument.DetectVersionFromContent usa la versión del encabezado del archivo como línea base para responder por qué la versión efectiva es mayor que el encabezado literal del archivo

La actualización de validación 3.16.1 amplía la cobertura de detección del cargador con seis fixtures sintéticos adicionales y pruebas: una transparencia ExtGState en página, una entrada Catalog /MarkInfo, un conjunto de contenido /OCProperties + OCG, un objeto /Type /3DStream, un fixture combinado de varias funciones y una comprobación de estabilidad de instantánea. Estas pruebas confirman que la versión efectiva refleja la función con requisito más alto y que la detección de carga permanece estable

La actualización de validación 3.16.0 completa el plan de compatibilidad de versión PDF con detección del lado del cargador. Después de LoadFromString, LoadFromFile o LoadFromStream, TPDFDocument.DetectVersionFromContent recorre cada objeto indirecto por la tabla de funciones a versión mínima usada por la compuerta de guardado y eleva FVersion por encima del valor literal del encabezado %PDF-X.Y cuando el contenido realmente necesita una versión superior. Tres claves nuevas de GetInformation exponen el diagnóstico del cargador y del escritor

La actualización de validación 3.15.0 conecta los puntos de entrada del escritor de PDFlib que producen funciones que requieren una versión mínima de PDF con EnsureMinVersion, de modo que llamar a una función de versión alta en un objetivo de guardado bajo ahora eleva automáticamente la versión del documento en vez de producir LastErrorCode 602 al guardar

La actualización de validación 3.14.3 cierra la fase 2 del trabajo de compatibilidad de versión al agregar los tipos de diccionario 3D restantes de PDF 1.6 y los subtipos de anotación Redact, RichMedia y Projection de PDF 1.7, junto con los diccionarios compañeros /Type /Requirement y /ReqHandler. Con este cambio, la tabla central ya cubre las funciones de nivel de capítulo de PDF 1.3 a 1.7 en un solo mapa de función a versión mínima

La actualización de validación 3.14.2 amplía el conjunto de reglas de compatibilidad de versión para reconocer funciones PDF 1.5: formularios /XFA, /AlternatePresentations, el árbol de nombres /Renditions, los diccionarios multimedia /Type /Rendition /MediaCriteria /MediaPermissions /MediaPlayers y el subtipo de anotación Screen

La actualización de validación 3.14.1 amplía el conjunto de reglas de compatibilidad de versión para reconocer funciones PDF 1.4: /StructTreeRoot, /MarkInfo y diccionarios StructElem, entradas /Lang del documento y /Tabs de página, referencias /StructParent y /StructParents, diccionarios /OutputIntents y /OutputIntent, la firma de derechos de uso /UR3 y los subtipos de anotación PDF 1.4 Polygon, PolyLine, Caret, Ink, Popup y Watermark

La actualización de validación 3.14.0 amplía el conjunto de reglas de compatibilidad de versión para reconocer funciones PDF 1.3 como sombreado suave y diccionarios de función, espacios de color ICCBased y DeviceN, entradas de página /TrimBox /BleedBox /ArtBox, mapas /ToUnicode, anotaciones de archivo adjunto, sonido y película, diccionarios /Type /Filespec y /Type /EmbeddedFile, claves /Group /EF /Alternates /Mask y acciones de JavaScript

La actualización de validación 3.13.0 mueve la compuerta de compatibilidad de versión PDF que rechaza funciones de versión posterior al guardado a un módulo dedicado, de modo que el conjunto de reglas pueda crecer sin afectar el núcleo del documento. No hay cambio visible de comportamiento para el usuario con respecto a 3.12.7

La actualización de validación 3.12.7 amplía la cobertura de pruebas automatizadas para el flujo de renderizado con acceso directo de PdfToImage en las suites Delphi DUnitX y C++Builder GoogleTest

La actualización de validación 3.12.6 hace que guardar como PDF 1.3, 1.4, 1.5, 1.6 o 1.7 imponga la versión elegida como contrato completo de salida de guardado. Los guardados completos eliminan los reemplazos Catalog /Version, quitan entradas de extensiones y metadatos del catálogo no admitidas para objetivos inferiores y suprimen los flujos de metadatos XMP PDF 1.4 al guardar como PDF 1.3

La actualización de validación 3.12.5 agrega cobertura de regresión para secuencias de escape de cadenas literales desconocidas y secuencias mixtas de escape octal y no octal. La sintaxis de cadenas literales PDF 1.7 ahora ignora correctamente los escapes desconocidos y consume solo dígitos octales válidos para las secuencias octales

La actualización de validación 3.12.4 agrega cobertura de regresión para delimitadores de nombre con corchete derecho y entradas dispersas de objetos comprimidos en flujos xref. El análisis léxico PDF 1.7 ahora hace que los objetos de nombre se detengan correctamente en el delimitador de corchete derecho

La actualización de validación 3.12.3 hace que los valores Length de Crypt Filter en PDFs nuevos cifrados con AES se escriban como longitudes de bits, en línea con el contrato del diccionario Crypt Filter de PDF 1.7. También mejora la compatibilidad PDF 1.7 para documentos cifrados que usan filtros StrF, StmF, EFF, Identity, None o StdCF

La actualización de validación 3.12.2 mejora la compatibilidad de decodificación de flujos PDF 1.7. La decodificación genérica ahora respeta /DP como alias de DecodeParms, resuelve entradas indirectas de arreglos de parámetros de decodificación y acepta los atajos de filtro estándar /AHx y /LZW

La actualización de validación 3.12.1 hace que los PDFs generados se abran con la primera página ajustada a la altura disponible de la ventana del visor, de modo que toda la primera página se vea de arriba abajo con el mayor nivel de zoom que todavía encaja en altura. Configure una OpenAction personalizada para sobrescribir este valor predeterminado

La actualización de validación 3.12.0 agrega stubs CRT de malloc, calloc, realloc y free alineados a 32 bytes para las bibliotecas C estáticas y corrige TPDFJPEGImage.Compress, de modo que los búferes jpeg_mem_dest usen ahora el mismo presupuesto de memoria C esperado por las rutas de imagen y compresión

Las suites actuales de DUnitX de Delphi aprobaron 362 de 362 pruebas en Win32 y 362 de 362 en Win64. Las áreas cubiertas incluyen rondas de compresión, decodificación conocida de flujos zlib, cargas útiles de tamaño límite, flujos almacenados de varios bloques, salida HelloWorld con /FlateDecode, renderizado JPEG y PNG, importación y exportación de imágenes, fuentes, formularios, cifrado, descifrado, firma, atributos PAdES, impresión, ayudas Unicode, búferes, dibujo en canvas, páginas, tablas, flujos de documentos, análisis de sintaxis y xref, contratos estrictos de guardado PDF 1.2, preflight de versión para guardado anexado, compatibilidad de nivel de extensión PDF 1.7, diagnósticos PDF/UA y generación y comparación de informes de preflight

La suite actual de GoogleTest para C++Builder Win64x aprobó 61 pruebas y omitió 2 pruebas existentes que dependen de ejemplos. Cubre flujos de trabajo derivados de demos, además de flujos conocidos de zlib-ng, cargas útiles de tamaño límite, cargas tipo PNG por líneas de exploración, rondas de varios bloques almacenados, manejo de imágenes, salida de renderizado incluida la cobertura de acceso directo a PdfToImage, cifrado, firma, impresión, contratos estrictos de guardado PDF 1.2, salida de nivel de extensión PDF 1.7, preflight de versión para guardado anexado y comprobaciones de salida comprimida de HelloWorld

La referencia HTML está protegida por tools/test_docs_api_coverage.py, que comprueba que cada función pública de TPDFlib tenga una página de referencia en inglés, y por tools/test_docs_navigation.py, que mantiene coherentes los destinos de navegación multilingües en la carcasa de ayuda enmarcada

Readme.html y la referencia HTML deben mantenerse alineadas cuando cambien el comportamiento visible para el usuario en validación, preflight, renderizado, firma o generación de informes