|
دعم ضغط 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
- اتساق عابر للمنصات
ملاحظة
|