function ReadAttachmentMetadata(MaxAttachments: Integer = 10000): TPdfAttachmentMetadataArray;
このメソッドはドキュメントレベルの添付を 1 回列挙し、Index、Name、Description、MimeType、Relationship、デコード済みの Size、Readable を含む呼び出し側所有のレコードを返します
MaxAttachments は結果配列を満たす前にチェックされるため、信頼できないドキュメントが無制限のメタデータ割り当てを引き起こすことを防ぎます
サイズ照会はペイロードバイトを PDFium Delphi Component のメモリへコピーしません。ただし、PDFium はデコード後の長さを求めるために内部的にストリームをデコードすることがあります
function ExtractAttachmentsToStreams(const Destinations: array of TStream; const Options: TPdfAttachmentBatchOptions; out Report: TPdfAttachmentBatchReport; const CancellationToken: IPdfCancellationToken = nil): Boolean;
Destinations はドキュメントの添付 1 件につき正確に 1 つのスロットを含まなければならず、Attachment[Index] と同じ 0 始まりの順序に従います
nil の宛先はその項目を paesSkipped としてマークするため、呼び出し側は 2 回目の列挙なしで添付を選択できます
空でない各ペイロードは PDFium を通じて 1 つの一時 PDFium Delphi Component バッファへデコードされ、そのバッファから ChunkBytes ずつ書き込まれます
バッファは次の添付へ進む前に解放されるため、PDFium Delphi Component がバッチ全体を保持し続けることはありません。ただし、公開されている PDFium 添付 API は範囲読み取りをサポートせず、内部でペイロード全体のデコードメモリを使用する場合があります
ストリームの所有権は呼び出し側にあり、書き込みは各ストリームの現在位置から始まり、メソッドは巻き戻しも切り詰めも行いません
キャンセルや宛先の例外により、そのストリームに既に書き込まれたバイトが残ることがあります。トランザクション的な出力が必要な呼び出し側は、一時ストリームを渡し、成功したレポートの後にのみ公開してください
| フィールド | デフォルト | 意味 |
|---|---|---|
MaxAttachments | 10000 | メタデータとレポートエントリの最大数 |
MaxFileBytes | 256 MiB | 1 つの添付の最大デコードサイズ |
MaxTotalBytes | 1 GiB | すべての宛先にわたって書き込む最大バイト数 |
ChunkBytes | 1 MiB | 1 回のストリーム書き込みに渡す最大バイト数 |
StopOnError | True | 最初の読み取り不可、予算超過、書き込み失敗の項目の後に停止します |
各 TPdfAttachmentMetadata レコードは 1 つのネイティブ添付を記述し、TPdfAttachmentMetadataArray はメタデータのスナップショットを保持します
各 TPdfAttachmentBatchItem はメタデータ、TPdfAttachmentExtractionState、書き込まれたバイト数、任意のエラーテキストを組み合わせ、TPdfAttachmentBatchItems はすべての項目ごとの結果を保持します
TPdfAttachmentExtractionState の値は、paesNotProcessed、paesSkipped、paesExtracted、paesUnreadable、paesFileLimit、paesAggregateLimit、paesCancelled、paesWriteFailed です
TPdfAttachmentBatchReport は AttachmentCount、ExtractedCount、SkippedCount、FailedCount を BytesWritten および PeakBufferBytes とともに数えます
Completed は、キャンセルなしですべての項目が終端状態に達したことを意味します。関数の戻り値はさらに FailedCount = 0 を要求します
PeakBufferBytes は PDFium Delphi Component のペイロードバッファの最大サイズを報告し、デコード中に PDFium が使用するプライベートメモリは含みません
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);