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

مرجع واجهة CodeIgniter البرمجية

توفِّر حزمة ⁨CodeIgniter⁩ واجهة برمجية (⁨API⁩) صغيرة موجَّهة إلى وحدات التحكم. وتتضمن غلاف المكتبة Pdf لمستند واحد (Services::pdf() والمساعد العام pdf())، ومساعدات الاستجابة التي تحوِّل مستندًا مُنشأً إلى DownloadResponse (PdfResponse)، ومصانع Services التي تستند إليها (سجلّات الخطوط والصور، ومصنع المستندات، وعميل اختياري للموقِّع وسلطة الطابع الزمني (⁨TSA⁩))، وفئة الإعداد NextPdf، وGeneratePdfJob للإنشاء غير المتزامن من دوال بانٍ ثابتة قابلة للاستدعاء.

ابدأ بمسار وحدة التحكم الرئيسي: استدعِ Services::pdf() (أو المساعد pdf())، وأضف المحتوى إلى $pdf->document()، وأرجِع $pdf->download('file.pdf'). يغطي هذا المسار الحالة الشائعة. جداول المرجع منظَّمة حسب الواجهة؛ ويعرض قسم “المهام الشائعة” الأشكال القابلة للتشغيل أولًا.

هذه هي أكثر التدفقات الإنتاجية شيوعًا. كل عيِّنة موثَّقة من المصدر مقابل nextpdf/codeigniter.

استخدم مسار العرض القانوني لإرجاع ملف بتنسيق المستندات المحمولة (⁨PDF⁩) قابل للتنزيل من وحدة تحكم:

<?php
declare(strict_types=1);
namespace App\Controllers;
use CodeIgniter\HTTP\DownloadResponse;
use NextPDF\CodeIgniter\Config\Services;
final class InvoiceController extends BaseController
{
public function download(int $id): DownloadResponse
{
$pdf = Services::pdf();
$pdf->document()->addPage();
$pdf->document()->cell(0, 10, "Invoice #{$id}");
return $pdf->download("invoice-{$id}.pdf");
}
}

ما يفعله: ينشئ Pdf جديدًا حول Document جديد، ويكتب خلية واحدة، ويُرجِع DownloadResponse بترتيب attachment ورؤوس الأمان الخاصة بالحزمة.

اعرض ملف ⁨PDF⁩ بشكل مضمّن في المتصفح باستخدام الغلاف نفسه وinline() بدلًا من download():

<?php
declare(strict_types=1);
namespace App\Controllers;
use CodeIgniter\HTTP\DownloadResponse;
final class ReportController extends BaseController
{
public function preview(): DownloadResponse
{
$pdf = pdf();
$pdf->document()->addPage();
$pdf->document()->cell(0, 10, 'Monthly Report');
return $pdf->inline('report.pdf');
}
}

ما يفعله: يستخدم المساعد العام pdf() (المكافئ لـ Services::pdf()) ويُرجِع DownloadResponse بترتيب inline ليعرض المتصفح ملف ⁨PDF⁩ بدلًا من تنزيله.

أنشئ ملف ⁨PDF⁩ بشكل غير متزامن على قائمة الانتظار باستخدام GeneratePdfJob وبانٍ ثابت:

<?php
declare(strict_types=1);
use NextPDF\CodeIgniter\Jobs\GeneratePdfJob;
service('queue')->push('pdf', GeneratePdfJob::class, [
'builder' => 'App\PdfBuilders\InvoiceBuilder::build',
'outputPath' => WRITEPATH . 'pdfs/invoice-42.pdf',
'context' => ['invoice_id' => 42],
]);

ما يفعله: يضع عملية الإنشاء في قائمة الانتظار. يتحقق العامل من البانِي (يجب أن يكون دالة استدعاء ثابتة من النوع App\PdfBuilders\...::method) ومن مسار الإخراج (يجب أن يُحَلّ ضمن WRITEPATH/pdfs/ وأن ينتهي بـ .pdf)، ثم يبني مستندًا جديدًا ويحفظه.

استخدم هذا الجدول عندما يكون لديك غلاف Pdf وتحتاج إلى أساليب الاستجابة أو الحفظ التابعة له.

الرمزالمعاملاتالسلوك الافتراضيالقيمة المُرجَعةيطرح أو يفشل بـملاحظات
NextPDF\CodeIgniter\Libraries\Pdf / new Pdf(Document $document)document: مستند نواة جديد.يغلِّف المستند المُمرَّر لعملية استجابة أو حفظ واحدة.Pdfلا شيء متوقَّع.لا تُعِد استخدام الغلاف بعد إخراج الناتج.
Pdf::document()لا شيء.يُرجِع المستند المغلَّف.NextPDF\Core\Documentلا شيء متوقَّع.استخدم هذا لاستدعاء واجهات تأليف النواة.
Pdf::inline(string $filename = 'document.pdf')filename: اسم ملف الاستجابة.يستخدم ترتيب العرض المضمّن في المتصفح.CodeIgniter\HTTP\DownloadResponseأخطاء تسلسل النواة.يمرِّر التنفيذ إلى PdfResponse::inline().
Pdf::download(string $filename = 'document.pdf')filename: اسم ملف الاستجابة.يستخدم ترتيب المرفق في المتصفح.DownloadResponseأخطاء تسلسل النواة.يمرِّر التنفيذ إلى PdfResponse::download().
Pdf::streamInline(string $filename = 'document.pdf')filename: اسم ملف الاستجابة.يوفِّر تكافؤًا في الواجهة البرمجية مع حزم أطر العمل الأخرى.DownloadResponseأخطاء تسلسل النواة.يتعامل ⁨CodeIgniter⁩ مع الإخراج الثنائي بشكل أصيل.
Pdf::streamDownload(string $filename = 'document.pdf')filename: اسم ملف الاستجابة.يوفِّر تكافؤًا في الواجهة البرمجية مع حزم أطر العمل الأخرى.DownloadResponseأخطاء تسلسل النواة.استخدم عناصر التحكم نفسها في الحجم مثل الاستجابات غير المتدفقة.
Pdf::save(string $path)path: هدف نظام الملفات.يكتب المستند المغلَّف.voidأخطاء نظام الملفات أو أخطاء كتابة النواة.تحقَّق من جذور التخزين قبل الحفظ.

استخدم هذا الجدول عندما تحتاج إلى مصنع خدمة محدد أو دالة مساعدة عامة، بما في ذلك سلوك المشاركة ونوع القيمة المُرجَعة.

الرمزالمعاملاتالسلوك الافتراضيالقيمة المُرجَعةيطرح أو يفشل بـملاحظات
Services::fontRegistry(bool $getShared = true)getShared: علم خدمة ⁨CodeIgniter⁩ المشتركة.يُرجِع سجلًّا مشتركًا، ويُحمِّله مسبقًا بالخطوط المُعدَّة، ثم يقفله.FontRegistryInterfaceRuntimeException لامتدادات مفقودة أو مسار خطوط غير آمن.يرفض أغلفة التدفق وأحرف ⁨null⁩ البايتية في fontsPath.
Services::imageRegistry(bool $getShared = true)getShared: علم الخدمة المشتركة.يُرجِع سجل صور مقيَّدًا مشتركًا بنظام الأقل استخدامًا مؤخرًا (⁨LRU⁩).ImageRegistryلا شيء متوقَّع.يتحكم في حجم ذاكرة التخزين المؤقت imageCacheMb.
Services::documentFactory(bool $getShared = true)getShared: علم الخدمة المشتركة.يُرجِع مصنعًا مشتركًا يستخدم سجلّات مشتركة.DocumentFactoryInterfaceأخطاء إعداد السجل.المصنع قابل لإعادة الاستخدام؛ أما المستندات فلا.
Services::tsaClient(bool $getShared = true)getShared: علم الخدمة المشتركة.يُرجِع null عندما يكون tsa.url فارغًا.`TsaClientnull`أخطاء عميل بروتوكول نقل النص التشعبي (⁨HTTP⁩) أو أخطاء إعداد ⁨TSA.⁩
Services::pdfSigner(bool $getShared = false)getShared: علم الخدمة المشتركة.يُرجِع null عند تعطيل التوقيع.`SignerInterfacenull`أخطاء على مستوى الشهادة أو التوقيع.
Services::pdfDocument(bool $getShared = false)getShared: علم الخدمة المشتركة.ينشئ مستندًا جديدًا، ويطبِّق الإعدادات الافتراضية، ويُعدّ ⁨PDF/A⁩ أو ⁨Artisan⁩ اختياريًا.Documentأخطاء امتداد اختياري أو أخطاء إعداد المستند.أبقِ الافتراضي false من أجل أمان الطلب.
Services::pdf(bool $getShared = false)getShared: علم الخدمة المشتركة.ينشئ غلاف Pdf جديدًا حول مستند جديد.NextPDF\CodeIgniter\Libraries\Pdfأخطاء إعداد المستند.الخدمة الرئيسية الموجَّهة إلى وحدات التحكم.
Services::eInvoiceEmbedder()لا شيء.يُرجِع null ما لم تكن فئة مُضمِّن الفواتير الإلكترونية لـ ⁨Premium Pro⁩ موجودة.`EmbedderInterfacenull`أخطاء إنشاء حزمة اختيارية.
Services::eInvoiceValidator()لا شيء.يُرجِع null ما لم تكن فئة المُحقِّق لـ ⁨Premium Enterprise⁩ موجودة.`ValidatorInterfacenull`أخطاء إنشاء حزمة اختيارية.
Services::eInvoiceProfile()لا شيء.يُرجِع ملف ⁨EN16931⁩ الشخصي عند تثبيت ⁨Premium Pro.⁩`ProfileInterfacenull`أخطاء حزمة اختيارية.
Services::schematronRunner()لا شيء.يُرجِع null ما لم يكن مُحقِّق ⁨Schematron⁩ لـ ⁨Premium Enterprise⁩ موجودًا.`SchematronRunnerInterfacenull`أخطاء إنشاء حزمة اختيارية.
Registrar::Autoload()لا شيء.يضيف مساعد الحزمة إلى إعداد التحميل التلقائي في ⁨CodeIgniter.⁩arrayلا شيء متوقَّع.يُمكِّن pdf() وpdf_document() عند تحميل الوحدة.
pdf()لا شيء.يستدعي Services::pdf(false).Pdfأخطاء إعداد المستند.مساعد ميسِّر لوحدات التحكم.
pdf_document()لا شيء.يستدعي Services::pdfDocument(false).Documentأخطاء إعداد المستند.مساعد ميسِّر عند تفضيل الواجهة البرمجية لمستند النواة.

استخدم هذا الجدول عندما يكون لديك بالفعل Document مُنشأ وتريد إنشاء DownloadResponse بنفسك بدلًا من استخدام غلاف Pdf.

الرمزالمعاملاتالسلوك الافتراضيالقيمة المُرجَعةيطرح أو يفشل بـملاحظات
PdfResponse::inline(Document $document, string $filename = 'document.pdf')document: مستند مُنشأ؛ filename: اسم ملف الاستجابة.يضمن امتداد .pdf وترتيب العرض المضمّن.DownloadResponseأخطاء تسلسل النواة.يضيف نوع محتوى ⁨PDF⁩ ورؤوسًا دفاعية.
PdfResponse::download(Document $document, string $filename = 'document.pdf')مثل inline؛ والترتيب هو مرفق.يضمن امتداد .pdf.DownloadResponseمثل inline.استخدمه لتنزيلات المتصفح.
PdfResponse::streamInline(Document $document, string $filename = 'document.pdf')مثل inline.نفس سلوك inline في ⁨CodeIgniter 4⁩ (⁨CI4⁩).DownloadResponseمثل inline.موجود من أجل تكافؤ الواجهة البرمجية عبر أطر العمل.
PdfResponse::streamDownload(Document $document, string $filename = 'document.pdf')مثل download.نفس سلوك download في ⁨CI4.⁩DownloadResponseمثل download.موجود من أجل تكافؤ الواجهة البرمجية عبر أطر العمل.

استخدم هذا الجدول عند ربط الإنشاء غير المتزامن وتحتاج إلى مفاتيح بيانات المهمة الدقيقة وعقد دالة البانِي القابلة للاستدعاء.

الرمزالمعاملاتالسلوك الافتراضيالقيمة المُرجَعةيطرح أو يفشل بـملاحظات
GeneratePdfJob::process()مفاتيح بيانات المهمة: builder وoutputPath وcontext الاختياري.يستخدم مصفوفة سياق فارغة عند الحذف.voidInvalidArgumentException لبانٍ غير آمن أو مسار إخراج غير آمن؛ وأخطاء كتابة النواة.يجب أن يكون البانِي App\PdfBuilders\...\*::method.
دالة البانِي القابلة للاستدعاءDocument $doc، array $context.لا سياق افتراضي يتجاوز بيانات المهمة.Documentاستثناءات خاصة بالبانِي.يتطلب دالة استدعاء ثابتة لأن حمولات قائمة انتظار ⁨CI4⁩ بيانات مُسلسَلة.

استخدم هذا الجدول عند تغيير الإعدادات الافتراضية لتنسيق الصفحة والمسارات والتوقيع و⁨TSA⁩ أو بيانات المستند الوصفية على فئة الإعداد NextPdf.

الخاصيةالنوعالسلوك الافتراضيملاحظات
pageFormatstringA4.يضبط تنسيق الصفحة الافتراضي.
orientationstringP.يضبط الاتجاه الافتراضي.
unitstringmm.يضبط الوحدة الافتراضية.
pdfa`stringnull`null.
fontsPath / cachePathstringWRITEPATH . 'fonts' وWRITEPATH . 'cache/nextpdf'.أبقِ المسارات داخل مساحة تخزين يتحكم فيها التطبيق.
signaturearrayمُعطَّل بمستوى B-B.الشهادة والمفتاح وكلمة المرور والشهادات الإضافية والمستوى.
tsaarrayمُعطَّل عندما يكون محدِّد موقع الموارد الموحَّد (⁨URL⁩) هو null؛ المهلة 30 ثانية.بيانات الاعتماد، وملفات أمان طبقة النقل المتبادل (⁨mTLS⁩)، وتثبيتات المفاتيح العامة، وسياسة ⁨HTTP.⁩
ocspCachearrayمُفعَّل بمدة بقاء (⁨TTL⁩) قدرها 86400 ثانية.تستخدمه تدفقات التحقق من التوقيع عند توفُّره.
preloadFontslist<string>فارغة.تُحمَّل مسبقًا قبل قفل السجل.
imageCacheMbint50.يتحكم في ذاكرة التخزين المؤقت للصور طوال عمر العملية.
fontCacheLockingbooltrue.يُبقي تعديلات سجل الخطوط خارج معالجة الطلبات.
artisanarrayمُصيِّر ⁨Chrome⁩ مُعطَّل ما لم يكن مُعدًّا ومُثبَّتًا.يُطابِق ChromeRendererConfig::fromArray().
defaultsarrayالمُنشئ NextPDF، ومؤلف فارغ، واللغة en، وهوامش افتراضية، وخط افتراضي.يطبِّق Services::pdfDocument() فقط creator وlanguage و(عند عدم كونه فارغًا) author؛ أما margin_top/right/bottom/left وfont_family وfont_size وtrim_box وbleed_box فهي إعدادات افتراضية معرَّفة، لكنه لا يطبِّقها حاليًا.
  • يحصر GeneratePdfJob الإخراج في WRITEPATH . 'pdfs' ويتطلب .pdf.
  • تُرفَض دوال البانِي القابلة للاستدعاء خارج App\PdfBuilders لتجنُّب تنفيذ تعليمات برمجية عشوائية من حمولات قائمة انتظار مُعدَّلة.
  • استخدم service('pdf') أو مساعد الحزمة لتدفقات وحدات التحكم؛ واستخدم مهام قائمة الانتظار للإنشاء طويل الأمد.