|
JBIG2 Compression – podpora
Přehled
HotPDF nyní obsahuje úplnou podporu komprese JBIG2 (Joint Bi-level Image Experts Group 2)
JBIG2 je ztrátový i bezeztrátový kompresní standard navržený speciálně pro dvouúrovňové
(monochromatické) obrázky, které se v PDF dokumentech často používají pro skenované textové stránky a čárovou grafiku
Hlavní funkce
- Vysoce účinná komprese pro dvouúrovňové obrázky
- Podpora ztrátových i bezeztrátových režimů komprese
- Optimalizace pro kompresi textu a čárové grafiky
- Výrazné zmenšení souboru oproti tradičním kompresním metodám
- Plná podpora souladu s PDF/A
- Podpora vícestránkových dokumentů se sdílenými slovníky
Výhody komprese
- Lepší kompresní poměry: Až 3-5x lepší komprese než Group 4 CCITT
- Rozpoznávání vzorů: Inteligentní rozpoznávání opakovaných vzorů a symbolů
- Adaptivní komprese: Automaticky přizpůsobuje strategii komprese typu obsahu
- Úsporná práce s pamětí: Optimalizováno pro zpracování rozsáhlých skenovaných dokumentů
Typické scénáře použití
- Skenované textové dokumenty
- Technické výkresy a plány
- Formuláře a faktury
- Mapy a diagramy
- Dokumenty se smíšeným obsahem tvořeným textem a grafikou
Technická implementace
Podpora JBIG2 je implementována prostřednictvím jednotky HPDFJBIG2.pas, která poskytuje:
- THPDFJBIG2Decoder: Základní třída dekodéru pro data komprimovaná pomocí JBIG2
- Zpracování streamů: Efektivní práce s datovými streamy JBIG2
- Podpora globálního slovníku: Sdílené slovníky symbolů pro vícestránkové dokumenty
- Přístup po skenovacích řádcích: Přístup k datům řádek po řádku pro úsporné zpracování paměti
Příklad použití
// 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;
Reference třídy
THPDFJBIG2Decoder
- LoadFromByteArray: Načte data JBIG2 z bytového pole
- GetScanline: Vrátí data konkrétního skenovacího řádku
- Width/Height: Vlastnosti rozměrů obrázku
Optimalizace výkonu
- Paměťově úsporné zpracování skenovacích řádků
- Optimalizováno pro práci s velkými dokumenty
- Minimální paměťová stopa během dekomprese
- Rychlé algoritmy rozpoznávání vzorů
Soulad se standardy
- Soulad se standardem ITU-T T.88
- Podpora standardu ISO/IEC 14492
- Kompatibilita s archivním formátem PDF/A
- Konzistentní chování napříč platformami
Viz také
|