プリフライトクックブック

このクックブックは、プリフライト API とデモをタスク指向のレシピにグループ化しています。正確なシグネチャが必要な場合は API リファレンスを使用し、アプリケーション、ビルドスクリプト、または CI ジョブの実用的なパスが必要な場合はこのページを使用してください。

出力形式を選択する

var
  PDF: THotPDF;
begin
  PDF := THotPDF.Create(nil);
  try
    PDF.SavePreflightReport('Input.pdf', 'Input.preflight.txt');
    PDF.SavePreflightReport('Input.pdf', 'Input.preflight.json', '', pfJSON);
    PDF.SavePreflightReport('Input.pdf', 'Input.preflight.html', '', pfHTML);
    PDF.SavePreflightReport('Input.pdf', 'Input.preflight.csv', '', pfCSV);
  finally
    PDF.Free;
  end;
end;

テキスト出力はバイトが安定しており、差分を比較しやすいです。JSON はパイプラインでの取り込みに適しています。HTML は自己完結型であり、直接開くことも、CI アーティファクトとして保存することもできます。CSV は、スプレッドシートやバッチレポートのワークフロー用に安定した列を使用します。

PDF/VT ドキュメントを検証する

var
  PDF: THotPDF;
  Report: AnsiString;
begin
  PDF := THotPDF.Create(nil);
  try
    if not PDF.ValidatePDFVT('Input.pdf', Report) then
      WriteLn(string(Report));
  finally
    PDF.Free;
  end;
end;

PDF/VT レポートは、ISO 16612-2 の識別とドキュメントパートの構造に焦点を当てています:要素テキストまたは RDF 属性形式の XMP GTS_PDFVTVersion、変更日の照合、PDF/X ベースマーカー、出力インテント、DPartRootDPartRootNodeNode名前List、およびページレベルの DPart カバレッジ。

プロファイルを適用する

var
  PDF: THotPDF;
  Report: AnsiString;
begin
  PDF := THotPDF.Create(nil);
  try
    Report := PDF.CreatePreflightReportWithProfile(
      'Input.pdf', '', 'project-preflight.ini', pfJSON);
  finally
    PDF.Free;
  end;
end;

プロファイルは、名前付きのチェック、警告、またはすべてのヒントを抑制します。廃止された名前を暗黙的に無視するよりもクローズに失敗する方が重要な場合は、ユーザーが作成したプロファイルを適用する前に ValidatePreflightProfile を使用してください。

プリセットから再利用可能なプロファイルを作成する

var
  PDF: THotPDF;
  Profile: THPDFPreflightProfile;
begin
  PDF := THotPDF.Create(nil);
  try
    Profile := PDF.GetBuiltInPreflightProfile('compact');
    Profile.DisableWarnings := 'OpenAction,JavaScript,URIAction';
    PDF.SavePreflightProfile(Profile, 'compact-no-actions.ini');
  finally
    PDF.Free;
  end;
end;

プリセットとプロジェクト固有の名前を組み合わせるには、MergePreflightProfiles を使用します。共有構成ファイルを更新する前にプロファイルのドリフトを確認するには、DiffPreflightProfiles を使用します。

レポートを PDF とともにアーカイブする

PDF.EmbedPreflightReportInPDF('Input.pdf', 'Input-with-report.pdf');
PDF.EmbedPreflightReportAsXMP('Input.pdf', 'Input-with-xmp-report.pdf');

テキスト埋め込みパスは、最後の EOF マーカーの後に読み取り可能なコメントブロックを追加します。XMP パスは、メタデータパケットをスキャンするアーカイブワークフロー用に、RDF 形式のペイロードを追加します。

埋め込みレポートを検証する

var
  OriginalReport: AnsiString;
  CurrentReport: AnsiString;
begin
  if not PDF.LoadAndValidatePreflightReport(
    'Input-with-report.pdf', OriginalReport, CurrentReport) then
    WriteLn(string(PDF.ComparePreflightReports(OriginalReport, CurrentReport)));
end;

検証パスは、埋め込まれたフィンガープリントと、ソースバイトに対する新しいプリフライトの実行を比較します。差分ヘルパーは行指向であり、HotPDF プリフライトレポート用に調整されています。

保守的な修復パスを実行する

var
  RepairsApplied: AnsiString;
begin
  if PDF.RepairPDFFromPreflightReport(
    'Broken.pdf', 'Broken-repaired.pdf', RepairsApplied) then
    WriteLn(string(RepairsApplied));
end;

修復ヘルパーは意図的に狭い範囲に留まります。最後の EOF マーカーの後の末尾のバイトと欠落している EOF マーカーを処理しますが、相互参照テーブルを再構築したりストリームを書き直したりはしません。

多数のレポートを集計する

Reports[0] := PDF.CreatePreflightReport('A.pdf');
Reports[1] := PDF.CreatePreflightReport('B.pdf');
Summary := PDF.AggregatePreflightReports(Reports);

集計出力は、PDF ごとに 1 行のステータスと、処理されたレポート、失敗、警告の合計をリストします。これは、入力ファイルごとに詳細なレポートが保持されている場合でも、パイプラインに 1 つの概要が必要な場合に便利です。

コマンドラインツールを使用する

HotPDFPreflight Input.pdf -f json -o reports
HotPDFPreflight Input.pdf --pdfvt -o reports
HotPDFPreflight C:\Archive -r --preset compact -f text -o reports --aggregate reports\Aggregate.txt
HotPDFPreflight C:\Archive -r --profile project-preflight.ini -f html -o reports

CLI はライブラリのワークフローを反映しています:1 つのファイルまたは再帰的なディレクトリ入力、テキスト / JSON / HTML 出力、オプションのパスワード、オプションのプロファイル、組み込みのプリセット、詳細な進行状況、および集計の概要。

静的ダッシュボードを構築する

PreflightDashboard C:\Archive C:\Archive\preflight-dashboard

ダッシュボードデモは、index.html に加えてファイルごとの HTML レポートを書き込みます。Web サーバーは不要であるため、出力は静的アーティファクトとして公開できます。

veraPDF スタイルの JSON コンシューマーに適応する

Report := PDF.CreatePreflightReport('Input.pdf');
JSON := PDF.ConvertPreflightReportToVeraPDFStyle(Report);

アダプターは HotPDF のセマンティクスを維持しながら、veraPDF に似た JSON をすでに消費しているツール向けの使い慣れた検証結果の構造に失敗を再形成します。

関連トピック