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;
| 型 | 説明 |
|---|---|
TPdfPreflightStandard | ppsPdfA、ppsPdfUa、ppsPdfE、ppsPdfX、ppsPdfR、ppsPdfVT を持つ規格セレクターです |
TPdfPreflightStandards | BuildPdfPreflightReport が使用するセット型です。AllPdfPreflightStandards はサポートされるすべての規格を選択します |
TPdfPreflightStatus | 規格ごとのステータス: pfsPass、pfsActionRequired、pfsReview |
TPdfPreflightSeverity | psevInfo、psevWarning、psevError の問題重要度です。TPdfPreflightSeverities は対応するフィルタセットです |
TPdfPreflightIssue | StandardName、問題コード、カテゴリ、重要度、説明、Recommendation を持つ問題行です。大文字小文字を区別しない MatchesText 検索と StableKey 識別情報も備えます |
TPdfPreflightIssueCategoryCount | IssueCategoryCounts が返す集計済み問題カテゴリ行です |
TPdfPreflightSeverityCount | SeverityCounts が返す集計済み重要度行で、Severity、SeverityName、Count を持ちます |
TPdfPreflightIssueCodeCount | IssueCodeCounts が返す集計済み規格/問題コード行で、StandardName、Code、Count を持ちます |
TPdfPreflightStandardResult | StandardName、ConformanceName、IsCompliant、StatusName、Priority、NextAction、Issues 配列、ErrorCount と WarningCount の重要度カウンタ、HighestSeverity、IssueCount、HasIssueCode による問題コード照会を持つ 1 規格分の結果です |
TPdfPreflightReport | SourceFile 名、GeneratedAt タイムスタンプ、ScopeNote、規格結果の Results 配列、ActionRequiredStandardCount、CompliantStandardCount、NonCompliantStandardCount、PassedStandardCount、ReviewStandardCount、StandardCount、HighestSeverity、TotalIssueCount のサマリーカウンタ、FilterByStandards、FilterByCategory、FilterBySeverities、SearchIssues、FlattenIssues、HasIssueCode、FindStandard、Fingerprint、IssueCategoryCounts、IssueCodeCounts、SeverityCounts の照会ヘルパー、そして対応する SaveXxxToFile 手続き付きの ToCsv、ToHtml、ToMarkdown、ToJson、ToNdjson、ToSarif、ToJUnitXml、ToText、ToXml エクスポートヘルパーを持つ完全なレポートです |
TPdfValidationRule | Id と Profile、Clause、重要度、DependencyIds、修復ガイダンス FixHint、IssueCode、および PredicateKind で選択される問題/規格/カスタムの Predicate を持つ宣言的プロファイル節です |
TPdfValidationBudget | 選択ルール (MaxRules)、報告失敗 (MaxIssues)、訪問オブジェクト (MaxObjects)、再帰 (MaxRecursionDepth)、エビデンスバイト (MaxEvidenceBytes)、予約メモリ (MaxMemoryBytes)、経過時間 (TimeoutMilliseconds) を制限します |
TPdfValidationOptions | Profiles と Severities を選択し、Budget を供給し、FastFail を有効化し、CancellationToken による協調的キャンセルをサポートします |
TPdfValidationExecutionContext | カスタム述語に渡される上限付き実行コンテキストです。Create がオプションを保存して実行時計を開始し、Checkpoint、ConsumeEvidence、ConsumeObjects、EnterRecursion、LeaveRecursion、ReserveMemory、ReleaseMemory が予算を強制し、BudgetExceeded、BudgetReason、EvidenceBytes、ObjectsVisited、RecursionDepth、ReservedMemory、PeakReservedMemory、StartTick がライブカウンタを公開します |
TPdfValidationRuleRegistry | スレッドセーフなルートレジストリです。Create と Destroy がクリティカルセクションを管理し、RegisterRule と Clear が登録セットを変更し、Count と Snapshot がロック下で読み取り、Execute が節ごとのエビデンスとタイミング付きでレポートを検証します |
TPdfBatchValidationOptions | WorkerCount、規格、ネストした ValidationOptions、ドキュメントレベルの FailFast、CancellationToken によるキャンセルを制御します |
TPdfBatchValidationReport | 入力順のドキュメントごとの結果に加え、集計済み問題分布、ElapsedMilliseconds、終了ステータス、WorkerCount、PassedDocumentCount、FailedDocumentCount、CancelledDocumentCount、ErrorDocumentCount の合計を持ちます |
TPdfARepairPlan | カテゴリ、安全性、書き換え要否、署名への影響、ブロック状態で分類された、依存順の修復 Steps です。DocumentHasSignatures、AllowSignatureInvalidation、BlockedStepCount、AutomaticStepCount、ManualStepCount のロールアップ、IsExecutable、ToJson による JSON 出力を持ちます |
TPdfARepairCategory | 修復作業を parcSecurity、parcFonts、parcColour、parcAttachments、parcStructure、parcMetadata、parcOther に分類します |
TPdfARepairSafety | parsAutomatic、parsReviewRequired、parsManual |
TPdfARepairStep | Order、カテゴリ、IssueCode、アクション、Evidence、依存、Safety に加え、RequiresFullRewrite、InvalidatesSignatures、Blocked を持つ 1 つの順序付き修復アクションです |
TPdfXProductionPreflightOptions | MinimumImageDpi しきい値、TreatTransparencyAsErrorBeforePdfX4、IncludeInformationalColourants 報告を制御します |
TPdfXProductionPreflightReport | PDF/X の Validation 結果に加え、ページごとの Pages 情報、HasOutputIntent、HasEmbeddedFonts、HasTransparency、HasOverprint、SeparationCount、DeviceNCount、MinimumEffectiveDpi、Issues 配列、ErrorCount、IsProductionReady、ToJson による JSON 出力を持ちます |
TPdfXProductionIssueKind | pxpikOutputIntent、pxpikPageBox、pxpikFont、pxpikColourant、pxpikTransparency、pxpikOverprint、pxpikSeparation、pxpikImageResolution の問題を分類します |
TPdfXProductionIssue | Kind、重要度、PageNumber、ObjectIndex、Evidence を持つ、1 つの焦点を絞った出力上の検出結果です |
TPdfXProductionPage | PageNumber、HasMediaBox、HasTrimBox、HasBleedBox、HasArtBox、TextObjectCount、PathObjectCount、ImageCount、HasTransparency、MinimumEffectiveDpi のページごとの情報です |
TPdfValidationPredicateKind | pvpkIssueAbsent、pvpkStandardPass、pvpkCustom のルール評価を選択します |
TPdfValidationRuleStatus | pvrrsPass、pvrrsFail、pvrrsSkipped、pvrrsError |
TPdfValidationRunStatus | pvrsComplete、pvrsFastFailed、pvrsBudgetExceeded、pvrsCancelled、pvrsError を報告します |
TPdfValidationRuleResult | RuleId、Profile、Clause、ステータス、Evidence、修復ガイダンス FixHint、ElapsedMilliseconds を持つルールごとの結果です |
TPdfValidationRun | Results 配列、PassedRuleCount、FailedRuleCount、SkippedRuleCount、ErrorRuleCount のカウンタ、ObjectsVisited、EvidenceBytes、PeakReservedMemory、ElapsedMilliseconds、IncompleteReason、適合ヘルパーを持つ、1 回の上限付きレジストリ実行です |
TPdfPreflightIssues, TPdfPreflightStandardResults | 問題行と規格ごとの結果を保持する動的配列です |
TPdfPreflightIssueCategoryCounts, TPdfPreflightSeverityCounts, TPdfPreflightIssueCodeCounts | カテゴリ、重要度、安定した問題コードの各アグリゲーターが返す動的配列です |
TPdfARepairSteps | TPdfARepairPlan が保存する依存順の PDF/A 修復ステップです |
TPdfXProductionPages, TPdfXProductionIssues | ページごとの出力情報と、焦点を絞った PDF/X 出力上の問題です |
TPdfValidationProfiles, TPdfValidationRules, TPdfValidationRuleResults | 選択されたプロファイル名、登録済み宣言ルール、ルールごとの実行結果です |
TPdfValidationRulePredicate | 上限付き実行コンテキストを通じてレポートを評価し、診断エビデンスを返すカスタムルールコールバックです |
TPdfBatchValidationItemStatus | ドキュメントごとの pbvisPending、pbvisPass、pbvisFail、pbvisCancelled、pbvisError 状態です |
TPdfBatchValidationStatus | バッチ全体の pbvsComplete、pbvsPartial、pbvsCancelled、pbvsFailed 状態です |
TPdfBatchValidationItem | Preflight レポート、ルールの Validation 結果、ステータス、ErrorMessage テキスト、ElapsedMilliseconds を持つ 1 つの入力ファイルです |
TPdfBatchValidationItems | 並列検証が返す入力順のドキュメントごとの結果です |
BuildPdfPreflightReport はアクティブな TPdf ドキュメントに対して ValidatePdfA、ValidatePdfUa、ValidatePdfE、ValidatePdfX、ValidatePdfR、ValidatePdfVT を呼び出し、TPdfPreflightReport を返します
レポートには、選択された規格ごとに 1 行が含まれ、検出された適合、ステータス、優先度、次のアクション、問題コード、カテゴリ、Info / Warning / Error の重要度、説明、推奨事項が入ります。ステータス、重要度、カテゴリ、問題コードのカウンタが再利用可能なサマリーデータを公開します
FindStandard、HasIssueCode、FlattenIssues、SearchIssues、FilterByStandards、FilterBySeverities、FilterByCategory がメモリ内の照会ビューを提供します。フィルタ済みレポートは元の適合とステータス値を保持しながら、独立した問題配列を返します
Fingerprint は、順序付きの規格と問題の結果セットに対する小文字の SHA-256 識別情報を返します。ソースパスと生成タイムスタンプは意図的に除外されるため、等価な検証結果は同じフィンガープリントを共有します
各 To* エクスポートには対応する Save*ToFile メソッドがあります。ファイルは UTF-8 で直接書き込まれます。CSV は Excel の検出のために BOM を保持し、数式として解釈される先頭セルを無害化します
TPdfValidationRuleRegistry は、宣言的プロファイル節を一枚岩の規格バリデーターの外側で実行します。ルールは先行する節に依存でき、組み込みの問題またはプロファイル述語を選択できるほか、上限付きエビデンスを記録するカスタム述語を提供できます
TPdfValidationExecutionContext は、オブジェクト、再帰、UTF-8 エビデンス、予約メモリのための協調的チェックポイントと明示的なカウンタを提供します。実行は、完全な適合結果ではなく、fast-fail、キャンセル、予算枯渇を未完了ステータスとして報告します
ValidatePdfFilesParallel はワーカーごとにプライベートな TPdf ドキュメントを与え、入力順を保持し、問題コード数を集計し、合格、失敗、キャンセル、読み込みエラーをファイルごとに独立して記録します
PDFium はドキュメントをまたいでスレッドセーフではないため、ワーカーは共有ロックのもとでファイルを 1 件ずつ開いて検査し、並列に実行されるのはルール評価だけです。したがって WorkerCount を増やしても高速化するのはドキュメントの読み込みではなく、ルールが重いレジストリのほうです
BuildPdfARepairPlan は PDF/A のエビデンスを、依存順のセキュリティ、フォント、色、添付、構造、メタデータ、残余のステップへ写像します。署名を無効化するステップは、呼び出し側が明示的な認可を与えない限りブロックされます
BuildPdfXProductionPreflight は PDF/X プロファイルの結果を、ネイティブのページと画像の情報、構造的な色材とオーバープリントの走査、ページボックス検査と組み合わせます。解像度の分析中に画像ペイロードをデコードまたはコピーすることはありません
| フォーマット | 構成 |
|---|---|
| Text | プレーンテキストのソース、生成時刻、スコープノート、サマリー、規格行、アクションプラン、問題カテゴリ、問題詳細です |
| HTML | ステータス装飾、問題カテゴリテーブル、規格テーブル、問題テーブルを備えたスタンドアロン HTML レポートです |
| Markdown | 規格、問題カテゴリ、アクションプラン、問題詳細のための Markdown 見出しとテーブルです |
| JSON | format、sourceKind、summary、issueCategoryCounts、規格ごとの問題配列を持つ構造化オブジェクトです |
| CSV | RowType: Summary、Standard、Category、Issue で識別される、表計算に適した行です |
| SARIF 2.1.0 | 安定したルール ID、重要度レベル、修復メッセージ、プロパティ、部分フィンガープリントを持つ、CI とコードスキャン向けの結果です |
| JUnit XML | 選択された規格ごとに 1 つのテストケースで、Action required の結果は失敗として、Review の結果はスキップケースとして出力されます |
| NDJSON | 1 行ごとにサマリー、規格、または問題の JSON オブジェクトが並び、大きな JSON ドキュメントを読み込まずに増分取り込みできます |
| XML | レポートメタデータ、サマリー属性、規格結果、重要度、説明、推奨事項を持つネイティブの preflight XML です |
ValidatePdf* メソッドと同じプロファイルとファイル検査を使用しますDemo\Delphi\PreflightReport、Demo\Lazarus\PreflightReport、Demo\CBuilder\PreflightReport は、規格の選択、ステータス / 優先度サマリー行、生成レポート内の問題カテゴリ数、テキスト / Markdown / JSON / CSV プレビューの切り替え、TXT / HTML / Markdown / JSON / CSV エクスポートを紹介します。Delphi GUI サンプルには、同じデータを修復チェックリストへ絞り込む Action Plan プレビューも含まれますDemo\Delphi\PreflightReportCli は、同じレポート経路をスクリプト可能なコンソールワークフローで示します。単一ファイルモードは input、output、オプションのパスワード、レポート形式、standards=、attach=、failon= を受け付けます。plan / actionplan 形式は、単一ファイルとバッチの実行に対するテキストの修復チェックリストを書き込みます。引数なしでは、実行ファイルの隣にサンプル PDF を作成しテキストレポートを書き込みますbatch= から 1 行に 1 つの PDF パスを読み込み、空行と # コメントをスキップし、欠落している相対パスをリストファイルのフォルダーから解決します。ディレクトリモードは batchdir= を *.pdf ファイルのために走査し、必要に応じて再帰し、処理前に見つかったパスをソートしますoutdir= はバッチレポートを共有フォルダーへ振り向けます。複数の入力が同じレポートパスに解決された場合、後のファイルは既存レポートを上書きする代わりに -2、-3 以降のサフィックスを受け取りますsummary=batch.txt、summary=batch.json、summary=batch.html には実行設定、ファイル合計、規格ステータス合計、入力ごとの 1 行が含まれます。summary=batch.csv は行指向のマニフェストで、各入力行に実行設定を繰り返し、ファイルごとのステータス数を含めますattach=output.pdf は単一ファイル専用です。生成されたレポートを別の PDF パスのドキュメントレベル添付として埋め込み、入力ファイルへ書き戻すことはありませんfailon=issues は報告された任意の問題に一致し、failon=action は任意の Action required 行に、failon=review は Action required または Review 行に一致します。CLI は成功時に 0、実行時エラー時に 1、レポート書き込み後に選択された failon= ルールが一致した場合は 2 で終了します
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;