Підтримка стиснення LZW

Огляд

HotPDF тепер включає комплексну підтримку стиснення LZW (Lempel-Ziv-Welch) для потоків PDF LZW - це алгоритм стиснення даних без втрат, який є особливо ефективним для тексту та простої графіки і зазвичай використовується в документах PDF для стиснення потоків вмісту

Основні функції

  • Повна підтримка декомпресії LZW для потоків PDF
  • Підтримка налаштовуваного предиктора для покращеного стиснення
  • Кілька варіантів порядку заповнення (зверху вниз, знизу вгору)
  • Підтримка ранньої зміни коду для забезпечення сумісності
  • Ефективна обробка потоків у пам'яті
  • Інтеграція параметрів PDF (Predictor, Colors, BitsPerComponent, Columns)

Технічна реалізація

Підтримка стиснення LZW реалізована за допомогою модуля HPDFLZW.pas, який надає:

  • TPDFLZWDecompressor: Основний клас декомпресії
  • TPDFLZWParms: Структура параметрів для специфічних налаштувань PDF
  • TPDFLZWFillOrder: Перелічення для обробки порядку бітів

Довідник класів

TPDFLZWDecompressor

Основний клас для операцій декомпресії LZW

Властивості:

  • FillOrder: Визначає порядок бітів (foBottom, foTop)
  • EarlyChange: Керує ранньою зміною розміру коду
  • InitialCodeSize: Початковий розмір коду для декомпресії

Методи:

  • Decompress(Input: AnsiString): AnsiString - базова декомпресія
  • Decompress(Input: AnsiString; Parms: TPDFLZWParms): AnsiString - декомпресія з параметрами PDF

Приклади використання

Базова декомпресія LZW


// Приклад Delphi - базова декомпресія LZW
procedure DecompressLZWData;
var
  Decompressor: TPDFLZWDecompressor;
  CompressedData: AnsiString;
  DecompressedData: AnsiString;
begin
  Decompressor := TPDFLZWDecompressor.Create;
  try
    // Налаштування декомпресора
    Decompressor.FillOrder := foTop;
    Decompressor.EarlyChange := True;
    Decompressor.InitialCodeSize := 9;

    // Декомпресія даних
    DecompressedData := Decompressor.Decompress(CompressedData);

    // Використання декомпресованих даних
    ProcessDecompressedData(DecompressedData);
  finally
    Decompressor.Free;
  end;
end;
        

Розширена декомпресія LZW з параметрами PDF


// Приклад Delphi - розширена декомпресія LZW з параметрами PDF
procedure DecompressLZWWithParms;
var
  Decompressor: TPDFLZWDecompressor;
  CompressedData: AnsiString;
  DecompressedData: AnsiString;
  Parms: TPDFLZWParms;
begin
  Decompressor := TPDFLZWDecompressor.Create;
  try
    // Налаштування параметрів PDF
    Parms.Predictor := 2;           // Предиктор горизонтальної різниці
    Parms.Colors := 3;              // Колірний простір RGB
    Parms.BitsPerComponent := 8;    // 8 біт на компонент
    Parms.Columns := 100;           // Ширина зображення в пікселях
    Parms.ExpandedTo8Bit := True;   // Розширення до 8-бітних компонентів
    Parms.ColorSpace := 'DeviceRGB';

    // Декомпресія з параметрами
    DecompressedData := Decompressor.Decompress(CompressedData, Parms);

    // Обробка декомпресованих даних зображення
    ProcessImageData(DecompressedData, Parms);
  finally
    Decompressor.Free;
  end;
end;
        

Підтримка параметрів PDF

Структура TPDFLZWParms

  • Predictor: Функція предиктора (0=немає, 2=горизонтальна різниця)
  • Colors: Кількість колірних компонентів (1=градації сірого, 3=RGB, 4=CMYK)
  • BitsPerComponent: Біт на колірний компонент (1, 2, 4, 8, 16)
  • Columns: Кількість відліків на рядок
  • ExpandedTo8Bit: Чи розширювати до 8-бітних компонентів
  • ColorSpace: Ідентифікатор колірного простору

Деталі алгоритму

Реалізація LZW включає:

  • Стиснення на основі словника: Створює та підтримує динамічний словник
  • Змінна довжина коду: Підтримує довжину коду від 9 до 12 біт
  • Обробка кодів очищення: Правильна обробка кодів очищення та кінця інформації
  • Керування таблицею рядків: Ефективна таблиця рядків для розпізнавання шаблонів

Характеристики продуктивності

  • Memory Efficient: Optimized for large data streams
  • Швидка декомпресія: Високооптимізовані алгоритми декомпресії
  • Прогнозована продуктивність: Стабільна продуктивність для різних типів даних
  • Низькі вимоги до пам'яті: Мінімальні накладні витрати пам'яті під час обробки

Поширені випадки використання

  • Декомпресія потоку вмісту PDF
  • Декомпресія даних зображень у файлах PDF
  • Декомпресія потоку тексту
  • Декомпресія даних форм
  • Декомпресія потоку PostScript

Обробка помилок

Декомпресор LZW включає надійну обробку помилок для:

  • Недійсних послідовностей кодів
  • Пошкоджених потоків даних
  • Помилок виділення пам'яті
  • Умов переповнення словника

Standards Compliance

  • Відповідність фільтру PDF 1.2+ LZWDecode
  • Сумісність з PostScript Level 2 LZW
  • Сумісність зі стисненням TIFF LZW
  • Сумісність з реалізацією Adobe LZW

See Also