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 | Standardväljare med ppsPdfA, ppsPdfUa, ppsPdfE, ppsPdfX, ppsPdfR och ppsPdfVT |
TPdfPreflightStandards | Settyp som används av BuildPdfPreflightReport; AllPdfPreflightStandards väljer alla standarder som stöds |
TPdfPreflightStatus | Status per standard: pfsPass, pfsActionRequired eller pfsReview |
TPdfPreflightSeverity | Allvarlighetsgrad för problem med psevInfo, psevWarning eller psevError; TPdfPreflightSeverities är motsvarande filteruppsättning |
TPdfPreflightIssue | Problemrad med StandardName, problemkod, kategori, allvarlighetsgrad, beskrivning och Recommendation, plus skiftlägesokänslig sökning i MatchesText och en StableKey-identitet |
TPdfPreflightIssueCategoryCount | Aggregerad problemkategorirad som returneras av IssueCategoryCounts |
TPdfPreflightSeverityCount | Aggregerad allvarlighetsgradrad som returneras av SeverityCounts med Severity, SeverityName och Count |
TPdfPreflightIssueCodeCount | Aggregerad standard- och problemkodrad som returneras av IssueCodeCounts med StandardName, Code och Count |
TPdfPreflightStandardResult | Ett standardresultat med StandardName, ConformanceName, IsCompliant, StatusName, Priority, NextAction, arrayen Issues, allvarlighetsgradsräknarna ErrorCount och WarningCount, HighestSeverity, IssueCount och problemkoduppslagningen HasIssueCode |
TPdfPreflightReport | Komplett rapport med SourceFile-namnet, tidsstämpeln GeneratedAt, ScopeNote, arrayen Results med standardresultat, sammanfattande räknare ActionRequiredStandardCount, CompliantStandardCount, NonCompliantStandardCount, PassedStandardCount, ReviewStandardCount, StandardCount, HighestSeverity och TotalIssueCount, frågehjälparna FilterByStandards, FilterByCategory, FilterBySeverities, SearchIssues, FlattenIssues, HasIssueCode, FindStandard, Fingerprint, IssueCategoryCounts, IssueCodeCounts och SeverityCounts samt exporthjälparna ToCsv, ToHtml, ToMarkdown, ToJson, ToNdjson, ToSarif, ToJUnitXml, ToText och ToXml med tillhörande SaveXxxToFile-procedurer |
TPdfValidationRule | Deklarativ profilklausul med sin Id och Profile, Clause, allvarlighetsgrad, DependencyIds, repareringsvägledning i FixHint, IssueCode och ett problem-, standard- eller eget Predicate som väljs av PredicateKind |
TPdfValidationBudget | Begränsar valda regler (MaxRules), rapporterade fel (MaxIssues), besökta objekt (MaxObjects), rekursion (MaxRecursionDepth), bevisbytes (MaxEvidenceBytes), reserverat minne (MaxMemoryBytes) och förfluten tid (TimeoutMilliseconds) |
TPdfValidationOptions | Väljer Profiles och Severities, levererar Budget, aktiverar FastFail och stödjer kooperativ avbrytning via CancellationToken |
TPdfValidationExecutionContext | Avgränsad exekveringskontext som skickas till egna predikat; Create lagrar alternativen och startar körningsklockan, Checkpoint, ConsumeEvidence, ConsumeObjects, EnterRecursion, LeaveRecursion, ReserveMemory och ReleaseMemory framtvingar budgeten, och BudgetExceeded, BudgetReason, EvidenceBytes, ObjectsVisited, RecursionDepth, ReservedMemory, PeakReservedMemory och StartTick exponerar aktuella räknare |
TPdfValidationRuleRegistry | Trådsäkert regelregister; Create och Destroy hanterar den kritiska sektionen, RegisterRule och Clear muterar den registrerade uppsättningen, Count och Snapshot läser den under lås, och Execute validerar en rapport med bevis och tidsmätning per klausul |
TPdfBatchValidationOptions | Styr WorkerCount, standarderna, nästlade ValidationOptions, FailFast på dokumentnivå samt avbrytning via CancellationToken |
TPdfBatchValidationReport | Resultat per dokument i indataordning med aggregerade problemdistributioner, ElapsedMilliseconds, slutstatus och totalerna WorkerCount, PassedDocumentCount, FailedDocumentCount, CancelledDocumentCount och ErrorDocumentCount |
TPdfARepairPlan | Åtgärdsstegen Steps i beroendeordning, klassificerade efter kategori, säkerhet, omskrivningsbehov, signaturpåverkan och blockerande tillstånd, med summeringarna DocumentHasSignatures, AllowSignatureInvalidation, BlockedStepCount, AutomaticStepCount och ManualStepCount, IsExecutable och ToJson-JSON-utdata |
TPdfARepairCategory | Klassificerar reparationsarbetet som parcSecurity, parcFonts, parcColour, parcAttachments, parcStructure, parcMetadata eller parcOther |
TPdfARepairSafety | parsAutomatic, parsReviewRequired eller parsManual |
TPdfARepairStep | En ordnad reparationsåtgärd med sin Order, kategori, IssueCode, åtgärd, Evidence, beroende och Safety, plus RequiresFullRewrite, InvalidatesSignatures och Blocked |
TPdfXProductionPreflightOptions | Styr tröskeln MinimumImageDpi, TreatTransparencyAsErrorBeforePdfX4 och rapporteringen av IncludeInformationalColourants |
TPdfXProductionPreflightReport | PDF/X-Validation-resultat plus per-sida-fakta i Pages, HasOutputIntent, HasEmbeddedFonts, HasTransparency, HasOverprint, SeparationCount, DeviceNCount, MinimumEffectiveDpi, arrayen Issues, ErrorCount, IsProductionReady och ToJson-JSON-utdata |
TPdfXProductionIssueKind | Klassificerar problemen pxpikOutputIntent, pxpikPageBox, pxpikFont, pxpikColourant, pxpikTransparency, pxpikOverprint, pxpikSeparation och pxpikImageResolution |
TPdfXProductionIssue | Ett fokuserat produktionsfynd med sin Kind, allvarlighetsgrad, PageNumber, ObjectIndex och Evidence |
TPdfXProductionPage | Per-sida-fakta för PageNumber, HasMediaBox, HasTrimBox, HasBleedBox, HasArtBox, TextObjectCount, PathObjectCount, ImageCount, HasTransparency och MinimumEffectiveDpi |
TPdfValidationPredicateKind | Väljer regelutvärdering med pvpkIssueAbsent, pvpkStandardPass eller pvpkCustom |
TPdfValidationRuleStatus | pvrrsPass, pvrrsFail, pvrrsSkipped eller pvrrsError |
TPdfValidationRunStatus | Rapporterar pvrsComplete, pvrsFastFailed, pvrsBudgetExceeded, pvrsCancelled eller pvrsError |
TPdfValidationRuleResult | Resultat per regel med RuleId, Profile, Clause, status, Evidence, repareringsvägledning i FixHint och ElapsedMilliseconds |
TPdfValidationRun | En avgränsad registerkörning med arrayen Results, räknarna PassedRuleCount, FailedRuleCount, SkippedRuleCount och ErrorRuleCount, ObjectsVisited, EvidenceBytes, PeakReservedMemory, ElapsedMilliseconds, IncompleteReason och efterlevnadshjälpare |
TPdfPreflightIssues, TPdfPreflightStandardResults | Dynamiska arrayer som håller problemrader och resultat per standard |
TPdfPreflightIssueCategoryCounts, TPdfPreflightSeverityCounts, TPdfPreflightIssueCodeCounts | Dynamiska arrayer som returneras av aggregatorerna för kategori, allvarlighetsgrad och stabil problemkod |
TPdfARepairSteps | PDF/A-reparationssteg i beroendeordning som lagras av TPdfARepairPlan |
TPdfXProductionPages, TPdfXProductionIssues | Produktionsfakta per sida och fokuserade PDF/X-produktionsproblem |
TPdfValidationProfiles, TPdfValidationRules, TPdfValidationRuleResults | Valda profilnamn, registrerade deklarativa regler och exekveringsresultat per regel |
TPdfValidationRulePredicate | Eget regel-callback som utvärderar en rapport via en avgränsad exekveringskontext och returnerar diagnostiska bevis |
TPdfBatchValidationItemStatus | Status per dokument: pbvisPending, pbvisPass, pbvisFail, pbvisCancelled eller pbvisError |
TPdfBatchValidationStatus | Status för hela batchen: pbvsComplete, pbvsPartial, pbvsCancelled eller pbvsFailed |
TPdfBatchValidationItem | En indatafil med sin Preflight-rapport, regelresultatet Validation, status, ErrorMessage-text och ElapsedMilliseconds |
TPdfBatchValidationItems | Resultat per dokument i indataordning som returneras av parallell validering |
BuildPdfPreflightReport anropar ValidatePdfA, ValidatePdfUa, ValidatePdfE, ValidatePdfX, ValidatePdfR och ValidatePdfVT för ett aktivt TPdf-dokument och returnerar en TPdfPreflightReport
Rapporten innehåller en rad per vald standard med upptäckt efterlevnad, status, prioritet, nästa åtgärd, problemkod, kategori, allvarlighetsgraden Info / Warning / Error, beskrivning och rekommendation. Räknare för status, allvarlighetsgrad, kategori och problemkod exponerar återanvändbar sammanfattningsdata
FindStandard, HasIssueCode, FlattenIssues, SearchIssues, FilterByStandards, FilterBySeverities och FilterByCategory tillhandahåller frågevyer i minnet. Filtrerade rapporter bevarar de ursprungliga efterlevnads- och statusvärdena samtidigt som de returnerar oberoende problemarrayer
Fingerprint returnerar en SHA-256-identitet i gemener för den ordnade uppsättningen standard- och problemresultat. Källsökvägar och genereringstidsstämplar är medvetet exkluderade så att likvärdiga valideringsresultat delar ett fingeravtryck
Varje To*-export har en motsvarande Save*ToFile-metod. Filer skrivs direkt som UTF-8; CSV behåller en BOM för Excel-detektering och neutraliserar celler som börjar med formel
TPdfValidationRuleRegistry exekverar deklarativa profilklausuler utanför de monolitiska standardvaliderarna. Regler kan bero på tidigare klausuler, välja en inbyggd problem- eller profilpredikat eller tillhandahålla en egen predikat som registrerar avgränsade bevis
TPdfValidationExecutionContext tillhandahåller kooperativa checkpoints och explicita räknare för objekt, rekursion, UTF-8-bevis och reserverat minne. En körning rapporterar fast-fail, avbrytning eller förbrukad budget som en ofullständig status snarare än ett komplett efterlevnadsresultat
ValidatePdfFilesParallel ger varje worker ett privat TPdf-dokument, bevarar indataordningen, aggregerar problemkodräknare och registrerar pass, fail, avbrytning eller läsfel oberoende för varje fil
PDFium är inte trådsäker över dokument, så arbetarna öppnar och granskar filer en i taget under ett delat lås och kör bara regelutvärderingen parallellt; ett större WorkerCount snabbar därför upp regeltyngda register i stället för dokumentinläsningen
BuildPdfARepairPlan mappar PDF/A-bevis till steg för säkerhet, typsnitt, färg, bilagor, struktur, metadata och rester i beroendeordning. Åtgärder som ogiltigförklarar signaturer blockeras om inte anroparen tillhandahåller explicit behörighet
BuildPdfXProductionPreflight kombinerar PDF/X-profilresultatet med nativa sid- och bildfakta, strukturella färgämnes- och overprint-skanningar samt kontroller av sidrutor. Den avkodar eller kopierar aldrig bildnyttolaster under analysen
| Format | Shape |
|---|---|
| Text | Klartextkälla, genereringstid, scope-anteckning, sammanfattning, standardrader, åtgärdsplan, problemkategorier och problemdetaljer |
| HTML | Självständig HTML-rapport med statusstil, en problemkategoritabell, standardtabell och problemtabell |
| Markdown | Markdown-rubriker och tabeller för standarder, problemkategorier, åtgärdsplan och problemdetaljer |
| JSON | Strukturerat objekt med format, sourceKind, summary, issueCategoryCounts och problemarrayer per standard |
| CSV | Kalkylbladsvänliga rader identifierade av RowType: Summary, Standard, Category och Issue |
| SARIF 2.1.0 | CI- och kodskanningsresultat med stabila regel-ID:n, allvarlighetsgrader, åtgärdsmeddelanden, properties och partiella fingeravtryck |
| JUnit XML | Ett testfall per vald standard, där Action required-resultat genereras som fel och Review-resultat som överhoppade fall |
| NDJSON | Ett sammanfattnings-, standard- eller problem-JSON-objekt per rad för inkrementell inläsning utan att behöva läsa in ett stort JSON-dokument |
| XML | Inbyggd preflight-XML med rapportmetadata, sammanfattande attribut, standardresultat, allvarlighetsgrad, beskrivningar och rekommendationer |
ValidatePdf*-metodernaDemo\Delphi\PreflightReport, Demo\Lazarus\PreflightReport och Demo\CBuilder\PreflightReport demonstrerar standardval, status-/prioritetssammanfattningar, problemkategoriräknare i genererade rapporter, växling mellan förhandsvisning av text / Markdown / JSON / CSV samt export till TXT / HTML / Markdown / JSON / CSV. Delphi-GUI-exemplet innehåller också en Action Plan-förhandsvisning som fokuserar samma data till en åtgärdschecklistaDemo\Delphi\PreflightReportCli demonstrerar samma rapportväg i ett skriptbart konsolflöde. Enkelfilsläget accepterar indata, utdata, valfritt lösenord, rapportformat, standards=, attach= och failon=. Formatet plan / actionplan skriver en textchecklista med åtgärder för enkelfils- och batchkörningar. Utan argument skapar den en exempel-PDF bredvid den exekverbara filen och skriver en textrapportbatch=, hoppar över tomma rader och #-kommentarer och löser saknade relativa sökvägar mot listfilens mapp. Katalogläget skannar batchdir= efter *.pdf-filer, rekurserar valfritt och sorterar de upptäckta sökvägarna före bearbetningoutdir= leder batchrapporter till en gemensam mapp. Om flera indata leder till samma rapportsökväg får senare filer suffixen -2, -3 och vidare i stället för att skriva över tidigare rapportersummary=batch.txt, summary=batch.json och summary=batch.html innehåller körningsinställningar, aggregerade filtotaler, standardstatustotaler och en rad per indata. summary=batch.csv är ett radorienterat manifest som upprepar körningsinställningarna på varje indatarad och innehåller statusräknare per filattach=output.pdf gäller enbart enkelfilsläget. Den bäddar in den genererade rapporten som en bilaga på dokumentnivå i en annan PDF-sökväg och skriver aldrig tillbaka till indatifilenfailon=issues matchar varje rapporterat problem, failon=action matchar varje Action required-rad och failon=review matchar Action required- eller Review-rader. CLI:et avslutas med 0 vid framgång, 1 vid körningsfel eller 2 när en vald failon=-regel matchar efter att rapporterna har skrivits
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;