function TryGetAnnotationFileAttachment(AnnotIndex: Integer; out Attachment: TPdfAnnotationAttachment; MaxBytes: Cardinal = 67108864): Boolean;
| AnnotIndex | Integer. Nullbasert indeks for merknaden på den gjeldende siden, i området 0 .. AnnotationCount - 1 En indeks utenfor området utløser en EPdfError |
| Attachment | TPdfAnnotationAttachment. Ved suksess: Name, Description, MimeType og den dekodede nyttelasten i Data (TBytes) Nullstilles til standardverdien før kallet kjøres |
| MaxBytes | Cardinal. Øvre grense for nyttelaststørrelsen Standardverdien 67108864 tillater opptil 64 MB; en større nyttelast utløser en EPdfError |
| Result | Boolean. True når merknaden bærer et filvedlegg og nyttelasten ble lest helt inn; False når den ikke har noe vedlegg, eller nyttelasten ikke kunne dekodes |
En filvedleggsmerknad fester en innebygd fil til et punkt på en side. Dette kallet åpner merknaden gjennom det native grensesnittet (FPDFAnnot_GetFileAttachment) og, når merknaden bærer et vedlegg, leser dens beskrivende felter og hele den dekodede nyttelasten inn i en TPdfAnnotationAttachment-record
Resultatet er et kall i Try-mønster: en merknad uten vedlegg returnerer False i stedet for å utløse unntak, og en nyttelast som ikke lar seg dekode returnerer også False Bare en for stor nyttelast blir til et unntak, så MaxBytes-grensen kan fungere som en hard beskyttelse mot minneutmattelse fra skadelige dokumenter
Merknadsvedlegg er adskilt fra EmbeddedFiles-treet på dokumentnivå som blottlegges av Attachment: et vedlegg kan ligge på en sidemerknad uten å dukke opp i det treet, og omvendt. Bruk AddAnnotationFileAttachment til å feste data til en eksisterende merknad i ett kall
MaxBytes på en verdi som passer for applikasjonen før du gjør kall på utruelige dokumenter
var
I: Integer;
Attachment: TPdfAnnotationAttachment;
begin
for I := 0 to Pdf1.AnnotationCount - 1 do
if (Pdf1.Annotation[I].Subtype = anFileAttachment) and
Pdf1.TryGetAnnotationFileAttachment(I, Attachment) then
begin
TFile.WriteAllBytes('extracted\' + Attachment.Name, Attachment.Data);
Memo1.Lines.Add(Format('%s (%s, %d bytes)',
[Attachment.Name, Attachment.MimeType, Length(Attachment.Data)]));
end;
end;