PDFium Delphi Component Docs

AttachmentCount Eigenschaft

Komponente: TPdf  ·  Unit: PDFium
Anzahl der im Dokument deklarierten eingebetteten Dateianhänge

Syntax

property AttachmentCount: Integer; // read only

Description

AttachmentCount zählt die eingebetteten Datei-Streams, die über den /Names /EmbeddedFiles-Name-Tree des Katalogs erreichbar sind (PDF 1.7 spec section 7.11). Das sind beliebige Dateien (XML, Tabellen, CAD-Quellen, signiertes XML, ZIP-Archive,…), die im PDF verpackt sind und die Viewer als “Attachments”-Seitenleiste zeigen. PDF/A-3 verlangt genau dafür, dass jedes relevante Quelldatei-Artefakt für langfristige Reproduzierbarkeit so eingebettet wird

Der Wert ist 0, wenn Active False ist und wenn das Dokument keine eingebetteten Dateien trägt. File-Attachment-Annotationen (Subtyp /FileAttachment) werden hier nicht gezählt — das sind Annotationen auf Seitenebene und laufen stattdessen über AnnotationCount. PDFium Delphi Component stellt eingebettete Streams als TBytes über Attachment[Index] bereit; den lesbaren Dateinamen und den MIME-artigen Typ gibt es über AttachmentName[Index] und AttachmentType[Index]

Die typische Schleife ist for I := 0 to Pdf.AttachmentCount - 1 do. Jeder Attachment[I]-Zugriff dekomprimiert den eingebetteten Datei-Stream in den Speicher, cachen Sie also die TBytes, wenn Sie sie auf die Platte schreiben und an einen Parser übergeben wollen. Das Hinzufügen oder Entfernen eines Anhangs macht Indizes ungültig — lesen Sie AttachmentCount nach einer Änderung erneut

Aufgezählt wird nur der /EmbeddedFiles-Namensbaum. Eine zugeordnete PDF-2.0-Datei (ISO 32000-2 §7.11.4), die ausschließlich über ein /AF-Array referenziert wird — am Katalog, an einer Seite, einer Annotation oder einem anderen Objekt — und nicht zusätzlich im Namensbaum registriert ist, wird nicht gezählt und hat keinen Index für Attachment, AttachmentName oder AttachmentRelationship. Das gilt auch für Dateien aus SaveAsWithAssociateFiles, das nur /AF-Einträge hinzufügt. Die meisten PDF/A-3-Erzeuger, einschließlich Factur-X- und ZUGFeRD-Werkzeugen, registrieren jede zugeordnete Datei an beiden Stellen, solche Dateien tauchen also normal auf

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