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;
| Type | Description |
|---|---|
TPdfPreflightStandard | Seletor de standard com ppsPdfA, ppsPdfUa, ppsPdfE, ppsPdfX, ppsPdfR e ppsPdfVT |
TPdfPreflightStandards | Tipo set usado por BuildPdfPreflightReport; AllPdfPreflightStandards seleciona todos os standards suportados |
TPdfPreflightStatus | Estado por standard: pfsPass, pfsActionRequired ou pfsReview |
TPdfPreflightSeverity | Gravidade de problemas com psevInfo, psevWarning ou psevError; TPdfPreflightSeverities é o conjunto de filtros correspondente |
TPdfPreflightIssue | Linha de problema com StandardName, código de problema, categoria, gravidade, descrição e Recommendation, mais a pesquisa MatchesText insensível a maiúsculas e minúsculas e uma identidade StableKey |
TPdfPreflightIssueCategoryCount | Linha agregada de categoria de problemas devolvida por IssueCategoryCounts |
TPdfPreflightSeverityCount | Linha agregada de gravidade devolvida por SeverityCounts com Severity, SeverityName e Count |
TPdfPreflightIssueCodeCount | Linha agregada de standard e código de problema devolvida por IssueCodeCounts com StandardName, Code e Count |
TPdfPreflightStandardResult | Um resultado de standard com StandardName, ConformanceName, IsCompliant, StatusName, Priority, NextAction, o array Issues, contadores de gravidade, gravidade máxima e pesquisa por código de problema |
TPdfPreflightReport | Relatório completo com o nome SourceFile, o timestamp GeneratedAt, ScopeNote, o array Results de resultados por standard, contadores de sumário e helpers de exportação |
TPdfValidationRule | Cláusula de perfil declarativa com o respetivo Id e Profile, Clause, gravidade, DependencyIds, orientação de reparação FixHint, IssueCode e um Predicate de problema, de standard ou personalizado escolhido por PredicateKind |
TPdfValidationBudget | Limita regras selecionadas (MaxRules), falhas reportadas (MaxIssues), objetos visitados (MaxObjects), recursão (MaxRecursionDepth), bytes de evidência (MaxEvidenceBytes), memória reservada (MaxMemoryBytes) e tempo decorrido (TimeoutMilliseconds) |
TPdfValidationOptions | Seleciona Profiles e Severities, fornece o Budget, ativa FastFail e suporta cancelamento cooperativo através de CancellationToken |
TPdfValidationExecutionContext | Contexto de execução limitado entregue a predicados personalizados; Create guarda as opções e arranca o relógio da execução, Checkpoint, ConsumeEvidence, ConsumeObjects, EnterRecursion, LeaveRecursion, ReserveMemory e ReleaseMemory impõem o orçamento, e BudgetExceeded, BudgetReason, EvidenceBytes, ObjectsVisited, RecursionDepth, ReservedMemory, PeakReservedMemory e StartTick expõem contadores em tempo real |
TPdfValidationRuleRegistry | Registo de regras thread-safe; Create e Destroy gerem a secção crítica, RegisterRule e Clear mutam o conjunto registado, Count e Snapshot leem-no sob lock, e Execute valida um relatório com evidência e tempos por cláusula |
TPdfBatchValidationOptions | Controla o WorkerCount, os standards, as ValidationOptions aninhadas, o FailFast ao nível do documento e o cancelamento através de CancellationToken |
TPdfBatchValidationReport | Resultados por documento pela ordem de entrada, com distribuições agregadas de problemas, ElapsedMilliseconds, estado terminal e os totais WorkerCount, PassedDocumentCount, FailedDocumentCount, CancelledDocumentCount e ErrorDocumentCount |
TPdfARepairPlan | Steps de remediação ordenados por dependência e classificados por categoria, segurança, necessidade de reescrita, impacto em assinaturas e estado de bloqueio, com os rollups DocumentHasSignatures, AllowSignatureInvalidation, BlockedStepCount, AutomaticStepCount e ManualStepCount, mais saída JSON |
TPdfARepairCategory | Classifica o trabalho de reparação como parcSecurity, parcFonts, parcColour, parcAttachments, parcStructure, parcMetadata ou parcOther |
TPdfARepairSafety | parsAutomatic, parsReviewRequired ou parsManual |
TPdfARepairStep | Uma ação de reparação ordenada com o respetivo Order, categoria, IssueCode, ação, Evidence, dependência e Safety, mais RequiresFullRewrite, InvalidatesSignatures e Blocked |
TPdfXProductionPreflightOptions | Controla o limiar MinimumImageDpi, TreatTransparencyAsErrorBeforePdfX4 e o reporte de IncludeInformationalColourants |
TPdfXProductionPreflightReport | Resultado de Validation PDF/X mais os factos Pages por página, HasOutputIntent, HasEmbeddedFonts, HasTransparency, HasOverprint, SeparationCount, DeviceNCount, MinimumEffectiveDpi, o array Issues e saída JSON |
TPdfXProductionIssueKind | Classifica problemas pxpikOutputIntent, pxpikPageBox, pxpikFont, pxpikColourant, pxpikTransparency, pxpikOverprint, pxpikSeparation e pxpikImageResolution |
TPdfXProductionIssue | Uma conclusão de produção focada com o respetivo Kind, gravidade, PageNumber, ObjectIndex e Evidence |
TPdfXProductionPage | Factos por página para PageNumber, HasMediaBox, HasTrimBox, HasBleedBox, HasArtBox, TextObjectCount, PathObjectCount, ImageCount, HasTransparency e MinimumEffectiveDpi |
TPdfValidationPredicateKind | Seleciona a avaliação de regras pvpkIssueAbsent, pvpkStandardPass ou pvpkCustom |
TPdfValidationRuleStatus | pvrrsPass, pvrrsFail, pvrrsSkipped ou pvrrsError |
TPdfValidationRunStatus | Reporta pvrsComplete, pvrsFastFailed, pvrsBudgetExceeded, pvrsCancelled ou pvrsError |
TPdfValidationRuleResult | Resultado por regra com RuleId, Profile, Clause, estado, Evidence, orientação de reparação FixHint e ElapsedMilliseconds |
TPdfValidationRun | Uma execução limitada do registo com o array Results, os contadores PassedRuleCount, FailedRuleCount, SkippedRuleCount e ErrorRuleCount, ObjectsVisited, EvidenceBytes, PeakReservedMemory, ElapsedMilliseconds, IncompleteReason e helpers de conformidade |
TPdfPreflightIssues, TPdfPreflightStandardResults | Arrays dinâmicos com linhas de problemas e resultados por standard |
TPdfPreflightIssueCategoryCounts, TPdfPreflightSeverityCounts, TPdfPreflightIssueCodeCounts | Arrays dinâmicos devolvidos pelos agregadores de categoria, gravidade e códigos de problema estáveis |
TPdfARepairSteps | Passos de reparação PDF/A ordenados por dependência, guardados por TPdfARepairPlan |
TPdfXProductionPages, TPdfXProductionIssues | Factos de produção por página e problemas de produção PDF/X focados |
TPdfValidationProfiles, TPdfValidationRules, TPdfValidationRuleResults | Nomes de perfis selecionados, regras declarativas registadas e resultados de execução por regra |
TPdfValidationRulePredicate | Callback de regra personalizado que avalia um relatório através de um contexto de execução limitado e devolve evidência de diagnóstico |
TPdfBatchValidationItemStatus | Estado por documento pbvisPending, pbvisPass, pbvisFail, pbvisCancelled ou pbvisError |
TPdfBatchValidationStatus | Estado de lote completa pbvsComplete, pbvsPartial, pbvsCancelled ou pbvsFailed |
TPdfBatchValidationItem | Um ficheiro de entrada com o respetivo relatório Preflight, o resultado de Validation de regras, estado, texto ErrorMessage e ElapsedMilliseconds |
TPdfBatchValidationItems | Resultados por documento, pela ordem de entrada, devolvidos pela validação paralela |
BuildPdfPreflightReport chama ValidatePdfA, ValidatePdfUa, ValidatePdfE, ValidatePdfX, ValidatePdfR e ValidatePdfVT para um documento TPdf ativo e devolve um TPdfPreflightReport
O relatório contém uma linha por standard selecionado, com a conformidade detetada, o estado, a prioridade, a ação seguinte, o código de problema, a categoria, a gravidade Info / Warning / Error, a descrição e a recomendação. Os contadores de estado, gravidade, categoria e código de problema expõem dados de sumário reutilizáveis
FindStandard, HasIssueCode, FlattenIssues, SearchIssues, FilterByStandards, FilterBySeverities e FilterByCategory fornecem vistas de consulta em memória. Os relatórios filtrados preservam os valores originais de conformidade e estado, devolvendo arrays de problemas independentes
Fingerprint devolve uma identidade SHA-256 em minúsculas para o conjunto ordenado de resultados de standards e problemas. Os caminhos de origem e os timestamps de geração são deliberadamente excluídos, para que resultados de validação equivalentes partilhem uma única fingerprint
Cada exportação To* tem um método Save*ToFile correspondente. Os ficheiros são escritos diretamente em UTF-8; o CSV mantém um BOM para deteção pelo Excel e neutraliza células com início de fórmula
TPdfValidationRuleRegistry executa cláusulas declarativas de perfil fora dos validadores de standards monolíticos. As regras podem depender de cláusulas anteriores, selecionar um predicado incorporado de problema ou de perfil, ou fornecer um predicado personalizado que registra evidência limitada
TPdfValidationExecutionContext fornece checkpoints cooperativos e contadores explícitos para objetos, recursão, evidência UTF-8 e memória reservada. Uma execução reporta fast-fail, cancelamento ou exaustão de orçamento como um estado incompleto, em vez de um resultado de conformidade completo
ValidatePdfFilesParallel dá a cada worker um documento TPdf privado, preserva a ordem de entrada, agrega contagens de códigos de problema e registra sucesso, falha, cancelamento ou erros de carregamento de forma independente para cada ficheiro
BuildPdfARepairPlan mapeia a evidência PDF/A em passos de segurança, fontes, cor, anexos, estrutura, metadados e residuais, pela ordem de dependência. Os passos que invalidam assinaturas ficam bloqueados, a menos que o chamador forneça autorização explícita
BuildPdfXProductionPreflight combina o resultado do perfil PDF/X com factos nativos de página e de imagem, análises estruturais de colourants e overprint e verificações de page boxes. Nunca descodifica nem copia payloads de imagens durante a análise de resolução
| Format | Shape |
|---|---|
| Text | Texto simples com origem, hora de geração, nota de âmbito, sumário, linhas por standard, plano de ação, categorias de problemas e detalhes de problemas |
| HTML | Relatório HTML autónomo com estilização de estado, uma tabela de categorias de problemas, tabela de standards e tabela de problemas |
| Markdown | Cabeçalhos e tabelas Markdown para standards, categorias de problemas, plano de ação e detalhes de problemas |
| JSON | Objeto estruturado com format, sourceKind, summary, issueCategoryCounts e arrays de problemas por standard |
| CSV | Linhas amigas de folhas de cálculo, identificadas por RowType: Summary, Standard, Category e Issue |
| SARIF 2.1.0 | Resultados de CI e code scanning com IDs de regras estáveis, níveis de gravidade, mensagens de remediação, propriedades e fingerprints parciais |
| JUnit XML | Um caso de teste por standard selecionado, com resultados Action required emitidos como falhas e resultados Review emitidos como casos ignorados |
| NDJSON | Um objeto JSON de sumário, standard ou problema por linha, para ingestão incremental sem carregar um único documento JSON grande |
| XML | XML de preflight nativo com metadados do relatório, atributos de sumário, resultados por standard, gravidade, descrições e recomendações |
ValidatePdf* subjacentesDemo\Delphi\PreflightReport, Demo\Lazarus\PreflightReport e Demo\CBuilder\PreflightReport demonstram a seleção de standards, as linhas de sumário estado / prioridade, as contagens de categorias de problemas nos relatórios gerados, a comutação de pré-visualização texto / Markdown / JSON / CSV e a exportação TXT / HTML / Markdown / JSON / CSV. O exemplo GUI Delphi inclui ainda uma pré-visualização de Action Plan que foca os mesmos dados numa checklist de remediaçãoDemo\Delphi\PreflightReportCli demonstra o mesmo caminho de relatório num fluxo de consola programável. O modo de ficheiro único aceita entrada, saída, password opcional, formato de relatório, standards=, attach= e failon=. O formato plan / actionplan escreve uma checklist de remediação em texto para execuções de ficheiro único e em lote. Sem argumentos, cria um PDF de exemplo ao lado do executável e escreve um relatório em textobatch=, salta linhas em branco e comentários # e resolve os caminhos relativos em falta a partir da pasta do ficheiro de lista. O modo de diretório procura ficheiros *.pdf em batchdir=, recorre opcionalmente às subpastas e ordena os caminhos descobertos antes do processamentooutdir= encaminha os relatórios em lote para uma pasta partilhada. Se várias entradas resolverem para o mesmo caminho de relatório, os ficheiros posteriores recebem os sufixos -2, -3 e seguintes, em vez de sobrescrever relatórios anterioressummary=batch.txt, summary=batch.json e summary=batch.html incluem definições de execução, totais agregados de ficheiros, totais de estados por standard e uma linha por entrada. summary=batch.csv é um manifesto orientado a linhas que repete as definições de execução em cada linha de entrada e inclui contagens de estado por ficheiroattach=output.pdf é apenas para ficheiro único. Incorpora o relatório gerado como um attachment ao nível do documento num caminho PDF diferente e nunca escreve de volta no ficheiro de entradafailon=issues corresponde a qualquer problema reportado, failon=action corresponde a qualquer linha Action required e failon=review corresponde a linhas Action required ou Review. O CLI sai com 0 em caso de sucesso, 1 em erros de runtime ou 2 quando uma regra failon= selecionada corresponde depois de os relatórios serem escritos
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;