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 | Selettore di standard con ppsPdfA, ppsPdfUa, ppsPdfE, ppsPdfX, ppsPdfR e ppsPdfVT |
TPdfPreflightStandards | Tipo insieme usato da BuildPdfPreflightReport; AllPdfPreflightStandards seleziona ogni standard supportato |
TPdfPreflightStatus | Stato per standard: pfsPass, pfsActionRequired o pfsReview |
TPdfPreflightSeverity | Severità dei problemi con psevInfo, psevWarning o psevError; TPdfPreflightSeverities è l'insieme di filtro corrispondente |
TPdfPreflightIssue | Riga di problema con StandardName, codice del problema, categoria, severità, descrizione e Recommendation, più la ricerca MatchesText senza distinzione di maiuscole e un'identità StableKey |
TPdfPreflightIssueCategoryCount | Riga aggregata per categoria di problema restituita da IssueCategoryCounts |
TPdfPreflightSeverityCount | Riga aggregata per severità restituita da SeverityCounts con Severity, SeverityName e Count |
TPdfPreflightIssueCodeCount | Riga aggregata per standard e codice di problema restituita da IssueCodeCounts con StandardName, Code e Count |
TPdfPreflightStandardResult | Un risultato per standard con StandardName, ConformanceName, IsCompliant, StatusName, Priority, NextAction, l'array Issues, i contatori di severità ErrorCount e WarningCount, HighestSeverity, IssueCount e la ricerca per codice di problema HasIssueCode |
TPdfPreflightReport | Report completo con il nome SourceFile, il timestamp GeneratedAt, lo ScopeNote, l'array Results dei risultati per standard, i contatori di sintesi ActionRequiredStandardCount, CompliantStandardCount, NonCompliantStandardCount, PassedStandardCount, ReviewStandardCount, StandardCount, HighestSeverity e TotalIssueCount, gli helper di query FilterByStandards, FilterByCategory, FilterBySeverities, SearchIssues, FlattenIssues, HasIssueCode, FindStandard, Fingerprint, IssueCategoryCounts, IssueCodeCounts e SeverityCounts, e gli helper di esportazione ToCsv, ToHtml, ToMarkdown, ToJson, ToNdjson, ToSarif, ToJUnitXml, ToText, ToXml con le corrispondenti procedure SaveXxxToFile |
TPdfValidationRule | Clausola dichiarativa di profilo con il suo Id e Profile, Clause, severità, DependencyIds, guida di riparazione FixHint, IssueCode e un Predicate di problema, standard o personalizzato scelto da PredicateKind |
TPdfValidationBudget | Limita le regole selezionate (MaxRules), i fallimenti riportati (MaxIssues), gli oggetti visitati (MaxObjects), la ricorsione (MaxRecursionDepth), i byte di evidenza (MaxEvidenceBytes), la memoria riservata (MaxMemoryBytes) e il tempo trascorso (TimeoutMilliseconds) |
TPdfValidationOptions | Seleziona Profiles e Severities, fornisce il Budget, attiva FastFail e supporta l'annullamento cooperativo tramite CancellationToken |
TPdfValidationExecutionContext | Contesto di esecuzione limitato consegnato ai predicati personalizzati; Create memorizza le opzioni e avvia l'orologio dell'esecuzione, Checkpoint, ConsumeEvidence, ConsumeObjects, EnterRecursion, LeaveRecursion, ReserveMemory e ReleaseMemory applicano il budget, mentre BudgetExceeded, BudgetReason, EvidenceBytes, ObjectsVisited, RecursionDepth, ReservedMemory, PeakReservedMemory e StartTick espongono i contatori in tempo reale |
TPdfValidationRuleRegistry | Registro di regole thread-safe; Create e Destroy gestiscono la sezione critica, RegisterRule e Clear modificano l'insieme registrato, Count e Snapshot lo leggono sotto lock, ed Execute valida un report con evidenze e temporizzazioni per clausola |
TPdfBatchValidationOptions | Controlla il WorkerCount, gli standard, le ValidationOptions annidate, il FailFast a livello di documento e l'annullamento tramite CancellationToken |
TPdfBatchValidationReport | Risultati per documento in ordine di input con distribuzioni aggregate dei problemi, ElapsedMilliseconds, stato terminale e i totali WorkerCount, PassedDocumentCount, FailedDocumentCount, CancelledDocumentCount e ErrorDocumentCount |
TPdfARepairPlan | Steps di riparazione ordinati per dipendenze e classificati per categoria, sicurezza, necessità di riscrittura, impatto sulle firme e stato di blocco, con i rollup DocumentHasSignatures, AllowSignatureInvalidation, BlockedStepCount, AutomaticStepCount e ManualStepCount, IsExecutable e output JSON ToJson |
TPdfARepairCategory | Classifica il lavoro di riparazione come parcSecurity, parcFonts, parcColour, parcAttachments, parcStructure, parcMetadata o parcOther |
TPdfARepairSafety | parsAutomatic, parsReviewRequired o parsManual |
TPdfARepairStep | Un'azione di riparazione ordinata con il suo Order, categoria, IssueCode, azione, Evidence, dipendenza e Safety, più RequiresFullRewrite, InvalidatesSignatures e Blocked |
TPdfXProductionPreflightOptions | Controlla la soglia MinimumImageDpi, TreatTransparencyAsErrorBeforePdfX4 e il riporto di IncludeInformationalColourants |
TPdfXProductionPreflightReport | Risultato di Validation PDF/X più le informazioni per pagina di Pages, HasOutputIntent, HasEmbeddedFonts, HasTransparency, HasOverprint, SeparationCount, DeviceNCount, MinimumEffectiveDpi, l'array Issues, ErrorCount, IsProductionReady e output JSON ToJson |
TPdfXProductionIssueKind | Classifica i problemi pxpikOutputIntent, pxpikPageBox, pxpikFont, pxpikColourant, pxpikTransparency, pxpikOverprint, pxpikSeparation e pxpikImageResolution |
TPdfXProductionIssue | Un riscontro di produzione mirato con il suo Kind, severità, PageNumber, ObjectIndex ed Evidence |
TPdfXProductionPage | Informazioni per pagina per PageNumber, HasMediaBox, HasTrimBox, HasBleedBox, HasArtBox, TextObjectCount, PathObjectCount, ImageCount, HasTransparency e MinimumEffectiveDpi |
TPdfValidationPredicateKind | Seleziona la valutazione delle regole pvpkIssueAbsent, pvpkStandardPass o pvpkCustom |
TPdfValidationRuleStatus | pvrrsPass, pvrrsFail, pvrrsSkipped o pvrrsError |
TPdfValidationRunStatus | Riporta pvrsComplete, pvrsFastFailed, pvrsBudgetExceeded, pvrsCancelled o pvrsError |
TPdfValidationRuleResult | Risultato per regola con RuleId, Profile, Clause, stato, Evidence, guida di riparazione FixHint ed ElapsedMilliseconds |
TPdfValidationRun | Una singola esecuzione limitata del registro con l'array Results, i contatori PassedRuleCount, FailedRuleCount, SkippedRuleCount e ErrorRuleCount, ObjectsVisited, EvidenceBytes, PeakReservedMemory, ElapsedMilliseconds, IncompleteReason e gli helper di conformità |
TPdfPreflightIssues, TPdfPreflightStandardResults | Array dinamici che contengono le righe dei problemi e i risultati per standard |
TPdfPreflightIssueCategoryCounts, TPdfPreflightSeverityCounts, TPdfPreflightIssueCodeCounts | Array dinamici restituiti dagli aggregatori di categoria, severità e codici di problema stabili |
TPdfARepairSteps | Passi di riparazione PDF/A ordinati per dipendenze e memorizzati da TPdfARepairPlan |
TPdfXProductionPages, TPdfXProductionIssues | Informazioni di produzione per pagina e problemi di produzione PDF/X mirati |
TPdfValidationProfiles, TPdfValidationRules, TPdfValidationRuleResults | Nomi dei profili selezionati, regole dichiarative registrate e risultati di esecuzione per regola |
TPdfValidationRulePredicate | Callback di regola personalizzata che valuta un report attraverso un contesto di esecuzione limitato e restituisce evidenze diagnostice |
TPdfBatchValidationItemStatus | Stato per documento pbvisPending, pbvisPass, pbvisFail, pbvisCancelled o pbvisError |
TPdfBatchValidationStatus | Stato dell'intero batch pbvsComplete, pbvsPartial, pbvsCancelled o pbvsFailed |
TPdfBatchValidationItem | Un file di input con il suo report Preflight, il risultato di Validation delle regole, lo stato, il testo ErrorMessage e ElapsedMilliseconds |
TPdfBatchValidationItems | Risultati per documento in ordine di input restituiti dalla validazione parallela |
BuildPdfPreflightReport chiama ValidatePdfA, ValidatePdfUa, ValidatePdfE, ValidatePdfX, ValidatePdfR e ValidatePdfVT per un documento TPdf attivo e restituisce un TPdfPreflightReport
Il report contiene una riga per ogni standard selezionato, con conformità rilevata, stato, priorità, azione successiva, codice del problema, categoria, severità Info / Warning / Error, descrizione e raccomandazione. I contatori di stato, severità, categoria e codice di problema espongono dati di sintesi riutilizzabili
FindStandard, HasIssueCode, FlattenIssues, SearchIssues, FilterByStandards, FilterBySeverities e FilterByCategory forniscono viste di query in memoria. I report filtrati preservano i valori originali di conformità e stato restituendo array di problemi indipendenti
Fingerprint restituisce un'identità SHA-256 in minuscolo per l'insieme ordinato di risultati di standard e problemi. I percorsi sorgente e i timestamp di generazione sono esclusi deliberatamente, così che risultati di validazione equivalenti condividano un'unica fingerprint
Ogni esportazione To* ha un corrispondente metodo Save*ToFile. I file vengono scritti direttamente come UTF-8; il CSV conserva un BOM per il riconoscimento da parte di Excel e neutralizza le celle che iniziano con formule
TPdfValidationRuleRegistry esegue clausole dichiarative di profilo al di fuori dei validatori monolitici di standard. Le regole possono dipendere da clausole precedenti, selezionare un predicato predefinito di problema o profilo, oppure fornire un predicato personalizzato che registra evidenze limitate
TPdfValidationExecutionContext fornisce checkpoint cooperativi e contatori espliciti per oggetti, ricorsione, evidenze UTF-8 e memoria riservata. Un'esecuzione riporta fast-fail, annullamento o esaurimento del budget come stato incompleto anziché come risultato di conformità completo
ValidatePdfFilesParallel assegna a ogni worker un documento TPdf privato, preserva l'ordine di input, aggrega i conteggi dei codici di problema e registra pass, fallimento, annullamento o errori di caricamento indipendentemente per ogni file
PDFium non è thread-safe tra documenti diversi, quindi i worker aprono e ispezionano i file uno alla volta sotto un lock condiviso e mandano in parallelo solo la valutazione delle regole; un WorkerCount più grande accelera quindi i registry ricchi di regole anziché il caricamento dei documenti
BuildPdfARepairPlan mappa le evidenze PDF/A in passi di sicurezza, font, colore, allegati, struttura, metadati e residuali in ordine di dipendenze. I passi che invalidano le firme sono bloccati a meno che il chiamante fornisca un'autorizzazione esplicita
BuildPdfXProductionPreflight combina il risultato del profilo PDF/X con informazioni native su pagine e immagini, scansioni strutturali di coloranti e overprint e controlli delle page box. Non decodifica né copia mai i payload delle immagini durante l'analisi della risoluzione
| Format | Shape |
|---|---|
| Text | Sorgente in testo semplice, orario di generazione, nota di ambito, sintesi, righe per standard, piano d'azione, categorie di problemi e dettagli dei problemi |
| HTML | Report HTML autonomo con stile degli stati, una tabella delle categorie di problemi, una tabella degli standard e una tabella dei problemi |
| Markdown | Titoli e tabelle Markdown per standard, categorie di problemi, piano d'azione e dettagli dei problemi |
| JSON | Oggetto strutturato con format, sourceKind, summary, issueCategoryCounts e array di problemi per standard |
| CSV | Righe adatte ai fogli di calcolo identificate da RowType: Summary, Standard, Category e Issue |
| SARIF 2.1.0 | Risultati per CI e code scanning con ID di regola stabili, livelli di severità, messaggi di risoluzione, proprietà e fingerprint parziali |
| JUnit XML | Un test case per standard selezionato, con i risultati Action required emessi come fallimenti e i risultati Review emessi come casi saltati |
| NDJSON | Un oggetto JSON di sintesi, standard o problema per riga, per un'ingestione incrementale senza caricare un unico grande documento JSON |
| XML | XML nativo di preflight con metadati del report, attributi di sintesi, risultati per standard, severità, descrizioni e raccomandazioni |
ValidatePdf* sottostantiDemo\Delphi\PreflightReport, Demo\Lazarus\PreflightReport e Demo\CBuilder\PreflightReport dimostrano la selezione degli standard, le righe di sintesi stato / priorità, i conteggi delle categorie di problemi nei report generati, il cambio di anteprima testo / Markdown / JSON / CSV e l'esportazione TXT / HTML / Markdown / JSON / CSV. L'esempio GUI Delphi include anche un'anteprima Action Plan che concentra gli stessi dati in una lista di controllo di risoluzioneDemo\Delphi\PreflightReportCli dimostra lo stesso percorso di report in un flusso di lavoro console scriptabile. La modalità a file singolo accetta input, output, password facoltativa, formato del report, standards=, attach= e failon=. Il formato plan / actionplan scrive una lista di controllo testuale di risoluzione per esecuzioni a file singolo e batch. Senza argomenti, crea un PDF di esempio accanto all'eseguibile e scrive un report di testobatch=, salta le righe vuote e i commenti #, e risolve i percorsi relativi mancanti dalla cartella del file di elenco. La modalità directory esegue la scansione di batchdir= per file *.pdf, facoltativamente in modo ricorsivo, e ordina i percorsi scoperti prima dell'elaborazioneoutdir= instrada i report batch in una cartella condivisa. Se più input si risolvono nello stesso percorso di report, i file successivi ricevono suffissi -2, -3 e oltre invece di sovrascrivere i report precedentisummary=batch.txt, summary=batch.json e summary=batch.html includono le impostazioni dell'esecuzione, i totali aggregati dei file, i totali di stato per standard e una riga per input. summary=batch.csv è un manifest orientato alle righe che ripete le impostazioni dell'esecuzione su ogni riga di input e include i conteggi di stato per fileattach=output.pdf è solo per file singolo. Incorpora il report generato come allegato a livello di documento in un percorso PDF diverso e non riscrive mai il file di inputfailon=issues corrisponde a qualsiasi problema riportato, failon=action corrisponde a qualsiasi riga Action required e failon=review corrisponde alle righe Action required o Review. La CLI esce con 0 in caso di successo, 1 per errori a runtime oppure 2 quando una regola failon= selezionata corrisponde dopo la scrittura dei report
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;