property AttachmentCount: Integer; // read only
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
FeatureSupported(feAttachment), aby wykryć, czy zainstalowana
kompilacja PDFium obsługuje modyfikowanie nazw załączników
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;