Metode THotPDF.OptimizeLoadedStreams
Menulis ulang keluarga stream yang dimuat terpilih sebagai Flate saja ketika penggantian lebih kecil sebesar ambang yang diminta
Deklarasi
function OptimizeLoadedStreams(
FilterFamilies: THPDFLoadedStreamFilterFamilies;
MinimumSavingsBytes: Int64;
out AInfo: THPDFLoadedStreamOptimizationInfo): Integer; overload;
function OptimizeLoadedStreams(
FilterFamilies: THPDFLoadedStreamFilterFamilies;
MinimumSavingsBytes: Int64;
RecompressionMode: THPDFFlateRecompressionMode;
out AInfo: THPDFLoadedStreamOptimizationInfo): Integer; overload;
Unit
HPDFDoc
Parameter
| Nama | Tujuan |
|---|---|
FilterFamilies | Memilih kandidat tidak-terfilter, Flate, LZW, ASCII85, ASCIIHex, dan RunLength |
MinimumSavingsBytes | Reduksi byte minimum positif yang diperlukan sebelum kandidat menggantikan stream sumbernya |
RecompressionMode | Memilih path pass-tunggal standar atau pemilihan Flate rasio-tinggi empat-strategi deterministik |
AInfo | Menerima total byte yang dipindai, kandidat, ditulis-ulang, tidak didukung, gagal, sebelum, sesudah, dan disimpan |
Nilai kembali
Mengembalikan jumlah muatan stream yang diganti dalam grafik objek yang dimuat
Catatan penggunaan
CompressionLevelmemilih kecepatan dan rasio zlib, sementaraclNonemenjadikan pass ini no-opfrmHighRatiomencoba strategi kompresi-maksimum default, terfilter, run-length, dan Huffman-saja dan mempertahankan stream terkecil yang kompatibel-standar- Kandidat yang didekode dan dikompres tumpah ke file sementara milik setelah
LoadedStreamMemoryThreshold, menjaga memori dokumen-besar tetap berbatas - Muatan dan kamus asli tetap tidak berubah setelah kegagalan dekode atau penghematan yang tidak mencukupi
- Stream dengan
/DecodeParmsdilewati sehingga semantik prediktor dan LZW non-default tidak dapat berubah secara tidak sengaja - Rantai multi-filter memenuhi syarat hanya ketika setiap keluarga dipilih dan didukung
- Panggil
SaveLoadedDocumentsetelah pass untuk mempertahankan muatan yang diadopsi
Tipe dan diagnostik
THPDFLoadedStreamFilterFamily = (lsffUnfiltered, lsffFlate, lsffLZW,
lsffASCII85, lsffASCIIHex, lsffRunLength);
THPDFLoadedStreamFilterFamilies = set of THPDFLoadedStreamFilterFamily;
THPDFLoadedStreamOptimizationInfo = record
ScannedStreamCount: Integer;
CandidateStreamCount: Integer;
RewrittenStreamCount: Integer;
UnsupportedStreamCount: Integer;
DecodeFailureCount: Integer;
BytesBefore: Int64;
BytesAfter: Int64;
BytesSaved: Int64;
FilterStatistics: THPDFLoadedStreamFilterStatistics;
RecompressionMode: THPDFFlateRecompressionMode;
CompressionTrialCount: Integer;
end;
FilterStatistics mencatat jumlah stream pra-optimisasi, byte terkode, dan atribusi tahap per-keluarga tanpa memaksa pass dekode tambahan
Contoh
Families := [lsffUnfiltered, lsffFlate, lsffLZW];
Count := PDF.OptimizeLoadedStreams(Families, 16, frmHighRatio, Info);
if Count > 0 then
PDF.SaveLoadedDocument('optimized.pdf');