تخطَّ إلى المحتوى
getnextpdf.com

Pro الإصدار

القالب — مرجع متعمّق

يوثّق هذا المرجع التفصيلي مخطط قوالب ⁨JSON⁩ المقبول، وكل قاعدة تحقّق، وسلوك التنسيق الدقيق لكل نوع في أداة ربط البيانات. تحلّل الوحدة تعريف القالب، ثم تربط بيانات المُستدعي بعناصر نائبة مُنمَّطة. تُصدر سلاسل نصية مُنسّقة؛ ولا ترسم كائنات ⁨PDF⁩.

تأتي هذه القدرة ضمن ⁨NextPDF Pro⁩ (nextpdf/pro) وتُفعَّل بحاوية ترخيص من فئة ⁨Pro⁩. النشر بلا هذا الاستحقاق لا يحمّل فئات القدرة. ولا يوجد علم قدرة زمن تشغيل يحكم هذه الوحدة. قارن الإصدارات واحصل على ترخيص.

تُتيح الوحدة خدمتَي دخول اثنتين وأربعة كائنات قيمة غير قابلة للتغيير. كل رمز أدناه عام ومستقر.

الرمزالمعامِلاتالسلوك الافتراضيالقيمة المُعادةيطرح أو يفشل بـملاحظات
TemplateParser::parsestring $jsonيتحقّق ثم يبني التعريفTemplateDefinitionInvalidArgumentException عند وجود أي خطأ تحقّقيفوّض إلى validate أولًا.
TemplateParser::validatestring $jsonيجمع كل الأخطاء البنيوية في تمريرة واحدةlist<string> (فارغة عند الصحّة)لا يطرح أبدًا؛ يُعاد فشل فكّ ترميز ⁨JSON⁩ كرسالةالبوّابة المرجعية لحدود الطول والدقّة.
TemplateDataBinder::bindTemplateDefinition $template، array<string,mixed> $dataيطابق العناصر النائبة دون حساسية لحالة الأحرف ويُنسّق حسب النوعBindingResultلا يطرح أبدًا؛ تتحوّل الحالات الشاذّة إلى تحذيرات أو حقول مفقودةيستخدم القيمة الافتراضية للعنصر النائب عند غياب المفتاح.
TemplateDefinition::__constructstring $name، string $pageSize، string $orientation، list<TemplatePlaceholder> $placeholders، string $backgroundPdf = ''يخزّن التعريف المُحلَّلTemplateDefinitionTypeError عند عدم تطابق نوع وسيطكائن قيمة final readonly.
TemplateDefinition::getPlaceholderstring $nameبحث بالاسم دون حساسية لحالة الأحرفTemplatePlaceholder|nullلا فشل؛ يُعيد null عند الغياب
TemplateDefinition::requiredFieldsلا شيءيجمع أسماء العناصر النائبة التي لا قيمة افتراضية لهاlist<string>لا فشلالقيمة الافتراضية غير الفارغة تجعل العنصر النائب اختياريًا.
TemplatePlaceholder::__constructstring $name، PlaceholderType $type، float $x، float $y، float $width، float $height، string $defaultValue = ''، string $format = ''يخزّن منطقة عنصر نائب واحدTemplatePlaceholderTypeError عند عدم تطابق نوع وسيطالإحداثيات نقاط تُقاس من الزاوية العلوية اليسرى.
TemplatePlaceholder::matchesstring $keyمقارنة اسم دون حساسية لحالة الأحرفboolلا فشل
BindingResult::__constructlist<BoundPlaceholder> $bindings، list<string> $missingFields، list<string> $warningsيخزّن نتيجة الربطBindingResultTypeError عند عدم تطابق نوع وسيطكائن قيمة final readonly.
BindingResult::isCompleteلا شيءيفيد بما إذا كان كل حقل مطلوب قد رُبطboolلا فشلصحيح عندما تكون missingFields فارغة.
BindingResult::countلا شيءيعدّ العناصر النائبة المربوطة بنجاحintلا فشل
BoundPlaceholder::__constructTemplatePlaceholder $placeholder، string $formattedValue، mixed $rawValueيقرن عنصرًا نائبًا بقيمته المُنسّقةBoundPlaceholderTypeError عند عدم تطابق نوع وسيطكائن قيمة final readonly.
PlaceholderTypeحالات التعداد Text، Image، Barcode، Date، Number، Currency، Conditionalتصنيف عناصر نائبة مدعوم بسلاسل نصيةنسخة تعدادValueError من from() عند قيمة غير معروفةtryFrom() يُعيد null بدلًا من ذلك.
PlaceholderType::requiresFormattingلا شيءيفيد بما إذا كان النوع يستهلك سلسلة تنسيقboolلا فشلصحيح لـ Date وNumber وCurrency.
final class TemplateParser
{
public function parse(string $json): TemplateDefinition;
public function validate(string $json): array;
}
final class TemplateDataBinder
{
public function bind(TemplateDefinition $template, array $data): BindingResult;
}

شكل ⁨JSON⁩ المقبول:

{
"name": "string (required, non-empty)",
"pageSize": "A3|A4|A5|A6|B4|B5|Letter|Legal|Tabloid",
"orientation": "P|L",
"backgroundPdf": "optional path string",
"placeholders": [
{ "name": "string", "type": "text|image|barcode|date|number|currency|conditional",
"x": number, "y": number, "width": number, "height": number,
"defaultValue": "optional", "format": "optional" }
]
}

قواعد التحقّق، تُظهرها جميعًا validate كرسائل وتجمّعها parse في استثناء واحد:

  • name مفقود أو فارغ.
  • pageSize خارج قائمة السماح، أو orientation ليس P ولا L.
  • placeholders مفقود، أو قيمة ليست مصفوفة.
  • لكل عنصر نائب: اسم مفقود أو فارغ؛ نوع غير صالح؛ x أو y أو width أو height مفقودة أو غير رقمية؛ اسم مكرّر (دون حساسية لحالة الأحرف).
  • defaultValue: ليست سلسلة نصية، أو أطول من 4096 بايت، أو تحمل حرف تحكّم ⁨ASCII⁩.
  • format: ليست سلسلة نصية، أو أطول من 256 بايت، أو تحمل حرف تحكّم ⁨ASCII⁩.
  • format لعنصر نائب من نوع number ليس عددًا صحيحًا غير سالب، أو يتجاوز 30.

دلالات الربط (TemplateDataBinder::bind):

  • تُحوَّل مفاتيح البيانات إلى أحرف صغيرة للمطابقة دون حساسية لحالة الأحرف مع أسماء العناصر النائبة.
  • المفتاح الغائب ذو القيمة الافتراضية غير الفارغة يربط القيمة الافتراضية؛ أما المفتاح الغائب بلا قيمة افتراضية فيُبلَّغ عنه في missingFields.
  • قيم النص والصورة والباركود تُحوَّل إلى سلسلة نصية دون تغيير.
  • يقبل ربط التاريخ DateTimeInterface، أو ختمًا زمنيًا صحيحًا بنظام ⁨Unix⁩، أو سلسلة نصية بأحد أربعة تنسيقات صريحة. تنسيق الإخراج الافتراضي هو Y-m-d.
  • يستخدم ربط الأرقام number_format(value, decimals, '.', ','). يأتي عدد المنازل العشرية من format، وقيمته الافتراضية 2، ويُقيَّد ضمن المدى 0 إلى 30.
  • يسبق ربط العملة الرقمَ المُنسّق بـ format، وتكون البادئة الافتراضية $.
  • يُصدر الربط الشرطي "true" أو "false" من تحويل منطقي.

الحالات الحدّية وأنماط الفشل

قسم بعنوان «الحالات الحدّية وأنماط الفشل»
  • backgroundPdf لا تفتحه هذه الوحدة أبدًا ولا تفكّ الإشارة إليه. إنه سلسلة نصية معتمة تُسلَّم إلى أداة العرض.
  • القيمة غير الرقمية المربوطة بعنصر نائب من نوع ⁨Number⁩ أو ⁨Currency⁩ تُنتج تحذيرًا؛ وتُحوَّل القيمة إلى سلسلة نصية، ولا تُرفض.
  • تُحلَّل سلاسل التاريخ بصرامة. الرموز النسبية ورموز اللغة الطبيعية (⁨“now”⁩، ⁨“+1 year”⁩، ⁨“tomorrow”⁩) لا تطابق أي تنسيق مقبول، فتُطلق تحذيرًا وتمرّ القيمة الخام دون تغيير.
  • تُقرأ قيمة التاريخ الصحيحة كختم زمني بنظام ⁨Unix⁩ عبر صيغة الحقبة @.
  • دقّة format لنوع ⁨Number⁩ خارج المدى 0 إلى 30 التي تصل إلى أداة الربط تُرفض بتحذير؛ وترجع أداة الربط إلى الدقّة الافتراضية 2.
  • لا تجري أي عملية تشفير في هذه الوحدة، لذا لا يوجد سلوك خاص بوضع ⁨FIPS⁩.

لا يوجد سطح مباشر لمواصفة ⁨PDF⁩. مفردات حجم الصفحة والاتجاه هي اصطلاحات ⁨NextPDF⁩، والوحدة تُصدر قيمًا مُنسّقة لا كائنات ⁨PDF⁩. تقبل قائمة السماح الصارمة لتاريخ السلاسل النصية ملفَّ تعريف التاريخ/الوقت للإنترنت من ⁨ISO 8601⁩ المُعرَّف في ⁨RFC 3339 §5.6⁩، إلى جانب تاريخ تقويمي Y-m-d وشكلين محليين للتاريخ والوقت. توثّق ⁨NextPDF⁩ القدرة على قراءة هذه التنسيقات؛ ولا تدّعي أي اعتماد مقابل ⁨RFC 3339⁩ أو ⁨ISO 8601⁩.

  • TemplateParser وTemplateDataBinder عديمتا الحالة. نسخة واحدة قابلة لإعادة الاستخدام وآمنة للمشاركة عبر عمليات الربط.
  • كائنات القيمة الأربعة هي final readonly؛ أنشئها عبر المحلّل لا يدويًا لمدخلات الإنتاج.
  • validate تُبلّغ عن كل خطأ بنيوي في تمريرة واحدة، بينما تستدعي parse الدالة validate أولًا وتطرح استثناءً بالرسالة المجمّعة. استخدم validate للتغذية الراجعة على نمط النماذج وparse للاستيعاب سريع الفشل.
  • تُفرَض حدود الطول والدقّة عند المحلّل بوصفه البوّابة المرجعية. تعيد TemplateDataBinder فحص دقّة الأرقام كحارس على جانب المصبّ ضد تضخيم الذاكرة في number_format.

توثّق هذه الصفحة السلوك القابل للملاحظة خارجيًا وسطح واجهة ⁨API⁩ العامة المدعومة فقط. أما مسارات فضاء الأسماء الداخلية والفئات المساعِدة وجداول الآليات وأسماء ملفات كتيّبات التشغيل وبادئات التذاكر فهي خارج النطاق.