PDFium Delphi Component API Reference

Batchudtrækning af vedhæftninger

Komponent: TPdf  ·  Enhed: PDFium
Inventarér indlejrede vedhæftninger én gang og skriv deres afkodede payloads til streams ejet af kalderen under eksplicitte ressourcekontroller

ReadAttachmentMetadata

function ReadAttachmentMetadata(MaxAttachments: Integer = 10000): TPdfAttachmentMetadataArray;

Metoden optæller dokumentniveau-vedhæftninger én gang og returnerer records ejet af kalderen, der indeholder Index, Name, Description, MimeType, Relationship, afkodet Size og Readable

MaxAttachments tjekkes, før resultat-arrayet fyldes, hvilket forhindrer et ikke-betroet dokument i at give anledning til en ubegrænset metadata-allokering

Størrelsesforespørgslen kopierer ikke payload-bytes ind i PDFium Delphi Component-hukommelsen, selvom PDFium kan afkode en stream internt for at bestemme dens afkodede længde

ExtractAttachmentsToStreams

function ExtractAttachmentsToStreams(const Destinations: array of TStream; const Options: TPdfAttachmentBatchOptions; out Report: TPdfAttachmentBatchReport; const CancellationToken: IPdfCancellationToken = nil): Boolean;

Destinations skal indeholde præcis ét slot pr. dokumentvedhæftning og følger samme nulbaserede rækkefølge som Attachment[Index]

En nil-destination markerer det pågældende element som paesSkipped, så kaldere kan vælge vedhæftninger uden en anden optælling

Hver ikke-tom payload afkodes gennem PDFium til én midlertidig PDFium Delphi Component-buffer og skrives derefter fra den buffer i ChunkBytes-stykker

Bufferen frigives før den næste vedhæftning, så PDFium Delphi Component aldrig beholder hele batchen, men PDFiums offentlige vedhæftnings-API understøtter ikke intervallæsninger og kan internt bruge sin egen hukommelse til afkodning af hele payloaden

Streams forbliver ejet af kalderen, skrivning begynder ved hver streams aktuelle position, og metoden spoler dem ikke tilbage eller beskærer dem

Annullering eller en destinations-exception kan efterlade bytes, der allerede er skrevet til den stream, så kaldere, der kræver transaktionelt output, bør levere midlertidige streams og først gøre dem tilgængelige efter en vellykket rapport

Options

FieldDefaultMeaning
MaxAttachments10000Maksimalt antal metadata- og rapportposter
MaxFileBytes256 MiBMaksimal afkodet størrelse af én vedhæftning
MaxTotalBytes1 GiBMaksimalt antal bytes skrevet på tværs af alle destinationer
ChunkBytes1 MiBMaksimalt antal bytes givet til én stream-skrivning
StopOnErrorTrueStop efter det første ulæselige, over budget liggende eller skrivefejlede element

Report

Hver TPdfAttachmentMetadata-record beskriver én native vedhæftning, og TPdfAttachmentMetadataArray gemmer metadata-snapshotet

Hver TPdfAttachmentBatchItem kombinerer metadata, en TPdfAttachmentExtractionState, skrevne bytes og eventuel fejltekst, mens TPdfAttachmentBatchItems gemmer alle resultater pr. element

TPdfAttachmentExtractionState-værdierne er paesNotProcessed, paesSkipped, paesExtracted, paesUnreadable, paesFileLimit, paesAggregateLimit, paesCancelled og paesWriteFailed

TPdfAttachmentBatchReport tæller AttachmentCount, ExtractedCount, SkippedCount og FailedCount sammen med BytesWritten og PeakBufferBytes

Completed betyder, at hvert element nåede en terminal tilstand uden annullering, mens funktionsresultatet derudover kræver FailedCount = 0

PeakBufferBytes rapporterer den største PDFium Delphi Component-payload-buffer og inkluderer ikke privat hukommelse, som PDFium bruger under afkodning

Example

var Options: TPdfAttachmentBatchOptions;
var Report: TPdfAttachmentBatchReport;
Options := TPdfAttachmentBatchOptions.Default;
Options.MaxFileBytes := 64 * 1024 * 1024;
Options.MaxTotalBytes := 256 * 1024 * 1024;
if not Pdf1.ExtractAttachmentsToStreams(Destinations, Options, Report) then
  HandleAttachmentBatchFailure(Report);

See Also

Attachment, AttachmentCount, AttachmentDescription, AttachmentName, AttachmentType