THotPDF.OptimizeLoadedStreams metodas
Perrašo pasirinktas įkeltų srautų šeimas kaip Flate tik tada, kai pakaitas yra mažesnis už prašytą slenkstį
Deklaracija
function OptimizeLoadedStreams(
FilterFamilies: THPDFLoadedStreamFilterFamilies;
MinimumSavingsBytes: Int64;
out AInfo: THPDFLoadedStreamOptimizationInfo): Integer; overload;
function OptimizeLoadedStreams(
FilterFamilies: THPDFLoadedStreamFilterFamilies;
MinimumSavingsBytes: Int64;
RecompressionMode: THPDFFlateRecompressionMode;
out AInfo: THPDFLoadedStreamOptimizationInfo): Integer; overload;
Modulis
HPDFDoc
Parametrai
| Pavadinimas | Paskirtis |
|---|---|
FilterFamilies | Pasirenka nefiltruotus, Flate, LZW, ASCII85, ASCIIHex ir RunLength kandidatus |
MinimumSavingsBytes | Teigiamas minimalus baitų sumažinimas, reikalingas prieš kandidatui pakeičiant jo šaltinio srautą |
RecompressionMode | Pasirenka standartinį vienos eigos kelią arba deterministinį keturių strategijų didelio santykio Flate pasirinkimą |
AInfo | Priima perskaitytų, kandidatų, perrašytų, nepalaikomų, nesėkmingų, prieš ir po bei sutaupytų baitų sumas |
Grąžinama reikšmė
Grąžina srautų turinių, pakeistų įkeltame objektų grafe, skaičių
Naudojimo pastabos
CompressionLevelpasirenka zlib greitį ir santykį, oclNonepadaro eigą be poveikiofrmHighRatiobando numatytąją, filtruotą, run-length ir tik Huffman didžiausio suspaudimo strategijas ir išlaiko mažiausią su standartais suderinamą srautą- Iššifruoti ir suspausti kandidatai perpilami į nuosavybės teisę turinčius laikinuosius failus po
LoadedStreamMemoryThreshold, išlaikydami didelio dokumento atmintį ribotą - Originalus turinys ir žodynas lieka nepakeisti po iššifravimo nesėkmės arba nepakankamo sutaupymo
- Srautai su
/DecodeParmspraleidžiami, kad prediktoriaus ir nenumatytosios LZW semantikos negalėtų būti pakeistos netyčia - Daugiafiltrių grandinės tinkamos tik tada, kai kiekviena šeima pasirinkta ir palaikoma
- Po eigos kvieskite
SaveLoadedDocument, kad išlaikytumėte priimtus turinius
Tipai ir diagnostika
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 įrašo prieš optimizavimą esantį srautų skaičių, užkoduotus baitus ir kiekvienos šeimos stadijos priskyrimą nepriversdama papildomos iššifravimo eigos
Pavyzdys
Families := [lsffUnfiltered, lsffFlate, lsffLZW];
Count := PDF.OptimizeLoadedStreams(Families, 16, frmHighRatio, Info);
if Count > 0 then
PDF.SaveLoadedDocument('optimized.pdf');