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

تكوين حزمة NextPDF لـ Laravel

يُنشر config/nextpdf.php باستخدام php artisan vendor:publish --tag=nextpdf-config. لكل مفتاح متغير بيئة بديل وقيمة افتراضية مضمّنة في الشيفرة. تسرد هذه الصفحة كل مفتاح كما يظهر في config/nextpdf.php الخاص بالحزمة.

Terminal window
php artisan vendor:publish --tag=nextpdf-config

في أثناء register()، يدمج المزوِّد أيضًا القيم الافتراضية للحزمة ضمن مفتاح التكوين nextpdf. عندئذٍ ترجع المفاتيح غير المضبوطة إلى القيم أدناه، حتى قبل نشر ملف التكوين.

تقبل معظم متغيرات البيئة إمّا اسمًا بصيغة NEXTPDF_* وإمّا اسمًا قديمًا بصيغة TCPDF_*. تظل البادئة القديمة متاحة خلال الفترة الانتقالية الموثَّقة في UPGRADE.md. استخدم NEXTPDF_* في عمليات النشر الجديدة. يحلّ ملف التكوين القيم بهذا الترتيب: متغير البيئة ← قيمة الملف المنشور ← القيمة الافتراضية للحزمة.

سطح الواجهة البرمجية — مفاتيح التكوين

قسم بعنوان «سطح الواجهة البرمجية — مفاتيح التكوين»
المفتاحمتغير البيئة (الأساسي)الافتراضيالأثر
page_formatNEXTPDF_PAGE_FORMATA4تنسيق الصفحة الافتراضي: ⁨A4⁩ أو ⁨A3⁩ أو ⁨A5⁩ أو ⁨Letter⁩ أو ⁨Legal⁩ أو ⁨Tabloid⁩
orientationNEXTPDF_ORIENTATIONPعمودي (P) أو أفقي (L)
unitNEXTPDF_UNITmmوحدة القياس: ⁨pt⁩ أو ⁨mm⁩ أو ⁨cm⁩ أو ⁨in⁩
defaults.creatorNEXTPDF_CREATORNextPDFبيانات تعريف منشئ المستند؛ تُطبَّق على رابط PdfDocumentInterface
defaults.authorNEXTPDF_AUTHOR(فارغ)بيانات تعريف المؤلف؛ تُطبَّق فقط عندما تكون غير فارغة
defaults.languageNEXTPDF_LANGenلغة المستند؛ تُطبَّق على رابط المستند
defaults.margin_top / _right / _bottom / _left10الهوامش الافتراضية
defaults.font_familydejavusansعائلة الخط الافتراضية
defaults.font_size12حجم الخط الافتراضي
defaults.trim_boxnull⁨TrimBox⁩ بصيغة [left, bottom, right, top] بالنقاط، أو null
defaults.bleed_boxnull⁨BleedBox⁩ بصيغة [left, bottom, right, top] بالنقاط، أو null

يطبّق المزوِّد defaults.creator وdefaults.language، و(عند ضبطه) defaults.author على كل مستند يُحلّ حديثًا. ويتخطّى المزوِّد defaults.author عندما تكون القيمة فارغة.

المفتاحمتغير البيئة (الأساسي)الافتراضيالأثر
pdfaNEXTPDF_PDFAnullمستوى الأرشفة ⁨PDF/A⁩: null أو 4 أو 4e أو 4f. تُفعِّل أي قيمة غير ⁨null⁩ خاصية ⁨PDF/A⁩ على رابط المستند وتتطلّب nextpdf/premium
fonts_pathNEXTPDF_FONTS_PATHresource_path('fonts')دليل خطوط ⁨TrueType⁩ الإضافية؛ يضبط مسار بحث سجلّ الخطوط
cache_pathNEXTPDF_CACHE_PATHstorage_path('framework/cache/tcpdf')دليل ذاكرة التخزين المؤقتة للخطوط المُحلَّلة والملفات المؤقتة
icc_profile.rgbNEXTPDF_ICC_PROFILE_RGBnullمسار ملف تعريف ⁨ICC⁩ بنظام ⁨RGB⁩؛ مطلوب لـ ⁨PDF/A⁩
icc_profile.cmykNEXTPDF_ICC_PROFILE_CMYKnullملف تعريف ⁨ICC⁩ اختياري بنظام ⁨CMYK⁩ لسير عمل الطباعة
font_cache_lockingNEXTPDF_FONT_CACHE_LOCKINGtrueاستخدم flock لذاكرة التخزين المؤقتة للخطوط لمنع التلف عند كتابة عمّال الطابور المتزامنين إليها

تتطلّب أي قيمة غير ⁨null⁩ لـ pdfa طبقة ⁨Premium.⁩ من دون nextpdf/premium، يؤدّي حلّ ربط المستند مع ضبط pdfa إلى رفع خطأ ⁨class-not-found⁩ لنوع إصدار ⁨PDF/A.⁩ هذه الصفحة لا توثّق سلوك الأرشفة في ⁨Premium.⁩ راجع وثائق ⁨Premium.⁩

ذاكرة العامل (أوقات التشغيل الطويلة الأمد)

قسم بعنوان «ذاكرة العامل (أوقات التشغيل الطويلة الأمد)»
المفتاحمتغير البيئة (الأساسي)الافتراضيالأثر
preload_fonts[]مسارات ملفات الخطوط المطلقة التي تُحلَّل عند إقلاع العامل. يُقفَل سجلّ الخطوط بعد التهيئة
image_cache_mbNEXTPDF_IMAGE_CACHE_MB50ميزانية ذاكرة التخزين المؤقتة للصور بنظام الأقل استخدامًا مؤخرًا (⁨LRU⁩) بالميغابايت (⁨MB⁩). 0 يُعطِّل التخزين المؤقت. لا يُفرَض أي حدّ أعلى على مستوى المزوِّد

لا يفرض المزوِّد حدًا أعلى على ميزانية ذاكرة التخزين المؤقتة للصور. استخدم حدّ ذاكرة الحاوية أو php.inimemory_limit لتقييدها. يوصي ملف التكوين بحدّ أقصى عملي قدره 256 ⁨MB.⁩

المفتاحمتغير البيئة (الأساسي)الافتراضيالأثر
signature.enabledNEXTPDF_SIGN_ENABLEDfalseعندما تكون ⁨false⁩، أو تكون الشهادة فارغة، يُحلّ SignerInterface إلى null
signature.certificateNEXTPDF_SIGN_CERTnullمسار شهادة التوقيع
signature.private_keyNEXTPDF_SIGN_KEYnullمسار المفتاح الخاص
signature.passwordNEXTPDF_SIGN_PASSWORD(فارغ)عبارة مرور المفتاح
signature.extra_certs[]مسارات شهادات هيئة التصديق الوسيطة
signature.levelNEXTPDF_SIGN_LEVELB-Bمستوى الأساس للتوقيعات الإلكترونية المتقدمة لـ ⁨PDF⁩ (⁨PAdES⁩) الذي يُمرَّر إلى الموقِّع

لا تشحن الحزمة ⁨Core⁩ الموثَّقة هنا تنفيذًا للموقِّع؛ يُحلّ SignerInterface إلى null حتى يوفّر nextpdf/premium تنفيذًا له. مع ⁨Premium⁩، يُنتِج level: B-B توقيعًا بمستوى الأساس ⁨PAdES B-B.⁩ تعتمد مستويات الأساس ⁨PAdES⁩ الأعلى على هيئة طوابع زمنية مُكوَّنة وقدرة ⁨Premium⁩؛ هذه الصفحة لا توثّق تلك المستويات.

المفتاحمتغير البيئة (الأساسي)الافتراضيالأثر
tsa.urlNEXTPDF_TSA_URLnullنقطة نهاية هيئة الطوابع الزمنية (⁨TSA⁩). عندما تكون فارغة، يُحلّ TsaClient إلى null
tsa.username / tsa.passwordNEXTPDF_TSA_USERNAME / _PASSWORD(فارغ)بيانات اعتماد ⁨TSA⁩ عبر ⁨HTTP⁩
tsa.cert / tsa.keyNEXTPDF_TSA_CERT / _KEYnullشهادة العميل / مفتاحه لأمان طبقة النقل المتبادل (⁨mTLS⁩) مع ⁨TSA⁩
tsa.timeoutNEXTPDF_TSA_TIMEOUT30مهلة ⁨HTTP⁩ بالثواني لعميل ⁨PSR-18⁩
tsa.pinned_public_keys[]تثبيتات ⁨Base64 SHA-256⁩ لمعلومات المفتاح العام للموضوع (⁨SPKI⁩) (⁨RFC 7469⁩). القيمة الفارغة تُعطِّل التثبيت
tsa.warn_on_key_rotationNEXTPDF_TSA_WARN_ROTATIONtrueإصدار تحذير عندما تقدّم ⁨TSA⁩ معلومات ⁨SPKI⁩ غير مُثبَّتة
tsa.allow_insecure_httpNEXTPDF_TSA_ALLOW_INSECURE_HTTPfalseالسماح بـ ⁨HTTP⁩ نصّي صريح إلى ⁨TSA.⁩ اترك القيمة ⁨false⁩ في بيئة الإنتاج

ذاكرة التخزين المؤقتة لاستجابات ⁨OCSP⁩

قسم بعنوان «ذاكرة التخزين المؤقتة لاستجابات ⁨OCSP⁩»
المفتاحمتغير البيئة (الأساسي)الافتراضيالأثر
ocsp_cache.enabledNEXTPDF_OCSP_CACHE_ENABLEDtrueتخزين استجابات بروتوكول حالة الشهادة عبر الإنترنت (⁨OCSP⁩) مؤقتًا في أثناء التحقق
ocsp_cache.ttlNEXTPDF_OCSP_CACHE_TTL86400مدة بقاء ذاكرة التخزين المؤقتة (⁨TTL⁩) بالثواني
ocsp_cache.directoryNEXTPDF_OCSP_CACHE_DIRnullدليل ذاكرة التخزين المؤقتة؛ null يُبقي ذاكرة التخزين المؤقتة في الذاكرة فقط
المفتاحمتغير البيئة (الأساسي)الافتراضيالأثر
queue.connectionNEXTPDF_QUEUE_CONNECTIONnullاتصال الطابور؛ null يستخدم الاتصال الافتراضي
queue.queueNEXTPDF_QUEUE_NAMEpdfالطابور الذي تُدفَع إليه GeneratePdfJob
queue.timeoutNEXTPDF_QUEUE_TIMEOUT120المهلة لكل مهمة بالثواني

مُصيِّر ⁨Chrome CDP⁩ (امتداد ⁨Artisan⁩)

قسم بعنوان «مُصيِّر ⁨Chrome CDP⁩ (امتداد ⁨Artisan⁩)»
المفتاحمتغير البيئة (الأساسي)الافتراضيالأثر
artisan.chrome_binaryNEXTPDF_ARTISAN_CHROME_BINARYقيمة البيئة أو غير مضبوطمسار ثنائي ⁨Chrome/Chromium⁩
artisan.render_timeoutNEXTPDF_ARTISAN_RENDER_TIMEOUT30مهلة التصيير بالثواني
artisan.default_cssNEXTPDF_ARTISAN_DEFAULT_CSS(فارغ)⁨CSS⁩ الافتراضي المحقون في ⁨HTML⁩ المُصيَّر
artisan.no_sandboxNEXTPDF_ARTISAN_NO_SANDBOXfalseتعطيل صندوق حماية ⁨Chrome⁩
artisan.max_html_sizeNEXTPDF_ARTISAN_MAX_HTML_SIZE5000000الحجم الأقصى لإدخال ⁨HTML⁩ بالبايت

ينطبق القسم artisan على رابط المستند فقط عند وجود صنف مصنع متصفح ⁨Chrome⁩ (امتداد nextpdf/artisan). وعند غياب ذلك الصنف، يُتجاهَل القسم.

resource: config/nextpdf.php (subset, verified against the published file)
<?php
declare(strict_types=1);
return [
'page_format' => env('NEXTPDF_PAGE_FORMAT', 'A4'),
'orientation' => env('NEXTPDF_ORIENTATION', 'P'),
'unit' => env('NEXTPDF_UNIT', 'mm'),
'pdfa' => env('NEXTPDF_PDFA', null),
'fonts_path' => env('NEXTPDF_FONTS_PATH', resource_path('fonts')),
'preload_fonts' => [],
'image_cache_mb' => env('NEXTPDF_IMAGE_CACHE_MB', 50),
'queue' => [
'connection' => env('NEXTPDF_QUEUE_CONNECTION', null),
'queue' => env('NEXTPDF_QUEUE_NAME', 'pdf'),
'timeout' => env('NEXTPDF_QUEUE_TIMEOUT', 120),
],
];
  • signature.enabled = true مع signature.certificate فارغة يظل يحلّ SignerInterface إلى null؛ يجب ضبط كلتا القيمتين.
  • tsa.url = null يفرض TsaClient إلى null، حتى لو كانت مفاتيح tsa.* الأخرى مملوءة.
  • signature.level = null يعود إلى ⁨PAdES B-B⁩ على الموقِّع.
  • ضبط image_cache_mb على null (وليس 0) يعود إلى القيمة الافتراضية 50 ⁨MB⁩؛ 0 يُعطِّل التخزين المؤقت صراحةً.
  • تظلّ متغيرات البيئة القديمة TCPDF_* قابلة للقراءة لكنها مهملة. انتقل إلى NEXTPDF_*.

تستخدم قراءة التكوين وصولًا إلى المصفوفة بزمن ⁨O⁩(1). يبادل preload_fonts تحليلًا لمرة واحدة بزمن ⁨O⁩(⁨f⁩) عند إقلاع العامل بزمن استجابة أقل لأول طلب. وتقلّل قيمة image_cache_mb الأكبر إعادة فكّ ترميز الصور على حساب الذاكرة المقيمة في العملية.

يُضعِف tsa.allow_insecure_http الثقة بالطوابع الزمنية ويجب أن يبقى false في بيئة الإنتاج. يجب أن تأتي عناوين ⁨TSA⁩ من تكوين موثوق فقط. إذا كشفتها عبر سطح إداري، فاستخدم جدار حماية للصادر أو سياسة ⁨DNS⁩ للتخفيف من تزوير الطلبات. راجع /⁨integrations/laravel/security-and-operations/.⁩

لا يحكم أي معيار قياسي شكل ملف التكوين. جميع المفاتيح مُتحقَّق منها مقابل config/nextpdf.php الخاص بالحزمة عند المراجعة الموثَّقة. تضبط ⁨Premium⁩ دلالات مستوى التوقيع، وهي خارج نطاق صفحة ⁨Core⁩ هذه.

يقود قسما ⁨signature⁩ و⁨tsa⁩ التوقيع في ⁨Premium⁩ عند تثبيت ⁨nextpdf/premium.⁩ لا تتطلّب هذه القدرة الاختيارية على مستوى ⁨Enterprise⁩ أي تغييرات في شيفرة حزمة ⁨Core.⁩ راجع https://nextpdf.dev/get-license/?intent=laravel-signing.

  • /⁨integrations/laravel/install/⁩ — انشر ملف التكوين
  • /⁨integrations/laravel/production-usage/⁩ — اطّلع على التكوين مطبَّقًا في وحدة تحكّم حقيقية
  • /⁨integrations/laravel/security-and-operations/⁩ — عزّز أمان إعدادات ⁨TSA⁩ والطابور
  • /⁨integrations/laravel/boot-and-discovery/⁩ — اطّلع على الربط الذي يقوده كل مفتاح