البدء السريع — أول ملف PDF لك في CodeIgniter 4
لمحة سريعة
قسم بعنوان «لمحة سريعة»استدعِ الخدمة pdf داخل متحكّم، وأضِف محتوى إلى المستند، ثم أعِد استجابة تنزيل. يمنحك ذلك ملفًا بصيغة Portable Document Format (PDF) في ثلاثة أسطر، مع استجابة Hypertext Transfer Protocol (HTTP) واحدة.
التثبيت
قسم بعنوان «التثبيت»composer require nextpdf/codeigniterللاطّلاع على المتطلّبات وفحوص اكتشاف الحزمة، راجِع /integrations/codeigniter/install/.
الخطوة 1 — أنشئ متحكّمًا
قسم بعنوان «الخطوة 1 — أنشئ متحكّمًا»أنشئ متحكّمًا يُعيد ملف PDF. تنشئ مكتبة Pdf مستندًا جديدًا لك، ثم تحوّل ذلك المستند إلى DownloadResponse من CodeIgniter.
يضع كل مثال PHP في هذه الصفحة declare(strict_types=1); بعد وسم الفتح مباشرةً، في سطر مستقلّ (PSR-12 §x1.x3.p11؛ §x1.x3.p34).
<?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"); }}يُعيد Services::pdf() كائن Pdf جديدًا. وتتحقّق مجموعة الاختبارات الوظيفية للحزمة أيضًا من أن المستند الأساسي يكون جديدًا في كل استدعاء. يُنتج استدعاء download() كائن DownloadResponse مع وضع التوزيع attachment.
الخطوة 2 — أضِف مسارًا
قسم بعنوان «الخطوة 2 — أضِف مسارًا»اربُط مسارًا بدالة المتحكّم داخل app/Config/Routes.php:
$routes->get('invoices/(:num)/pdf', 'InvoiceController::download/$1');الخطوة 3 — اطلُب ملف PDF
قسم بعنوان «الخطوة 3 — اطلُب ملف PDF»افتح /invoices/42/pdf. سيُنزّل المتصفّح invoice-42.pdf. تتضمّن الاستجابة Content-Type: application/pdf وترويسات تحصين الاستجابة الخاصة بالحزمة.
تنويعة — معاينة مضمَّنة باستخدام الدالة المساعِدة
قسم بعنوان «تنويعة — معاينة مضمَّنة باستخدام الدالة المساعِدة»الدالة المساعِدة العامة pdf() مكافئة لـ Services::pdf(). استدعِ inline() لعرض ملف PDF في المتصفّح بدل تنزيله:
<?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'); }}تنويعة — المستند المباشر وPdfResponse
قسم بعنوان «تنويعة — المستند المباشر وPdfResponse»إذا كان لديك بالفعل كائن Document، فابنِ الاستجابة مباشرةً باستخدام PdfResponse. تمنحك الدالة المساعِدة pdf_document() مستندًا جديدًا ومهيّأً مسبقًا.
<?php
declare(strict_types=1);
namespace App\Controllers;
use CodeIgniter\HTTP\DownloadResponse;use NextPDF\CodeIgniter\Http\PdfResponse;
final class DocumentController extends BaseController{ public function generate(): DownloadResponse { $document = pdf_document(); $document->addPage(); $document->cell(0, 10, 'Hello World');
return PdfResponse::download($document, 'hello.pdf'); }}ما الذي أنشأته
قسم بعنوان «ما الذي أنشأته»- متحكّم يستدعي خدمة NextPDF ويُعيد كائن
DownloadResponseمحدّد النوع. - نقطتا دخول متكافئتان: الصنف
Servicesوالدالتان المساعِدتانpdf()/pdf_document(). - استجابة تحمل
application/pdf، وترويسات الأمان الخاصة بالحزمة، واسم ملف منقّى.
الخطوات التالية
قسم بعنوان «الخطوات التالية»للحفاظ على تركيز هذه المقدّمة الأولى، يتجاوز هذا الدليل التعليمي معالجة الأخطاء. للحصول على متحكّمات إنتاجية مع حقن التبعيات، ومعالجة الاستثناءات، وقابلية المراقبة، ومهمّة قائمة الانتظار، تابِع إلى /integrations/codeigniter/production-usage/. تعرض تلك الصفحة التنويعات المحصّنة.
التوافق
قسم بعنوان «التوافق»- وسم فتح PHP في سطر مستقلّ ضمن أمثلة الشيفرة (PSR-12 Extended Coding Style §x1.x3.p11).
- صيغة عبارة declare(strict_types=1) ضمن أمثلة الشيفرة (PSR-12 Extended Coding Style §x1.x3.p34).
انظر أيضًا
قسم بعنوان «انظر أيضًا»- /integrations/codeigniter/overview/ — كامل سطح واجهة برمجة التطبيقات application programming interface (API).
- /integrations/codeigniter/configuration/ — تغيير القيم الافتراضية والمسارات.
- /integrations/codeigniter/production-usage/ — متحكّمات بمستوى الإنتاج ومهام غير متزامنة.
- /integrations/codeigniter/troubleshooting/ — عندما لا يُعيد المسار أيّ ملف PDF.