function BuildPdfPreflightReport(Pdf: TPdf): TPdfPreflightReport; overload;
function BuildPdfPreflightReport(Pdf: TPdf; Standards: TPdfPreflightStandards): TPdfPreflightReport; overload;
function PdfPreflightIssueSeverity(Standard: TPdfPreflightStandard; const Code, Category: string): TPdfPreflightSeverity;
function PdfPreflightSeverityName(Severity: TPdfPreflightSeverity): string;
function PdfPreflightStandardName(Standard: TPdfPreflightStandard): string;
function PdfPreflightStatusName(Status: TPdfPreflightStatus): string;
function CreateDefaultPdfValidationRuleRegistry: TPdfValidationRuleRegistry;
function ValidatePdfFilesParallel(const FileNames: array of string; Registry: TPdfValidationRuleRegistry; const Options: TPdfBatchValidationOptions): TPdfBatchValidationReport;
| Tipo | Descripción |
|---|---|
TPdfPreflightStandard | Selector de estándar con ppsPdfA, ppsPdfUa, ppsPdfE, ppsPdfX, ppsPdfR y ppsPdfVT |
TPdfPreflightStandards | Tipo conjunto usado por BuildPdfPreflightReport; AllPdfPreflightStandards selecciona todos los estándares admitidos |
TPdfPreflightStatus | Estado por estándar: pfsPass, pfsActionRequired o pfsReview |
TPdfPreflightSeverity | Gravedad del problema con psevInfo, psevWarning o psevError; TPdfPreflightSeverities es el conjunto de filtro correspondiente |
TPdfPreflightIssue | Fila de problema con StandardName, código de problema, categoría, gravedad, descripción y Recommendation, más la búsqueda MatchesText sin distinguir mayúsculas y una identidad StableKey |
TPdfPreflightIssueCategoryCount | Fila agregada de categoría de problemas devuelta por IssueCategoryCounts |
TPdfPreflightSeverityCount | Fila agregada de gravedad devuelta por SeverityCounts con Severity, SeverityName y Count |
TPdfPreflightIssueCodeCount | Fila agregada de estándar y código de problema devuelta por IssueCodeCounts con StandardName, Code y Count |
TPdfPreflightStandardResult | Un resultado de estándar con StandardName, ConformanceName, IsCompliant, StatusName, Priority, NextAction, la matriz Issues, los contadores de gravedad ErrorCount y WarningCount, HighestSeverity, IssueCount y la búsqueda por código de problema HasIssueCode |
TPdfPreflightReport | Informe completo con el nombre de SourceFile, la marca de tiempo GeneratedAt, ScopeNote, la matriz Results de resultados por estándar, los contadores de resumen ActionRequiredStandardCount, CompliantStandardCount, NonCompliantStandardCount, PassedStandardCount, ReviewStandardCount, StandardCount, HighestSeverity y TotalIssueCount, los asistentes de consulta FilterByStandards, FilterByCategory, FilterBySeverities, SearchIssues, FlattenIssues, HasIssueCode, FindStandard, Fingerprint, IssueCategoryCounts, IssueCodeCounts y SeverityCounts, y los asistentes de exportación ToCsv, ToHtml, ToMarkdown, ToJson, ToNdjson, ToSarif, ToJUnitXml, ToText y ToXml con los procedimientos SaveXxxToFile correspondientes |
TPdfValidationRule | Cláusula de perfil declarativa con su Id y Profile, Clause, gravedad, DependencyIds, la guía de reparación FixHint, IssueCode y un Predicate de problema, estándar o personalizado elegido por PredicateKind |
TPdfValidationBudget | Acota las reglas seleccionadas (MaxRules), los fallos notificados (MaxIssues), los objetos visitados (MaxObjects), la recursión (MaxRecursionDepth), los bytes de evidencia (MaxEvidenceBytes), la memoria reservada (MaxMemoryBytes) y el tiempo transcurrido (TimeoutMilliseconds) |
TPdfValidationOptions | Selecciona Profiles y Severities, aporta el Budget, habilita FastFail y admite la cancelación cooperativa a través de CancellationToken |
TPdfValidationExecutionContext | Contexto de ejecución acotado entregado a los predicados personalizados; Create almacena las opciones e inicia el reloj de ejecución, Checkpoint, ConsumeEvidence, ConsumeObjects, EnterRecursion, LeaveRecursion, ReserveMemory y ReleaseMemory imponen el presupuesto, y BudgetExceeded, BudgetReason, EvidenceBytes, ObjectsVisited, RecursionDepth, ReservedMemory, PeakReservedMemory y StartTick exponen contadores en vivo |
TPdfValidationRuleRegistry | Registro de reglas seguro para subprocesos; Create y Destroy gestionan la sección crítica, RegisterRule y Clear mutan el conjunto registrado, Count y Snapshot lo leen bajo bloqueo, y Execute valida un informe con evidencia y tiempos por cláusula |
TPdfBatchValidationOptions | Controla el WorkerCount, los estándares, las ValidationOptions anidadas, el FailFast a nivel de documento y la cancelación a través de CancellationToken |
TPdfBatchValidationReport | Resultados por documento en orden de entrada con distribuciones agregadas de problemas, ElapsedMilliseconds, estado terminal y los totales WorkerCount, PassedDocumentCount, FailedDocumentCount, CancelledDocumentCount y ErrorDocumentCount |
TPdfARepairPlan | Steps de remediación ordenados por dependencias y clasificados por categoría, seguridad, necesidad de reescritura, impacto en firmas y estado de bloqueo, con los resúmenes DocumentHasSignatures, AllowSignatureInvalidation, BlockedStepCount, AutomaticStepCount y ManualStepCount, IsExecutable y la salida JSON ToJson |
TPdfARepairCategory | Clasifica el trabajo de reparación como parcSecurity, parcFonts, parcColour, parcAttachments, parcStructure, parcMetadata o parcOther |
TPdfARepairSafety | parsAutomatic, parsReviewRequired o parsManual |
TPdfARepairStep | Una acción de reparación ordenada con su Order, categoría, IssueCode, acción, Evidence, dependencia y Safety, más RequiresFullRewrite, InvalidatesSignatures y Blocked |
TPdfXProductionPreflightOptions | Controla el umbral MinimumImageDpi, TreatTransparencyAsErrorBeforePdfX4 y el informe de IncludeInformationalColourants |
TPdfXProductionPreflightReport | Resultado de Validation de PDF/X más los datos por página de Pages, HasOutputIntent, HasEmbeddedFonts, HasTransparency, HasOverprint, SeparationCount, DeviceNCount, MinimumEffectiveDpi, la matriz Issues, ErrorCount, IsProductionReady y la salida JSON ToJson |
TPdfXProductionIssueKind | Clasifica los problemas pxpikOutputIntent, pxpikPageBox, pxpikFont, pxpikColourant, pxpikTransparency, pxpikOverprint, pxpikSeparation y pxpikImageResolution |
TPdfXProductionIssue | Un hallazgo de producción focalizado con su Kind, gravedad, PageNumber, ObjectIndex y Evidence |
TPdfXProductionPage | Datos por página de PageNumber, HasMediaBox, HasTrimBox, HasBleedBox, HasArtBox, TextObjectCount, PathObjectCount, ImageCount, HasTransparency y MinimumEffectiveDpi |
TPdfValidationPredicateKind | Selecciona la evaluación de reglas pvpkIssueAbsent, pvpkStandardPass o pvpkCustom |
TPdfValidationRuleStatus | pvrrsPass, pvrrsFail, pvrrsSkipped o pvrrsError |
TPdfValidationRunStatus | Informa pvrsComplete, pvrsFastFailed, pvrsBudgetExceeded, pvrsCancelled o pvrsError |
TPdfValidationRuleResult | Resultado por regla con RuleId, Profile, Clause, estado, Evidence, la guía de reparación FixHint y ElapsedMilliseconds |
TPdfValidationRun | Una ejecución acotada del registro con la matriz Results, los contadores PassedRuleCount, FailedRuleCount, SkippedRuleCount y ErrorRuleCount, ObjectsVisited, EvidenceBytes, PeakReservedMemory, ElapsedMilliseconds, IncompleteReason y asistentes de conformidad |
TPdfPreflightIssues, TPdfPreflightStandardResults | Matrices dinámicas que contienen filas de problemas y resultados por estándar |
TPdfPreflightIssueCategoryCounts, TPdfPreflightSeverityCounts, TPdfPreflightIssueCodeCounts | Matrices dinámicas devueltas por los agregadores de categorías, gravedades y códigos de problema estables |
TPdfARepairSteps | Pasos de reparación de PDF/A ordenados por dependencias almacenados por TPdfARepairPlan |
TPdfXProductionPages, TPdfXProductionIssues | Datos de producción por página y problemas de producción de PDF/X focalizados |
TPdfValidationProfiles, TPdfValidationRules, TPdfValidationRuleResults | Nombres de perfiles seleccionados, reglas declarativas registradas y resultados de ejecución por regla |
TPdfValidationRulePredicate | Devolución de llamada de regla personalizada que evalúa un informe a través de un contexto de ejecución acotado y devuelve evidencia de diagnóstico |
TPdfBatchValidationItemStatus | Estado por documento pbvisPending, pbvisPass, pbvisFail, pbvisCancelled o pbvisError |
TPdfBatchValidationStatus | Estado del lote completo pbvsComplete, pbvsPartial, pbvsCancelled o pbvsFailed |
TPdfBatchValidationItem | Un archivo de entrada con su informe Preflight, el resultado de Validation de reglas, estado, texto ErrorMessage y ElapsedMilliseconds |
TPdfBatchValidationItems | Resultados por documento en orden de entrada devueltos por la validación en paralelo |
BuildPdfPreflightReport llama a ValidatePdfA, ValidatePdfUa, ValidatePdfE, ValidatePdfX, ValidatePdfR y ValidatePdfVT para un documento TPdf activo y devuelve un TPdfPreflightReport
El informe contiene una fila por estándar seleccionado, con la conformidad detectada, el estado, la prioridad, la siguiente acción, el código de problema, la categoría, la gravedad Info / Warning / Error, la descripción y la recomendación. Los contadores de estado, gravedad, categoría y código de problema exponen datos de resumen reutilizables
FindStandard, HasIssueCode, FlattenIssues, SearchIssues, FilterByStandards, FilterBySeverities y FilterByCategory proporcionan vistas de consulta en memoria. Los informes filtrados preservan los valores originales de conformidad y estado mientras devuelven matrices de problemas independientes
Fingerprint devuelve una identidad SHA-256 en minúsculas para el conjunto ordenado de resultados de estándares y problemas. Las rutas de origen y las marcas de tiempo de generación se excluyen deliberadamente para que los resultados de validación equivalentes compartan una misma huella
Cada exportación To* tiene un método Save*ToFile correspondiente. Los archivos se escriben directamente como UTF-8; el CSV conserva una BOM para su detección en Excel y neutraliza las celdas que comienzan con fórmulas
TPdfValidationRuleRegistry ejecuta cláusulas de perfil declarativas fuera de los validadores de estándares monolíticos. Las reglas pueden depender de cláusulas anteriores, seleccionar un predicado integrado de problema o de perfil, o aportar un predicado personalizado que registre evidencia acotada
TPdfValidationExecutionContext proporciona puntos de control cooperativos y contadores explícitos de objetos, recursión, evidencia UTF-8 y memoria reservada. Una ejecución informa de fast-fail, cancelación o agotamiento del presupuesto como un estado incompleto en lugar de un resultado de conformidad completo
ValidatePdfFilesParallel entrega a cada trabajador un documento TPdf privado, preserva el orden de entrada, agrega los recuentos de códigos de problema y registra de forma independiente el éxito, el fallo, la cancelación o los errores de carga de cada archivo
PDFium no es thread-safe entre documentos, así que los trabajadores abren e inspeccionan los archivos de uno en uno bajo un lock compartido y ejecutan en paralelo solo la evaluación de reglas; un WorkerCount mayor acelera por tanto los registros cargados de reglas, no la carga de documentos
BuildPdfARepairPlan convierte la evidencia de PDF/A en pasos de seguridad, fuentes, color, adjuntos, estructura, metadatos y residuales, en orden de dependencias. Los pasos que invalidan firmas quedan bloqueados a menos que quien llame aporte autorización explícita
BuildPdfXProductionPreflight combina el resultado del perfil PDF/X con datos nativos de páginas e imágenes, análisis estructurales de colorantes y sobreimpresión, y comprobaciones de cajas de página. Nunca decodifica ni copia cargas de imágenes durante el análisis de resolución
| Formato | Forma |
|---|---|
| Text | Origen en texto plano, hora de generación, nota de alcance, resumen, filas de estándares, plan de acción, categorías de problemas y detalles de problemas |
| HTML | Informe HTML autónomo con estilos de estado, una tabla de categorías de problemas, tabla de estándares y tabla de problemas |
| Markdown | Encabezados y tablas Markdown para estándares, categorías de problemas, plan de acción y detalles de problemas |
| JSON | Objeto estructurado con format, sourceKind, summary, issueCategoryCounts y matrices de problemas por estándar |
| CSV | Filas aptas para hojas de cálculo identificadas por RowType: Summary, Standard, Category e Issue |
| SARIF 2.1.0 | Resultados para CI y análisis de código con IDs de reglas estables, niveles de gravedad, mensajes de remediación, propiedades y huellas parciales |
| JUnit XML | Un caso de prueba por estándar seleccionado, con los resultados Action required emitidos como fallos y los resultados Review emitidos como casos omitidos |
| NDJSON | Un objeto JSON de resumen, estándar o problema por línea para ingesta incremental sin cargar un gran documento JSON |
| XML | XML de preflight nativo con metadatos del informe, atributos de resumen, resultados de estándares, gravedad, descripciones y recomendaciones |
ValidatePdf* subyacentesDemo\Delphi\PreflightReport, Demo\Lazarus\PreflightReport y Demo\CBuilder\PreflightReport demuestran la selección de estándares, las filas de resumen de estado / prioridad, los recuentos de categorías de problemas en los informes generados, la conmutación de vistas previas texto / Markdown / JSON / CSV y la exportación TXT / HTML / Markdown / JSON / CSV. La muestra GUI de Delphi también incluye una vista previa del plan de acción que enfoca los mismos datos en una lista de remediaciónDemo\Delphi\PreflightReportCli demuestra la misma ruta de informe en un flujo de consola programable. El modo de archivo único acepta entrada, salida, contraseña opcional, formato de informe, standards=, attach= y failon=. El formato plan / actionplan escribe una lista de remediación en texto para ejecuciones de archivo único y por lotes. Sin argumentos, crea un PDF de ejemplo junto al ejecutable y escribe un informe de textobatch=, omite las líneas en blanco y los comentarios con #, y resuelve las rutas relativas faltantes desde la carpeta del archivo de lista. El modo de directorio analiza batchdir= en busca de archivos *.pdf, opcionalmente desciende de forma recursiva y ordena las rutas descubiertas antes de procesarlasoutdir= dirige los informes por lotes a una carpeta compartida. Si varias entradas resuelven a la misma ruta de informe, los archivos posteriores reciben los sufijos -2, -3 y siguientes en lugar de sobrescribir informes anterioressummary=batch.txt, summary=batch.json y summary=batch.html incluyen los ajustes de la ejecución, los totales agregados de archivos, los totales de estado por estándar y una fila por entrada. summary=batch.csv es un manifiesto orientado a filas que repite los ajustes de la ejecución en cada fila de entrada e incluye recuentos de estado por archivoattach=output.pdf es solo para archivo único. Incrusta el informe generado como adjunto a nivel de documento en una ruta PDF distinta y nunca escribe de vuelta sobre el archivo de entradafailon=issues coincide con cualquier problema notificado, failon=action coincide con cualquier fila Action required, y failon=review coincide con filas Action required o Review. La CLI sale con 0 en caso de éxito, 1 en errores de tiempo de ejecución o 2 cuando una regla failon= seleccionada coincide después de escribir los informes
uses FPdfPreflightReport;
var
Report: TPdfPreflightReport;
begin
Pdf1.FileName := 'C:\Incoming\job.pdf';
Pdf1.Active := True;
Report := BuildPdfPreflightReport(Pdf1, [ppsPdfA, ppsPdfX]);
Memo1.Lines.Text := Report.ToText;
Report.SaveHtmlToFile('C:\Incoming\job.preflight.html');
Report.SaveMarkdownToFile('C:\Incoming\job.preflight.md');
Report.SaveJsonToFile('C:\Incoming\job.preflight.json');
Report.SaveCsvToFile('C:\Incoming\job.preflight.csv');
Report.SaveSarifToFile('C:\Incoming\job.preflight.sarif');
Report.SaveJUnitXmlToFile('C:\Incoming\job.preflight.junit.xml');
Report.SaveNdjsonToFile('C:\Incoming\job.preflight.ndjson');
Report.SaveXmlToFile('C:\Incoming\job.preflight.xml');
end;