NextPDF FAQ
ภาพรวมโดยสรุป
หัวข้อที่มีชื่อว่า “ภาพรวมโดยสรุป”หน้านี้ตอบคำถามที่มักเกิดขึ้นก่อนเมื่อคุณประเมิน NextPDF หรือเริ่มโปรเจกต์ใหม่ แต่ละคำตอบสั้นและลิงก์ไปยังหน้าที่ครอบคลุมมันอย่างเต็มที่ NextPDF เป็นเอนจิน PHP 8.4 ที่สร้างและตรวจสอบเอกสาร Portable Document Format (PDF) 2.0 ซึ่งเป็น รูปแบบไฟล์ที่นิยามโดย ISO 32000-2
หากคุณเพิ่งเริ่มใหม่ ให้อ่าน เริ่มต้นใช้งาน ก่อน แล้ว กลับมาที่นี่สำหรับรายละเอียดเฉพาะ
เริ่มต้นใช้งาน
หัวข้อที่มีชื่อว่า “เริ่มต้นใช้งาน”ฉันต้องการรุ่นใด: Core, Pro หรือ Enterprise?
หัวข้อที่มีชื่อว่า “ฉันต้องการรุ่นใด: Core, Pro หรือ Enterprise?”เริ่มด้วย Core core แบบโอเพนซอร์ส (nextpdf/core) สร้างเอาต์พุต PDF เรนเดอร์
HTML ที่รองรับเป็น PDF และตรวจสอบ PDF ภายใต้ใบอนุญาต Apache-2.0 และไม่มีค่าใช้จ่าย
Core สร้างลายเซ็น CMS SignedData สำหรับระดับ baseline PDF Advanced Electronic
Signatures (PAdES) B-B และ B-T อยู่แล้ว เลือก Pro
เมื่อคุณต้องการการสร้างขั้นสูงและการดำเนินการกับเอกสาร เอาต์พุตใบแจ้งหนี้อิเล็กทรอนิกส์
(Factur-X / ZUGFeRD) หรือ workflow การลงนามขั้นสูงเช่นการลงนามระยะไกล
การลงนามผ่าน cloud-KMS และการลงนามตามลำดับ เลือก Enterprise เมื่อคุณต้องการ workflow การประพันธ์การเก็บถาวร PDF/A ระดับ
long-term ของ PAdES (B-LT / B-LTA) พร้อม Document Security Store และ
timestamp เอกสาร การลงนามที่ฮาร์ดแวร์รองรับผ่าน hardware security
module (HSM) หรือลายเซ็นอิเล็กทรอนิกส์แบบ qualified Pro และ Enterprise เป็นสองรุ่นที่ออกใบอนุญาตของ NextPDF Premium ซึ่งเป็นสายผลิตภัณฑ์แบบชำระเงินที่ติดตั้งผ่านแพ็กเกจ nextpdf/premium ดู
เลือกเส้นทางของคุณ
มันเป็น Apache-2.0 จริงหรือ?
หัวข้อที่มีชื่อว่า “มันเป็น Apache-2.0 จริงหรือ?”ใช่ สำหรับ core nextpdf/core ประกาศ "license": "Apache-2.0" และมาพร้อม
ข้อความ Apache License 2.0 ฉบับเต็มในไฟล์ LICENSE ของมัน คุณสามารถใช้ ปรับเปลี่ยน
แจกจ่ายต่อ และทำเชิงพาณิชย์กับ core ได้ ภายใต้ข้อกำหนดการให้เครดิตและ NOTICE
(Apache-2.0 §4) NextPDF Pro และ NextPDF Enterprise เป็นรุ่นเชิงพาณิชย์แบบกรรมสิทธิ์
และ ไม่ อยู่ภายใต้ใบอนุญาตนั้น ชื่อและโลโก้ NextPDF เป็นเครื่องหมายการค้า
แยกต่างหากจากใบอนุญาตของโค้ด ดู การออกใบอนุญาตผลิตภัณฑ์
เวอร์ชัน PHP ขั้นต่ำคืออะไร?
หัวข้อที่มีชื่อว่า “เวอร์ชัน PHP ขั้นต่ำคืออะไร?”PHP 8.4 ข้อจำกัดของแพ็กเกจคือ >=8.4 <9.0 ดังนั้น Composer ปฏิเสธที่จะติดตั้ง
บน PHP 8.3 หรือต่ำกว่า หรือบน PHP 9 NextPDF มุ่งเป้าไปที่ runtime สมัยใหม่หนึ่งตัว
และใช้คุณสมบัติของภาษาโดยตรง ดู ติดตั้ง NextPDF
มันต้องการไบนารีภายนอกหรือเบราว์เซอร์แบบ headless หรือไม่?
หัวข้อที่มีชื่อว่า “มันต้องการไบนารีภายนอกหรือเบราว์เซอร์แบบ headless หรือไม่?”ไม่ ไม่ใช่สำหรับเอนจิน core เอนจินเนทีฟ implement ด้วย PHP และ extension PHP
มาตรฐาน โดยไม่มีไบนารี PDF ภายนอกและไม่มีเบราว์เซอร์แบบ headless ที่บังคับ: fluent
API และไปป์ไลน์ HTML writeHtml() ที่มีในตัวรันภายในกระบวนการโดยไม่มีเบราว์เซอร์
และไม่มีการเรียกผ่านเครือข่าย ไบนารี Chrome หรือ Chromium เป็น ทางเลือก และ
ต้องการเฉพาะสำหรับตัวเรนเดอร์ Artisan (writeHtmlChrome()) ซึ่งคุณติดตั้งแยก
ต่างหากเป็น nextpdf/artisan Cloudflare และ Gotenberg bridge ก็เป็นทางเลือก
และเรียกออกไปยังบริการ ดู เลือกเส้นทางของคุณ
มันต้องการ extension PHP ใดบ้าง?
หัวข้อที่มีชื่อว่า “มันต้องการ extension PHP ใดบ้าง?”composer.json ของ core ต้องการ extension มาตรฐาน ext-mbstring,
ext-zlib, ext-intl, ext-gd, ext-curl และ ext-openssl ซึ่งเป็น
extension PHP ที่มีให้ทั่วไป ตรวจสอบให้แน่ใจว่ามันติดตั้งและเปิดใช้งานใน runtime
ของคุณ ext-curl รองรับการ round-trip ผ่านเครือข่ายที่เป็นทางเลือก — การ
timestamp ตาม RFC 3161 และการดึง asset รีโมต — ดังนั้นการสร้างแบบเนทีฟแบบ
offline จึงไม่ใช้มัน แต่ Composer ยังคงระบุมันเป็นข้อกำหนดที่บังคับ integration
ตรวจสอบ extension ที่ต้องการ ณ เวลา boot และหยุดพร้อมข้อความที่ชัดเจนหากตัวใด
ขาดหายไป รายการเต็มอยู่ใน composer.json ของแพ็กเกจ ดู
ติดตั้ง NextPDF
ฉันสร้าง PDF แรกของฉันได้อย่างไร?
หัวข้อที่มีชื่อว่า “ฉันสร้าง PDF แรกของฉันได้อย่างไร?”ติดตั้ง core แล้วสร้างเอกสารด้วย fluent API
<?php
declare(strict_types=1);
require_once __DIR__ . '/vendor/autoload.php';
use NextPDF\Core\Document;
$document = Document::createStandalone();$document->addPage();$document->setFont('helvetica', 'B', 24);$document->cell(0, 15, 'Hello, NextPDF!', newLine: true);$document->save(__DIR__ . '/first.pdf');เดินทีละขั้นตอนใน PDF แรกของคุณ
รุ่นและการออกใบอนุญาต
หัวข้อที่มีชื่อว่า “รุ่นและการออกใบอนุญาต”Core มีข้อจำกัดคุณสมบัติหรือลายน้ำหรือไม่?
หัวข้อที่มีชื่อว่า “Core มีข้อจำกัดคุณสมบัติหรือลายน้ำหรือไม่?”ไม่ Core เป็นเอนจินโอเพนซอร์สสำหรับชุดคุณสมบัติ Core โดยไม่มีลายน้ำและไม่มี หน้าจอเตือน สำหรับชุดคุณสมบัติ Core — การสร้าง การตรวจสอบ การเข้ารหัส primitive เอาต์พุต PDF/A และ PDF/UA และการลงนาม B-B/B-T ด้วยคีย์ซอฟต์แวร์ (โดยไม่มี workflow long-term-validation และ key-custody ของ Premium) — Core สมบูรณ์ ลายน้ำการประเมินมีผลเฉพาะกับ สิทธิ์การประเมิน Premium ที่คุณทดสอบชุดคุณสมบัติ Pro และ Enterprise เต็มหลังเครื่องหมายที่ลบได้ ใบอนุญาตที่ชำระเงินลบมันออกโดย ไม่ต้องเปลี่ยนโค้ดแอปพลิเคชัน ดู การออกใบอนุญาตและการเปิดใช้งาน
ฉันต้องเปลี่ยนโค้ดเพื่ออัปเกรดเป็น Pro หรือ Enterprise หรือไม่?
หัวข้อที่มีชื่อว่า “ฉันต้องเปลี่ยนโค้ดเพื่ออัปเกรดเป็น Pro หรือ Enterprise หรือไม่?”ส่วนใหญ่ไม่ เมื่อคุณติดตั้ง nextpdf/premium integration ของเฟรมเวิร์กและ
เซิร์ฟเวอร์ตรวจพบมันโดยอัตโนมัติและเปิดเผยความสามารถเพิ่มเติม แอปพลิเคชันส่วนใหญ่
ยังคงใช้จุดเชื่อมต่อระดับสูงเดียวกัน workflow บางตัวของ Premium อาจต้องการ
การกำหนดค่าหรือการเรียกเฉพาะคุณสมบัติ คุณเปิดใช้งานซองใบอนุญาตที่ลงนามแล้วหนึ่ง
ครั้งต่อการ deploy ดู การออกใบอนุญาตและการเปิดใช้งาน
ฉันใช้ core ในผลิตภัณฑ์เชิงพาณิชย์แบบ closed-source ได้หรือไม่?
หัวข้อที่มีชื่อว่า “ฉันใช้ core ในผลิตภัณฑ์เชิงพาณิชย์แบบ closed-source ได้หรือไม่?”ได้ Apache License 2.0 ไม่มีข้อจำกัดแบบไม่ใช่เชิงพาณิชย์ คุณสามารถใช้ core ใน
ผลิตภัณฑ์เชิงพาณิชย์แบบ closed-source แบบชำระเงิน หรือภายใน โดยมีเงื่อนไขว่าคุณ
ปฏิบัติตามภาระผูกพันการให้เครดิตและ NOTICE และไม่ถือว่าใบอนุญาตของโค้ดเป็น
การอนุญาตให้ใช้แบรนด์ NextPDF ดู การออกใบอนุญาตผลิตภัณฑ์ และ
เครื่องหมายการค้าและการใช้แบรนด์
ความสามารถ
หัวข้อที่มีชื่อว่า “ความสามารถ”มันอ่านและแยกวิเคราะห์ PDF ได้ หรือเขียนได้อย่างเดียว?
หัวข้อที่มีชื่อว่า “มันอ่านและแยกวิเคราะห์ PDF ได้ หรือเขียนได้อย่างเดียว?”ทั้งสองอย่าง พร้อมข้อแม้ NextPDF เขียน PDF และยังอ่านมันด้วย: โมดูล Inspect อ่าน
ไฟล์ที่มีอยู่ลงใน InspectResult ที่มีโครงสร้างพร้อมข้อมูลความซับซ้อน ฟอนต์
รูปภาพ และความเสี่ยง และคุณสามารถรวมและแยกเอกสารที่มีอยู่ Inspect ถูกทำเครื่องหมาย
เป็น experimental ดังนั้นรูปร่างผลลัพธ์ของมันอาจเปลี่ยนระหว่างเวอร์ชัน minor —
ใช้มันสำหรับการวินิจฉัยและการ gating ไม่ใช่เป็นสัญญาที่มีอายุยาว ดู
โมดูล Inspect
มันสร้างข้อความที่เลือกและค้นหาได้หรือไม่?
หัวข้อที่มีชื่อว่า “มันสร้างข้อความที่เลือกและค้นหาได้หรือไม่?”ใช่ ทั้ง fluent API และไปป์ไลน์ writeHtml() ที่มีในตัวปล่อยเนื้อหาข้อความจริง
ไม่ใช่รูปภาพ rasterize ดังนั้นเอาต์พุตจึงเลือกและค้นหาได้ writeHtmlChrome()
ของตัวเรนเดอร์ Artisan ก็ทำให้ข้อความเลือกได้เช่นกัน ดู
PDF แรกของคุณ
การเรนเดอร์ HTML และ CSS ทำงานอย่างไร?
หัวข้อที่มีชื่อว่า “การเรนเดอร์ HTML และ CSS ทำงานอย่างไร?”เอนจิน core มีไปป์ไลน์ HTML แบบ pure-PHP writeHtml() เรนเดอร์ HTML fragment
ด้วยชุดย่อยของ CSS ที่รองรับลงในหน้าโดยตรง โดยไม่มีเบราว์เซอร์และไม่มีการเรียก
ผ่านเครือข่าย เมื่อเลย์เอาต์ต้องการความเที่ยงตรงระดับเบราว์เซอร์เต็ม — เช่น
flexbox, grid หรือ web font — ให้ติดตั้งตัวเรนเดอร์ Artisan และเรียก
writeHtmlChrome() ก่อนที่คุณจะพึ่งพา property ใด ให้ตรวจสอบ
เมทริกซ์สถานะการรองรับ CSS
ฟอนต์ทำงานอย่างไร?
หัวข้อที่มีชื่อว่า “ฟอนต์ทำงานอย่างไร?”alias ฟอนต์มาตรฐานที่มีในตัวเช่น Helvetica ทำงานโดยไม่ต้องตั้งค่าสำหรับข้อความ WinAnsi อย่างง่าย ดังนั้นเอกสารแรกของคุณจึงไม่ต้องการไฟล์ฟอนต์ ฟอนต์มาตรฐานละติน ที่มีในตัวเหมาะกับข้อความ WinAnsi พื้นฐาน Symbol และ ZapfDingbats ใช้การเข้ารหัส ของตัวเอง หากต้องการเรนเดอร์สคริปต์อื่น คุณลงทะเบียนและฝังฟอนต์ที่ character map และเส้นทาง shaping รองรับสคริปต์นั้น ดู เมทริกซ์สถานะการรองรับฟอนต์ และ โมดูล Font
มันรองรับ PDF/A และการเข้าถึง (PDF/UA) หรือไม่?
หัวข้อที่มีชื่อว่า “มันรองรับ PDF/A และการเข้าถึง (PDF/UA) หรือไม่?”ใช่ พร้อมขอบเขตที่ชัดเจน: การรองรับ profile ไม่ใช่ความสอดคล้อง core มาพร้อม
ตัวจำแนกความสอดคล้องและ primitive การแท็ก — enableTaggedPdf() เปิดใช้งานเอาต์พุต
โครงสร้าง tagged-PDF ที่ใช้สำหรับ workflow PDF/UA และ enablePdfA() เลือก
profile เอาต์พุต PDF/A ใน Core รุ่น Premium เพิ่ม workflow การประพันธ์การเก็บถาวร
และเครื่องมือระดับสูงกว่า (การตรวจสอบ นโยบาย และการดำเนินการผลิต) เพิ่มเติม
NextPDF ปล่อย artifact เชิงโครงสร้างที่ profile ต้องการ ตัวตรวจสอบอิสระเช่น
veraPDF เป็นผู้ตัดสินว่าไฟล์หนึ่งสอดคล้องจริงหรือไม่ ดู
ความสอดคล้อง และ
โมดูล Accessibility
ฉันลงนาม PDF อย่างไร?
หัวข้อที่มีชื่อว่า “ฉันลงนาม PDF อย่างไร?”Core สามารถสร้างลายเซ็น Cryptographic Message Syntax (CMS) SignedData และ
สามารถใช้ timestamp ตาม RFC 3161 (ระดับ B-T) โดยใช้อัลกอริทึมคีย์ซอฟต์แวร์ที่
รองรับผ่านผู้ให้บริการลงนามที่กำหนดค่าไว้ โค้ดของคุณขึ้นกับ contract
SignerInterface ดังนั้นการเรียกเดียวกันทำงานข้ามรุ่น ระดับ long-term PAdES
B-LT และ B-LTA, key custody แบบ HSM และ PKCS#11 และลายเซ็นแบบ qualified
เป็นความสามารถของ Enterprise ส่วน workflow การลงนามที่ cloud และ KMS
รองรับมีให้ใน Pro Core สร้างโครงสร้าง baseline B-B และ B-T ดู
โมดูล Signing
การใช้งานจริง
หัวข้อที่มีชื่อว่า “การใช้งานจริง”มัน worker-safe และ thread-safe หรือไม่?
หัวข้อที่มีชื่อว่า “มัน worker-safe และ thread-safe หรือไม่?”Document ใช้ได้ครั้งเดียว: เมื่อคุณเขียนหนึ่งเอกสารแล้ว ให้สร้าง instance ใหม่
สำหรับเอกสารถัดไปแทนที่จะใช้ซ้ำ สิ่งนี้ทำให้มันเข้ากันได้ตามธรรมชาติกับโมเดล
ต่อคำขอ ต่องาน ที่ PHP-FPM, queue worker และเฟรมเวิร์กใช้ — แต่ละหน่วยงานสร้าง
เอกสารของตัวเอง เมื่อคุณแยกวิเคราะห์หรือประกอบอินพุตที่ไม่น่าเชื่อถือ ให้รันงานนั้น
ใน worker ที่ถูกจำกัดและรักษาตัวป้องกันทรัพยากร (maxFiles, maxTotalBytes,
maxBytes) ให้รัดกุม ดู โมดูล Document และ
threat model ของเอนจิน
เอาต์พุตเป็น deterministic หรือไม่?
หัวข้อที่มีชื่อว่า “เอาต์พุตเป็น deterministic หรือไม่?”มันเป็น deterministic เชิงโครงสร้าง แต่ไม่เหมือนกันในระดับไบต์ต่อไบต์โดยค่าเริ่มต้น
การรันอินพุตเดียวกันสองครั้งให้ PDF ที่เท่ากันเชิงโครงสร้าง แต่แต่ละไฟล์นำพา
trailer และ /ID ของเอกสารที่สดใหม่ ดังนั้นไบต์จึงแตกต่างกัน การลงนามและ
timestamp เพิ่มความแปรปรวนต่อการรันเพิ่มเติมโดยการออกแบบ วางแผนการเปรียบเทียบ
รอบความเท่ากันเชิงโครงสร้าง หรือ normalize ฟิลด์ที่ผันผวน แทนที่จะคาดหวังไบต์ที่
เหมือนกันข้ามการรัน
ฉัน deploy มันอย่างไร?
หัวข้อที่มีชื่อว่า “ฉัน deploy มันอย่างไร?”commit composer.lock เพื่อให้ทุก worker ที่ deploy แก้ไขเวอร์ชันเอนจินเดียวกัน
แล้ว deploy เหมือนกับ library PHP ใดๆ — การสร้างแบบเนทีฟไม่ต้องการ daemon
เบราว์เซอร์ หรือเครือข่าย การ timestamp (B-T), asset รีโมต หรือ browser bridge
ที่เป็นทางเลือกต้องการการเข้าถึงเครือข่ายที่กำหนดค่าไว้ หากบริการที่ไม่ใช่ PHP
ต้องการเอนจิน ให้รัน NextPDF Server ซึ่งเปิดเผยมันผ่าน Model
Context Protocol (MCP), REST และ gRPC สำหรับ Premium ให้วางซองใบอนุญาตที่ลงนาม
แล้วที่ที่การ deploy โหลดมัน และรันขั้นตอนการเปิดใช้งานครั้งเดียว สถานะใบอนุญาตที่
แคชไว้หมายความว่าการประมวลผลปกติไม่ต้องการบริการใบอนุญาต ดังนั้นการ deploy แบบ
air-gapped จึงรองรับ ดู ติดตั้ง NextPDF
และ การออกใบอนุญาตและการเปิดใช้งาน
ฉันนำความล้มเหลวไปที่ไหนเมื่อมีบางอย่างผิดพลาด?
หัวข้อที่มีชื่อว่า “ฉันนำความล้มเหลวไปที่ไหนเมื่อมีบางอย่างผิดพลาด?”NextPDF รายงานข้อผิดพลาดตามคลาสข้อยกเว้น PHP ไม่ใช่ตามรหัสข้อผิดพลาดแบบสตริง และข้อยกเว้นที่ตระหนักถึงบริบทนำพาฟิลด์การวินิจฉัยที่มีโครงสร้าง การแก้ไขปัญหา จับคู่ความล้มเหลวด้านลายเซ็น PDF/A, PDF/UA, ฟอนต์, การแท็ก และการเข้ารหัสที่พบบ่อยกับสาเหตุและการแก้ไข