Метод 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');