|
Обзор сжатия
Обзор
HotPDF использует несколько путей сжатия и распаковки в зависимости от того, создаёт ли он новый PDF-контент или читает существующие потоки и изображения из внешних файлов.
Основные пути сжатия
- FlateDecode: Используется для создаваемых PDF-потоков через THotPDF.Compression с движком zlib-ng в zlib-совместимом режиме и 64-битной runtime SIMD-диспетчеризацией, где доступно; конвейеры высокой степени сжатия загруженных потоков могут добавить лимитированный проход Zopfli, выбираемый только когда он даёт результат меньше лучшего zlib-результата
- CompressionLevel: THotPDF.CompressionLevel выбирает
clNone, clFastest, clDefault, или clMaximum для усиленных Flate-путей.
- LZWDecode: Поддерживается для legacy PDF и данных в стиле TIFF через HPDFLZW.pas
- DCT/JPEG: Используется для стандартных сценариев JPEG-изображений, обрабатываемых поддержкой изображений HotPDF, с движком libjpeg-turbo 3.1.90 и NASM-объектами SIMD-ускорения
- JBIG2 and JPEG2000: Доступны для специализированных сценариев, где исходный формат уже использует эти кодеки
Структурное уменьшение размера в PDF 1.5+
Для вывода PDF 1.5+ HotPDF может наложить два дополнительных структурных пути сжатия поверх потоков, сжатых FlateDecode. Оба включаются явно и естественно сочетаются:
- UseXRefStream: Заменяет текстовую
xref ... trailer таблицу перекрёстных ссылок на сжатый /Type /XRef поток (ISO 32000-1 7.5.8). На больших документах снижает накладные расходы xref в 4–10 раз.
- UseObjectStreams: Упаковывает маленькие косвенные словари (многостраничные документы, аннотации, виджеты AcroForm, элементы дерева структуры, слои Optional Content) в
/Type /ObjStm потоки-контейнеры (ISO 32000-1 7.5.7), на которые ссылаются записи xref типа 2. Требует включённого UseXRefStream, чтобы и он был включён. При совместном включении обоих переключателей 30-страничный чисто графический smoke-файл сжимается с 14 502 до 8488 байт (-41.5%).
- Распаковка при копировании: DecompressForCopy и
OriginallyCompressed описывают, как пути копирования загруженных документов материализуют сжатые исходные потоки.
Связанные модули
- HPDFZLib.pas — FlateDecode и помощники распаковки с учётом предикторов
- HPDFLZW.pas — распаковка LZW
- HPDFJBIG2.pas, HPDFJBIG2Codec.pas и HPDFJBIG2Enc.pas — кодирование и декодирование JBIG2
- HPDFJpeg2000.pas и HPDFOpenJpeg.pas — сценарии, связанные с JPEG2000
См. также
|