property AttachmentCount: Integer; // read only
AttachmentCount는 catalog의 /Names /EmbeddedFiles 이름 트리에서
도달할 수 있는 임베디드 파일 스트림 개수를 셉니다(PDF 1.7 스펙 7.11절). 대상은 PDF 안에 함께
포장된 임의의 파일(XML, 스프레드시트, CAD 원본, 서명된 XML, ZIP 묶음 등)이며 뷰어에서는
“첨부” 사이드바로 드러납니다. PDF/A-3는 장기 재현성을 위해 관련 원본 자산을 전부
이런 식으로 임베드하도록 요구합니다
Active가 False이거나 문서에 임베디드 파일이 없으면 값은
0입니다. 파일 첨부 주석(서브타입 /FileAttachment)은
여기서 집계하지 않습니다 —
이것들은 페이지 수준 주석이라 AnnotationCount에 잡히고,
PDFium Delphi Component는 임베디드 스트림을 Attachment[Index]로
TBytes로 노출하고, 사람이 읽는 파일 이름과 MIME 방식 타입은
AttachmentName[Index]와
AttachmentType[Index]로 얻습니다
전형적인 루프는 for I := 0 to Pdf.AttachmentCount - 1 do이며,
Attachment[I]에 접근할 때마다 임베디드 파일 스트림이 메모리로 압축 해제되므로,
디스크에 쓰거나 파서에 넘길 TBytes가 필요하면 캐싱해 두세요
첨부를 추가·삭제하면 인덱스가 무효화되니 — 변경 뒤에는
AttachmentCount를 다시 읽으세요
/EmbeddedFiles 이름 트리만 열거됩니다. 카탈로그, 페이지, 주석 등 어떤 객체의 /AF 배열에서만 참조되고 이름 트리에는 등록되지 않은 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;