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;
| Typ | Beschreibung |
|---|---|
TPdfPreflightStandard | Standards-Selektor mit ppsPdfA, ppsPdfUa, ppsPdfE, ppsPdfX, ppsPdfR und ppsPdfVT |
TPdfPreflightStandards | Mengentyp, verwendet von BuildPdfPreflightReport; AllPdfPreflightStandards wählt jeden unterstützten Standard |
TPdfPreflightStatus | Status je Standard: pfsPass, pfsActionRequired oder pfsReview |
TPdfPreflightSeverity | Problem-Schweregrad mit psevInfo, psevWarning oder psevError; TPdfPreflightSeverities ist die zugehörige Filter-Menge |
TPdfPreflightIssue | Problemzeile mit StandardName, Problemcode, Kategorie, Schweregrad, Beschreibung und Recommendation sowie MatchesText-Suche ohne Groß-/Kleinschreibung und einer StableKey-Identität |
TPdfPreflightIssueCategoryCount | Aggregierte Problemkategorie-Zeile, zurückgegeben von IssueCategoryCounts |
TPdfPreflightSeverityCount | Aggregierte Schweregrad-Zeile, zurückgegeben von SeverityCounts, mit Severity, SeverityName und Count |
TPdfPreflightIssueCodeCount | Aggregierte Standard- und Problemcode-Zeile, zurückgegeben von IssueCodeCounts, mit StandardName, Code und Count |
TPdfPreflightStandardResult | Standardergebnis mit StandardName, ConformanceName, IsCompliant, StatusName, Priority, NextAction, dem Issues-Array, den Schweregrad-Zählern ErrorCount und WarningCount, HighestSeverity, IssueCount und dem HasIssueCode-Problemcode-Nachschlag |
TPdfPreflightReport | Vollständiger Bericht mit dem SourceFile-Namen, dem GeneratedAt-Zeitstempel, ScopeNote, dem Results-Array der Standardergebnisse, den Zusammenfassungszählern ActionRequiredStandardCount, CompliantStandardCount, NonCompliantStandardCount, PassedStandardCount, ReviewStandardCount, StandardCount, HighestSeverity und TotalIssueCount, den Abfrage-Helfern FilterByStandards, FilterByCategory, FilterBySeverities, SearchIssues, FlattenIssues, HasIssueCode, FindStandard, Fingerprint, IssueCategoryCounts, IssueCodeCounts und SeverityCounts sowie den Export-Helfern ToCsv, ToHtml, ToMarkdown, ToJson, ToNdjson, ToSarif, ToJUnitXml, ToText, ToXml mit passenden SaveXxxToFile-Prozeduren |
TPdfValidationRule | Deklarative Profil-Klausel mit ihrer Id und ihrem Profile, Clause, Schweregrad, DependencyIds, FixHint-Reparaturhinweisen, IssueCode und einer über PredicateKind gewählten Problem-, Standard- oder benutzerdefinierten Predicate |
TPdfValidationBudget | Begrenzt ausgewählte Regeln (MaxRules), gemeldete Fehler (MaxIssues), besuchte Objekte (MaxObjects), Rekursion (MaxRecursionDepth), Beleg-Bytes (MaxEvidenceBytes), reservierten Speicher (MaxMemoryBytes) und verstrichene Zeit (TimeoutMilliseconds) |
TPdfValidationOptions | Wählt Profiles und Severities, stellt das Budget, aktiviert FastFail und unterstützt kooperativen Abbruch über CancellationToken |
TPdfValidationExecutionContext | Begrenzter Ausführungskontext für eigene Prädikate; Create speichert die Optionen und startet die Laufuhr, Checkpoint, ConsumeEvidence, ConsumeObjects, EnterRecursion, LeaveRecursion, ReserveMemory und ReleaseMemory erzwingen das Budget, und BudgetExceeded, BudgetReason, EvidenceBytes, ObjectsVisited, RecursionDepth, ReservedMemory, PeakReservedMemory und StartTick legen laufende Zähler offen |
TPdfValidationRuleRegistry | Thread-sichere Regel-Registrierung; Create und Destroy verwalten den Critical Section, RegisterRule und Clear verändern die registrierte Menge, Count und Snapshot lesen sie unter Sperre, und Execute validiert einen Bericht mit Belegen und Zeitmessung je Klausel |
TPdfBatchValidationOptions | Steuert die WorkerCount, die Standards, die verschachtelten ValidationOptions, dokumentsweit FailFast sowie den Abbruch über CancellationToken |
TPdfBatchValidationReport | Eingabegeordnete Ergebnisse je Dokument mit aggregierten Problemverteilungen, ElapsedMilliseconds, Abschlussstatus sowie den Summen WorkerCount, PassedDocumentCount, FailedDocumentCount, CancelledDocumentCount und ErrorDocumentCount |
TPdfARepairPlan | Abhängigkeitsgeordnete Behebungsschritte (Steps), klassifiziert nach Kategorie, Sicherheit, Neuschreibbedarf, Signaturwirkung und Blockierzustand, mit den Rollups DocumentHasSignatures, AllowSignatureInvalidation, BlockedStepCount, AutomaticStepCount und ManualStepCount, mit IsExecutable und der JSON-Ausgabe ToJson |
TPdfARepairCategory | Klassifiziert Reparaturarbeiten als parcSecurity, parcFonts, parcColour, parcAttachments, parcStructure, parcMetadata oder parcOther |
TPdfARepairSafety | parsAutomatic, parsReviewRequired oder parsManual |
TPdfARepairStep | Einzelne geordnete Reparaturaktion mit ihrer Order, Kategorie, IssueCode, Aktion, Evidence, Abhängigkeit und Safety sowie RequiresFullRewrite, InvalidatesSignatures und Blocked |
TPdfXProductionPreflightOptions | Steuert den MinimumImageDpi-Schwellwert, TreatTransparencyAsErrorBeforePdfX4 und die Berichterstattung von IncludeInformationalColourants |
TPdfXProductionPreflightReport | PDF/X-Validation-Ergebnis plus die seitenbezogenen Pages-Fakten, HasOutputIntent, HasEmbeddedFonts, HasTransparency, HasOverprint, SeparationCount, DeviceNCount, MinimumEffectiveDpi, das Issues-Array, ErrorCount, IsProductionReady und die JSON-Ausgabe ToJson |
TPdfXProductionIssueKind | Klassifiziert pxpikOutputIntent-, pxpikPageBox-, pxpikFont-, pxpikColourant-, pxpikTransparency-, pxpikOverprint-, pxpikSeparation- und pxpikImageResolution-Probleme |
TPdfXProductionIssue | Einzelner gezielter Produktionsbefund mit seiner Kind, Schweregrad, PageNumber, ObjectIndex und Evidence |
TPdfXProductionPage | Seitenbezogene Fakten für PageNumber, HasMediaBox, HasTrimBox, HasBleedBox, HasArtBox, TextObjectCount, PathObjectCount, ImageCount, HasTransparency und MinimumEffectiveDpi |
TPdfValidationPredicateKind | Wählt die Regelauswertung pvpkIssueAbsent, pvpkStandardPass oder pvpkCustom |
TPdfValidationRuleStatus | pvrrsPass, pvrrsFail, pvrrsSkipped oder pvrrsError |
TPdfValidationRunStatus | Meldet pvrsComplete, pvrsFastFailed, pvrsBudgetExceeded, pvrsCancelled oder pvrsError |
TPdfValidationRuleResult | Ergebnis je Regel mit RuleId, Profile, Clause, Status, Evidence, FixHint-Reparaturhinweisen und ElapsedMilliseconds |
TPdfValidationRun | Einzelner begrenzter Registrierungslauf mit dem Results-Array, den Zählern PassedRuleCount, FailedRuleCount, SkippedRuleCount und ErrorRuleCount, ObjectsVisited, EvidenceBytes, PeakReservedMemory, ElapsedMilliseconds, IncompleteReason und Konformitäts-Helfern |
TPdfPreflightIssues, TPdfPreflightStandardResults | Dynamische Arrays für Problemzeilen und Ergebnisse je Standard |
TPdfPreflightIssueCategoryCounts, TPdfPreflightSeverityCounts, TPdfPreflightIssueCodeCounts | Dynamische Arrays, zurückgegeben von den Aggregatoren für Kategorien, Schweregrade und stabile Problemcodes |
TPdfARepairSteps | Abhängigkeitsgeordnete PDF/A-Reparaturschritte, gespeichert von TPdfARepairPlan |
TPdfXProductionPages, TPdfXProductionIssues | Seitenbezogene Produktionsfakten und gezielte PDF/X-Produktionsprobleme |
TPdfValidationProfiles, TPdfValidationRules, TPdfValidationRuleResults | Ausgewählte Profilnamen, registrierte deklarative Regeln und Ausführungsergebnisse je Regel |
TPdfValidationRulePredicate | Eigener Regel-Callback, der einen Bericht über einen begrenzten Ausführungskontext auswertet und Diagnosebelege zurückgibt |
TPdfBatchValidationItemStatus | Dokumentspezifischer Zustand pbvisPending, pbvisPass, pbvisFail, pbvisCancelled oder pbvisError |
TPdfBatchValidationStatus | Gesamtbild des Batchs: pbvsComplete, pbvsPartial, pbvsCancelled oder pbvsFailed |
TPdfBatchValidationItem | Einzelne Eingabedatei mit ihrem Preflight-Bericht, dem Regel-Validation-Ergebnis, Status, ErrorMessage-Text und ElapsedMilliseconds |
TPdfBatchValidationItems | Eingabegeordnete Ergebnisse je Dokument, zurückgegeben von der parallelen Validierung |
BuildPdfPreflightReport ruft ValidatePdfA, ValidatePdfUa, ValidatePdfE, ValidatePdfX, ValidatePdfR und ValidatePdfVT für ein aktives TPdf-Dokument auf und gibt eine TPdfPreflightReport zurück
Der Bericht enthält eine Zeile je ausgewähltem Standard mit erkannter Konformität, Status, Priorität, nächster Aktion, Problemcode, Kategorie, Schweregrad Info / Warning / Error, Beschreibung und Empfehlung. Status-, Schweregrad-, Kategorie- und Problemcode-Zähler liefern wiederverwendbare Zusammenfassungsdaten
FindStandard, HasIssueCode, FlattenIssues, SearchIssues, FilterByStandards, FilterBySeverities und FilterByCategory bieten Abfrageansichten im Arbeitsspeicher. Gefilterte Berichte bewahren die ursprünglichen Konformitäts- und Statuswerte und geben unabhängige Problem-Arrays zurück
Fingerprint gibt eine klein geschriebene SHA-256-Identität für die geordnete Menge der Standard- und Problemergebnisse zurück. Quellpfade und Erzeugungszeitstempel sind bewusst ausgeschlossen, sodass äquivalente Validierungsergebnisse einen Fingerabdruck teilen
Jeder To*-Export besitzt eine passende Save*ToFile-Methode. Dateien werden direkt als UTF-8 geschrieben; CSV behält eine BOM für die Excel-Erkennung und neutralisiert Zellen mit führenden Formelzeichen
TPdfValidationRuleRegistry führt deklarative Profil-Klauseln außerhalb der monolithischen Standard-Validatoren aus. Regeln können von früheren Klauseln abhängen, ein eingebautes Problem- oder Profilprädikat wählen oder ein eigenes Prädikat bereitstellen, das begrenzte Belege aufzeichnet
TPdfValidationExecutionContext liefert kooperative Kontrollpunkte und explizite Zähler für Objekte, Rekursion, UTF-8-Belege und reservierten Speicher. Ein Lauf meldet Fast-Fail, Abbruch oder Budget-Erschöpfung als unvollständigen Status statt als vollständiges Konformitätsergebnis
ValidatePdfFilesParallel gibt jedem Worker ein privates TPdf-Dokument, bewahrt die Eingabereihenfolge, aggregiert Problemcode-Zählungen und zeichnet Bestehen, Scheitern, Abbruch oder Ladefehler für jede Datei unabhängig auf
PDFium ist über Dokumente hinweg nicht threadsicher, darum öffnen und untersuchen die Worker die Dateien nacheinander unter einem gemeinsamen Lock und führen nur die Regelauswertung parallel aus; ein größerer WorkerCount beschleunigt also registrielastige Prüfungen statt des Dokumentladens
BuildPdfARepairPlan überführt PDF/A-Belege in Sicherheits-, Schrift-, Farb-, Anhang-, Struktur-, Metadaten- und Restschritte in Abhängigkeitsreihenfolge. Signaturbeeinflussende Schritte werden blockiert, sofern der Aufrufer keine ausdrückliche Autorisierung liefert
BuildPdfXProductionPreflight kombiniert das PDF/X-Profilergebnis mit nativen Seiten- und Bildfakten, strukturellen Farbton- und Überdruck-Scans sowie Seitenbox-Prüfungen. Bei der Auflösungsanalyse werden Bildnutzdaten niemals dekodiert oder kopiert
| Format | Aufbau |
|---|---|
| Text | Klartextquelle, Erzeugungszeit, Geltungsbereich-Hinweis, Zusammenfassung, Standardzeilen, Aktionsplan, Problemkategorien und Problemdetails |
| HTML | Eigenständiger HTML-Bericht mit Status-Formatierung, einer Problemkategorie-Tabelle, einer Standardtabelle und einer Problemtabelle |
| Markdown | Markdown-Überschriften und -Tabellen für Standards, Problemkategorien, Aktionsplan und Problemdetails |
| JSON | Strukturiertes Objekt mit format, sourceKind, summary, issueCategoryCounts und Problem-Arrays je Standard |
| CSV | Tabellenfreundliche Zeilen, identifiziert über RowType: Summary, Standard, Category und Issue |
| SARIF 2.1.0 | CI- und Code-Scanning-Ergebnisse mit stabilen Regel-IDs, Schweregrad-Stufen, Behebungsmeldungen, Eigenschaften und teilweisen Fingerabdrücken |
| JUnit XML | Ein Testfall je ausgewähltem Standard, wobei Action-required-Ergebnisse als Fehler und Review-Ergebnisse als übersprungene Fälle ausgegeben werden |
| NDJSON | Ein Zusammenfassungs-, Standard- oder Problem-JSON-Objekt je Zeile für inkrementelle Verarbeitung, ohne ein großes JSON-Dokument laden zu müssen |
| XML | Natives Preflight-XML mit Berichtsmetadaten, Zusammenfassungsattributen, Standardergebnissen, Schweregrad, Beschreibungen und Empfehlungen |
ValidatePdf*-MethodenDemo\Delphi\PreflightReport, Demo\Lazarus\PreflightReport und Demo\CBuilder\PreflightReport demonstrieren Standards-Auswahl, Status-/Prioritäts-Zusammenfassungszeilen, Problemkategorie-Zählungen in erzeugten Berichten, Umschalten zwischen Text-/Markdown-/JSON-/CSV-Vorschau und TXT-/HTML-/Markdown-/JSON-/CSV-Export. Das Delphi-GUI-Beispiel enthält zudem eine Aktionsplan-Vorschau, die dieselben Daten zu einer Behebungscheckliste verdichtetDemo\Delphi\PreflightReportCli demonstriert denselben Berichtspfad in einem skriptbaren Konsolen-Workflow. Der Einzeldateimodus akzeptiert Eingabe, Ausgabe, optionales Kennwort, Berichtsformat, standards=, attach= und failon=. Das Format plan / actionplan schreibt eine Text-Behebungscheckliste für Einzel- und Batch-Läufe. Ohne Argumente erzeugt es ein Beispiel-PDF neben der ausführbaren Datei und schreibt einen Textberichtbatch=, überspringt Leerzeilen und #-Kommentare und löst fehlende relative Pfade aus dem Ordner der Listendatei auf. Der Verzeichnismodus durchsucht batchdir= nach *.pdf-Dateien, steigt optional rekursiv ab und sortiert gefundene Pfade vor der Verarbeitungoutdir= leitet Batch-Berichte in einen gemeinsamen Ordner. Lösen mehrere Eingaben auf denselben Berichtspfad auf, erhalten spätere Dateien die Suffixe -2, -3 und weitere, statt frühere Berichte zu überschreibensummary=batch.txt, summary=batch.json und summary=batch.html enthalten Lauf-Einstellungen, aggregierte Dateisummen, Standardstatus-Summen und eine Zeile je Eingabe. summary=batch.csv ist eine zeilenorientierte Manifest-Datei, die Lauf-Einstellungen in jeder Eingabezeile wiederholt und Statuszählungen je Datei enthältattach=output.pdf ist nur für Einzeldateien möglich. Er bettet den erzeugten Bericht als dokumentweiten Anhang in einen anderen PDF-Pfad ein und schreibt niemals in die Eingabedatei zurückfailon=issues trifft auf jedes gemeldete Problem zu, failon=action auf jede Action-required-Zeile und failon=review auf Action-required- oder Review-Zeilen. Die CLI beendet sich mit 0 bei Erfolg, 1 bei Laufzeitfehlern oder 2, wenn eine gewählte failon=-Regel nach dem Schreiben der Berichte zutrifft
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;