Метод THotPDF.OptimizeLoadedStreams
Пренаписва избрани семейства заредени потоци като Flate само когато замяната е по-малка с поиска прага
Декларация
function OptimizeLoadedStreams(
FilterFamilies: THPDFLoadedStreamFilterFamilies;
MinimumSavingsBytes: Int64;
out AInfo: THPDFLoadedStreamOptimizationInfo): Integer;
Модул
HPDFDoc
Параметри
| Име | Цел |
|---|---|
FilterFamilies | Избира нефильтрани, Flate, LZW, ASCII85, ASCIIHex и RunLength кандидати |
MinimumSavingsBytes | Положителна минимална байтова редукция, изисквана преди кандидат да замени своя изходен поток |
AInfo | Приема сканирани, кандидат, пренаписани, неподдържани, провалили се, преди, след и спестени общи байтове |
Връщана стойност
Връща броя на полезните товари на потоци, заменени в заредения обектен граф
Бележки за употреба
CompressionLevelизбира скоростта и съотношението на zlib, докатоclNoneправи прохода бездействащ- Декодираните и компресирани кандидати се изливат във властвани временни файлове след
LoadedStreamMemoryThreshold, поддържайки паметта за големи документи ограничена - Оригиналният полезен товар и речник остават непроменени след декодиращ неуспех или недостатъчни спестявания
- Потоци с
/DecodeParmsсе прескачат, така че семантиката за предиктор и подразбиращ се LZW не може да бъде променена случайно - Многофилтърните вериги са допустими само когато всяко семейство е избрано и поддържано
- Извиквайте
SaveLoadedDocumentслед прохода, за да запазите осиновените полезни товари
Типове и диагностика
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;
end;
Пример
Families := [lsffUnfiltered, lsffFlate, lsffLZW];
Count := PDF.OptimizeLoadedStreams(Families, 16, Info);
if Count > 0 then
PDF.SaveLoadedDocument('optimized.pdf');