PDFium Component Docs

TryGetAnnotationFileAttachment-metode

Component: TPdf  ·  Unit: PDFium
Leser den innebygde filen som bæres av en filvedleggsmerknad på den gjeldende siden, og returnerer navn, beskrivelse, MIME-subtype og de dekodede nyttelastbytene

Syntax

function TryGetAnnotationFileAttachment(AnnotIndex: Integer; out Attachment: TPdfAnnotationAttachment; MaxBytes: Cardinal = 67108864): Boolean;

AnnotIndexInteger. Nullbasert indeks for merknaden på den gjeldende siden, i området 0 .. AnnotationCount - 1 En indeks utenfor området utløser en EPdfError
AttachmentTPdfAnnotationAttachment. Ved suksess: Name, Description, MimeType og den dekodede nyttelasten i Data (TBytes) Nullstilles til standardverdien før kallet kjøres
MaxBytesCardinal. Øvre grense for nyttelaststørrelsen Standardverdien 67108864 tillater opptil 64 MB; en større nyttelast utløser en EPdfError
ResultBoolean. 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

Description

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

Remarks

Example

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;

See Also

AddAnnotationFileAttachment, Annotation, AnnotationCount, Attachment