PDFiumPas 文件

Attachment 屬性

此 API 條目保留識別符號、簽名、程式碼塊和 PDF 術語的原始形式
元件: TPdf  ·  單元: PDFium
讀取或取代文件層級嵌入檔案在指定從 0 起算索引中的原始位元組內容。每個槽位都對應到 PDF 1.7 規範第 7.11 節所定義的 PDF EmbeddedFiles 名稱樹中的一個項目

語法

property Attachment[Index: Integer]: TBytes;

說明

PDF 文件可以在名為 EmbeddedFiles 的名稱樹中,攜帶任意輔助檔案(原始試算表、原始 Word 文件、附加發票、已簽署 XML 負載、ZIP 封裝,甚至其他 PDF)。每個項目都是一個 PDF 檔案規格字典,其串流保存著附加檔案的實際位元組。PDFiumPas 會將該樹公開為從 0AttachmentCount - 1 的平面索引

讀取 Attachment[Index] 會將附加檔案的解碼後位元組內容以 TBytes 陣列傳回,這正是其他 PDF 閱讀器在使用者按下迴紋針圖示並儲存附件時會擷取到的位元組。傳回的位元組已經完成解壓縮;你可以直接寫入磁碟、送入串流,或在附件本身就是 PDF 時再交回另一個 TPdf 執行個體

寫入會原地取代既有附件槽位的檔案串流。該槽位必須已存在;若需要新增項目,請先使用 CreateAttachment。寫入會先暫存於記憶體中,只有在文件透過 SaveAs 儲存後才會真正生效

參數

IndexInteger。EmbeddedFiles 名稱樹中從 0 起算的位置。必須滿足 0 <= Index < AttachmentCount。索引會與 AttachmentNameAttachmentType 回報的值一致,因此逐一走訪 0..AttachmentCount - 1 時,每個附件都只會被存取一次

備註

範例

var
  I: Integer;
  Data: TBytes;
  OutPath: string;
begin
  Pdf1.LoadFromFile('with-attachments.pdf');
  for I := 0 to Pdf1.AttachmentCount - 1 do
  begin
    Data := Pdf1.Attachment[I];
    OutPath := 'extracted\' + Pdf1.AttachmentName[I];
    TFile.WriteAllBytes(OutPath, Data);
    Memo1.Lines.Add(Format('%s (%s, %d bytes)',
      [Pdf1.AttachmentName[I], Pdf1.AttachmentType[I], Length(Data)]));
  end;
end;

另請參閱

AttachmentCount, AttachmentName, AttachmentType, CreateAttachment, DeleteAttachment