دعم ضغط JBIG2

ملاحظة

تتضمّن HotPDF ضغط وفكّ ترميز JBIG2 للصور الثنائية المستوى المستخدَمة في النصوص الممسوحة ضوئيًا والنماذج والرسوم الخطية

ملاحظة

  • ضغط عالي الكفاءة للصور الثنائية المستوى
  • دعم لكل من وضعي الضغط مع فقدان (lossy) ودون فقدان (lossless)
  • دعم لكل من وضعي الضغط مع فقدان (lossy) ودون فقدان (lossless)
  • دعم لكل من وضعي الضغط مع فقدان (lossy) ودون فقدان (lossless)
  • دعم لكل من وضعي الضغط مع فقدان (lossy) ودون فقدان (lossless)
  • دعم لكل من وضعي الضغط مع فقدان (lossy) ودون فقدان (lossless)
  • دعم لكل من وضعي الضغط مع فقدان (lossy) ودون فقدان (lossless)

فوائد الضغط

  • إعادة الاستخدام عبر الصفحات: تُصنَّف الرموز المتكرّرة مرة واحدة وتُخزَّن في بيانات عامة مشتركة
  • مطابقة الرموز: مع UseSymbolDictionary تُخزَّن المكوّنات السوداء المتصلة المتكررة مرة واحدة كرموز، ويتيح LossyLevel للمكوّنات المتطابقة تقريبًا مشاركة رمز واحد
  • كفاءة الذاكرة: محسّن لمعالجة المستندات الممسوحة ضوئيًا الكبيرة

ملاحظة

  • مستندات نصية ممسوحة ضوئيًا
  • مستندات نصية ممسوحة ضوئيًا
  • مستندات نصية ممسوحة ضوئيًا
  • مستندات نصية ممسوحة ضوئيًا
  • مستندات نصية ممسوحة ضوئيًا

ملاحظة

يوفّر تنفيذ JBIG2 مسارات Pascal أصلية وخلفية خارجية ساكنة اختيارية عبر واجهات API هذه

  • THPDFJBIG2Decoder: فئة فك الترميز الأساسية لبيانات JBIG2 المضغوطة
  • THPDFJBIG2Decoder: فئة فك الترميز الأساسية لبيانات JBIG2 المضغوطة
  • THPDFJBIG2Decoder: فئة فك الترميز الأساسية لبيانات JBIG2 المضغوطة
  • THPDFJBIG2Decoder: فئة فك الترميز الأساسية لبيانات JBIG2 المضغوطة
  • THPDFJBIG2Decoder: فئة فك الترميز الأساسية لبيانات JBIG2 المضغوطة
  • مرمِّز دفعة عابر للصفحات: يتدرّب THPDFJBIG2Encoder.EncodePagesToByteArrays عبر الدفعة الكاملة ويُعيد تدفق صفحة واحد لكل مُدخل بالإضافة إلى بيانات عامة مشتركة
  • عقد الدفعة: يصف TJBIG2BatchPage صفحة مُحزَّمة واحدة، ويحدّد TJBIG2BatchEncodeBackend التنفيذ المختار، وتُعرِّف TJBIG2BatchEncodeCallback تكاملات الدفعات الخارجية
  • التكامل مع المستند: ترمّز THotPDF.AddJBIG2ImageBatch وTHotPDF.AddJBIG2BitmapBatch قبل تعديل رسم PDF البياني، وتُرفقان تدفق /JBIG2Globals مشتركًا، وتُعيدان فهارس الصور بترتيب المُدخل
  • قياسات الدفعة: تُبلغ TJBIG2BatchEncodeStatistics عن الخلفية المختارة، وحجمَي المُدخل والمُخرَج، وعدد الرموز الأصلية، ورفض الميزانية
  • استعادة الخلفية: تستعيد HPDFJBIG2EncRegisterBackends كلا استدعاءَي المرمِّز المدمَجَين بعد مسح تجاوزات التطبيق المؤقتة
  • THPDFJBIG2Decoder: فئة فك الترميز الأساسية لبيانات JBIG2 المضغوطة
  • فكّ ترميز المنطقة المرئية: تخصّص THPDFJBIG2Decoder.LoadRegionFromByteArray النافذة المطلوبة فقط، وتحسم اعتمادياتها القاموسية غير المباشرة، وتُركّب مناطق الصفحة المتقاطعة مع القص (clipping)، وتتخطّى المناطق المستقلة خارج النافذة قبل فكّ ترميز الإنتروبيا
  • قياسات فكّ ترميز المنطقة: تُبلغ LastRegionDecodeStats عن عدد المناطق المفكوكة الترميز والمُتخطَّاة بالإضافة إلى بكسلات المصدر المفكوكة الترميز، بينما تميّز UsedIncrementalRegionDecode بين مسار النافذة الأصلي والتراجع إلى فكّ الترميز الكامل
  • THPDFJBIG2Decoder: فئة فك الترميز الأساسية لبيانات JBIG2 المضغوطة

ملاحظة


// 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;
        

خيارات المرمِّز والخلفيات

  • THotPDF.JBIG2Options: خاصية THPDFJBIG2Options الخاصة بالمستند، التي يحوّلها AddImage(..., icJBIG2) إلى TJBIG2EncodeOptions. قيمها الافتراضية تناسب المسح الضوئي: Lossless=True وLossyLevel=5 وRemoveIsolatedBlackPixels=True وBlackDotSize=3
  • إزالة النقاط الصغيرة: ما دامت RemoveIsolatedBlackPixels تساوي True، تُمسح المكوّنات السوداء المتصلة التي يقل عرضها وارتفاعها كلاهما عن BlackDotSize قبل الترميز، فتزيل القيم الافتراضية النقاط بحجم 2 × 2 بكسل وأصغر. اضبطها على False عندما يجب أن يطابق الناتج الصورة النقطية بكسلًا ببكسل
  • اختيار المرمِّز: القيمة UseExternalEncoder (افتراضيًا True) تستخدم المرمِّز الحسابي عالي الأداء المسجَّل؛ وعندما تكون متوقفة أو غائبة أو تفشل، يُكتب generic region بـ MMR دون فقدان ومدمج. القيمة UseNativeArithmeticFallback=True تجرّب مرمِّز Pascal الحسابي المدمج قبل MMR، ومع UseSymbolDictionary=True يجرّب أولًا قاموس رموز مع مناطق نصية
  • DefaultJBIG2EncodeOptions: الخيارات التي يستخدمها THPDFJBIG2Encoder المستقل: دون فقدان، مع LossyLevel=0 ودون إزالة نقاط
  • اختيار المفكِّك: القيمة THotPDF.UseExternalJBIG2Decoder (افتراضيًا True) تفك ترميز صور /JBIG2Decode المحمّلة بالخلفية عالية الأداء عندما تكون متاحة؛ والقيمة False تستخدم مفكِّك Pascal المدمج
  • خلفيات مخصصة: يثبّت RegisterJBIG2EncoderBackend وRegisterJBIG2DecoderBackend استدعاءات تطبيق رجعية، ويبلغ عنهما IsJBIG2EncoderBackendAvailable وIsJBIG2DecoderBackendAvailable، ويزيلهما ClearJBIG2Backends

مرجع الفئات

THPDFJBIG2Decoder

  • LoadFromByteArray: تحميل بيانات JBIG2 من مصفوفة بايتات؛ ويعيد False عندما تكون البيانات غير مكتملة أو غير مدعومة
  • GetScanline: استرجاع بيانات سطر مسح محدد
  • Width/Height: خاصيات أبعاد الصورة

تحسين الأداء

  • تُضغَط مجموعة مسح ثابتة من 100 صفحة من 158,300 بايت باستخدام مناطق عامة (generic) منفصلة إلى 33,600 بايت باستخدام تدريب خارجي عبر الصفحات، أي تخفيض بنسبة 78.8 بالمئة
  • تُكمل المجموعة نفسها في اختبار الانحدار خلال 11 ms بدلًا من 53 ms على Win64 وخلال 16 ms بدلًا من 77 ms على Win32
  • البحث من صفحة إلى رمز مفهرَس، وتدفقات الصفحات المشفَّرة المتكررة تُخزَّن مؤقتًا لاستخراج دفعات بزمن ثابت
  • معالجة أسطر المسح بكفاءة ذاكرة
  • محسّن للتعامل مع المستندات الكبيرة
  • أثر ذاكرة أدنى أثناء فك الضغط

التوافق مع المعايير

  • التوافق مع معيار ITU-T T.88
  • دعم معيار ISO/IEC 14492
  • كائنات XObject من نوع صورة بإصدار PDF 1.4 أو أحدث مع /JBIG2Decode و/JBIG2Globals
  • لا يكتب HotPDF بيانات JBIG2 أثناء تفعيل إخراج PDF/A: يكتب AddImage(..., icJBIG2) قيمة icCCITT42 بدلًا منها ويعيد الإدراج الدفعي False
  • اتساق عابر للمنصات

ملاحظة