التحقق من رسم مقاطع JBIG2

يتحقق HotPDF من صور JBIG2 المضمَّنة وتدفقات JBIG2Globals قبل أن يستلمها مفكك أصلي أو خارجي

يُجري المتحقق اجتيازًا واحدًا محدودًا للمقاطع يتبعه اجتياز تكراري لرسم الاعتماديات، مستخدمًا بحثًا مفهرسًا بأرقام المقاطع بدلًا من إعادة المسح

التحقق قبل المعالجة المخصصة

Options := DefaultJBIG2SegmentGraphValidationOptions;
Options.MaxSegments := 32768;
Options.MaxTotalReferences := 131072;
Options.MaxReferenceDepth := 512;
Options.MaxSymbols := 500000;

if not HPDFValidateJBIG2SegmentGraph(ImageData, GlobalData,
  Options, Info) then
  raise Exception.Create(string(
    HPDFJBIG2SegmentGraphValidationStatusName(Info.Status)));

يُبلغ TJBIG2SegmentGraphValidationInfo عن عدد المقاطع والحواف، والرموز الجديدة المعلنة، وأقصى عمق اعتماديات، والتدفق وإزاحة البايت ورقم المقطع ورقم المرجع المرتبطة بأول فشل

توجد الميزانيات في سجل TJBIG2SegmentGraphValidationOptions الذي تحدد حقوله MaxSegments وMaxReferencesPerSegment وMaxTotalReferences وMaxReferenceDepth وMaxSymbols حدود كل اجتياز

الحالة النهائية هي قيمة من نوع TJBIG2SegmentGraphValidationStatus تمتد من «لم يُفحص» و«صالح» مرورًا برفض الخيارات وإخفاقات الترويسات والمراجع والدورات وانتهاكات قواميس الرموز، ويعيدها HPDFJBIG2SegmentGraphValidationStatusName في صورة نص

يستخدم FailureStreamKind نوع TJBIG2SegmentStreamKind للدلالة على ما إذا وُجد أول فشل في تدفق المقاطع العامة (jbsskGlobals) أم في تدفق الصورة (jbsskImage)

يحتفظ THPDFJBIG2Decoder.LastSegmentGraphValidationInfo بالتقرير نفسه بعد LoadFromByteArray أو LoadRegionFromByteArray

حالات الإغلاق الفاشل

يرفض التحقق الرؤوس غير السليمة البنية أو المبتورة، ورؤوس الملفات المستقلة داخل التدفقات المضمَّنة، وجداول المراجع القصيرة المحظورة والطويلة المتجاوزة للحجم، ومعرِّفات المقاطع المكررة أو المفقودة، والاعتماديات المتجهة للأمام فيزيائيًا، ودورات الاعتماديات، والعمق المفرط، وتجاوز ميزانيتي المقاطع والحواف المضبوطتين

يجب أن تستخدم مقاطع الصور اقتران الصفحة 1، والمقاطع العامة اقتران الصفحة 0، ولا يجوز لمقطع عام أن يعتمد على مقطع صورة

تُرفض مقاطع نهاية الصفحة ونهاية الملف ولوحة الألوان المضمَّنة، وكذلك مقاطع المناطق الخاصة بالصفحات ومقاطع معلومات الصفحة الموضوعة في JBIG2Globals

تُفحص رؤوس قواميس الرموز قبل فك الترميز، حتى تفشل أعداد الرموز الجديدة والمصدَّرة المعلنة، وتجمعات رموز الإدخال المجمَّعة، ومجاميع التصدير المستحيلة، قبل تخصيص الصور النقطية

حدود المفكك وذاكرة المقاطع العامة المؤقتة

تتشاطر THPDFJBIG2Decoder وHPDFJBIG2NativeMMRDecode وHPDFJBIG2NativeRegionDecode والاستدعاءات المضمَّنة لـ HPDFJBIG2DecDecodeEx السياسة نفسها

تستخدم الخلفيات الأصلية والخارجية المسجلة مسارات داخلية متحقَّق منها بالفعل، ما يجنّب اجتيازًا مكررًا للرسم أثناء الفك الاعتيادي

لا يقبل THPDFJBIG2GlobalsPool.Register سوى تدفق مقاطع عامة صالح، ما يمنع القواميس المشتركة غير السليمة البنية من الدخول في إعادة الاستخدام على مستوى المستند

تحتفظ ملفات JBIG2 المستقلة الممرّرة بـ Embedded = False بمسار فك الترميز الموجه للملفات المنفصل

انظر دعم ضغط JBIG2، وTHPDFJBIG2Decoder.LoadFromByteArray، وTHPDFJBIG2Decoder.LoadRegionFromByteArray