PDFium Delphi Component API Reference

Batchextraktion av bilagor

Component: TPdf  ·  Unit: PDFium
Inventera dokumentets inbäddade bilagor en gång och skriv deras avkodade payloads till strömmar som ägs av anroparen, under explicita resurskontroller

ReadAttachmentMetadata

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

Metoden räknar upp dokumentets bilagor en gång och returnerar poster som ägs av anroparen och innehåller Index, Name, Description, MimeType, Relationship, avkodad Size och Readable

MaxAttachments kontrolleras innan resultatarrayen fylls, vilket hindrar ett opålitligt dokument från att utlösa en obegränsad metadataallokering

Storleksfrågan kopierar inte payloadbytes in i PDFium Delphi Components minne, men PDFium kan internt avkoda en ström för att bestämma dess avkodade längd

ExtractAttachmentsToStreams

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

Destinations måste innehålla exakt en plats per bilaga i dokumentet och följer samma nollbaserade ordning som Attachment[Index]

En nil-plats markerar den posten som paesSkipped, så att anropare kan välja ut bilagor utan en andra uppräkning

Varje icke-tom payload avkodas via PDFium till en tillfällig buffert i PDFium Delphi Component och skrivs sedan från den bufferten i delar om ChunkBytes

Bufferten frigörs innan nästa bilaga, så PDFium Delphi Component behåller aldrig hela batchen, men PDFiums offentliga bilage-API stöder inte intervalläsningar och kan internt använda eget minne för avkodning av hela payloaden

Strömmarna ägs fortsatt av anroparen, skrivningen börjar vid respektive aktuella strömposition, och metoden spolar inte tillbaka eller trunkerar dem

Avbrott eller ett exception i en destination kan lämna kvar bytes som redan skrivits till den strömmen, så anropare som kräver transaktionellt resultat bör använda tillfälliga strömmar och publicera dem först efter en lyckad rapport

Options

FieldDefaultMeaning
MaxAttachments10000Maximalt antal metadata- och rapportposter
MaxFileBytes256 MiBMaximal avkodad storlek för en bilaga
MaxTotalBytes1 GiBMaximalt antal bytes som skrivs över alla destinationer
ChunkBytes1 MiBMaximalt antal bytes per strömskrivning
StopOnErrorTrueStoppa efter den första post som är oläslig, överskrider budgeten eller misslyckas med skrivningen

Report

Varje TPdfAttachmentMetadata-post beskriver en native-bilaga och TPdfAttachmentMetadataArray lagrar metadata-snapshoten

Varje TPdfAttachmentBatchItem kombinerar metadata, ett TPdfAttachmentExtractionState, antal skrivna bytes och eventuell feltext, medan TPdfAttachmentBatchItems lagrar alla resultat per post

TPdfAttachmentExtractionState-värdena är paesNotProcessed, paesSkipped, paesExtracted, paesUnreadable, paesFileLimit, paesAggregateLimit, paesCancelled och paesWriteFailed

TPdfAttachmentBatchReport räknar AttachmentCount, ExtractedCount, SkippedCount och FailedCount tillsammans med BytesWritten och PeakBufferBytes

Completed betyder att varje post nått ett slutligt tillstånd utan avbrott, medan funktionsresultatet dessutom kräver FailedCount = 0

PeakBufferBytes rapporterar den största payloadbufferten i PDFium Delphi Component och inkluderar inte det privata minne som PDFium använder under avkodningen

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