function ReadAttachmentMetadata(MaxAttachments: Integer = 10000): TPdfAttachmentMetadataArray;
De methode somt bijlagen op documentniveau één keer op en geeft records in eigendom van de aanroeper terug met Index, Name, Description, MimeType, Relationship, de gedecodeerde Size en Readable
MaxAttachments wordt gecontroleerd voordat de resultaatarray wordt gevuld, zodat een niet-vertrouwd document geen onbegrensde metadata-allocatie kan veroorzaken
De size-query kopieert geen payloadbytes naar het geheugen van PDFium Delphi Component, al kan PDFium een stream intern decoderen om de gedecodeerde lengte te bepalen
function ExtractAttachmentsToStreams(const Destinations: array of TStream; const Options: TPdfAttachmentBatchOptions; out Report: TPdfAttachmentBatchReport; const CancellationToken: IPdfCancellationToken = nil): Boolean;
Destinations moet exact één slot per documentbijlage bevatten en volgt dezelfde zero-based volgorde als Attachment[Index]
Een nil-bestemming markeert dat item als paesSkipped, zodat aanroepers bijlagen kunnen selecteren zonder een tweede enumeratie
Elke niet-lege payload wordt via PDFium gedecodeerd in één tijdelijke PDFium Delphi Component-buffer en vervolgens uit die buffer weggeschreven in stukken van ChunkBytes
De buffer wordt vrijgegeven vóór de volgende bijlage, dus PDFium Delphi Component houdt nooit de hele batch vast, maar de openbare PDFium-bijlage-API ondersteunt geen range-reads en kan intern eigen full-payload-decodeergeheugen gebruiken
Streams blijven eigendom van de aanroeper, het schrijven begint op de huidige positie van elke stream en de methode spoelt ze niet terug of kapt ze niet af
Annulering of een bestemmingsuitzondering kan bytes achterlaten die al naar die stream zijn geschreven, dus aanroepers die transactionele output vereisen, moeten tijdelijke streams aanleveren en die pas na een geslaagd rapport publiceren
| Field | Default | Meaning |
|---|---|---|
MaxAttachments | 10000 | Maximale metadata- en rapportitems |
MaxFileBytes | 256 MiB | Maximale gedecodeerde grootte van één bijlage |
MaxTotalBytes | 1 GiB | Maximaal aantal bytes weggeschreven over alle bestemmingen |
ChunkBytes | 1 MiB | Maximaal aantal bytes doorgegeven aan één stream-schrijfactie |
StopOnError | True | Stop na het eerste onleesbare, boven-budget of schrijffout-item |
Elk TPdfAttachmentMetadata-record beschrijft één native bijlage en TPdfAttachmentMetadataArray bewaart de metadata-snapshot
Elk TPdfAttachmentBatchItem combineert metadata, een TPdfAttachmentExtractionState, weggeschreven bytes en eventuele fouttekst, terwijl TPdfAttachmentBatchItems alle per-item resultaten bewaart
De waarden van TPdfAttachmentExtractionState zijn paesNotProcessed, paesSkipped, paesExtracted, paesUnreadable, paesFileLimit, paesAggregateLimit, paesCancelled en paesWriteFailed
De TPdfAttachmentBatchReport telt AttachmentCount, ExtractedCount, SkippedCount en FailedCount, naast BytesWritten en PeakBufferBytes
Completed betekent dat elk item een eindstatus heeft bereikt zonder annulering, terwijl het functieresultaat bovendien FailedCount = 0 vereist
PeakBufferBytes rapporteert de grootste PDFium Delphi Component-payloadbuffer en omvat geen privégeheugen dat PDFium tijdens het decoderen gebruikt
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);