ข้ามไปยังเนื้อหา

การติดตั้ง 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
Composer2.7 หรือใหม่กว่าเกณฑ์พื้นฐานของชุดเครื่องมือ

แพ็กเกจมาพร้อมชุดทดสอบของตนเอง และประกาศใช้ PHPStan Level 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 แก้ไขเวอร์ชัน core เป็นเวอร์ชันนอก ^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 — เมทริกซ์ความครอบคลุมที่เป็นแหล่งอ้างอิงหลัก (อยู่ในรีโป)