|
Obsługa kompresji JBIG2
Omówienie
HotPDF obejmuje teraz pełną obsługę kompresji JBIG2 (Joint Bi-level Image Experts Group 2)
JBIG2 to stratny lub bezstratny standard kompresji zaprojektowany specjalnie dla obrazów dwupoziomowych (monochromatycznych),
często używanych w dokumentach PDF dla zeskanowanych stron tekstowych i rysunków kreskowych
Najważniejsze funkcje
- Wysokowydajna kompresja obrazów dwupoziomowych
- Obsługa trybów kompresji stratnej i bezstratnej
- Optymalizacja pod kątem kompresji tekstu i rysunków kreskowych
- Znaczne zmniejszenie rozmiaru pliku w porównaniu z tradycyjnymi metodami kompresji
- Pełna obsługa zgodności z PDF/A
- Obsługa dokumentów wielostronicowych ze współdzielonymi słownikami
Korzyści kompresji
- Lepsze współczynniki kompresji: Do 3-5 razy lepsza kompresja niż Group 4 CCITT
- Rozpoznawanie wzorców: Inteligentne rozpoznawanie powtarzanych wzorców i symboli
- Kompresja adaptacyjna: Automatycznie dostosowuje strategię kompresji do typu treści
- Oszczędność pamięci: Zoptymalizowane do przetwarzania dużych skanowanych dokumentów
Typowe zastosowania
- Skanowane dokumenty tekstowe
- Rysunki techniczne i plany
- Formularze i faktury
- Mapy i diagramy
- Dokumenty o mieszanej treści z tekstem i grafiką
Implementacja techniczna
Obsługa JBIG2 jest zaimplementowana w module HPDFJBIG2.pas, który udostępnia:
- THPDFJBIG2Decoder: Główna klasa dekodera dla danych skompresowanych JBIG2
- Przetwarzanie strumieni: Wydajna obsługa strumieni danych JBIG2
- Obsługa słowników globalnych: Współdzielone słowniki symboli dla dokumentów wielostronicowych
- Dostęp do linii skanu: Dostęp do danych wiersz po wierszu dla oszczędnego pamięciowo przetwarzania
Przykład użycia
// Przykład Delphi - przetwarzanie danych skompresowanych JBIG2
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;
// Wczytaj skompresowane dane obrazu JBIG2
if Decoder.LoadFromByteArray(ImageData) then
begin
// Przetwarzaj linia po linii dla oszczędności pamięci
for Row := 0 to Decoder.Height - 1 do
begin
if Decoder.GetScanline(Row, ScanlineData) then
begin
// Przetwarzaj dane linii skanu zgodnie z potrzebami
// Dodaj do strony PDF
end;
end;
end;
PDF.EndDoc;
finally
Decoder.Free;
PDF.Free;
end;
end;
Opis klasy
THPDFJBIG2Decoder
- LoadFromByteArray: Wczytuje dane JBIG2 z tablicy bajtów
- GetScanline: Pobiera dane określonej linii skanu
- Width/Height: Właściwości wymiarów obrazu
Optymalizacja wydajności
- Oszczędne pamięciowo przetwarzanie linii skanu
- Zoptymalizowane do obsługi dużych dokumentów
- Minimalne użycie pamięci podczas dekompresji
- Szybkie algorytmy rozpoznawania wzorców
Zgodność ze standardami
- Zgodność ze standardem ITU-T T.88
- Obsługa standardu ISO/IEC 14492
- Zgodność z archiwalnym formatem PDF/A
- Spójność między platformami
Zobacz też
|