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

تثبيت NextPDF compat-legacy

nextpdf/compat-legacy حزمة ⁨Composer.⁩ تتطلّب ⁨PHP 8.4⁩ أو أحدث وnextpdf/core ^3.0. ثبّتها لإضافة صنف توافق يمكنك التحوّل إليه، مع بقاء استدعاءات ⁨TCPDF⁩ الحالية دون تغيير.

التابعالإصدارمصدر الحقيقة
⁨PHP⁩>=8.4 <9.0الحزمة composer.jsonrequire.php
nextpdf/core^3.0الحزمة composer.jsonrequire
⁨Composer⁩2.7 أو أحدثالحد الأدنى لسلسلة الأدوات

تأتي الحزمة مع مجموعة اختبارات خاصة بها، وتعلن ⁨PHPStan⁩ المستوى 10 دون خط أساس. وتتطلّب ⁨PHP 8.4⁩ في وقت التشغيل. يدعم محرك ⁨NextPDF⁩ الأوسع الإصدارات ⁨PHP 8.1⁩ حتى 8.4 على مسار النقل العكسي، لكن هذا المهايئ يحدّد ⁨PHP 8.4⁩ حدًّا أدنى له.

استخدم ⁨Composer⁩ لإضافة الحزمة:

Terminal window
composer require nextpdf/compat-legacy:^3.0

يحلّ ⁨Composer⁩ nextpdf/core ^3.0 بوصفه تابعًا عابرًا. ولا تتطلّب مجموعة الميزات الأساسية أيّ امتداد آخر في وقت التشغيل.

تقبل البيانات الوصفية للحزمة أيضًا الاسم التاريخي nextpdf/compat-tcpdf عبر مدخل replace في ⁨Composer.⁩ على عمليات التثبيت الجديدة أن تتطلّب nextpdf/compat-legacy، الاسم المعتمد للحزمة.

بعد التثبيت، تأكّد من تحميل صنف المهايئ ومن حلّ ارتباط المحرك. يُنشئ الفحص التالي مستند ⁨Portable Document Format⁩ (⁨PDF⁩) من صفحة واحدة داخل الذاكرة بالكامل، ويتحقّق من ترويسة ⁨PDF.⁩ كما يختبر السطح نفسه الذي يتحقّق منه اختبار الحزمة tests/Unit/Compat/Tcpdf/TcpdfOutputTest.php.

examples/install-verify.php
<?php
declare(strict_types=1);
require __DIR__ . '/vendor/autoload.php';
use NextPDF\Compat\Tcpdf\TCPDF;
$pdf = new TCPDF('P', 'mm', 'A4');
$pdf->AddPage();
$pdf->SetFont('helvetica', '', 12);
$pdf->Cell(0, 10, 'compat-legacy install verified');
$bytes = $pdf->Output('verify.pdf', 'S');
if (! str_starts_with($bytes, '%PDF')) {
fwrite(STDERR, "Install check failed: output is not a PDF.\n");
exit(1);
}
echo "OK: adapter loaded, engine linked, PDF produced (" . strlen($bytes) . " bytes).\n";

شغّله:

Terminal window
php examples/install-verify.php

الخرج المتوقّع هو سطر OK: واحد. ويؤكّد وجود بادئة %PDF في السلسلة المُعادة أنّ المهايئ أنشأ NextPDF\Core\Document، وفوّض استدعاءات الصفحة والنص، وسَلسَل خرج ⁨PDF 2.0⁩ صالحًا.

يتطلّب المهايئ nextpdf/core ^3.0. أكّد الإصدار الذي حلّه ⁨Composer⁩:

Terminal window
composer show nextpdf/core --format=json

إذا حلّ ⁨Composer⁩ إصدار محرك خارج ^3.0، فسيفشل المهايئ سريعًا عند الإنشاء بدلًا من إنتاج خرج خاطئ. ثبّت المحرك صراحةً في composer.json الخاص بك إذا كان مشروعك يعتمد عليه مباشرةً أيضًا.

اختياري: الأسماء البديلة العامة للأصناف

قسم بعنوان «اختياري: الأسماء البديلة العامة للأصناف»

إذا كانت قاعدة شيفرتك تستدعي new \TCPDF(...) في فضاء الأسماء العام ولا يمكنك بعدُ تغيير سطور use/require تلك، فيمكن للحزمة تسجيل أسماء بديلة عامة. هذا السلوك اختياري بالاشتراك ومشروح في /⁨integrations/tcpdf-compat/boot-and-discovery/.⁩ لا تفعّله إذا كانت مكتبة ⁨TCPDF⁩ الحقيقية مثبّتة أيضًا في العملية نفسها؛ راجع /⁨integrations/tcpdf-compat/troubleshooting/⁩ لمعرفة قاعدة تجنّب التعارض.

  • لا يعدّل تابع ⁨TCPDF⁩ قائمًا ولا يزيله. لا تُزل tecnickcom/tcpdf إلا بوصف ذلك خطوة لاحقة مقصودة في /⁨integrations/tcpdf-compat/migration/.⁩
  • لا يفعّل التواقيع الرقمية ولا ⁨PDF/A.⁩ تتطلّب هذه الميزات إصدارًا تجاريًا من ⁨NextPDF⁩ (راجع /⁨integrations/tcpdf-compat/security-and-operations/⁩).
  • لا يغيّر استهداف خرج ⁨PDF.⁩ الخرج دائمًا ⁨PDF 2.0.⁩
  • /⁨integrations/tcpdf-compat/quickstart/⁩ — أنشئ أوّل مستند حقيقي لك.
  • /⁨integrations/tcpdf-compat/configuration/⁩ — اضبط الوضع الصارم والمهايئ.
  • /⁨integrations/tcpdf-compat/migration/⁩ — استخدم استراتيجية الترحيل ملفًا تلو الآخر.
  • /⁨integrations/tcpdf-compat/method-coverage/⁩ — اطّلع بدقّة على ما يفعله كل تابع من توابع ⁨TCPDF⁩ هنا.
  • composer.json الحزمة — قيود التوابع المرجعية
  • docs/TCPDF_COVERAGE.md — مصفوفة التغطية المرجعية (داخل المستودع)