property AttachmentCount: Integer; // read only
AttachmentCount räknar upp inbäddade filströmmar som kan nås via katalogens
namnträd /Names /EmbeddedFiles (PDF 1.7 spec, avsnitt 7.11). Det är
godtyckliga filer (XML, kalkylblad, CAD-källkod, signerad XML, ZIP-arkiv osv.)
som paketerats i PDF:en och visas av visare i sidopanelen
“Attachments”. PDF/A-3 kräver uttryckligen att varje relevant källartefakt
bäddas in på detta sätt för långsiktig reproducerbarhet
Värdet är 0 när Active är False och när
dokumentet inte innehåller några inbäddade filer. Filbilage-annoteringar
(subtyp /FileAttachment) räknas inte här —
de är annoteringar på sidnivå och visas i stället via AnnotationCount.
PDFium Delphi Component exponerar inbäddade strömmar som TBytes via
Attachment[Index]; det läsbara filnamnet och MIME-liknande typen finns
tillgängliga via AttachmentName[Index] och
AttachmentType[Index]
Den typiska loopen är for I := 0 to Pdf.AttachmentCount - 1 do. Varje
åtkomst av Attachment[I] dekomprimerar den inbäddade filströmmen till minnet,
så cacha TBytes om du behöver skriva den till disk och skicka den till en
parser. Att lägga till eller ta bort en bilaga ogiltigförklarar index — läs
AttachmentCount igen efter en ändring
Endast namnträdet /EmbeddedFiles räknas upp. En associerad PDF 2.0-fil
(ISO 32000-2 §7.11.4) som endast refereras från en /AF-array — på
katalogen, en sida, en annotering eller något annat objekt — och som inte också är
registrerad i namnträdet räknas inte och har inget index för Attachment,
AttachmentName eller AttachmentRelationship. Detta omfattar
filer som skrivits av SaveAsWithAssociateFiles,
som endast lägger till /AF-poster. De flesta PDF/A-3-producenter, inklusive
Factur-X- och ZUGFeRD-verktyg, registrerar varje associerad fil på båda ställena, så
dessa filer listas normalt
FeatureSupported(feAttachment) för att avgöra om den
installerade PDFium-builden stöder ändring av bilagenamn
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;