property AttachmentCount: Integer; // read only
AttachmentCount は、カタログの /Names /EmbeddedFiles name tree(PDF 1.7 仕様 7.11 節)から到達できる埋め込みファイル stream を数えます。対象は PDF 内にパッケージされた任意のファイル(XML、表計算、CAD 原図、署名付き XML、ZIP アーカイブ等)で、ビューアーには「Attachments」サイドバーとして見えます。PDF/A-3 はとりわけ、長期の再現性のために関連するソース成果物をすべてこの方法で埋め込むことを要求します
Active が False のとき、またドキュメントが埋め込みファイルを持たないとき、値は 0 です。ファイル添付の注釈(サブタイプ /FileAttachment)はここでは数えません。あちらはページレベルの注釈で、代わりに AnnotationCount から見えます。PDFium Delphi Component は埋め込み stream を Attachment[Index] 経由で TBytes として公開し、人が読めるファイル名と MIME 風のタイプは AttachmentName[Index] と AttachmentType[Index] から得られます
典型的なループは for I := 0 to Pdf.AttachmentCount - 1 do です。Attachment[I] へのアクセスはそのたびに埋め込みファイル stream をメモリへ展開するため、ディスクに書く場合やパーサーに渡す場合は TBytes をキャッシュしてください。添付の追加・削除はインデックスを無効化します。変更後は AttachmentCount を読み直してください
列挙されるのは /EmbeddedFiles name tree だけです。カタログ、ページ、注釈などの /AF 配列からのみ参照され、name tree にも登録されていない PDF 2.0 の関連ファイル(ISO 32000-2 §7.11.4)はカウントされず、Attachment、AttachmentName、AttachmentRelationship のインデックスも持ちません。/AF エントリだけを追加する SaveAsWithAssociateFiles で書き込まれたファイルもこれに含まれます。Factur-X や ZUGFeRD ツールをはじめ、大半の PDF/A-3 生成ツールは関連ファイルを両方の場所に登録するため、それらのファイルは通常どおり一覧に表示されます
FeatureSupported(feAttachment) と組み合わせると、インストール済みの PDFium ビルドが添付名の変更に対応しているか判定できます
var I: Integer;
var Data: TBytes;
for I := 0 to Pdf1.AttachmentCount - 1 do
begin
Data := Pdf1.Attachment[I];
TFile.WriteAllBytes(Pdf1.AttachmentName[I], Data);
end;