أخطاء العرض والإدخال/الإخراج
النطاق
قسم بعنوان «النطاق»تغطي هذه المداخل استثناءات العرض والإدخال/الإخراج (I/O) المُطلَقة بينما يخطّط خط أنابيب HTML المحتوى، ويُسنِد مُحلِّل الوسائط المقسّمة على صفحات هندسة الصفحة، ويعالج مُشكِّل النص النصوص المعقّدة، وتكسر مرحلة الطباعة الأسطر، ويُسلسِل الكاتب مستندًا، ويُحلّل القارئ ملف PDF قائمًا، وتقرأ مرحلة البيانات الوصفية حزمة منصّة البيانات الوصفية القابلة للتوسعة (XMP).
يظهر هرمان أساسيان أدناه، ويحكم الفرق بينهما البيانات التشخيصية التي يمكنك قراءتها بعد catch:
NextPdfExceptionتطبّقContextAwareExceptionInterface::getContext(): array. ويُرجع التطبيق الأساسي مصفوفة فارغة؛ ولا تحمل الفئة الفرعية مفاتيح مُنظَّمة إلا حين تتجاوزgetContext(). أما الفئات الفرعية التي لا تتجاوزه فتكشف بياناتها عبر خصائصpublic readonly.- تمدّد عدة فئات هنا فئة PHP المسماة
RuntimeExceptionمباشرةً. وهي ليست مُدركة للسياق وليس لها طريقةgetContext()؛ اقرأ بدلًا من ذلكgetMessage()وأي خصائص عامة لها.
يذكر كل مدخل الفئة بالضبط، وشرط الإطلاق، ومفاتيح السياق أو الخصائص العامة التي يحملها، ومسار التعافي.
تخطيط HTML والوسائط المقسّمة على صفحات
قسم بعنوان «تخطيط HTML والوسائط المقسّمة على صفحات»UnsplittableContentException
قسم بعنوان «UnsplittableContentException»- متى يُطلَق. يُطلقه محرك تخطيط HTML عندما يكون لمحتوى مُعلَّم بـ
break-inside: avoid(خلية جدول قيد كسرهاAvoid) ارتفاع مُقاس يتجاوز الارتفاع القابل للاستعمال لصفحة واحدة. لا يستطيع المحرك أن يستوفي قيد تجنّب الكسر وحدّ الصفحة معًا، فيُخفق بدلًا من أن يفيض بصمت. - البيانات المحمولة. يمدّد
NextPdfExceptionلكنه لا يتجاوزgetContext()، لذا يُرجعgetContext()مصفوفة فارغة. والبيانات التشخيصية على خصائصpublic readonly:gridRow(int)، وgridCol(int)، وcontentHeight(float، بالنقاط)، وpageHeight(float، بالنقاط). وتذكر الرسالة إحداثيات الخلية وكلا الارتفاعين. - التعافي. أزِل قيد
break-inside: avoidعلى الخلية المُخالفة، أو قلّل محتوى الخلية ليتسع لصفحة واحدة، أو كبّر حجم الصفحة أو قلّل هوامشها حتى يستوعب الارتفاع القابل للاستعمال المحتوى.
BudgetExceededException
قسم بعنوان «BudgetExceededException»- متى يُطلَق. تُطلقه عناصر التخطيط الأولية في الوضع المُحتفَظ به عند خرق إحدى مراتب ميزانية الموارد الأربع المُعرَّفة في سجل قرار البنية ADR-020 واختيار المُستدعي للإخفاق الصارم بدلًا من الاحتياط اللطيف. لا يُطلق المسار الافتراضي شيئًا: يُرجع
ContainerLayout::acceptChild()القيمةfalse، فيسقط المُستدعي احتياطيًا إلى تخطيط الكتلة، ويُصدَر تحذير. ويُحجَز الاستثناء للتحقق وقت الإعداد وللاختبارات التي تؤكد رباعية الخرق بالضبط. والمراتب هيper-child(دفق ابن مُلتقَط يتجاوز سقفه)، وper-container(ميزانية عدّ العُقد للمرتبة 1)، وper-document(ميزانية تمريرة التخطيط أو عمق التداخل)، وglobal(سقف الذروة لحجم المجموعة المقيمة على مستوى SDK البالغ 256 ميجابايت). - البيانات المحمولة. يتجاوز
getContext()، الذي يُرجع شكلًا ثابتًا من ثمانية مفاتيح تستهلكه أدوات مراقبة أداء التطبيق (APM):budgetTier، وexceededValue، وbudgetLimit، وcontainerType، وphase، وbreachOrigin، وcaptureSize، وprocessedItemCount. والمفاتيح الأربعة الأولى هي مجموعة الإصدار v1.0.0 الأصلية وتُملأ دائمًا؛ أما الأربعة الأخيرة فقيمتها الافتراضيةnullأو0حين يُستدعى المُنشئ من دونها. ويربطgetCausalWarningCode()رباعية (المرتبة، نوع الحاوية) بـWarningCodeالذي كان مسار الاحتياط اللطيف سيُصدره. - التعافي. لخرق إعداد، اخفض القيمة المطلوبة لتعود إلى الحدّ المُوثَّق (على سبيل المثال، تقبل ميزانية العُقد المُحتفَظ بها من
5,000إلى100,000عبرConfig::withRetainedNodeBudget()). ولخرق محتوى، قلّل تداخل الحاويات أو عدد العُقد، أو اعتمد على الاحتياط اللطيف الافتراضي إلى تخطيط الكتلة بدلًا من اختيار سطح الإخفاق الصارم.
UnsupportedNamedPageException
قسم بعنوان «UnsupportedNamedPageException»- متى يُطلَق. تُطلقه مرحلة الوسائط المقسّمة على صفحات، بإخفاق آمن، عندما يُصرّح مستند بقاعدة صفحة مسماة
@page <ident> { … }(مربوطة بالمحتوى عبر الخاصيةpage: <ident>). تُحلَّل الصفحات المسماة من CSS Paged Media Level 3 §3.4 وLevel 4 §3.2 — بما في ذلك الأصناف الزائفة:firstو:leftو:rightو:blankوتجاوزاتsize:وrotate:المسماة — لكن لا يستهلكها أي مسار تخطيط إنتاجي. يرفض المحرك بدلًا من أن يُصدر الترقيم الافتراضي للصفحات الخاطئ بصمت الذي كان تجاهل القاعدة سيُنتجه. - البيانات المحمولة. يتجاوز
getContext()، الذي يُرجعpage_names(قائمة بالمُعرِّفات المتمايزة التي أطلقت الإخفاق، بترتيب المصدر)، وhas_size_override(bool)، وhas_rotate_override(bool)، وhas_pseudo_classes(bool). وتُكشَف القيم نفسها على الخصائص العامةpageNamesوhasSizeOverrideوhasRotateOverrideوhasPseudoClasses. - التعافي. أزِل قواعد
@page <ident>المسماة وأي روابطpage: <ident>، وعبّر عن الهندسة المقصودة عبر قاعدة@page { … }غير المسماة المدعومة وأشكال أصنافها الزائفة. أو بدلًا من ذلك، ثبّت على إصدار مستقبلي يُنزِل دعم تخطيط الصفحات المسماة كاملًا.
الطباعة وتشكيل النص
قسم بعنوان «الطباعة وتشكيل النص»IcuRequirementException
قسم بعنوان «IcuRequirementException»- متى يُطلَق. تُطلقه تجزئة النص عندما يحتاج إلى مُكرِّر كسر الأسطر لمكوّنات اليونيكود الدولية (ICU) بينما تكون سياسة اشتراط ICU نشطة (
NEXTPDF_REQUIRE_ICU=1) ولا يتوفّر امتدادext-intlوIntlBreakIterator. - البيانات المحمولة. يمدّد
RuntimeExceptionمباشرةً، لذا فهو ليس مُدركًا للسياق وليس لهgetContext(). وهو تنقيح صارم للاستثناء العام الذي كان مسار الشفرة نفسه يُطلقه سابقًا، لذا تبقى مُعالِجاتcatch (\RuntimeException)القائمة تعمل. - التعافي. ثبّت
ext-intlوفعّله حتى يتوفّر مُكرِّر كسر ICU، أو ألغِ ضبطNEXTPDF_REQUIRE_ICUللسقوط احتياطيًا إلى المُجزِّئ غير المعتمد على ICU حيث لا تكون سياسة اشتراط ICU إلزامية.
ScriptShaperException
قسم بعنوان «ScriptShaperException»- متى يُطلَق. هذا هو الاستثناء الأساسي لواجهة مزوّد خدمة تشكيل النصوص (SPI). وهو لا يُطلَق مباشرةً اليوم؛ بل تُطلَق أنواع فرعية فعلية بدلًا منه. اعترض هذا النوع لمعالجة أي إخفاق تشكيل في مكان واحد.
- البيانات المحمولة. يمدّد
RuntimeExceptionمباشرةً؛ ليس مُدركًا للسياق، ولا لهgetContext(). - التعافي. تفرّع بحسب النوع الفرعي الفعلي. انظر
NotYetImplementedExceptionأدناه لأجل النوع الفرعي الوحيد المشحون في الإصدار الحالي.
NotYetImplementedException
قسم بعنوان «NotYetImplementedException»- متى يُطلَق. يُطلق كل مُشكِّل نصوص نائب هذا من جسم
shape()الخاص به للنصوص التي يُؤجَّل تشكيلها الفعلي (المنغولية والتبتية). وحدّ واجهة SPI للتشكيل جاهز بنيويًا، لكن التشكيل الفعلي مُعلَّق بانتظار تثبيت يتحقّق منه ناطق أصلي. وإطلاق استثناء بدلًا من عدم تنفيذ صامت يُظهِر الربط الإنتاجي العَرَضي في وقت التشغيل بدلًا من إصدار نص غير مُشكَّل في ملف PDF يدّعي إمكانية وصول مُوسَّمة. - البيانات المحمولة. يمدّد
ScriptShaperException(ومن ثمّRuntimeException)، لذا فهو ليس مُدركًا للسياق وليس لهgetContext(). والبيانات التشخيصية على خصائصهpublic readonly:bcp47LanguageTag(وسم BCP-47 للمقطع، مثلmn-Mongأوbo-Tibt) وmissingCapability(القدرة الفعلية التي يفتقدها التنفيذ). وتتضمن الرسالة كليهما. - التعافي. لا توجّه المقاطع في النصوص غير المُنفَّذة عبر المُشكِّل في الإنتاج. اكتشف وسم اللغة في المنبع واسقط احتياطيًا إلى مسار عرض مختلف أو ثبّت على إصدار مستقبلي يُنزِل التشكيل للنص المتأثر.
ملفات تعريف خرج الكاتب والتشفير
قسم بعنوان «ملفات تعريف خرج الكاتب والتشفير»Pdf14FeatureRejectedException
قسم بعنوان «Pdf14FeatureRejectedException»- متى يُطلَق. يُطلقه الكاتب عندما يحتوي مستند ميزةً ممنوعة ضمن ملف تعريف الخرج PDF 1.4 (ISO 19005-1:2005 / PDF/A-1)، الذي يمنع البِنى المُدخَلة في إصدارات PDF اللاحقة.
- البيانات المحمولة. يمدّد
NextPdfExceptionلكنه لا يتجاوزgetContext()، لذا يُرجعgetContext()مصفوفة فارغة. والبيانات التشخيصية على خصائصهpublic readonly:feature(اسم الميزة المرفوضة)، وreason(سبب منعها)، وisoClause(مرجع بند ISO). وتجمع الرسالة الثلاثة كلها. - التعافي. أزِل الميزة المرفوضة أو استبدلها بمكافئ متوافق مع PDF 1.4، أو استهدف ملف تعريف خرج أعلى يسمح بالميزة.
Pdf20FeatureRejectedException
قسم بعنوان «Pdf20FeatureRejectedException»- متى يُطلَق. يُطلقه الكاتب عندما يحتوي مستند ميزةً ممنوعة ضمن ملف تعريف الخرج PDF 2.0 الصارم. يُهمل ISO 32000-2:2020 بِنى كان PDF 1.7 لا يزال يسمح بها — أبرزها خطوط Standard 14 Type 1 (§9.6.2)، التي يجب تضمينها في مستند PDF 2.0 مطابق.
- البيانات المحمولة. الشكل نفسه لـ
Pdf14FeatureRejectedException: يمدّدNextPdfException، ولا يتجاوزgetContext()(يُرجع مصفوفة فارغة)، ويكشفfeatureوreasonوisoClauseبوصفها خصائصpublic readonly. - التعافي. عالِج الميزة المرفوضة — على سبيل المثال، ضمّن الخطوط الأساسية الـ14 — أو خذ بمخرج الهروب المُوثَّق حيث وُجِد (للخطوط الأساسية الـ14 غير المُضمَّنة،
Document::allowNonEmbeddedBase14()).
PublicKeyEncryptionUnsupportedException
قسم بعنوان «PublicKeyEncryptionUnsupportedException»- متى يُطلَق. يُطلقه
PdfWriter::build()عند نقطة الدخول عندما يكونencryptionModeللمستند هوpubkey(قائمة مستلِمين بالمفتاح العام) قبل ربط إرسال تشفير جسم الدفق بالمفتاح العام على جانب الكاتب. ويمنع الرفض المُسبَق إصدار PDF غير مُشفَّر بصمت ظنّ المُستدعي أنه مُشفَّر. - البيانات المحمولة. يمدّد
RuntimeExceptionمباشرةً، لذا فهو ليس مُدركًا للسياق وليس لهgetContext(). وهو تنقيح صارم للاستثناء العام الذي كان الموضع نفسه يُطلقه سابقًا، لذا تبقى مُعالِجاتcatch (\RuntimeException)القائمة تعمل. - التعافي. استخدم وضع تشفير مدعومًا (التشفير المعتمد على كلمة مرور) بدلًا من قائمة المستلِمين بالمفتاح العام، أو ثبّت على إصدار يُنزِل دعم التشفير بالمفتاح العام. لا تعامل الخرج بوصفه مُشفَّرًا عند إطلاق هذا.
إدخال القارئ والبيانات الوصفية
قسم بعنوان «إدخال القارئ والبيانات الوصفية»UnsupportedPdfStructureException
قسم بعنوان «UnsupportedPdfStructureException»- متى يُطلَق. يُطلقه قارئ مخطط الكائنات، بإخفاق آمن، عندما يقع ملف PDF مُدخَل خارج حدّه المدعوم. يدعم القارئ جداول المراجع المتقاطعة الكلاسيكية (ISO 32000-2:2020 §7.5.4)، ودفوق المراجع المتقاطعة (§7.5.8)، والكائنات المضغوطة في دفق الكائنات (§7.5.7)، وسلاسل
/Prevمتعددة المراجعات (§7.5.6)، والملفات هجينة المرجع عبر/XRefStm(§7.5.8.4). وأي شيء خارج هذا الحدّ يُظهِر هذا الاستثناء بدلًا من تحليل جزئي أو مُخمَّن. وتربط المُنشئات المسماة حالات السبب:encrypted()، وdamagedCrossReference()، وcyclicReferenceChain()، وnonConformantObjectStream()، وirresolvableObjectCollision()، وtruncatedFile()، وcrossReferenceOffsetOutOfBounds(). - البيانات المحمولة. يمدّد
RuntimeExceptionمباشرةً، لذا فهو ليس مُدركًا للسياق وليس لهgetContext(). ويكشف خاصيةpublic readonlyاسمهاreasonمن النوعUnsupportedPdfStructureReason(تعداد) حتى يتفرّع المُستدعون بحسب الفئة الدقيقة من دون تحليل الرسالة؛ وقد يُضيف نصّdetailاختياري وقابل للإطلاقpreviousسياقًا محدودًا غير حساس. والرسالة الافتراضية هي الملخّص غير المُسرِّب للسبب. - التعافي. تفرّع بحسب
reason. بالنسبة إلىEncryptedDocument، شغّل خطوة فكّ تشفير قبل القراءة، لأن فكّ التشفير خارج نطاق القارئ. وبالنسبة إلىDamagedCrossReferenceأوTruncatedFileأوCrossReferenceOffsetOutOfBounds، عامِل الملف بوصفه مُشوَّهًا أو ناقصًا وأعد الحصول على المصدر أو إصلاحه. وبالنسبة إلىCyclicReferenceChainأوNonConformantObjectStreamأوIrresolvableObjectCollision، فالمُدخَل ينتهك النموذج البنيوي ولا يمكن قراءته كما هو.
PacketTooLargeException
قسم بعنوان «PacketTooLargeException»- متى يُطلَق. يُطلقه قارئ بيانات XMP الوصفية التدفّقي عندما تتجاوز حزمة XMP مُضمَّنة سقف البايت المُهيّأ. وهو حارس دفاعي ضدّ المُدخَلات بنمط توسّع الكيانات والانفجار التربيعي (سقف ذروة 128 ميجابايت مقابل XMP مُضمَّن بحجم جيجابايت).
- البيانات المحمولة. يمدّد
NextPdfExceptionلكنه لا يتجاوزgetContext()، لذا يُرجعgetContext()مصفوفة فارغة. والبيانات التشخيصية على خصائصهpublic readonly:byteCount(عدد البايتات المُلاحَظ) وcap(السقف المُهيّأ بالبايتات). وتُبلّغ الرسالة عنهما معًا. - التعافي. ارفض البيانات الوصفية مُفرِطة الحجم أو تخطّاها بوصفها خبيثة أو مُشوَّهة. وإن كان مستند مشروع يحتاج فعلًا إلى حزمة أكبر، فارفع السقف المُهيّأ عن قصد، موازنًا خطر استنزاف الذاكرة الذي وُجِد الحارس لمنعه.
انظر أيضًا
قسم بعنوان «انظر أيضًا»- فهرس مرجع الأخطاء
- استكشاف أخطاء الخطوط والوسم وإصلاحها — لأعراض
NotYetImplementedExceptionوScriptShaperExceptionوIcuRequirementException. - استكشاف أخطاء التحقق من PDF/A و PDF/UA وإصلاحها — لأعراض
Pdf14FeatureRejectedExceptionوPdf20FeatureRejectedException. - استكشاف أخطاء التشفير والأذونات وإصلاحها — لأجل
PublicKeyEncryptionUnsupportedExceptionوسبب القارئEncryptedDocument.