GetPDFUADiagnosticsA

PDF/UA & アクセシビリティ

説明

末尾の A は ANSI(char)DLL エントリポイントを示し、ActiveX/COM の表面では Unicode 形式のみ公開される。動作は GetPDFUADiagnostics と同一で、文字列引数は現在の SetAnsiMode コードページを使って解釈される

現在のドキュメントで検出された潜在的な PDF/UA-1(ISO 14289-1)準拠問題の改行区切りリストを返します。各行には、1 つの問題コード、コロン、人が読める説明が含まれます。問題が検出されない場合は空文字列を返します

構文

Delphi

Function DLGetPDFUADiagnosticsA(InstanceID: Integer): PAnsiChar;

DLL

const char * DLGetPDFUADiagnosticsA(int InstanceID);

問題コード

PDF-VERSION-LOW文書の PDF バージョン (ファイルヘッダーの記録値) が 1.7 未満です。PDF/UA-1 は ISO 32000-1:2008 (PDF 1.7) に基づいて定義されています。バージョンを自動的に 1.7 へ引き上げるには SetPDFUAMode を呼び出します
MARKED-FALSEMarkInfo/Marked が true に設定されていません。ドキュメントはタグ付き PDF ではありません
LANG-MISSING文書 Catalog の /Lang エントリがないか空です。ISO 14289-1 §7.3 では自然言語の宣言が必要です
DISPLAYDOCTITLE-FALSEViewerPreferences/DisplayDocTitle が true ではありません。タイトルバーに文書タイトルを表示するため、ISO 14289-1 §7.1 で必須とされています
DOCINFO-TITLE-MISSING文書情報辞書の /Title エントリが存在しないか空です。PDF/UA-1 では、文書を開いたときに支援技術が読み上げられるよう、文書タイトルが必要です。この検査は DISPLAYDOCTITLE-FALSE を補完します。その検査はタイトルがビューアーに表示されることを確認し、この検査はタイトル値自体が存在することを確認します。SetInformation をキー Title で呼び出し、設定してください
XMP-NO-PDFUAIDXMP メタデータストリームに pdfuaid:part エントリが含まれていない。ISO 14289-1 §7.2 で必須
ANNOT-NO-CONTENTS:NN 個の適用除外でない注釈(Widget、PrinterMark、TrapNet サブタイプを除く)に Contents エントリがありません。ISO 14289-1 §7.18.1 で必要です
EMBED-NO-AFR:NN 個の埋め込みファイルのファイル仕様辞書に AFRelationship エントリがありません。ISO 14289-1 §7.11 で必須です
FIGURE-NO-ALT:NN 個の Figure または Formula 構造要素に Alt テキスト値がありません。ISO 14289-1 §7.5 および ISO 32000-1 §14.9.3 では、図形と数式の両方に代替説明が必要です
HEADING-LEVEL-SKIP:Nドキュメント順で N 件の見出しレベルの飛び越しが検出された(例:H1 の直後に H2 を飛ばして H3 が続く場合)。ISO 14289-1 §7.1 および WCAG 2.x 達成基準 1.3.1 は、見出しを欠落なく入れ子にすることを要求する
STRUCT-UNCLOSED:NEndTag が正しい回数呼び出されなかったため、N 個の構造要素が開いたままです。これらの要素は構造ツリールートから欠落します
TABLE-TH-NO-SCOPE:NN 個の TH(表ヘッダーセル)構造要素に Scope 属性がない。ISO 32000-1 §14.8.4.3.4 Table 337 では、Scope(Row、Column、または Both)を各ヘッダーセルがどのデータセルに適用されるかを示す属性として定義している。この属性がないと、支援技術は複雑な表や複数ヘッダーの表でヘッダーとデータセルを確実に関連付けられない。各 TH 要素をタグ付けした直後に SetStructElemScope(または AddTagAttributeOwner='Table'Name='Scope' を指定)を呼び出す
FORM-NO-TOOLTIP:NN 個のインタラクティブフォームフィールド(Widget 注釈)に TU(ツールチップ / アクセシブル名)エントリがありません。ISO 14289-1 §7.18.4 は、支援技術がフィールドの目的をユーザーへ通知できるよう、すべてのインタラクティブフォームフィールドに TU エントリを要求します。/TU はスクリーンリーダーが読み上げるアクセシブル名で、/T(プログラムで使用する部分フィールド名)とは異なります。フォームフィールドの作成または読み込み時に TU 値を設定してください
LIST-STRUCT:NN 個の LI または LBody 構造要素が必要な親の外側に現れます。ISO 32000-1 §14.8.4.4 では、LI は L (リスト) の直接の子、LBody は LI (リスト項目) の直接の子であることが必要です。不正なリストのネストにより、支援技術がリストを正しく移動できなくなります。すべてのリスト関連要素について BeginTag / EndTag の呼び出し順序を確認してください
ROLEMAP-UNMAPPED:N文書に N 個のカスタム構造要素タイプがありますが、/RoleMap 辞書にエントリがありません。ISO 14289-1 §7.1 および ISO 32000-1 §14.7.3 では、支援技術が要素の処理方法を判断できるよう、すべての非標準構造タイプを標準 PDF タイプにマッピングする必要があります。保存前に各カスタムタイプについて AddRoleMap を呼び出してください。問題の説明には未マッピングのタイプ名が一覧表示されます
SUSPECTS-TRUEMarkInfo/Suspects が true に設定されています。ISO 14289-1 §7.1 では、PDF/UA 準拠を宣言するファイルの Suspects 値が false であることを求めています。true はタグ付けに既知のエラーが含まれることを示します。ドキュメントのタグ付けが完了した後、SetMarkInfo を呼び出して Suspects を false にリセットしてください
ROLEMAP-STANDARD-REMAP:NN 個の標準構造タイプが /RoleMap の "custom" キーとして現れ、保存時に再マップされます。ISO 14289-1 §7.1 は、ISO 32000-1 §14.8.4 で定義される標準タグ(P、H1..H6、Figure、Table など)の再マップを禁止しています。詳細行には違反している標準タグ名が表示されます。該当する AddRoleMap 呼び出しを削除してください
DC-TITLE-MISSINGメタデータストリームの Dublin Core dc:title がないか空です。ISO 14289-1 §7.1 では、メタデータストリームにドキュメントを明確に識別する dc:title エントリを含める必要があります。このチェックは、/Info /Title エントリだけを検査する DOCINFO-TITLE-MISSING とは別です。/Info タイトルを XMP パケットにコピーするには SetPDFUAMode を呼び出します
TRAPNET-ANNOT:N文書ページで N 個の TrapNet 注釈が見つかりました。ISO 14289-1 §7.18.2 は PDF/UA-1 適合ファイルで TrapNet を明示的に禁止しています。保存前に該当する注釈を削除してください
ANNOT-PAGE-NO-TABS-S:NN ページに 1 つ以上の注釈がありますが、そのページ辞書には /Tabs /S が設定されていません。ISO 14289-1 §7.18.3 では、このようなページのタブ順序が構造ツリーに従うことを /Tabs /S で示す必要があります。注釈を含む各ページのページ辞書に /Tabs /S を設定します
ENCRYPT-NO-ACCESSドキュメントは暗号化され PDFUAMode がアクティブですが、暗号化 /P 権限キーのビット 10(マスク $200、アクセシビリティ抽出)がクリアされています。ISO 14289-1 §7.16 では、暗号化されたすべての準拠ファイルでアクセシビリティ抽出を許可する必要があります。Encrypt の呼び出し前に PDFUAMode を設定すると、ビットは自動的にオンになります。呼び出し順序が逆の場合は、古い /P 値の暗号化辞書がすでにあります — 辞書を再出力するため Encrypt をもう一度呼び出します
FIRST-HEADING-NOT-H1文書順で最初の見出し要素が H1 ではありません(strongly-structured の H sentinel もレベル 1 として数えます)。ISO 14289-1 §7.4.2 では、非 strongly-structured 文書の最初の見出しタグを H1 にする必要があります。詳細行は問題のあるレベルを示します
WIDGET-NO-STRUCTPARENT:NN 個の Widget 注釈に /StructParent エントリがありません。ISO 14289-1 §7.18.4 では Widget 注釈が Form 構造タグ内にネストされることを求めています。/StructParent がなければ Widget は構造ツリーからまったく到達できません。詳細行には個数が報告されます。これは部分的な確認です — 解決された親の /SForm であることの完全な検証はまだ実装されていません
LIST-NO-NUMBERING:NN 個の L (リスト) 構造要素に ListNumbering 属性がありません。ISO 14289-1 §7.6 では、すべての L タグがこの属性で番号付けスタイルを宣言する必要があります。ISO 32000-1 Table 347 による有効な値は NoneDiscCircleSquareDecimalUpperRomanLowerRomanUpperAlphaLowerAlpha です。各 L タグを開いた後に SetStructElemListNumbering を呼び出してください
MULTIPLE-H-CHILDREN:NN 個の構造ツリーノードに、直接の H (汎用見出し) 子が複数含まれています。ISO 14289-1 §7.4.4 ではこれを禁止しています。親セクションを分割するか、H タグを番号付きの H1..H6 シーケンスに置き換えてください

戻り値

問題の説明を改行で区切った文字列。準拠問題が検出されない場合は空文字列

備考

この関数は開発者向けの診断支援を目的とします。メモリ内の現在のドキュメント状態を確認し、PDF/UA-1 検証の失敗原因となる可能性がある問題を報告します。保存前に問題を特定するため、ドキュメントの読み込みまたは構築後に呼び出します

SetPDFUAMode が有効な状態で文書を保存すると、複数の問題(ANNOT-NO-CONTENTS、EMBED-NO-AFR)が保存中に自動修正されます。GetPDFUADiagnostics は保存前の状態を報告するため、保存時に自動修正される問題も保存前に存在すれば一覧に含まれます

この関数はドキュメントを変更しません

var
  Diag: WideString;
begin
  PDFlib.SetPDFUAMode('en-US');
  // ... build document
  Diag := PDFlib.GetPDFUADiagnostics;
  if Diag <> '' then
    ShowMessage('PDF/UA issues found:'#10 + Diag);
end;

関連項目

SetPDFUAMode, SetDocumentLanguage, SetEmbeddedFileAFRelationship