PDFium Delphi Component Docs

FPdfPreflightReport Unit

Unit: FPdfPreflightReport
Baut aus den integrierten PDF-Standards-Validatoren ein wiederverwendbares, abfragbares Berichtsobjekt und exportiert Text, HTML, Markdown, JSON, CSV, SARIF 2.1.0, JUnit XML, NDJSON oder natives XML

Syntax

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;

Öffentliche Typen

TypBeschreibung
TPdfPreflightStandardStandards-Selektor mit ppsPdfA, ppsPdfUa, ppsPdfE, ppsPdfX, ppsPdfR und ppsPdfVT
TPdfPreflightStandardsMengentyp, verwendet von BuildPdfPreflightReport; AllPdfPreflightStandards wählt jeden unterstützten Standard
TPdfPreflightStatusStatus je Standard: pfsPass, pfsActionRequired oder pfsReview
TPdfPreflightSeverityProblem-Schweregrad mit psevInfo, psevWarning oder psevError; TPdfPreflightSeverities ist die zugehörige Filter-Menge
TPdfPreflightIssueProblemzeile mit StandardName, Problemcode, Kategorie, Schweregrad, Beschreibung und Recommendation sowie MatchesText-Suche ohne Groß-/Kleinschreibung und einer StableKey-Identität
TPdfPreflightIssueCategoryCountAggregierte Problemkategorie-Zeile, zurückgegeben von IssueCategoryCounts
TPdfPreflightSeverityCountAggregierte Schweregrad-Zeile, zurückgegeben von SeverityCounts, mit Severity, SeverityName und Count
TPdfPreflightIssueCodeCountAggregierte Standard- und Problemcode-Zeile, zurückgegeben von IssueCodeCounts, mit StandardName, Code und Count
TPdfPreflightStandardResultStandardergebnis mit StandardName, ConformanceName, IsCompliant, StatusName, Priority, NextAction, dem Issues-Array, den Schweregrad-Zählern ErrorCount und WarningCount, HighestSeverity, IssueCount und dem HasIssueCode-Problemcode-Nachschlag
TPdfPreflightReportVollstä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
TPdfValidationRuleDeklarative 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
TPdfValidationBudgetBegrenzt ausgewählte Regeln (MaxRules), gemeldete Fehler (MaxIssues), besuchte Objekte (MaxObjects), Rekursion (MaxRecursionDepth), Beleg-Bytes (MaxEvidenceBytes), reservierten Speicher (MaxMemoryBytes) und verstrichene Zeit (TimeoutMilliseconds)
TPdfValidationOptionsWählt Profiles und Severities, stellt das Budget, aktiviert FastFail und unterstützt kooperativen Abbruch über CancellationToken
TPdfValidationExecutionContextBegrenzter 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
TPdfValidationRuleRegistryThread-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
TPdfBatchValidationOptionsSteuert die WorkerCount, die Standards, die verschachtelten ValidationOptions, dokumentsweit FailFast sowie den Abbruch über CancellationToken
TPdfBatchValidationReportEingabegeordnete Ergebnisse je Dokument mit aggregierten Problemverteilungen, ElapsedMilliseconds, Abschlussstatus sowie den Summen WorkerCount, PassedDocumentCount, FailedDocumentCount, CancelledDocumentCount und ErrorDocumentCount
TPdfARepairPlanAbhä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
TPdfARepairCategoryKlassifiziert Reparaturarbeiten als parcSecurity, parcFonts, parcColour, parcAttachments, parcStructure, parcMetadata oder parcOther
TPdfARepairSafetyparsAutomatic, parsReviewRequired oder parsManual
TPdfARepairStepEinzelne geordnete Reparaturaktion mit ihrer Order, Kategorie, IssueCode, Aktion, Evidence, Abhängigkeit und Safety sowie RequiresFullRewrite, InvalidatesSignatures und Blocked
TPdfXProductionPreflightOptionsSteuert den MinimumImageDpi-Schwellwert, TreatTransparencyAsErrorBeforePdfX4 und die Berichterstattung von IncludeInformationalColourants
TPdfXProductionPreflightReportPDF/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
TPdfXProductionIssueKindKlassifiziert pxpikOutputIntent-, pxpikPageBox-, pxpikFont-, pxpikColourant-, pxpikTransparency-, pxpikOverprint-, pxpikSeparation- und pxpikImageResolution-Probleme
TPdfXProductionIssueEinzelner gezielter Produktionsbefund mit seiner Kind, Schweregrad, PageNumber, ObjectIndex und Evidence
TPdfXProductionPageSeitenbezogene Fakten für PageNumber, HasMediaBox, HasTrimBox, HasBleedBox, HasArtBox, TextObjectCount, PathObjectCount, ImageCount, HasTransparency und MinimumEffectiveDpi
TPdfValidationPredicateKindWählt die Regelauswertung pvpkIssueAbsent, pvpkStandardPass oder pvpkCustom
TPdfValidationRuleStatuspvrrsPass, pvrrsFail, pvrrsSkipped oder pvrrsError
TPdfValidationRunStatusMeldet pvrsComplete, pvrsFastFailed, pvrsBudgetExceeded, pvrsCancelled oder pvrsError
TPdfValidationRuleResultErgebnis je Regel mit RuleId, Profile, Clause, Status, Evidence, FixHint-Reparaturhinweisen und ElapsedMilliseconds
TPdfValidationRunEinzelner begrenzter Registrierungslauf mit dem Results-Array, den Zählern PassedRuleCount, FailedRuleCount, SkippedRuleCount und ErrorRuleCount, ObjectsVisited, EvidenceBytes, PeakReservedMemory, ElapsedMilliseconds, IncompleteReason und Konformitäts-Helfern
TPdfPreflightIssues, TPdfPreflightStandardResultsDynamische Arrays für Problemzeilen und Ergebnisse je Standard
TPdfPreflightIssueCategoryCounts, TPdfPreflightSeverityCounts, TPdfPreflightIssueCodeCountsDynamische Arrays, zurückgegeben von den Aggregatoren für Kategorien, Schweregrade und stabile Problemcodes
TPdfARepairStepsAbhängigkeitsgeordnete PDF/A-Reparaturschritte, gespeichert von TPdfARepairPlan
TPdfXProductionPages, TPdfXProductionIssuesSeitenbezogene Produktionsfakten und gezielte PDF/X-Produktionsprobleme
TPdfValidationProfiles, TPdfValidationRules, TPdfValidationRuleResultsAusgewählte Profilnamen, registrierte deklarative Regeln und Ausführungsergebnisse je Regel
TPdfValidationRulePredicateEigener Regel-Callback, der einen Bericht über einen begrenzten Ausführungskontext auswertet und Diagnosebelege zurückgibt
TPdfBatchValidationItemStatusDokumentspezifischer Zustand pbvisPending, pbvisPass, pbvisFail, pbvisCancelled oder pbvisError
TPdfBatchValidationStatusGesamtbild des Batchs: pbvsComplete, pbvsPartial, pbvsCancelled oder pbvsFailed
TPdfBatchValidationItemEinzelne Eingabedatei mit ihrem Preflight-Bericht, dem Regel-Validation-Ergebnis, Status, ErrorMessage-Text und ElapsedMilliseconds
TPdfBatchValidationItemsEingabegeordnete Ergebnisse je Dokument, zurückgegeben von der parallelen Validierung

Beschreibung

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

Ausgabeformate

FormatAufbau
TextKlartextquelle, Erzeugungszeit, Geltungsbereich-Hinweis, Zusammenfassung, Standardzeilen, Aktionsplan, Problemkategorien und Problemdetails
HTMLEigenständiger HTML-Bericht mit Status-Formatierung, einer Problemkategorie-Tabelle, einer Standardtabelle und einer Problemtabelle
MarkdownMarkdown-Überschriften und -Tabellen für Standards, Problemkategorien, Aktionsplan und Problemdetails
JSONStrukturiertes Objekt mit format, sourceKind, summary, issueCategoryCounts und Problem-Arrays je Standard
CSVTabellenfreundliche Zeilen, identifiziert über RowType: Summary, Standard, Category und Issue
SARIF 2.1.0CI- und Code-Scanning-Ergebnisse mit stabilen Regel-IDs, Schweregrad-Stufen, Behebungsmeldungen, Eigenschaften und teilweisen Fingerabdrücken
JUnit XMLEin Testfall je ausgewähltem Standard, wobei Action-required-Ergebnisse als Fehler und Review-Ergebnisse als übersprungene Fälle ausgegeben werden
NDJSONEin Zusammenfassungs-, Standard- oder Problem-JSON-Objekt je Zeile für inkrementelle Verarbeitung, ohne ein großes JSON-Dokument laden zu müssen
XMLNatives Preflight-XML mit Berichtsmetadaten, Zusammenfassungsattributen, Standardergebnissen, Schweregrad, Beschreibungen und Empfehlungen

Hinweise

Beispiel

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;

Siehe auch

ValidatePdfA, ValidatePdfX