|
Поддръжка на JBIG2 компресия
Общ преглед
HotPDF вече включва цялостна поддръжка на JBIG2 (Joint Bi-level Image Experts Group 2) компресия
JBIG2 е стандарт за компресия със или без загуба, специално проектиран за bi-level (монохромни) изображения,
който често се използва в PDF документи за сканирани текстови страници и line art
Основни възможности
- Високо ефективна компресия за bilevel изображения
- Поддръжка както на режим със загуба, така и на lossless режим
- Оптимизирано за компресия на текст и line art
- Съществено намаляване на размера на файла спрямо традиционните методи за компресия
- Пълна поддръжка на PDF/A съвместимост
- Поддръжка на многостранични документи със споделени речници
Ползи от компресията
- Superior Compression Ratios: До 3-5 пъти по-добра компресия от Group 4 CCITT
- Pattern Recognition: Интелигентно разпознаване на повтарящи се шаблони и символи
- Adaptive Compression: Автоматично настройва стратегията за компресия според типа съдържание
- Memory Efficient: Оптимизирано за обработка на големи сканирани документи
Типични случаи на употреба
- Сканирани текстови документи
- Технически чертежи и blueprints
- Форми и фактури
- Карти и диаграми
- Документи със смесено съдържание от текст и графика
Техническа реализация
Поддръжката на JBIG2 е реализирана чрез единицата HPDFJBIG2.pas, която предоставя:
- THPDFJBIG2Decoder: Основен декодер клас за JBIG2 компресирани данни
- Stream Processing: Ефективна обработка на JBIG2 потоци от данни
- Global Dictionary Support: Споделени символни речници за многостранични документи
- Scanline Access: Достъп до данните ред по ред за паметно ефективна обработка
Пример за употреба
// Delphi example - Processing JBIG2 compressed data
procedure ProcessJBIG2Data;
var
PDF: THotPDF;
Decoder: THPDFJBIG2Decoder;
ImageData: TBytesArray;
ScanlineData: TBytesArray;
Row: Integer;
begin
PDF := THotPDF.Create(nil);
Decoder := THPDFJBIG2Decoder.Create;
try
PDF.BeginDoc;
PDF.AddPage;
// Load JBIG2 compressed image data
if Decoder.LoadFromByteArray(ImageData) then
begin
// Process scanline by scanline for memory efficiency
for Row := 0 to Decoder.Height - 1 do
begin
if Decoder.GetScanline(Row, ScanlineData) then
begin
// Process scanline data as needed
// Add to PDF page
end;
end;
end;
PDF.EndDoc;
finally
Decoder.Free;
PDF.Free;
end;
end;
Класова справка
THPDFJBIG2Decoder
- LoadFromByteArray: Зарежда JBIG2 данни от байтов масив
- GetScanline: Извлича данни за конкретен scanline
- Width/Height: Свойства за размерите на изображението
Оптимизация на производителността
- Паметно ефективна обработка ред по ред
- Оптимизирано за работа с големи документи
- Минимален memory footprint по време на декомпресия
- Бързи алгоритми за разпознаване на шаблони
Съответствие със стандарти
- Съответствие със стандарта ITU-T T.88
- Поддръжка на стандарта ISO/IEC 14492
- Съвместимост с архивния формат PDF/A
- Последователност между платформите
Виж също
|