Обзор на компресията

Общ преглед

HotPDF използва няколко пътя за компресиране и декомпресиране в зависимост от това дали генерира ново PDF съдържание или чете съществуващи потоци и изображения от външни файлове

Основни пътища за компресия

  • FlateDecode: Използва се за генерирани PDF потоци чрез THotPDF.Compression и е поддържан от zlib-ng в zlib-съвместим режим с 64-битово runtime SIMD разпределение, когато е налично
  • CompressionLevel: THotPDF.CompressionLevel избира clNone, clFastest, clDefault или clMaximum за разширените Flate пътища
  • LZWDecode: Поддържа се за наследени PDF и TIFF-подобни данни чрез HPDFLZW.pas
  • DCT/JPEG: Използва се за стандартни JPEG image работни потоци, обработвани от поддръжката на HotPDF за изображения и поддържани от libjpeg-turbo 3.1.90 с NASM SIMD ускорителни обекти
  • JBIG2 and JPEG2000: Налични за специализирани image работни потоци, когато изходният формат вече използва тези кодеци

Намаляване на структурния размер за PDF 1.5+

За PDF 1.5+ изход HotPDF може да добавя два допълнителни структурни пътя за компресия върху потоци, вече компресирани с FlateDecode И двата са по избор и се комбинират естествено:

  • UseXRefStream: Заменя текстовата таблица за кръстосани препратки xref ... trailer с компресиран поток /Type /XRef (ISO 32000-1 7.5.8) Намалява режийните разходи за xref с 4-10x при големи документи
  • UseObjectStreams: Пакетира малки косвени речници (многостранични документи, анотации, AcroForm widgets, елементи на structure-tree, Optional Content слоеве) в контейнерни потоци /Type /ObjStm (ISO 32000-1 7.5.7), реферирани чрез type-2 xref записи Изисква и UseXRefStream да е включен Един 30-страничен graphics-only smoke се свива от 14502 до 8488 bytes (-41.5%) при комбиниране на двете настройки
  • Копиране и декомпресия: DecompressForCopy и OriginallyCompressed описват как пътищата за копиране на зареден документ материализират компресираните source потоци

Свързани units

  • HPDFZLib.pas за помощни inflate функции за FlateDecode и predictor-aware обработка
  • HPDFLZW.pas за LZW декомпресия
  • HPDFJBIG2.pas за поддръжка на JBIG2 декодиране
  • HPDFJpeg2000.pas и HPDFOpenJpeg.pas за работни потоци, свързани с JPEG2000

Виж също