THotPDF.RepairPDFUA2Structure メソッド

復元可能な PDF/UA-2 の namespace、属性、構造、アクセシビリティ上の欠陥を copy-on-write のグラフトランザクション内で修復し、コミット前に候補グラフを検証します

宣言

function RepairPDFUA2Structure(
  const Options: THPDFUA2RepairOptions;
  out Report: THPDFUA2RepairReport;
  out Issues: THPDFUA2ValidationIssues): boolean; overload;

function RepairPDFUA2Structure(
  const Options: THPDFUA2RepairOptions;
  out Report: THPDFUA2RepairReport;
  out Issues: THPDFUA2ValidationIssues;
  out Findings: THPDFComplianceFindings): boolean; overload;

ユニット

HPDFDoc

修復オプション

THPDFUA2RepairOptions.Default を起点にし、入力ワークフローに必要なポリシー判断だけを上書きしてください

フィールド目的
NormalizeDuplicateNamespacesURI ごとに 1 つの正準な間接ディクショナリで StructTreeRoot/Namespaces を再構築し、競合する role map を拒否します
RegisterReferencedNamespaces構造要素、属性、namespace 対応の role map から参照される有効な namespace ディクショナリを登録します
RepairStandardStructureNamespacesnamespace が欠落または無効な場合に標準ロールへ PDF 2.0 namespace を割り当て、トップレベルの Document は常に正規化します
RepairAttributeNamespaces属性の namespace 参照を正準化し、標準オーナーから無効な namespace エントリを取り除きます
RepairAttributeRevisions負や小数の revision 番号を正規化し、属性配列から孤立した revision エントリを取り除きます
RepairListSemanticsリスト内容を捏造せずに、番号付け、継続フラグ、無効な継続型、位置がずれた 1 つの caption を正規化します
RepairTableSemantics無効な span と scope を正規化し、無効なテーブルローカルの header 参照を取り除き、位置がずれた 1 つの caption を移動します
RepairRubyWarichuSequences要求されるロールの多重集合が正確に揃っている場合にだけ子を並べ替えます
RepairPronunciationHints型の誤った hint を取り除き、無効な lexicon 参照を刈り込み、埋め込み PLS の MIME サブタイプを正規化します
RepairMissingAlternateTextFigure、Formula、Form に欠落した Alt を、既存のタイトル、expansion テキスト、同一 MCID の抽出テキスト、明示的なフォールバックの順で復元します
RepairLanguageInheritance有効な構造ルートまたは明示的なデフォルト言語を Catalog へ昇格し、継承が曖昧でない場合に無効または冗長な構造レベルの言語エントリを取り除きます
RepairHeadingOrder見出しの最初のレベル欠落とレベル飛ばしの欠陥だけを、ドキュメント順を保ちながら再番号付けします
RepairArtifactTaggingproducer と読み込みページのコンテンツについて、Artifact 構造要素に関連付けられた marked-content タグを書き換えます
AllowDocumentFragmentHeadingStarts修復と修復後検証の両方で、各 DocumentFragment 内の見出しコンテキストをリセットします
RollbackOnValidationFailure修復後も PDF/UA-2 エラーが 1 つでも残る場合に元のグラフを復元します
CustomAttributeNamespaceURIセマンティクスを安全に推定できないカスタム属性オーナーのための明示的な namespace を指定します。デフォルトは空でフェイルクローズします
DefaultLanguageCatalog にも構造ルートにも有効な言語が存在しない場合にだけ BCP-47 言語タグを指定します
FallbackAlternateTextドキュメント由来のソースがすべて失敗した後の、呼び出し側が確認した alternate text を指定します。デフォルトは空で、説明を捏造することはありません
MaxGeneratedAlternateTextCharacters同一 MCID のテキスト抽出に上限を設け、デフォルトは 4,096 UTF-16 コードユニットです
MaxObjectsオブジェクトグラフ走査に上限を設け、デフォルトは 1,000,000 オブジェクトです
MaxRepairs保持される変更に上限を設け、デフォルトは 100,000 修復操作です

修復レポート

THPDFUA2RepairReport は、グラフが変更されたかロールバックしたか、上限を超えたか、修復後の検証ステータス、走査したオブジェクト、残存エラー、alternate text、言語エントリ、見出しレベル、Artifact タグを含む各修復ファミリーのカウントを報告します

UnresolvedAlternateTextCount、UnresolvedLanguageCount、UnresolvedArtifactCount は、自動的な変更と、依然として作成者の見直しが必要なセマンティクスを区別します

返される THPDFUA2ValidationIssues 配列には、検証失敗時の修復後診断と、リソース上限や競合する重複 role map でトランザクションが中断されたときの安定した修復固有の診断が入ります

詳細オーバーロードはさらに、crsApplied、crsUnresolved、crsRolledBack、crsFailed として注釈された修復前の findings と、各修復ファミリーの集計件数を返します

この provenance オーバーロードは上限付きの修復前検証パスを追加で実行します。最終レポートと issues だけでよい場合は、既存の 3 出力オーバーロードを使ってください

アトミック性と安全性

例

var
  Options: THPDFUA2RepairOptions;
  Report: THPDFUA2RepairReport;
  Issues: THPDFUA2ValidationIssues;
begin
  Options := THPDFUA2RepairOptions.Default;
  Options.DefaultLanguage := 'en-US';
  Options.CustomAttributeNamespaceURI :=
    'https://example.com/ns/accessibility-attributes';
  if not PDF.RepairPDFUA2Structure(Options, Report, Issues) then
    raise Exception.CreateFmt('%s at %s',
      [String(Issues[0].Code), String(Issues[0].Path)]);
end;

関連 API