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é