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
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
| Field | Default | Meaning |
|---|---|---|
MaxAttachments | 10000 | Maksimalt antal metadata- og rapportposter |
MaxFileBytes | 256 MiB | Maksimal afkodet størrelse af én vedhæftning |
MaxTotalBytes | 1 GiB | Maksimalt antal bytes skrevet på tværs af alle destinationer |
ChunkBytes | 1 MiB | Maksimalt antal bytes givet til én stream-skrivning |
StopOnError | True | Stop efter det første ulæselige, over budget liggende eller skrivefejlede element |
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
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);