type TPdfStreamInspector = class ... end;
| Constructor | Description |
|---|---|
Create(Source: TStream) | Konumlanabilir bir PDF kaynağını varsayılan bütçelerle okur ve özgün konumunu geri yükler |
Create(Source: TStream; const Options: TPdfStreamInspectOptions) | Konumlanabilir bir PDF kaynağını çağıranın seçtiği bütçelerle okur |
Create(const Data: TBytes) | Mevcut bir PDF bayt dizisini varsayılan bütçelerle inceler |
Create(const Data: TBytes; const Options: TPdfStreamInspectOptions) | Mevcut bir PDF bayt dizisini çağıranın seçtiği bütçelerle inceler |
| Method | Description |
|---|---|
CopyRawData(Index, Destination, out Report) | Tek bir akış nesnesinin kodlanmış yükünün tamamını kopyalar |
CopyRawData(Index, Destination, Offset, Count, out Report) | Filtre zincirini çözmeden doğrulanmış bir bayt penceresini kopyalar |
DecodeData(Index, Destination, Level, out Report) | Ham veri döndürür ya da desteklenen genel filtreleri bildirim sırasına göre uygular |
PdfStreamFilterKindFromName(Name) | Tam ya da kısaltılmış bir PDF filtre adını TPdfStreamFilterKind tipine eşler |
| Constant | Value | Purpose |
|---|---|---|
PdfStreamInspectDefaultSourceLimit | 512 MiB | Tutulabilecek en büyük kaynak boyutu |
PdfStreamInspectDefaultRawLimit | 256 MiB | Tek bir işlemin kopyalayabileceği en büyük ham yük |
PdfStreamInspectDefaultDecodedLimit | 256 MiB | Tek bir işlemin üretebileceği en büyük çözülmüş yük |
PdfStreamInspectDefaultExpansionRatio | 100 | En büyük çözülmüş/kodlanmış genişleme oranı |
PdfStreamInspectDefaultMaxStreams | 1,000,000 | Envantere alınabilecek en fazla akış nesnesi |
PdfStreamInspectDefaultDictionaryLimit | 1 MiB | Tek bir akış için incelenebilecek en fazla sözlük baytı |
| Type | Description |
|---|---|
TPdfStreamFilterKind | Filtreleri psfkUnknown, psfkASCIIHex, psfkASCII85, psfkLZW, psfkFlate, psfkRunLength, psfkCCITTFax, psfkJBIG2, psfkDCT, psfkJPX, psfkCrypt veya psfkBrotli olarak sınıflandırır |
TPdfStreamNativeAccess | Yerel yol olmamasını, image-object erişimini veya embedded-file erişimini seçer |
TPdfStreamDecodeLevel | Ham, desteklenen genel filtre ya da zorunlu tam zincir çözümünü seçer |
TPdfStreamReadStatus | psrsCompleted, psrsPartiallyDecoded, psrsInvalidIndex, psrsInvalidRange, psrsSourceLimitExceeded, psrsRawLimitExceeded, psrsDecodedLimitExceeded, psrsExpansionRatioExceeded, psrsUnsupportedFilter, psrsUnsupportedDecodeParameters, psrsEncrypted, psrsExternalData, psrsMalformed veya psrsWriteError raporlar |
TPdfStreamFilterInfo | Filtre adı, Kind, HasDecodeParameters DecodeParms varlığı, Predictor, Colors, BitsPerComponent, Columns ve LZW EarlyChange değeri |
TPdfStreamFilterInfos | TPdfStreamFilterInfo kayıtlarının dinamik dizisi |
TPdfStreamInfo | Nesne kimliği (ObjectNumber, Generation, TypeName), ofsetler ve uzunluklar (ObjectOffset, DictionaryOffset, DictionaryLength, RawOffset, RawLength, DecodedLengthHint), düzen bayrakları (LengthIsIndirect, UsedEndStreamFallback), şifreleme ve harici dosya bayrakları (HasExternalFile, IsEncryptedDocument), tür adları (SubtypeName), yerel sınır (psnaNone, psnaImageObject veya psnaEmbeddedFile değerlerinden NativeAccess) ve bildirilen Filters zinciri |
TPdfStreamInfos | TPdfStreamInfo kayıtlarının dinamik dizisi |
TPdfStreamInspectOptions | Statik bir Default başlatıcısıyla çağıranın seçtiği kaynak, yük (MaxRawBytes, MaxDecodedBytes), genişleme (MaxExpansionRatio), nesne sayısı (MaxStreams), sözlük (MaxDictionaryBytes), dizgecik (MaxTokens), ayırma (MaxAllocationBytes) ve DeadlineMilliseconds son teslim bütçeleri |
TPdfStreamReadReport | Tek bir okuma için durum, bayt sayaçları (InputByteCount, OutputByteCount), uygulanan ve kalan filtre sayıları (AppliedFilterCount, RemainingFilterCount), başarısız filtre indeksi (FailedFilterIndex) ve ErrorMessage metni |
| Member | Type | Description |
|---|---|---|
Count | Integer | Kaynakta bulunan fiziksel akış nesnesi ya da revizyon sayısı |
Infos[Index] | TPdfStreamInfo | Nesne numarası, nesil, ofsetler, uzunluklar, filtreler, DecodeParms ve yerel erişim sınıflandırması |
Encrypted | Boolean | Trailer'ın belge şifrelemesi bildirip bildirmediğini belirtir |
Options | TPdfStreamInspectOptions | İnceleyicinin kullandığı normalleştirilmiş kaynak bütçeleri |
SourceByteCount | Int64 | İnceleme için tutulan girdi baytı sayısı |
psdlRaw, kodlanmış akış baytlarını filtre uygulamadan kopyalarpsdlGeneral, ASCIIHex, ASCII85, LZW, Flate, RunLength, TIFF 8-bit ve PNG tahmin edicilerini uygular; ardından bir görsel ya da bilinmeyen codec kaldığında psrsPartiallyDecoded döndürürpsdlFull, zincirin tamamının desteklenen genel filtreleri kullanmasını zorunlu kılar; aksi hâlde psrsUnsupportedFilter döndürürpsnaImageObject, belge düzeyi çağıranları yerel FPDFImageObj_GetImageDataRaw, FPDFImageObj_GetImageDataDecoded ve görsel filtre API'lerine yönlendirirpsnaEmbeddedFile, ek çağıranlarını yerel FPDFAttachment_GetFile yoluna yönlendirirpsrsEncrypted döndürür; çünkü genel yerel ABI, rastgele bir dolaylı akışı nesne numarasıyla çözemezTPdfStreamInspectOptions.Default, kendi kaynak, yük, genişleme, sözlük ve akış üst sınırlarını geçerli TPdfParserResourceBudget dizgecik, nesne, çözülmüş bayt, genişleme oranı, ayırma ve son teslim ilkesiyle birleştirir
TPdfStreamReadReport, durumu, girdi ve çıktı bayt sayılarını, uygulanan ve kalan filtreleri, başarısız filtre indeksini ve hedef yazma hatalarını kaydeder
Güncel uygulama, güvenilir dolaylı uzunluk çözümünü ve tekrarlanabilir rastgele akış okumalarını desteklemek için sınırlı tek bir kaynak kopyası tutar; daha sıkı bir bellek bütçesi altında güvenilmeyen yüklemeleri işlerken daha düşük bir MaxSourceBytes kullanın
var
Inspector: TPdfStreamInspector;
Output: TMemoryStream;
Report: TPdfStreamReadReport;
begin
Inspector := TPdfStreamInspector.Create(PdfBytes);
Output := TMemoryStream.Create;
try
if Inspector.Count > 0 then
Inspector.DecodeData(0, Output, psdlGeneral, Report);
finally
Output.Free;
Inspector.Free;
end;
end;