PDFium Delphi Component Docs

GetLinkedAnnotationChain メソッド

コンポーネント: TPdf  ·  ユニット: PDFium
/Popup または /IRT の関係を繰り返し辿り、途中のリンクされた注釈すべてのページインデックスを、サイクル保護付きで返します

構文

function GetLinkedAnnotationChain(AnnotIndex: Integer; Relationship: TPdfAnnotationRelationship; MaxDepth: Integer = 64): TPdfIntegerArray;

AnnotIndexInteger。開始注釈の現在のページ上での 0 始まりインデックスで、範囲は 0 .. AnnotationCount - 1 です
RelationshipTPdfAnnotationRelationship。parPopup/Popup エントリを辿り、parInReplyTo/IRT 返信エントリを辿ります
MaxDepthInteger。辿るリンクの最大数です。1 から 4096 の間でなければならず、そうでなければ EPdfError が発生します。既定値は 64 です
ResultTPdfIntegerArray。訪問順に並んだ、リンクされた注釈のページインデックスです。開始注釈にそのようなリンクがない場合は空になります

説明

GetLinkedAnnotationIndex を繰り返し適用します。開始注釈から要求された関係に従って次の注釈へ進み、そこからさらに進み、途中の各インデックスを収集します。結果は、議論の返信スレッドまたはポップアップチェーンを、ページ注釈インデックスの単純な配列として表したものです

辿りは 3 つの条件で停止します。現在の注釈にそれ以上のリンクがない場合、訪問したリンク数が MaxDepth に達した場合、または次のインデックスがすでに訪問済みの注釈を再訪しようとした場合です (開始インデックスは訪問済みとみなされます)。このサイクルガードにより、/IRT エントリがループする不正なドキュメントでも呼び出しは安全です

開始インデックス自体は結果に含まれません。含まれるのはそれが導く注釈だけです。要求されたリンクを持たない注釈では、エラーではなく空の配列が返ります

備考

var
  Chain: TPdfIntegerArray;
  Index: Integer;
begin
  // collect the whole reply thread under annotation 5
  Chain := Pdf1.GetLinkedAnnotationChain(5, parInReplyTo);
  for Index in Chain do
    Memo1.Lines.Add(Pdf1.Annotation[Index].ContentsText);
end;

関連項目

GetLinkedAnnotationIndex, Annotation, AnnotationCount