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
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
| Field | Default | Meaning |
|---|---|---|
MaxAttachments | 10000 | Maximalt antal metadata- och rapportposter |
MaxFileBytes | 256 MiB | Maximal avkodad storlek för en bilaga |
MaxTotalBytes | 1 GiB | Maximalt antal bytes som skrivs över alla destinationer |
ChunkBytes | 1 MiB | Maximalt antal bytes per strömskrivning |
StopOnError | True | Stoppa efter den första post som är oläslig, överskrider budgeten eller misslyckas med skrivningen |
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
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);