THotPDF.OptimizeLoadedStreams Method
Перезаписывает выбранные семейства загруженных потоков как 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');