PDFium Delphi Component 文件

AttachmentCount 属性

组件: TPdf  ·  单元: PDFium
文档中声明的嵌入文件附件数量

Syntax

property AttachmentCount: Integer; // read only

Description

AttachmentCount 枚举通过目录 /Names /EmbeddedFiles 名称树可达的嵌入文件流(PDF 1.7 规范第 7.11 节)。这些是 任意文件(XML、电子表格、源 CAD、已签名 XML、ZIP 归档、…), 打包在 PDF 内部,并由查看器以 “Attachments” 侧栏形式暴露。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 名称树会被枚举。PDF 2.0 关联文件(ISO 32000-2 §7.11.4)若仅由 /AF 数组引用 — 位于 catalog、页面、注释或任何其他对象上 — 且未同时注册到名称树,则不计入计数,Attachment、AttachmentName 或 AttachmentRelationship 也没有对应索引。这包括 SaveAsWithAssociateFiles 写出的文件,它只添加 /AF 条目。多数 PDF/A-3 生成器(包括 Factur-X 和 ZUGFeRD 工具)会把每个关联文件同时注册到两处,因此这些文件照常列出

Remarks

Example

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;

See Also

Attachment, AttachmentName, AttachmentType, AnnotationCount