function ReadAttachmentMetadata(MaxAttachments: Integer = 10000): TPdfAttachmentMetadataArray;
Yöntem, belge düzeyi ekleri bir kez numaralandırır ve Index, Name, Description, MimeType, Relationship, çözülmüş Size ve Readable alanlarını taşıyan, çağıranın sahipliğindeki kayıtları döndürür
MaxAttachments, sonuç dizisi doldurulmadan önce denetlenir; böylece güvenilmeyen bir belge sınırsız bir üst veri ayrımına yol açamaz
Boyut sorgusu, yük baytlarını PDFium Delphi Component belleğine kopyalamaz; ancak PDFium, çözülmüş uzunluğu belirlemek için bir akışı dahili olarak çözümleyebilir
function ExtractAttachmentsToStreams(const Destinations: array of TStream; const Options: TPdfAttachmentBatchOptions; out Report: TPdfAttachmentBatchReport; const CancellationToken: IPdfCancellationToken = nil): Boolean;
Destinations her belge eki için tam olarak bir yuva içermeli ve Attachment[Index] ile aynı sıfır tabanlı sırayı izlemelidir
nil bir hedef, o öğeyi paesSkipped olarak işaretler; böylece çağıran ikinci bir numaralandırma olmadan ek seçebilir
Boş olmayan her yük, PDFium üzerinden geçici tek bir PDFium Delphi Component tamponuna çözümlenir ve ardından o tampondan ChunkBytes parçalar halinde yazılır
Tampon, sıradaki eke geçilmeden önce serbest bırakılır; PDFium Delphi Component tüm grubu asla elinde tutmaz, ancak public PDFium ek API'si aralık okumalarını desteklemez ve kendi tam yük çözümleme belleğini dahili olarak kullanabilir
Akışların sahibi çağıran olarak kalır; yazma her akışın güncel konumundan başlar ve yöntem onları geri sarmaz ya da kırpmaz
İptal ya da bir hedef istisnası, o akışa önceden yazılmış baytlar bırakabilir; işlemisel çıktı isteyen çağıranlar geçici akışlar sağlamalı ve bunları yalnızca başarılı bir rapordan sonra yayınlamalıdır
| Field | Default | Meaning |
|---|---|---|
MaxAttachments | 10000 | Üst veri ve rapor girdisi sınırı |
MaxFileBytes | 256 MiB | Tek bir ekin çözülmüş boyut sınırı |
MaxTotalBytes | 1 GiB | Tüm hedeflere yazılan toplam bayt sınırı |
ChunkBytes | 1 MiB | Tek bir akış yazımına geçirilen bayt sınırı |
StopOnError | True | Okunamayan, bütçe aşan ya da yazımı başarısız ilk öğeden sonra durur |
Her TPdfAttachmentMetadata kaydı tek bir yerel eki tanımlar ve TPdfAttachmentMetadataArray üst veri anlık görüntüsünü saklar
Her TPdfAttachmentBatchItem; üst veriyi, bir TPdfAttachmentExtractionState değerini, yazılan baytları ve varsa hata metnini birleştirir; TPdfAttachmentBatchItems ise tüm öğe başına sonuçları saklar
TPdfAttachmentExtractionState değerleri şunlardır: paesNotProcessed, paesSkipped, paesExtracted, paesUnreadable, paesFileLimit, paesAggregateLimit, paesCancelled ve paesWriteFailed
TPdfAttachmentBatchReport, BytesWritten ve PeakBufferBytes ile birlikte AttachmentCount, ExtractedCount, SkippedCount ve FailedCount sayılarını tutar
Completed, her öğenin iptal olmadan bir son duruma ulaştığı anlamına gelir; işlev sonucu ayrıca FailedCount = 0 koşulunu ister
PeakBufferBytes en büyük PDFium Delphi Component yük tamponunu raporlar ve PDFium'ın çözümleme sırasında kullandığı özel belleği kapsamaz
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);