JBIG2 sıkıştırma desteği Genel bakış HotPDF; taranmış metin, formlar ve çizgisel sanatta kullanılan iki düzeyli görüntüler için JBIG2 sıkıştırma ve çözme içerir Öne çıkan özellikler
- İki düzeyli görüntüler için yüksek verimli sıkıştırma
- Hem kayıplı hem kayıpsız sıkıştırma kipleri desteği
- Metin ve çizgisel sanat sıkıştırması için iyileştirilmiştir
- Geleneksel sıkıştırma yöntemlerine göre belirgin dosya boyutu küçülmesi
- Her görüntü XObject'inin paylaştığı tek bir eğitilmiş sembol sözlüğüyle çok sayfalı kodlama
- Sınıflandırmadan önce kesin yinelenen sayfa algılama ve PDF birleştirmesi sırasında kodlanmış XObject yeniden kullanımı
- Sınırlı sayfa ve piksel bütçeleri ile isteğe bağlı yerel Pascal geri dönüşü
Sıkıştırma yararları
- Sayfalar arası yeniden kullanım: Yinelenen semboller bir kez sınıflandırılır ve paylaşılan global veride saklanır
- Sembol eşleme:
UseSymbolDictionary ile yinelenen siyah bağlı bileşenler sembol olarak bir kez saklanır; LossyLevel ise neredeyse özdeş bileşenlerin tek bir sembolü paylaşmasına izin verir
- Bellek verimli: Büyük taranmış belgeleri işlemek için iyileştirilmiştir
Tipik kullanım örnekleri
- Taranmış metin belgeleri
- Teknik çizimler ve planlar
- Formlar ve faturalar
- Haritalar ve şemalar
- Metin ve grafik içeren karma içerikli belgeler
Teknik uygulama JBIG2 uygulaması, bu API'ler üzerinden yerel Pascal yolları ve isteğe bağlı statik bir harici arka uç sağlar
- THPDFJBIG2Decoder: JBIG2 sıkıştırılmış veri için çekirdek çözücü sınıfı
- Yerel kodlama kapsamı: MMR genel bölgeleri, MQ genel bölgeleri, aritmetik ve standart-Huffman sembol sözlükleri ile metin bölgeleri, iyileştirme sembolleri, toplu semboller, iyileştirilmiş metin örnekleri, saklanan aritmetik bağlamlar ve sınırlı uzun biçimli referans tabloları
- Sınırlı bağlam yeniden kullanımı: Genel ve iyileştirme olasılık bankaları şablon duyarlı boyutlarla tutulur, fan-out bağımlılıkları arasında izole edilir ve kaynakları ya da şablonları uyumsuzsa reddedilir
- Stream işlemesi: JBIG2 veri akışlarının verimli işlenmesi
- Global sözlük desteği: Bir, iki veya dört baytlık segment tanımlayıcılarıyla paylaşılan ve çok düzeyli zincirli sembol sözlükleri
- Sayfalar arası toplu kodlayıcı:
THPDFJBIG2Encoder.EncodePagesToByteArrays tüm parti üzerinden eğitim yapar; her girdi için bir sayfa stream'i artı paylaşılan global veri döndürür
- Toplu sözleşme:
TJBIG2BatchPage bir paketlenmiş sayfayı tanımlar, TJBIG2BatchEncodeBackend seçilen uygulamayı belirtir, TJBIG2BatchEncodeCallback harici toplu entegrasyonları tanımlar
- Belge entegrasyonu:
THotPDF.AddJBIG2ImageBatch ve THotPDF.AddJBIG2BitmapBatch, PDF grafiğini değiştirmeden önce kodlar; paylaşılan bir /JBIG2Globals stream'i ekler ve görüntü indekslerini girdi sırasıyla döndürür
- Toplu telemetri:
TJBIG2BatchEncodeStatistics; seçilen arka ucu, girdi ve çıktı boyutlarını, yerel sembol sayısını ve bütçe reddini bildirir
- Arka uç kurtarması:
HPDFJBIG2EncRegisterBackends, geçici uygulama geçersiz kılmaları temizlendikten sonra her iki yerleşik kodlayıcı geri çağrısını geri yükler
- HPDFJBIG2SplitSymbolDictionaryGlobals: Ardışık gömülü bir stream'i, uzun biçimli bağımlılık başlıklarını koruyarak global sözlüklere ve sayfa görüntü bölümlerine ayırır
- Görünür bölge çözme:
THPDFJBIG2Decoder.LoadRegionFromByteArray yalnızca istenen pencereyi ayırır, geçişli sözlük bağımlılıklarını çözer, kesişen sayfa bölgelerini kırparak birleştirir ve entropi çözmesinden önce pencere dışındaki bağımsız bölgeleri atlar
- Bölge çözme telemetrisi:
LastRegionDecodeStats; çözülen ve atlanan bölge sayılarını artı çözülen kaynak pikselleri bildirir, UsedIncrementalRegionDecode ise yerel pencere yolunu eksiksiz çözme geri dönüşünden ayırır
- Satır erişimi: Bellek verimli işleme için satır satır veri erişimi
Kullanım örneği
// 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;
Kodlayıcı seçenekleri ve arka uçlar
- THotPDF.JBIG2Options: Belgenin
THPDFJBIG2Options'u; AddImage(..., icJBIG2) bunu TJBIG2EncodeOptions'a çevirir. Varsayılanları taramalara uygundur: Lossless=True, LossyLevel=5, RemoveIsolatedBlackPixels=True ve BlackDotSize=3
- Benek temizleme:
RemoveIsolatedBlackPixels True iken, genişliği ve yüksekliği ikisi de BlackDotSize'tan küçük olan siyah bağlı bileşenler kodlamadan önce temizlenir; varsayılanlar böylece 2 x 2 piksel ve daha küçük benekleri kaldırır. Çıktının bitmap'le piksel piksel eşleşmesi gerekiyorsa False yapın
- Kodlayıcı seçimi:
UseExternalEncoder (varsayılan True) kayıtlı yüksek performanslı aritmetik kodlayıcıyı kullanır; kapalı, yoksa veya başarısız olduğunda gömülü kayıpsız MMR genel bölgesi yazılır. UseNativeArithmeticFallback=True, MMR'den önce gömülü Pascal aritmetik kodlayıcıyı dener; UseSymbolDictionary=True ile önce metin bölgeli bir sembol sözlüğü denenir
- DefaultJBIG2EncodeOptions: Bağımsız bir
THPDFJBIG2Encoder'ın kullandığı seçenekler: kayıpsız, LossyLevel=0 ve benek temizleme yok
- Çözücü seçimi:
THotPDF.UseExternalJBIG2Decoder (varsayılan True), kullanılabilir olduğunda yüklenen /JBIG2Decode görüntülerini yüksek performanslı arka uçla çözer; False, gömülü Pascal çözücüyü kullanır
- Özel arka uçlar:
RegisterJBIG2EncoderBackend ve RegisterJBIG2DecoderBackend uygulama geri çağrıları kurar, IsJBIG2EncoderBackendAvailable ve IsJBIG2DecoderBackendAvailable bunları bildirir, ClearJBIG2Backends ise kaldırır
Sınıf başvurusu THPDFJBIG2Decoder
- LoadFromByteArray: JBIG2 verisini bayt dizisinden yükler; veri eksikse veya desteklenmiyorsa False döndürür
- GetScanline: Belirli satır verisini getirir
- Width/Height: Görüntü boyutları property'leri
Performans iyileştirmesi
- Sabit bir 100 sayfalık tarama külliyatı, ayrı genel bölgelerle 158.300 bayttan harici sayfalar arası eğitimle 33.600 bayta sıkışır; %78,8 küçülme
- Aynı külliyat, regresyon ölçütünde Win64'te 53 ms yerine 11 ms, Win32'de 77 ms yerine 16 ms tamamlanır
- Sayfa-to-sembol araması indekslidir ve tekrarlanan kodlanmış sayfa stream'leri, sabit zamanlı toplu çıkarma için önbelleklenir
- Bellek verimli satır işlemesi
- Büyük belge işlemesi için iyileştirilmiştir
- Sıkıştırmayı açma sırasında en düşük bellek ayak izi
Standart uyumluluğu
- ITU-T T.88 standardı uyumluluğu
- ISO/IEC 14492 standardı desteği
/JBIG2Decode ve /JBIG2Globals ile PDF 1.4 ve sonrası görüntü XObject'leri
- PDF/A çıktısı etkinken HotPDF JBIG2 yazmaz:
AddImage(..., icJBIG2) bunun yerine icCCITT42 yazar ve toplu ekleme False döndürür
- Platformlar arası tutarlılık
Ayrıca bakın |