|
Підтримка стиснення 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
|