PDFium Delphi Component Docs

Attachment Eigenschaft

Komponente: TPdf  ·  Unit: PDFium
Liest oder ersetzt die Rohbyte-Nutzdaten der auf Dokumentebene eingebetteten Datei am angegebenen nullbasierten Index. Jeder Slot entspricht einem Eintrag im PDF-EmbeddedFiles-Name-Tree, der in Abschnitt 7.11 der PDF-1.7-Spezifikation definiert ist

Syntax

property Attachment[Index: Integer]: TBytes;

Description

PDF-Dokumente können beliebige Zusatzdateien (Quell-Tabellen, originale Word-Dokumente, angehängte Rechnungen, signierte XML-Payloads, ZIP-Bündel, sogar andere PDFs) in einem Container auf Dokumentebene tragen, dem sogenannten EmbeddedFiles-Name-Tree. Jeder Eintrag ist ein PDF-File-Specification-Dictionary, dessen Stream die tatsächlichen Bytes der angehängten Datei hält. PDFium Delphi Component legt diesen Baum als flachen 0-basierten Index von 0 bis AttachmentCount - 1 offen

Das Lesen von Attachment[Index] liefert den dekodierten Byteinhalt der angehängten Datei als TBytes-Array — genau die Bytes, die jeder andere PDF-Reader extrahieren würde, wenn der Nutzer auf die Büroklammer klickt und den Anhang speichert. Die zurückgegebenen Bytes sind bereits dekomprimiert; Sie können sie direkt auf die Platte schreiben, in einen Stream pushen oder in eine andere TPdf-Instanz einspeisen, falls der Anhang selbst ein PDF ist

Das Schreiben ersetzt den Datei-Stream eines vorhandenen Attachment-Slots an Ort und Stelle. Der Slot muss bereits existieren; verwenden Sie zuerst CreateAttachment, wenn Sie einen neuen Eintrag anlegen wollen. Schreibvorgänge werden im Speicher gepuffert und werden erst persistent, wenn das Dokument mit SaveAs gespeichert wird

Parameters

IndexInteger. 0-basierte Position im EmbeddedFiles-Name-Tree. Muss 0 <= Index < AttachmentCount erfüllen. Die Indizes stimmen mit denen von AttachmentName und AttachmentType überein, sodass ein Lauf über 0..AttachmentCount - 1 jeden Anhang genau einmal besucht

Remarks

Example

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;

See Also

AttachmentCount, AttachmentName, AttachmentType, CreateAttachment, DeleteAttachment