أخطاء النواة والأخطاء العامة
النطاق
قسم بعنوان «النطاق»تغطي هذه المداخل الاستثناءات الأساسية والعامة الغرض التي يُطلقها NextPDF. ويمدّد معظمها الأساس NextPdfException، الذي يمدّد بدوره \RuntimeException ويطبّق ContextAwareExceptionInterface. وتكشف تلك الواجهة طريقةً واحدة، getContext(): array، تُرجع خريطة مسطّحة بنمط snake_case من العناصر الأولية الآمنة للتسلسل إلى سجلّ أو حمولة APM.
اعترض عائلة NextPdfException بـcatch (NextPdfException $e) واحدة. وأضِف catch (\RuntimeException $e) أيضًا لتغطية الأخطاء القليلة منخفضة المستوى في هذه المجموعة التي تمدّد \RuntimeException مباشرةً (مذكورة أدناه). يُرجع الأساس NextPdfException::getContext() مصفوفة فارغة؛ وتتجاوزه الفئات الفرعية لإضافة حقول مجال. وحيث لا تتجاوز فئة getContext()، فإنها ترث المصفوفة الفارغة وتعيش التفاصيل التشخيصية في الرسالة وفي المُلتقِطات ذات الأنواع بدلًا من ذلك.
أربعة أنواع في هذه المجموعة لا تمدّد NextPdfException: تمدّد BlackPointCompensationUnsupportedException وUnsupportedSourceDocumentException فئة \RuntimeException مباشرةً (اعترضها بوصفها \RuntimeException)، وComplianceViolation وRuleViolation كائنا قيمة، لا استثناءان — وهما مُوثَّقان هنا لأنهما يُنمذِجان بيانات الخطأ والانتهاك التي يُرجعها المحرك.
الاستثناء الأساسي
قسم بعنوان «الاستثناء الأساسي»NextPdfException
قسم بعنوان «NextPdfException»- ما هو. أساس
abstractلكل استثناء يُطلقه NextPDF core وحزم امتداده. يمدّد\RuntimeExceptionويطبّقContextAwareExceptionInterface. واعتراض هذا النوع الواحد يعترض أي خطأ في المكتبة. - السياق. يُرجع الأساس
getContext()مصفوفة فارغة. وتتجاوزه الفئات الفرعية لإرجاع حقول خاصة بالمجال. - التعافي. لا يُطلَق مباشرةً. استخدمه بوصفه نوع الاقتناص الجامع؛ وتفرّع على الفئة الفرعية الفعلية للمعالجة المحددة.
التهيئة وبوّابة الميزات
قسم بعنوان «التهيئة وبوّابة الميزات»InvalidConfigException
قسم بعنوان «InvalidConfigException»- متى يُطلَق. عندما تكون قيمة
Configأو تركيبة قيم غير صالحة — إعداد مطلوب مفقود، أو خيار مُتنافٍ، أو قيمة خارج نطاقها المقبول. وهذا يُشير إلى خطأ مطوِّر: قدّمت الشفرة المُستدعية تهيئةً يجب تصحيحها قبل إعادة المحاولة. وتُبلّغ الرسالة عن المفتاح، والنوع أو النطاق المتوقَّع، ونوع التصحيح الفعلي للقيمة المُقدَّمة. - السياق. يُرجع
getContext()القيمconfig_keyوgiven_valueوexpected_type. المُلتقِطات ذات الأنواع:getConfigKey()وgetGivenValue()وgetExpectedType(). - التعافي. إجراء مطوِّر: أصلِح مفتاح التهيئة المسمى إلى قيمة من النوع أو النطاق المتوقَّع قبل استدعاء NextPDF مرة أخرى.
NotImplementedException
قسم بعنوان «NotImplementedException»- متى يُطلَق. عند بلوغ نقطة دخول واجهة API عامة بينما يكون تطبيقها غائبًا عمدًا في الإصدار الحالي. يُستخدَم لطبقات التوافق المُهملة الموجودة لتمنح المُستدعين السابقين للتقسيم الثنائي إخفاقًا صاخبًا قابلًا للتنفيذ بدلًا من عدم تنفيذ صامت. وتجمع الرسالة وسم
featureقابلًا للبحث بـgrep ومرجعfollowUp(مُعرِّف عيب، أو مرساة تتبّع، أو اسم سباق سريع). - السياق. لا يتجاوز
getContext()، فيُرجع مصفوفة فارغة. والقيمتان$featureو$followUpخاصيتان عامتان للقراءة فقط ومُضمَّنتان في الرسالة. - التعافي. إجراء مُستدعي المكتبة: أزِل الاستدعاء، أو ثبّت على إصدار مستقبلي يُنزِل المتابعة المسماة.
IncompatibleFeatureFlagsException
قسم بعنوان «IncompatibleFeatureFlagsException»- متى يُطلَق. وقت بناء
Config(Config::validate()) عندما تكون تركيبةCssFeatureFlagsغير متّسقة داخليًا — راية تفترض مسبقًا أخرى مُعطَّلة. والتركيبة الوحيدة الممنوعة اليوم هيlayoutSubgrid = trueمعlayoutGrid = false: فمحور مُشبَّك فرعيًا يشتقّ أسطر شبكته من حاوية شبكة أصل (CSS Grid Layout Module Level 2 §1)، لذا فالشبكة الفرعية دون شبكة تصف شبكةً لا يمكن أن توجد. ويعمل الفحص مقابل الرايات المُحلّلة، فيُقنِّعCssRenderingMode::Safe(الذي يُجبر كل ميزة من Phase 4 فما فوق على الإيقاف) التركيبة بدلًا من تعثّرها. يمدّدStrictModeViolation. - السياق. يدمج
getContext()حقول الوضع الصارم للأب (cssDeviationوexcIdوchunkSha256وlocation) مع القيمتين المنطقيتينlayoutGridوlayoutSubgrid. ويكونlocationهوConfig::validate()ويُرمِّزcssDeviationزوج الرايتين. - التعافي. إجراء مُستدعي المكتبة: فعّل
layoutGridإلى جانبlayoutSubgrid، أو عطّلlayoutSubgrid.
IncompatibleRenderingModeException
قسم بعنوان «IncompatibleRenderingModeException»- متى يُطلَق. وقت بناء
Configعندما يقع اقترانCssRenderingModeوCssLayoutModeخارج الخلايا المتوافقة في مصفوفة الأوضاع. والاقتران الوحيد الممنوع اليوم هوCssRenderingMode::Safe+CssLayoutMode::Retained— يُجبر Safe كل ميزة من Phase 4 فما فوق على الإيقاف، فيترك سياقات تنسيق الوضع المُحتفَظ به (Grid وSubgrid و@container) بلا مستهلكين، لذا تُرفض التركيبة بدلًا من السماح لها بالتدهور بصمت. يمدّدStrictModeViolation. - السياق. يدمج
getContext()حقول الوضع الصارم للأب معmode1(قيمة وضع العرض) وmode2(قيمة وضع التخطيط). ويُرمِّزcssDeviationزوج الأوضاع؛ وlocationهوConfig::validate(). - التعافي. إجراء مُستدعي المكتبة: اختر
Safe+Streamingللتراجع، أو وضع عرض غير Safe (Normal/Strict/Audit) معRetainedلأجل Grid / Subgrid / استعلامات الحاوية.
StrictModeViolation
قسم بعنوان «StrictModeViolation»- متى يُطلَق. أساس
abstractلأي استثناء انحراف عن المواصفة يُطلَق تحتCssRenderingMode::Strict. في الوضع الصارم، يُطلق أي انحراف CSS مُكتشَف غير مرتبط بمدخل استثناءEXC-NNNمُسجَّل نسخةً من هذه الفئة (أو فئة فرعية) عند نقطة الاكتشاف. لا يُطلَق مباشرةً؛ انظرIncompatibleFeatureFlagsExceptionوIncompatibleRenderingModeException. - السياق. يُرجع
getContext()حقول ADR-023 الأربعة:cssDeviation(وسم قصير للبنية المنحرفة)، وexcId(مُعرِّف السجلّ عند التسجيل، وإلّاnull)، وchunkSha256(تجزئة كتلة استشهاد المواصفة عند معرفتها، وإلّاnull)، وlocation(أصل قابل لقراءة المُستدعي، وإلّاnull). - التعافي. إجراء مُستدعي المكتبة: سجّل الانحراف بوصفه مدخل
EXC-NNNجديدًا مُوقَّعًا، أو أصلِح المُصيِّر لإزالة الانحراف.
مُدخَل HTML و CSS
قسم بعنوان «مُدخَل HTML و CSS»HtmlParsingException
قسم بعنوان «HtmlParsingException»- متى يُطلَق. عندما يُخفق تحليل مُدخَل HTML أو بناء DOM: تصاريح مجموعة محارف غير صالحة، وانتهاكات حدّ حجم المُدخَل، وعمق تداخل مُفرِط، وفيوض عدّ العناصر، وأخطاء بنية الجدول مثل أقصى عدّ للصفوف. ويُبلِّغ عن استنزاف الموارد الخاص بـCSS بدلًا من ذلك
CssParserLimitExceededExceptionوCssResolutionBudgetExceededException. - السياق. يُرجع
getContext()القيمhtml_snippet(مقتطف قصير مُقتطَع من HTML المُخالف)، وposition(إزاحة بايت، أو-1إن كانت غير معروفة)، وrule(قيد المُحلِّل المُنتهَك). المُلتقِطات ذات الأنواع:getHtmlSnippet()وgetPosition()وgetRule(). - التعافي. إجراء مطوِّر: بسّط مُدخَل HTML أو عدّل حدود المُحلِّل.
CssParserLimitExceededException
قسم بعنوان «CssParserLimitExceededException»- متى يُطلَق. عندما يتجاوز مُدخَل CSS حدّ سلامة مُهيّأ للمُحلِّل. وتُغطّى فئتان عبر المُنشئات المسماة:
forByteLimit()(ورقة أنماط كبيرة أكثر من اللازم لمعالجة آمنة بالتعبيرات النمطية) وforNestingDepth()(عمق تكرار تداخل CSS كبير أكثر من اللازم). وتذكر كلتا الرسالتين القيمة الفعلية والحدّ. - السياق. يُرجع
getContext()القيمlimit_type(byteأوnesting_depth)، وactual، وlimit. - التعافي. إجراء مطوِّر: قسّم ورقة الأنماط إلى أوراق أصغر، أو قلّل عمق التداخل، أو ارفع الحدّ المُهيّأ.
CssResolutionBudgetExceededException
قسم بعنوان «CssResolutionBudgetExceededException»- متى يُطلَق. عندما يتجاوز حلّ CSS
:has()ميزانية اجتيازه. ويفرض مُحلِّل:has()ثنائي التمريرة ميزانية زيارة عُقد صارمة لمنع المُحدِّدات المرضية من إحداث مرور تربيعي على المستند؛ وبمجرد تجاوز عدّ الزيارات الكلي الحدّ، تُرفض ورقة الأنماط بوصفها معقّدة أكثر من اللازم. وتذكر الرسالة عدّ الزيارات والميزانية. - السياق. يُرجع
getContext()القيمتينvisitsوbudget. المُلتقِطات ذات الأنواع:getVisits()وgetBudget(). - التعافي. إجراء مطوِّر: قلّل تعقيد المُحدِّد، أو ارفع الميزانية المُهيّأة.
الخطوط والصور
قسم بعنوان «الخطوط والصور»FontNotFoundException
قسم بعنوان «FontNotFoundException»- متى يُطلَق. عندما لا يمكن تحديد موقع ملف خط أو قراءته على مستوى نظام الملفات: العائلة أو المسار المطلوب غير موجود، أو غير قابل للقراءة، أو دليل الخطوط المُهيّأ غير قابل للوصول. وقد تكون بيانات الخط صالحة — فهذا يُشير فقط إلى أنه لا يمكن بلوغها. وتسرد الرسالة المسارات المُبحوث فيها.
- السياق. يُرجع
getContext()القيمfont_name، وsearch_paths(قائمة)، وfallback_attempted(قيمة منطقية). المُلتقِطات ذات الأنواع:getFontName()وgetSearchPaths()وwasFallbackAttempted(). - التعافي. إجراء مطوِّر: تحقّق من مسار الخط. إجراء بنية تحتية: أصلِح أذونات الملفات على ملف الخط أو الدليل.
FontParsingException
قسم بعنوان «FontParsingException»- متى يُطلَق. عندما يوجد ملف خط لكن محتوياته غير قابلة للاستعمال: فهو تالف، أو بصيغة غير مدعومة، أو يفتقد جداول مطلوبة. ويغطي إخفاقات التحقق البنيوي أثناء تحليل TrueType وType 1 وCFF وOpenType — ترويسات مُقتطَعة، وأدلة جداول غير صالحة، وجداول إلزامية مفقودة (
headوhheaوOS/2)، وأخطاء فكّ التحزيم، وانتهاكات الحجم. وتذكر الرسالة الملف وخطأ التحليل. - السياق. يُرجع
getContext()القيمتينfont_fileوparse_error. المُلتقِطات ذات الأنواع:getFontFile()وgetParseError(). - التعافي. إجراء مطوِّر: استبدل ملف الخط بآخر صالح.
ImageProcessingException
قسم بعنوان «ImageProcessingException»- متى يُطلَق. عندما لا يمكن فكّ ترميز صورة، أو تكون بصيغة غير مدعومة، أو تُخفق في معالجة GD/Imagick: بايتات سحرية غير مُتعرَّف عليها، وبيانات JPEG تالفة، وأنواع MIME غير مدعومة، وانتهاكات حدّ حجم الملف، وإخفاقات تخصيص موارد GD. وكانت الصورة قابلة للوصول لكن بيانات بكسلاتها لم يمكن استخراجها للتضمين.
- السياق. يُرجع
getContext()القيمimage_path(فارغ للبيانات المُضمَّنة)، وformat(المُكتشَف أو المتوقَّع، على سبيل المثالjpeg،png،unknown)، وoperation(على سبيل المثالdecode،resize،embed). المُلتقِطات ذات الأنواع:getImagePath()وgetFormat()وgetOperation(). - التعافي. إجراء مطوِّر: وفّر ملف صورة صالحًا ومدعومًا.
الخرج والتخطيط والتسلسل
قسم بعنوان «الخرج والتخطيط والتسلسل»CompressionException
قسم بعنوان «CompressionException»- متى يُطلَق. عندما يُخفق ضغط FlateDecode (zlib) أو فكّ ضغطه — إخفاقات
gzcompress/gzuncompressعلى دفوق المحتوى، وبيانات الخط، ومحتوى الصفحة، وبيانات المرفقات، ودفوق المراجع المتقاطعة. وعادةً دفق مُدخَل تالف، أو ذاكرة غير كافية، أو امتداد zlib مفقود. - السياق. يُرجع
getContext()القيمتينalgorithm(اسم المُرشِّح، على سبيل المثالFlateDecode،LZWDecode) وstream_length(طول البايت، أو-1إن كان غير معروف). المُلتقِطات ذات الأنواع:getAlgorithm()وgetStreamLength(). - التعافي. إجراء بنية تحتية: تحقّق من تحميل
ext-zlibومن كفاية الذاكرة.
WriterException
قسم بعنوان «WriterException»- متى يُطلَق. عندما يُخفق تسلسل PDF أو خطيّته أو خرج الإدخال/الإخراج: أخطاء كتابة دفق
PdfWriter، وتلف جدول المراجع المتقاطعة، وإخفاقات توليد الترويسة/المُذيَّل، وإخفاقات حلّ مرجع الكائن، وأخطاء كتابة الملف، وفيوض مخزن الخرج المؤقت. ولم يمكن تسلسل مستند صالح في الذاكرة إلى دفق بايتات صالح. وتذكر الرسالة المرحلة. - السياق. يُرجع
getContext()القيمتينoutput_path(فارغ لخرج السلسلة) وwriter_state(المرحلة، على سبيل المثالheader،body،xref،trailer). المُلتقِطات ذات الأنواع:getOutputPath()وgetWriterState(). - التعافي. إجراء بنية تحتية: تحقّق من مساحة القرص، وأذونات الملفات، ودفق الخرج.
PageLayoutException
قسم بعنوان «PageLayoutException»- متى يُطلَق. عندما لا يمكن استيفاء قيود تخطيط الصفحة: انتهاكات تخطيط الأعمدة (عرض غير كافٍ، عدّ أعمدة غير صالح)، وفيض المحتوى خارج حدود الصفحة، وتعارضات الهوامش. والتخطيط المطلوب مستحيل هندسيًا لأبعاد الصفحة والمحتوى المُعطَيين. وتذكر الرسالة رقم الصفحة عند معرفته والقيد المُنتهَك.
- السياق. يُرجع
getContext()القيمتينpage_number(مبدوءًا من واحد، أو0إن كان غير معروف) وconstraint. المُلتقِطات ذات الأنواع:getPageNumber()وgetConstraint(). - التعافي. إجراء مطوِّر: عدّل حجم الصفحة، أو الهوامش، أو إعدادات الأعمدة، أو المحتوى.
TemplateException
قسم بعنوان «TemplateException»- متى يُطلَق. عندما تُخفق عملية استيراد قالب PDF أو إعادة استخدامه في
TemplateManager: انتقالات حالة قالب غير صالحة (بدء القوالب أو إنهاؤها خارج التسلسل)، والإشارة إلى قالب غير موجود، وإخفاقات ضغط الدفق أثناء تسلسل القالب. وتذكر الرسالة العملية ومُعرِّف القالب عند تخصيصه. - السياق. يُرجع
getContext()القيمتينtemplate_id(فارغ إن لم يُخصَّص بعد) وoperation(على سبيل المثالbegin،end،use،serialize). المُلتقِطات ذات الأنواع:getTemplateId()وgetOperation(). - التعافي. إجراء مطوِّر: أصلِح تسلسل استخدام القالب أو ملف PDF المصدر.
ثوابت دفق المحتوى
قسم بعنوان «ثوابت دفق المحتوى»ContentStreamBalanceException
قسم بعنوان «ContentStreamBalanceException»- متى يُطلَق. عندما يكتشف
ContentStreamBuilderزوج عوامل غير متوازن عند إغلاق الدفق (أو في منتصف الدفق عند تأكيد الثوابت بحماسة). ويلتقط عدّادات العمق التي أخفقت في ثابت التوازن حتى يستطيع التسجيل تحديد أي مُصدِر سرّبqأوBTأوBMCدون مطابِقهQأوETأوEMC. وفق ISO 32000-2:2020 §8.4.2 (مكدّس حالة الرسوميات)، و§9.4.1 (كائنات النص)، و§14.6 (المحتوى المُعلَّم). - السياق. يُرجع
getContext()القيمgraphics_depth، وtext_block_depth، وmarked_content_depth، وoffending_operator. المُلتقِطات ذات الأنواع:getGraphicsDepth()وgetTextBlockDepth()وgetMarkedContentDepth()وgetOffendingOperator(). - التعافي. إجراء مطوِّر: حدّد موقع المُصدِر الذي فتح بنيةً دون إغلاقها.
GraphicsStateBalanceException
قسم بعنوان «GraphicsStateBalanceException»- متى يُطلَق. عندما يُغلَق دفق محتوى PDF بعوامل
q/Qغير متوازنة. يتطلب ISO 32000-2:2020 §8.4.2 أن يُطابَق كل حفظ لحالة الرسوميات (q) باستعادة واحدة بالضبط (Q) قبل انتهاء الدفق؛ ويُسرِّب عدم التوازن التحويل، ومسار القَصّ، والألوان، ونيّة العرض إلى الصفحات اللاحقة أو إلى Form XObjects. لا يُطلَق إلّا عند تفعيل الفحص الصارم لحالة الرسوميات (NEXTPDF_GFXSTATE_STRICT=1)؛ وفي الوضع المُرخى يُصدَر تحذير عبرtrigger_error()بدلًا من ذلك. - السياق. يُرجع
getContext()القيمةsave_depth(موجبة لكثرة عمليات الحفظ، سالبة لكثرة عمليات الاستعادة). المُلتقِط ذو النوع:getSaveDepth(). - التعافي. إجراء مطوِّر: حدّد موقع زوج
save()/restore()غير المُطابَق.
MissingShadingResourceException
قسم بعنوان «MissingShadingResourceException»- متى يُطلَق. عندما يُستدعى
ConicGradientRenderer::render()دون سياق سجلّ موارد التظليل. أزال التغيير الكاسر في v10.0.0 مسار البديل السابق المعتمد على خريطة العلامات الضمنية: يجب على المُستدعين بناء المُصيِّر بـShadingResourceRegistryInterfaceحتى يُسجَّل الكائن غير المباشر/ShadingType 4مقابل القاموس الفرعي لموارد التظليل في الصفحة (ISO 32000-2 §8.7.4.2 / §8.7.4.3). وتذكر الرسالة سياق المُستدعي وتُشير إلى ملاحظة الترحيل من v9.x إلى v10.0. - السياق. يُرجع
getContext()القيمةcontext(وسم سياق مُستدعي قصير، على سبيل المثالConicGradientRenderer::render). - التعافي. إجراء مُستدعي المكتبة: صِل نسخة سجلّ موارد تظليل في مُنشئ المُصيِّر قبل استدعاء
render().
الخطية (العرض السريع على الويب)
قسم بعنوان «الخطية (العرض السريع على الويب)»LinearizationInvariantException
قسم بعنوان «LinearizationInvariantException»- متى يُطلَق. عندما يكتشف
Linearizerثلاثي التمريرة من الإصدار v2 أن تأكيداته MEASURE → PLACE → FILL قد انتُهكت: عدّ بايتات في التمريرة 3 لا يطابق طول الملف المتوقَّع في التمريرة 1 (انحراف الإزاحة)، أو عنصر نائب لقاموس الخطية صغير أكثر من اللازم للعرض المُسلسَل، أو إزاحة دفق تلميح/H [offset length]لا تطابق الخرج النهائي. وإظهار هذا بدلًا من إصدار PDF معطوب ضمان سلامة مُعلَن. - السياق. يُرجع
getContext()القيمinvariant(اسم الثابت المُنتهَك)، وexpected، وactual، وdelta(الفرق المُوقَّع). المُلتقِطات ذات الأنواع:getInvariant()وgetExpectedValue()وgetActualValue(). - التعافي. إجراء مُشرِف: أعِدّ تقرير عيب — فهذه الثوابت ينبغي أن تصمد لكل المُدخَلات سليمة الشكل. التقط الاستثناء السابق المُتسلسل.
LinearizationUnimplementedException
قسم بعنوان «LinearizationUnimplementedException»- متى يُطلَق. عندما تُضبَط راية ميزة المُخطِّط على خلفية مُعطَّلة عمدًا. يُطلَق حاليًا فقط لـ
linearizerVersion === 'v1-noop'، إعداد التخفيض الطارئ الذي يرفض كل محاولات الخطية في وقت التشغيل دون تغيير شفرة أو إعادة نشر — مفيد لمفتاح إيقاف العرض السريع على الويب في الإنتاج. - السياق. يُرجع
getContext()القيمةreason(شرح قصير قابل لقراءة الإنسان). المُلتقِط ذو النوع:getReason(). - التعافي. إجراء مُشغِّل / هندسة إصدار: عدّل التهيئة أو رقِّ إلى إصدار خلفية مُصلَح.
ثوابت المطابقة وملف التعريف
قسم بعنوان «ثوابت المطابقة وملف التعريف»ConformanceViolationException
قسم بعنوان «ConformanceViolationException»- متى يُطلَق. عندما لا يمكن إصدار ميزة مطلوبة دون كسر عقد مطابقة ISO المُعلَن للمستند، ويُخفق المحرك بأمان بدلًا من كتابة كائن غير مطابق. والمُطلِق المعياري هو تعليق
Screenمتعدد الوسائط أو إجراءRendition(ISO 32000-2:2020 §12.5.6.18 / §13.2) تحت ملف تعريف PDF/A أرشيفي، وهو ما يمنعه كل جزء من PDF/A (سلسلة ISO 19005) — فالملف سيُخفق في التحقق بـveraPDF، لذا يرفض المحرك مُسبقًا. - السياق. يُرجع
getContext()القيمتينconformance_mode(الوضع المُعلَن، على سبيل المثالpdfa4) وfeature(الميزة المرفوضة، على سبيل المثالScreen annotation). وكلاهما خاصيتان عامتان للقراءة فقط. والسبب هو رسالة الاستثناء. - التعافي. إجراء مطوِّر: أسقِط استدعاء الوسائط المتعددة للخرج الأرشيفي، أو استهدف ملف تعريف مطابقة غير أرشيفي (الافتراضي
ConformanceMode::Plain).
PdfRViolationException
قسم بعنوان «PdfRViolationException»- متى يُطلَق. عندما يُنتهَك ثابت مطابقة PDF/R-1 (ISO 23504-1:2020)، إمّا عند بناء كائن القيمة (ملفات تعريف
PdfRStripوPdfRPageوPdfRDocument) أو وقت المُتحقِّق (PdfRValidator). ويلتقط البند المعياري المُخالف ووصف انتهاك من سطر واحد حتى يستطيع مستهلكو التدقيق توجيه النتائج إلى البند الفرعي §6 الصحيح دون تحليل نصّ حرّ. - السياق. يُرجع
getContext()القيمstandard(دائمًاISO 23504-1:2020)، وclause(مسار البند، على سبيل المثال6.6.1)، وviolation. المُلتقِطات ذات الأنواع:getClause()وgetViolation(). - التعافي. إجراء مطوِّر: صحّح المُدخَل المرفوض أو أعد بناء المستند ليطابق البند المُستشهَد به.
توليد الرموز الشريطية
قسم بعنوان «توليد الرموز الشريطية»BarcodeException
قسم بعنوان «BarcodeException»- متى يُطلَق. عندما يُخفق توليد الرمز الشريطي بسبب بيانات غير صالحة أو أخطاء ترميز عبر كل الرموز المدعومة (Code 39/128، UPC-A/E، EAN-8/13، Interleaved/Standard 2-of-5، POSTNET، PLANET، MSI، ISBN، ISSN، QR Code، PDF417، DataMatrix، JabCode)، وإخفاقات عرض GD أثناء إنشاء الصورة. وتُحدَّد قيمة الرمز الشريطي بمقتطف لا يتجاوز 128 بايت في الرسالة والسياق — فالحمولات المُفرِطة الطول أو الثنائية تُخزَّن مُقتطَعة مع علامة
... (<N> bytes, truncated)حتى لا يمكن نسخها كاملةً إلى سجلّ. - السياق. يُرجع
getContext()القيمتينbarcode_type(الرمز، على سبيل المثالQRCODE،EAN13،CODE128) وvalue(القيمة المُقتطَعة). المُلتقِطات ذات الأنواع:getBarcodeType()وgetValue(). - التعافي. إجراء مطوِّر: صحّح بيانات الرمز الشريطي أو اختيار الرمز.
BarcodeEncoderNotFoundException
قسم بعنوان «BarcodeEncoderNotFoundException»- متى يُطلَق. من
BarcodeEncoderRegistryعندما يكون نوع المُرمِّز المطلوب غير معروف أو تكون بوّابة قدرته مُغلقة. ويطبّق أيضًا PSR-11Psr\Container\NotFoundExceptionInterface، فيكون السجلّ حاويةً مطابقة للمعايير. وتذكر الرسالة الرمز والسبب. - السياق. لا يتجاوز
getContext()، فيُرجع مصفوفة فارغة. والقيمتانtypeوreasonمتاحتان عبر المُلتقِطينgetType()وgetReason()وفي الرسالة. - التعافي. إجراء مطوِّر: سجّل المُرمِّز، أو ثبّت الحزمة التي توفّره (على سبيل المثال
nextpdf/proلأجل Micro QR / DotCode / HanXin / JabCode).
التشفير والترميز والتوقيعات
قسم بعنوان «التشفير والترميز والتوقيعات»EncryptionException
قسم بعنوان «EncryptionException»- متى يُطلَق. عندما يُخفق تشفير PDF أو فكّ تشفيره: إخفاقات تشفير/فكّ تشفير AES-256-CBC، وأخطاء OpenSSL، وأحجام متجه تهيئة غير صالحة، وإخفاقات حساب التجزئة، وأخطاء حساب قيمتي UE/OE. وعادةً امتداد OpenSSL مفقود أو سيئ الإعداد، أو مادة مفتاح غير صالحة، أو بيانات مُشفَّرة تالفة. وتذكر الرسالة العملية والخوارزمية.
- السياق. يُرجع
getContext()القيمتينalgorithm(على سبيل المثالAES-256-CBC) وoperation(على سبيل المثالencrypt،decrypt،key_derivation). المُلتقِطات ذات الأنواع:getAlgorithm()وgetOperation(). - التعافي. إجراء بنية تحتية: تأكّد من توفّر OpenSSL وإعداده بصورة صحيحة. انظر التشفير والأذونات.
UnsupportedAlgorithmException
قسم بعنوان «UnsupportedAlgorithmException»- متى يُطلَق. عندما لا يمكن تنفيذ خوارزمية تشفير في وقت التشغيل الحالي: امتداد PHP مطلوب غير متاح، أو تفتقر المكتبة الأساسية إلى الأداة الأولية، أو لا يستطيع امتداد
hashالمُجمَّع تركيب متغيّر SHAKE/XOF، أو الخوارزمية غير مُسجَّلة فيSignatureAlgorithmRegistry. ويجب ألا يتدهور المحرك بصمت إلى أداة أولية أضعف، فيُظهِر هذا بدلًا من ذلك. ويُطلقه المصنع الساكنnonFipsHostUnderFipsProfile()(مع مُعرِّف الخوارزميةregulatory-profile:fips) عندما يُختارRegulatoryProfile::FIPSلكن لا يمكن تأكيد مزوّد OpenSSL مُدقَّق بـFIPS (يُخفق كلٌّ منFIPS_ABSENTوINDETERMINATEبأمان). - السياق. يُرجع
getContext()القيمتينalgorithm(الاسم أو OID، على سبيل المثالshake256،Ed25519،AES-256-GCM) وreason(قابل لتنفيذ المُشغِّل). المُلتقِطات ذات الأنواع:getAlgorithm()وgetReason(). - التعافي. إجراء مُشغِّل: ثبّت الامتداد المفقود أو رقِّ وقت التشغيل؛ ولبوّابة FIPS، ثبّت بناء OpenSSL مُدقَّقًا بـFIPS أو اضبط
NEXTPDF_FIPS_MODEصراحةً. إجراء مطوِّر: سجّل واصف خوارزمية مخصّصًا عبرSignatureAlgorithmRegistry::register().
SignatureException
قسم بعنوان «SignatureException»- متى يُطلَق. عندما تُخفق عملية توقيع رقمي: معالجة الشهادات والمفاتيح الخاصة (تحليل PKCS#12، وفكّ ترميز PEM/DER، والتحقق من X.509)، وبناء PKCS#7/CMS، وصيغة توقيع ECDSA، وانتهاكات حجم الحاوية، وترميز DER، وتنسيق PAdES. وتُبلِّغ عن أخطاء TSA المحددة بدلًا من ذلك
TsaExceptionالأكثر تحديدًا. فضّل المصانع المسماة ذات الأنواع على المُنشئ الموضعي؛ فكلٌّ منها يربط السبب الجذري بذيل الرسالة. أمثلة:ltvCapabilityMissing()(يحتاج B-LT/B-LTA إلىnextpdf/enterprise)، وtsaRequired()/tsaUrlEmpty()/tsaEmptyToken()، وhttpClientMissing()، وhsmSignerMissing()/hsmSignatureEmpty()، وsignatureContentsNotFound()/signatureContentsPaddingCorrupt()، وunexpectedKeyType()، وpemDecodingFailed()، وعائلة Ed25519 (ed25519SignatureMalformed()، وed25519RoundTripVerifyFailed()، وed25519KeyParseFailed()، وed25519SeedInvalid()، وed25519SecretKeyMalformed()، وed25519PublicKeyInvalid())، وdocumentTimestampNotEmitted()، وalgorithmPolicyRejected()، وdigestOnlyAlgorithmRefused()، وencryptedLtvUnsupported()، وincrementalUpdateWriterMissing()، وزوج حالة OCSPnonSuccessfulOcspResponseStatus()/reservedOcspResponseStatus()(RFC 6960 §4.2.1). وتُخفق هذه المصانع بأمان بدلًا من إصدار توقيع مُخفَّض المستوى بصمت. - السياق. يُرجع
getContext()القيمcert_info(الاسم المميَّز للموضوع أو البصمة، أو فارغ)، وsignature_level(مستوى PAdES المُحاوَل، على سبيل المثالB-B،B-T،B-LT،B-LTA)، وdetail(التشخيص القابل للتنفيذ، فارغ للمُنشئ الموضعي القديم). المُلتقِطات ذات الأنواع:getCertInfo()وgetSignatureLevel()وgetDetail(). - التعافي. إجراء مطوِّر: أصلِح تهيئة الشهادة/المفتاح. ولمصانع القدرة المفقودة، ثبّت الحزمة المسماة. انظر إخفاقات التوقيع والطابع الزمني لأجل مداخل العَرَض والحلّ لكل مصنع.
BlackPointCompensationUnsupportedException
قسم بعنوان «BlackPointCompensationUnsupportedException»- متى يُطلَق. من
NullBlackPointCompensationTransform::transform()عندما يطلب مُستدعٍ من المُهايِئ الفارغ تطبيق تحويل تعويض النقطة السوداء وفق ISO 18619 غيرDefault. والمُهايِئ الفارغ هو البديل الآمن للبيئات التي لا خلفية إدارة لون فيها؛ فإنتاج عيّنة مُحوَّلة دون وحدة إدارة لون حقيقية كان سيُبلِّغ خطأً عن التحويل بصمت. وخلافًا لمعظم المداخل هنا، يمدّد هذا\RuntimeExceptionمباشرةً، لاNextPdfException، فتبقى مساراتcatch (\RuntimeException)القائمة تعمل. - السياق. لا
getContext()؛ فهو\RuntimeExceptionعادي. والتفاصيل في الرسالة. - التعافي. إجراء مطوِّر: سجّل
BlackPointCompensationTransformحقيقيًا (LittleCMS، Argyll، PHP صرف)، أو احصر/UseBlackPtCompعلىBlackPointCompensation::Default.
تجميع المستند وإمكانية الوصول
قسم بعنوان «تجميع المستند وإمكانية الوصول»UnsupportedSourceDocumentException
قسم بعنوان «UnsupportedSourceDocumentException»- متى يُطلَق. عندما لا يمكن نسخ مستند مصدر بأمان إلى خرج دمج/تقسيم وتُخفق العملية بأمان بدلًا من إصدار نتيجة تالفة أو منقوصة الأمان. استخدم المصانع المسماة:
encrypted()(ISO 32000-2 §7.6 — لا يمكن نسخ المحتوى دون المفتاح)، وsigned()(§12.8 — نسخ الصفحات سيُبطِل مدى بايتات التوقيع)، وunsupportedStreamFilter()(مُرشِّح لا يستطيع قارئ مخطط الكائنات إرجاعه ذهابًا وإيابًا)، وmultipleInteractiveForms()(قيد مُوثَّق: يحمل أكثر من مصدر واحد/AcroFormغير فارغ، §12.7)، وsplitWithInteractiveForm()(قيد مُوثَّق: تقسيم صفحات مصدر يحمل نموذجًا سيُيتِّم الأدوات). يمدّد\RuntimeExceptionمباشرةً، لاNextPdfException. - السياق. لا
getContext()؛ فهو\RuntimeExceptionعادي. والسبب ورقم الكائن المتأثر مذكوران في الرسالة. - التعافي. إجراء مطوِّر: فكّ تشفير المصدر أولًا أو وفّر المفتاح؛ وللمصادر المُوقَّعة، وقّع بعد الدمج بدلًا من ذلك؛ ولعمليات دمج متعددة النماذج، سطّح حقول النموذج لكل المصادر إلّا واحدًا أو أزِلها؛ ولعمليات تقسيم تحمل نموذجًا، سطّح النموذج قبل التقسيم.
InvalidBcp47TagException
قسم بعنوان «InvalidBcp47TagException»- متى يُطلَق. من
Bcp47Validator::validate()عندما يكون وسم لغة مُرشَّح مُشوَّهًا وفق RFC 5646 §2.1 ABNF، أو يُخفق في البحث في السجلّ المُنتقى. خاص بمجال BCP-47 / ISO 14289-2:2024 §8.4.4، متميّز عنInvalidConfigExceptionحتى يستطيع المُستدعون في مصبّ حدّ إمكانية الوصول اعتراض نوع ضيّق. ويبقى زوج المحمولاتBcp47Validator::isWellFormed()/isValid()سطح القيمة المُرجَعة المتوافق رجعيًا للمُستدعين الذين يُفضِّلون التفرّع على الاستثناءات. - السياق. يُرجع
getContext()القيمتينtag(المُرشَّح كما قُدِّم بالضبط) وreason(رمز رفض ثابت قابل للقراءة آليًا، على سبيل المثالempty-string،well-formed-shape،unregistered-primary،duplicate-variant). المُلتقِطات ذات الأنواع:getTag()وgetReason(). - التعافي. إجراء مطوِّر: صحّح وسم اللغة إلى وسم BCP-47 سليم الشكل مُسجَّل. انظر الخطوط والوسم.
FormFieldAccessibilityException
قسم بعنوان «FormFieldAccessibilityException»- متى يُطلَق. عندما يعتمد حقل نموذج تفاعلي على اسم قابل للوصول مُصطنَع (غير مُقدَّم من المؤلِّف) أثناء إنتاج مستند PDF/UA مع تفعيل الإنفاذ الصارم لاسم الحقل القابل للوصول. ويُصدر خرج PDF/UA الافتراضي اسم بديل مُصطنَعًا في
/Contentsللأداة حتى لا يكون أي حقل بلا اسم؛ بينما يتطلب الوضع الصارم بدلًا من ذلك أن يُقدِّم المؤلِّف اسمًا ذا معنى (تلميحًا، أو تسمية توضيحية لزرّ دفع بلا إجراء) حتى يحصل مستخدمو قارئ الشاشة على وصف حقيقي (ISO 14289-2:2024 §8.10.2). - السياق. لا يتجاوز
getContext()، فيُرجع مصفوفة فارغة. والقيمة$fieldIdخاصية عامة للقراءة فقط؛ والسبب هو الرسالة. - التعافي. إجراء مطوِّر: وفّر تلميحًا / اسمًا قابلًا للوصول للحقل المسمى قبل إنتاج مستند PDF/UA صارم، أو عطّل الوضع الصارم. انظر التحقق من PDF/A و PDF/UA.
VendorExtensionRegistryConflictException
قسم بعنوان «VendorExtensionRegistryConflictException»- متى يُطلَق. من
VendorExtensionRegistry::register()عندما يُعيد مُستدعٍ تسجيل سابقة بائع امتداد مطوِّر PDF معروفة (ISO 32000-2:2020 §7.12.1) بوصف يختلف مع البيانات الوصفية المُسجَّلة سابقًا. والواصفات للإلحاق فقط ومُكتشَفة التعارض؛ وقد حلّ الاستثناء ذو النوع محلّ\RuntimeExceptionعام حتى يستطيع المُستدعون اعتراض هذه الفئة المحددة. - السياق. يُرجع
getContext()القيمprefix، وexisting_description، وattempted_description. المُلتقِطات ذات الأنواع:getPrefix()وgetExistingDescription()وgetAttemptedDescription(). - التعافي. إجراء مطوِّر: سجّل السابقة بالوصف القائم، أو استخدم سابقة متمايزة؛ لا تكتب فوق البيانات الوصفية المُسجَّلة.
تصدير التدقيق
قسم بعنوان «تصدير التدقيق»AuditExportException
قسم بعنوان «AuditExportException»- متى يُطلَق. عندما يُخفق تجميع حزمة تصدير التدقيق، أو توليد مصفوفة التتبّع، أو إسقاط المخطط في وقت التشغيل. ويغطي الإدخال/الإخراج مقابل
claims.json/manifest.json، وترميز/فكّ ترميز JSON للحزمة المعيارية، وعدم تطابق إصدار المخطط في مسار التوافق الرجعيAuditExporter::projectToV1(). وتذكر الرسالة المرحلة، والقطعة الأثرية عند معرفتها، والتفصيل. - السياق. يُرجع
getContext()القيمstage(على سبيل المثالread_claims،encode_bundle،project_v1)، وdetail، وartefact(المسار أو schema_version الذي أطلق الإخفاق). المُلتقِطات ذات الأنواع:getStage()وgetDetail()وgetArtefact(). - التعافي. إجراء مطابقة / DevOps: تحقّق من مسارات القطع الأثرية المُدخَلة، أو أعد توليد
claims.jsonمن تشغيل نظيف، أو أعد بناء البيان قبل إعادة محاولة التصدير.
كائنات قيمة الانتهاك
قسم بعنوان «كائنات قيمة الانتهاك»هذه ليست استثناءات. إنها كائنات قيمة غير قابلة للتغيير يُرجعها المحرك لوصف انتهاك فردي؛ وهي لا تحمل getContext().
ComplianceViolation
قسم بعنوان «ComplianceViolation»- ما هو. كائن قيمة
final readonlyيمثّل إخفاق قاعدة واحدة يُبلِّغ عنه مُتحقِّق خارجي (veraPDF أو مكافئ)، بما في ذلك مرجع بند ISO والموقع داخل بنية PDF. - الحقول. خصائص عامة للقراءة فقط:
ruleId(مُعرِّف قاعدة المُتحقِّق، على سبيل المثال6.1.2-1)، وclause(مرجع بند ISO، على سبيل المثالISO 19005-1:2005, 6.1.2)، وseverity(على سبيل المثالerror،warning)، وlocation(مسار الكائن داخل بنية PDF)، وmessage(وصف قابل لقراءة الإنسان). - الاستخدام. افحص المجموعة التي يُرجعها مُتحقِّق المطابقة؛ ووجّه كل مدخل أو اعرضه بحسب
severityوclause. انظر التحقق من PDF/A و PDF/UA.
RuleViolation
قسم بعنوان «RuleViolation»- ما هو. كائن قيمة
final readonlyيمثّل انتهاك قاعدة عمل واحدة وفق Schematron / EN 16931، يُرجعهSchematronRunnerInterface::runRules()ويُجمَّع داخلValidationResult::$ruleViolations. والاستقرار تجريبي. - الحقول. خصائص عامة للقراءة فقط:
ruleId(مُعرِّف EN 16931 مثلBR-{n}،BR-CO-{n}،BR-CL-{n}،BR-DEC-{n}، أو حزمة خاصة بمرتبة)، وseverity(تعدادRuleSeverity)، وmessage(نصّ القاعدة، en-GB)، وxpath(XPath في XML المُضمَّن،nullلقواعد المستند بأكمله)، وsemanticPath(مسار BG/BT بترميز نقطي مثلBG-22.BT-106،nullللانتهاكات البنيوية). - الاستخدام. افحص المجموعة على نتيجة التحقق؛ ووجّه كل مدخل أو اعرضه بحسب
severityوruleIdوالمُحدِّد.