الأسئلة الشائعة عن NextPDF
لمحة سريعة
قسم بعنوان «لمحة سريعة»تجيب هذه الصفحة عن الأسئلة التي تظهر أولًا حين تُقيِّم NextPDF أو تبدأ مشروعًا جديدًا. كل إجابة قصيرة وترتبط بالصفحة التي تغطّيها بالكامل. NextPDF محرّك PHP 8.4 يولّد ويفحص مستندات صيغة المستند المحمول (PDF) 2.0، وهي صيغة الملف التي تعرّفها ISO 32000-2.
إذا كنت جديدًا تمامًا، فاقرأ ابدأ أولًا، ثم عُد إلى هنا للتفاصيل.
البدء
قسم بعنوان «البدء»أي إصدار أحتاج: Core أم Pro أم Enterprise؟
قسم بعنوان «أي إصدار أحتاج: Core أم Pro أم Enterprise؟»ابدأ بـCore. يولّد النواة مفتوحة المصدر (nextpdf/core) خرج PDF، ويعرض HTML
المدعوم إلى ملفات PDF، ويفحص ملفات PDF تحت ترخيص Apache-2.0 وبلا تكلفة. يُنتج Core أصلًا
توقيعات CMS SignedData لمستويي B-B وB-T الأساسيين من التوقيعات الإلكترونية المتقدّمة لـPDF
(PAdES). اختر Pro حين تحتاج التوليد المتقدّم وعمليات المستندات، أو خرج الفواتير الإلكترونية (Factur-X / ZUGFeRD)، أو سير عمل توقيع متقدّم مثل التوقيع عن بُعد،
والتوقيع السحابيّ عبر KMS، والتوقيع المتسلسل. اختر Enterprise حين تحتاج سير عمل تأليف PDF/A الأرشيفيّ، أو مستويات PAdES الطويلة
الأمد (B-LT / B-LTA) مع مخزن أمان المستند وطوابع زمنية للمستند، أو التوقيع المدعوم بالعتاد عبر
وحدة أمان عتاديّة (HSM)، أو التوقيعات الإلكترونية المؤهَّلة. Pro وEnterprise هما الإصداران المرخَّصان من NextPDF Premium، الخط المدفوع؛ انظر
اختر مسارك.
هل هو حقًّا Apache-2.0؟
قسم بعنوان «هل هو حقًّا Apache-2.0؟»نعم، للنواة. يُعلن nextpdf/core "license": "Apache-2.0" ويشحن نصّ ترخيص Apache 2.0
الكامل في ملف LICENSE له. يجوز لك استخدام النواة وتعديلها وإعادة توزيعها واستثمارها
تجاريًا، رهنًا بمتطلّبات النسبة وNOTICE (Apache-2.0 §4). أما NextPDF Pro و
NextPDF Enterprise فهما إصداران تجاريان مملوكان وليسا مشمولين بذلك الترخيص. واسم
NextPDF وشعاره علامتان تجاريتان، منفصلتان عن ترخيص الشيفرة. انظر
ترخيص المنتج.
ما أدنى إصدار PHP؟
قسم بعنوان «ما أدنى إصدار PHP؟»PHP 8.4. قيد الحزمة >=8.4 <9.0، فيرفض Composer التثبيت على PHP 8.3 أو أدنى، أو على
PHP 9. يستهدف NextPDF بيئة تشغيل حديثة واحدة ويستخدم خصائص لغتها مباشرةً. انظر
تثبيت NextPDF.
هل يحتاج إلى برنامج ثنائيّ خارجيّ أو متصفّح بلا واجهة؟
قسم بعنوان «هل يحتاج إلى برنامج ثنائيّ خارجيّ أو متصفّح بلا واجهة؟»لا، ليس لمحرّك النواة. المحرّك الأصلي مُنفَّذ بـPHP وامتدادات PHP القياسية، بلا برنامج
PDF ثنائيّ خارجيّ وبلا متصفّح بلا واجهة إلزاميّ: تعمل الواجهة الانسيابية وخط أنابيب HTML
المضمّن writeHtml() داخل العملية بلا متصفّح وبلا نداء شبكيّ. وبرنامج Chrome أو
Chromium الثنائيّ اختياريّ ويلزم فقط لعارض Artisan (writeHtmlChrome())، الذي
تثبّته منفصلًا بوصفه nextpdf/artisan. وجسرا Cloudflare وGotenberg اختياريان أيضًا
ويستدعيان خدمة. انظر اختر مسارك.
أي امتدادات PHP يتطلّبها؟
قسم بعنوان «أي امتدادات PHP يتطلّبها؟»يتطلّب ملف composer.json للنواة الامتدادات القياسية ext-mbstring وext-zlib و
ext-intl وext-gd وext-curl وext-openssl، وهي امتدادات PHP متوفّرة عمومًا؛
تأكّد من تثبيتها وتمكينها في بيئة تشغيلك. ويدعم ext-curl الرحلات الشبكية الاختيارية —
الطوابع الزمنية RFC 3161 وجلب الأصول البعيدة — فلا يستخدمه التوليد الأصلي غير المتّصل،
لكن Composer يُدرجه مع ذلك بوصفه متطلَّبًا صارمًا. وتفحص التكاملات الامتدادات التي
تحتاجها أثناء الإقلاع وتتوقّف برسالة واضحة إن كان أيٌّ منها مفقودًا. والقائمة الكاملة في
ملف composer.json للحزمة؛ انظر تثبيت NextPDF.
كيف أولّد أول ملف PDF لي؟
قسم بعنوان «كيف أولّد أول ملف PDF لي؟»ثبّت النواة، ثم ابنِ مستندًا بالواجهة الانسيابية:
<?php
declare(strict_types=1);
require_once __DIR__ . '/vendor/autoload.php';
use NextPDF\Core\Document;
$document = Document::createStandalone();$document->addPage();$document->setFont('helvetica', 'B', 24);$document->cell(0, 15, 'Hello, NextPDF!', newLine: true);$document->save(__DIR__ . '/first.pdf');اسلكه خطوة بخطوة في أول ملف PDF لك.
الإصدارات والترخيص
قسم بعنوان «الإصدارات والترخيص»هل لـCore أي حدود ميزات أو علامة مائية؟
قسم بعنوان «هل لـCore أي حدود ميزات أو علامة مائية؟»لا. Core هو المحرّك مفتوح المصدر لمجموعة ميزات Core بلا علامة مائية وبلا شاشة إزعاج. لمجموعة ميزات Core — التوليد والفحص والتشفير وأوّليّات خرج PDF/A وPDF/UA، وتوقيع B-B/B-T بمفتاح برمجيّ (دون سير عمل التحقق الطويل الأمد وحضانة المفاتيح في Premium) — يكون Core مكتملًا. وتنطبق العلامة المائية للتقييم فقط على منحة تقييم Premium، حيث تختبر مجموعة ميزات Pro وEnterprise الكاملة خلف علامة قابلة للإزالة؛ ويزيلها ترخيص مدفوع بلا تغيير في شيفرة التطبيق. انظر الترخيص والتفعيل.
هل أحتاج تغييرات في الشيفرة للترقية إلى Pro أو Enterprise؟
قسم بعنوان «هل أحتاج تغييرات في الشيفرة للترقية إلى Pro أو Enterprise؟»في الغالب لا. حين تثبّت nextpdf/premium، تكتشفه تكاملات الإطار والخادم تلقائيًا وتكشف
عن القدرات الإضافية. وتُبقي معظم التطبيقات نقاط التكامل عالية المستوى نفسها؛ وقد تتطلّب
بعض سير عمل Premium تهيئة أو استدعاءات خاصة بميزة. وتفعّل ظرف ترخيص موقّعًا مرة لكل نشر.
انظر الترخيص والتفعيل.
هل يمكنني استخدام النواة في منتج تجاريّ مغلق المصدر؟
قسم بعنوان «هل يمكنني استخدام النواة في منتج تجاريّ مغلق المصدر؟»نعم. ليس في ترخيص Apache 2.0 أي قيد غير تجاريّ. يجوز لك استخدام النواة في منتجات
تجارية مغلقة المصدر أو مدفوعة أو داخلية، شريطة أن تفي بالتزامات النسبة وNOTICE وألا
تعامل ترخيص الشيفرة إذنًا باستخدام علامة NextPDF. انظر ترخيص المنتج
والعلامة التجارية واستخدام الماركة.
القدرات
قسم بعنوان «القدرات»هل يستطيع قراءة ملفات PDF وتحليلها، أم كتابتها فقط؟
قسم بعنوان «هل يستطيع قراءة ملفات PDF وتحليلها، أم كتابتها فقط؟»كلاهما، بتحفّظ. يكتب NextPDF ملفات PDF ويقرأها أيضًا: تقرأ وحدة Inspect ملفًا موجودًا
في InspectResult مهيكَل ببيانات تعقيد وخطوط وصور وخطر، ويمكنك دمج المستندات الموجودة
وتقسيمها. ووحدة Inspect موسومة بأنها تجريبية، فقد يتغيّر شكل نتيجتها بين الإصدارات
الثانوية — استخدمها للتشخيص والبوّابات، لا بوصفها عقدًا طويل العمر. انظر
وحدة Inspect.
هل يُنتج نصًّا قابلًا للتحديد والبحث؟
قسم بعنوان «هل يُنتج نصًّا قابلًا للتحديد والبحث؟»نعم. تُصدر كل من الواجهة الانسيابية وخط أنابيب writeHtml() المضمّن محتوى نصّ حقيقيّ، لا
صورًا نقطية، فالخرج قابل للتحديد والبحث. ويُبقي writeHtmlChrome() لعارض Artisan النصّ
قابلًا للتحديد أيضًا. انظر أول ملف PDF لك.
كيف يعمل عرض HTML وCSS؟
قسم بعنوان «كيف يعمل عرض HTML وCSS؟»يتضمّن محرّك النواة خط أنابيب HTML بـPHP صرفة. يعرض writeHtml() جزء HTML بمجموعة
جزئية مدعومة من CSS مباشرةً في الصفحة، بلا متصفّح وبلا نداء شبكيّ. وحين يحتاج تخطيط إلى
دقّة متصفّح كاملة — مثل flexbox أو grid أو خطوط الويب — ثبّت عارض Artisan واستدعِ
writeHtmlChrome(). وقبل أن تعتمد على خاصية، تحقق من
مصفوفة دعم CSS.
كيف تعمل الخطوط؟
قسم بعنوان «كيف تعمل الخطوط؟»تعمل الأسماء المستعارة للخطوط القياسية المضمّنة مثل Helvetica بلا إعداد لنصّ WinAnsi البسيط، فلا يحتاج أول مستند لك ملفات خطوط. وتلائم الخطوط اللاتينية القياسية المضمّنة نصّ WinAnsi الأساسيّ؛ ويستخدم Symbol وZapfDingbats ترميزَيهما الخاصَّين؛ ولعرض كتابات أخرى تسجّل وتضمّن خطًّا تدعم خريطة محارفه ومسار تشكيله تلك الكتابة. انظر مصفوفة دعم الخطوط و وحدة الخطوط.
هل يدعم PDF/A وإمكانية الوصول (PDF/UA)؟
قسم بعنوان «هل يدعم PDF/A وإمكانية الوصول (PDF/UA)؟»نعم، بحدّ واضح: دعم ملف تعريف ليس مطابقةً له. تشحن النواة مميِّز المطابقة وأوّليّات
الوسم — يمكّن enableTaggedPdf() خرج بنية PDF الموسومة المستخدَمة في سير عمل PDF/UA،
ويختار enablePdfA() ملف تعريف خرج PDF/A في Core؛ وتضيف إصدارات Premium سير عمل
وأدوات تأليف أرشيفيّ أعلى مستوى (تحقق وسياسة وعمليات إنتاج) فوقها. يُصدر NextPDF
الآثار البنيوية التي يتطلّبها ملف تعريف؛ ويقرّر مدقّق مستقلّ مثل veraPDF ما إذا كان
ملف معيّن مطابقًا فعلًا. انظر المطابقة و
وحدة إمكانية الوصول.
كيف أوقّع ملف PDF؟
قسم بعنوان «كيف أوقّع ملف PDF؟»تستطيع النواة إنتاج توقيعات CMS SignedData لصيغة رسائل التعمية (CMS) وتطبيق طوابع
RFC 3161 الزمنية (مستوى B-T)، مستخدمةً خوارزميات مفتاح برمجيّ مدعومة عبر مزوّد التوقيع
المهيّأ. وتعتمد شيفرتك على عقد SignerInterface، فالاستدعاء نفسه يعمل عبر الإصدارات.
أما مستويا PAdES B-LT وB-LTA الطويلان الأمد، وحضانة مفاتيح HSM وPKCS#11، والتوقيعات
المؤهَّلة فقدرات Enterprise؛ ويأتي سير عمل التوقيع المدعوم بالسحابة وKMS في Pro. تُنتج النواة بنى B-B و
B-T الأساسية. انظر وحدة التوقيع.
الإنتاج
قسم بعنوان «الإنتاج»هل هو آمن للعامل وآمن للخيوط؟
قسم بعنوان «هل هو آمن للعامل وآمن للخيوط؟»Document أحاديّ الاستخدام: بمجرد أن تكتب واحدًا، أنشئ نسخة جديدة للمستند التالي بدلًا
من إعادة استخدامه. وهذا يجعله ملائمًا طبيعيًا لنموذج “لكل طلب، لكل وظيفة” الذي تستخدمه
PHP-FPM وعمّال الطوابير والأُطُر — فكل وحدة عمل تبني مستندها الخاص. وحين تحلّل أو تؤلّف
مدخلًا غير موثوق، شغّل ذلك العمل في عامل مقيَّد وأبقِ حارسات الموارد (maxFiles و
maxTotalBytes وmaxBytes) ضيّقة. انظر وحدة المستند و
نموذج تهديد المحرّك.
هل الخرج حتميّ؟
قسم بعنوان «هل الخرج حتميّ؟»هو حتميّ بنيويًا، لكن غير متطابق بايتًا ببايت افتراضيًا. ينتج تشغيلان للمدخل نفسه ملفات
PDF متساوية بنيويًا، لكن كلًّا منها يحمل مقطورة و/ID مستند جديدين، فتختلف البايتات.
ويضيف التوقيع والطوابع الزمنية تباينًا آخر لكل تشغيل بالتصميم. خطّط للمقارنات حول
المساواة البنيوية، أو طبّع الحقول المتقلّبة، بدلًا من توقّع بايتات متطابقة عبر التشغيلات.
كيف أنشره؟
قسم بعنوان «كيف أنشره؟»أودِع composer.lock فيحلّ كل عامل منشور إصدار المحرّك نفسه، ثم انشر كما تنشر أي مكتبة
PHP — لا يحتاج التوليد الأصلي خادمًا خفيًّا أو متصفّحًا أو شبكة؛ أما الطوابع الزمنية
(B-T) أو الأصول البعيدة أو جسر المتصفّح الاختياريّ فتتطلّب وصولًا شبكيًا مهيّأً. إذا
احتاجت خدمات غير PHP المحرّك، فشغّل NextPDF Server، الذي يكشفه عبر
بروتوكول سياق النموذج (MCP) وREST وgRPC. ولـPremium، ضع ظرف الترخيص الموقّع حيث
يحمّله النشر وشغّل خطوة التفعيل لمرة واحدة؛ وتعني حالة الترخيص المخبَّأة أن المعالجة
العادية لا تحتاج خدمة ترخيص، فالنشرات المعزولة عن الشبكة مدعومة. انظر
تثبيت NextPDF و
الترخيص والتفعيل.
إلى أين آخذ فشلًا حين يقع خطأ ما؟
قسم بعنوان «إلى أين آخذ فشلًا حين يقع خطأ ما؟»يبلّغ NextPDF عن الأخطاء بصنف استثناء PHP، لا برمز خطأ نصّيّ، وتحمل الاستثناءات الواعية بالسياق حقول تشخيص مهيكَلة. وتربط قاعدة معرفة استكشاف الأخطاء حالات الفشل الشائعة في التوقيع و PDF/A وPDF/UA والخطوط والوسم والتشفير بسببها وحلّها.