PDFium Component Docs

AttachmentCount Właściwość

Component: TPdf  ·  Unit: PDFium
Liczba osadzonych załączników plikowych zadeklarowanych w dokumencie

Syntax

property AttachmentCount: Integer; // read only

Description

AttachmentCount wylicza strumienie osadzonych plików osiągalne przez drzewo nazw katalogu /Names /EmbeddedFiles (specyfikacja PDF 1.7, sekcja 7.11). Są to dowolne pliki (XML, arkusze, źródłowe CAD, podpisany XML, archiwa ZIP,…) zapakowane wewnątrz pliku PDF i udostępniane przez przeglądarki jako panel boczny „Załączniki”. PDF/A-3 w szczególności wymaga, aby każdy istotny artefakt źródłowy był osadzony w ten sposób dla długoterminowej odtwarzalności

Wartość wynosi 0, gdy Active ma wartość False, oraz gdy dokument nie zawiera osadzonych plików. Adnotacje załącznika pliku (podtyp /FileAttachment) nie są tu liczone — to adnotacje na poziomie strony i ujawniają się zamiast tego przez AnnotationCount. PDFium Delphi Component udostępnia osadzone strumienie jako TBytes przez Attachment[Index]; czytelna dla człowieka nazwa pliku i typ w stylu MIME są dostępne przez AttachmentName[Index] i AttachmentType[Index]

Typowa pętla to for I := 0 to Pdf.AttachmentCount - 1 do. Każdy dostęp Attachment[I] dekompresuje strumień osadzonego pliku do pamięci, więc zbuforuj TBytes, jeśli chcesz zapisać go na dysk i przekazać do parsera. Dodanie lub usunięcie załącznika unieważnia indeksy — odczytaj AttachmentCount ponownie po modyfikacji

Wyliczane jest wyłącznie drzewo nazw /EmbeddedFiles. Plik powiązany PDF 2.0 (ISO 32000-2 §7.11.4), do którego odwołuje się wyłącznie tablica /AF — w katalogu, na stronie, w adnotacji lub dowolnym innym obiekcie — i który nie jest jednocześnie zarejestrowany w drzewie nazw, nie jest liczony i nie ma indeksu dla Attachment, AttachmentName ani AttachmentRelationship. Obejmuje to pliki zapisane przez SaveAsWithAssociateFiles, który dodaje wyłącznie wpisy /AF. Większość producentów PDF/A-3, w tym narzędzia Factur-X i ZUGFeRD, rejestruje każdy plik powiązany w obu miejscach, więc te pliki są wypisywane normalnie

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