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

PDF ฉบับแรกของคุณ

ในบทแนะนำนี้ คุณจะสร้างไฟล์ PDF สองไฟล์ ไฟล์แรกเขียนข้อความโดยตรงด้วย Application Programming Interface (API) แบบ fluent ของ core จากนั้นเรนเดอร์ Hypertext Markup Language (HTML) fragment ที่มี Cascading Style Sheets (CSS) ลงบนหน้า เมื่อจบบทนี้ คุณจะมีสคริปต์ที่ใช้งานได้และนำไปปรับใช้กับเอกสารจริงได้ พร้อมลิงก์ไปยังรูปแบบการใช้งานสำหรับเฟรมเวิร์กและเซิร์ฟเวอร์

ทั้งสองแนวทางทำงานบนเอนจินเดียวกัน ดังนั้นสิ่งที่เรียนรู้ในบทนี้จึงนำไปใช้ได้กับการแจกจ่ายทุกแบบ

ยังไม่เคยสร้าง PDF มาก่อนเลยใช่ไหม เส้นทางบทเรียนแบบทีละขั้น จะดำเนินไปช้ากว่าและอธิบายทุกบรรทัด

แผนภาพด้านล่างแสดงแนวทางการสร้างเอกสารสองแบบ และพื้นที่ใช้งานสามแบบที่นำแนวทางเหล่านั้นมาใช้ซ้ำ

From your code to a PDF fileTwo authoring approaches feed one engine, which produces a PDF that you can save, stream, or return from a framework or server.

Authoring

Fluent API

setFont() + cell()

HTML fragment

writeHtml()

Document

Core engine

(pure PHP)

PDF 2.0 bytes

save() to disk

output() / getPdfData()

stream or in memory

Framework response

or server REST reply

From your code to a PDF file

ต้องติดตั้งเอนจิน core ไว้แล้ว และมีสภาพแวดล้อมสำหรับรันสคริปต์ PHP

  1. ตรวจสอบว่า PHP 8.4 เป็นรันไทม์ที่ใช้งานอยู่:

    Terminal window
    php --version
  2. ติดตั้งเอนจิน core ในโปรเจกต์ของคุณ หากยังไม่ได้ติดตั้ง:

    Terminal window
    composer require nextpdf/core
  3. สร้างไฟล์สำหรับทำงานชื่อ first-pdf.php ที่รากของโปรเจกต์

เริ่มต้นด้วย API แบบ fluent Document::createStandalone() คืนค่าเอกสารที่ใช้งานได้ทันที เพิ่มหน้า กำหนดฟอนต์ เขียนเซลล์ แล้วบันทึก เมธอดสร้างเอกสารแต่ละเมธอดจะคืนค่าเอกสารกลับมา จึงอ่านลำดับการเรียกใช้จากบนลงล่างได้

  1. วางโค้ดนี้ใน first-pdf.php สคริปต์นี้ประกาศ strict types โหลด autoloader และสร้างหน้าเดียว:

    <?php
    declare(strict_types=1);
    require_once __DIR__ . '/vendor/autoload.php';
    use NextPDF\Core\Document;
    $document = Document::createStandalone();
    $document->setTitle('My first NextPDF document');
    $document->addPage();
    $document->setFont('helvetica', 'B', 24);
    $document->cell(0, 15, 'Hello, NextPDF!', newLine: true);
    $document->setFont('helvetica', '', 12);
    $document->cell(0, 10, 'This is the first PDF I generated with PHP.', newLine: true);
    $document->save(__DIR__ . '/first-pdf.pdf');
    echo "Wrote first-pdf.pdf\n";
  2. รันสคริปต์:

    Terminal window
    php first-pdf.php
  3. ตรวจสอบผลลัพธ์ คุณควรเห็นบรรทัดนี้ใน standard output และไฟล์ใหม่ชื่อ first-pdf.pdf อยู่ในตำแหน่งเดียวกับสคริปต์:

    Wrote first-pdf.pdf

ตอนนี้คุณได้สร้างไฟล์ PDF 2.0 ที่ถูกต้องแล้ว เปิดไฟล์ในโปรแกรมดู PDF ใดก็ได้เพื่อดูหัวเรื่องและบรรทัดที่อยู่ด้านล่าง

การเขียนเซลล์ช่วยให้ควบคุมได้อย่างแม่นยำ แต่เอกสารส่วนใหญ่มักเขียนในรูปแบบ HTML และ CSS ได้เร็วกว่า เอนจิน core มี HTML pipeline แบบ pure-PHP รวมอยู่ด้วย เมธอด writeHtml() ของเอนจินจะเรนเดอร์ fragment ลงบนหน้าปัจจุบัน เมธอดนี้ไม่ใช้เบราว์เซอร์หรือบริการภายนอก

  1. สร้างไฟล์ที่สอง html-pdf.php ที่เรนเดอร์ HTML fragment:

    <?php
    declare(strict_types=1);
    require_once __DIR__ . '/vendor/autoload.php';
    use NextPDF\Core\Document;
    $document = Document::createStandalone();
    $document->setTitle('HTML to PDF');
    $document->addPage();
    $html = <<<'HTML'
    <h1 style="color: #1E3A8A;">HTML rendering in NextPDF</h1>
    <p>NextPDF renders <strong>HTML content</strong> directly into PDF pages.</p>
    <ul>
    <li>Headings, paragraphs, and lists</li>
    <li>Inline <strong>bold</strong> and <em>italic</em></li>
    <li>Inline styles such as color and font-size</li>
    </ul>
    HTML;
    $document->writeHtml($html);
    $document->save(__DIR__ . '/html-pdf.pdf');
    echo "Wrote html-pdf.pdf\n";
  2. รันไฟล์:

    Terminal window
    php html-pdf.php
  3. ยืนยันบรรทัดผลลัพธ์และไฟล์ใหม่:

    Wrote html-pdf.pdf

เอนจินเรนเดอร์เฉพาะชุดย่อยของ HTML และ CSS ที่รองรับ ก่อนพึ่งพาคุณสมบัติใด ให้ตรวจสอบ เมทริกซ์การรองรับ CSS เมื่อเค้าโครงต้องการความเที่ยงตรงระดับเบราว์เซอร์เต็มรูปแบบ เช่น flexbox, grid หรือ web fonts ให้ติดตั้ง ตัวเรนเดอร์ Artisan และเรียก writeHtmlChrome() แทน เมธอดนั้นยังทำให้เลือกข้อความได้

แอปพลิเคชันของคุณอาจทำงานอยู่บนเฟรมเวิร์กหรือผ่านเซิร์ฟเวอร์อยู่แล้ว การเรียกใช้สองแบบเดิมสามารถย้ายเข้าไปในสภาพแวดล้อมนั้นได้ เอนจินยังคงเหมือนเดิม มีเพียงส่วนเชื่อมต่อเท่านั้นที่เปลี่ยนไป

facade Pdf จัดเตรียมเอกสารใหม่ให้สำหรับการเรียกแต่ละครั้ง ส่วน PdfResponse แปลงเอกสารเป็นการตอบกลับสำหรับดาวน์โหลด:

<?php
declare(strict_types=1);
namespace App\Http\Controllers;
use Illuminate\Http\Response;
use NextPDF\Contracts\PdfDocumentInterface;
use NextPDF\Laravel\Http\PdfResponse;
final class ReportController extends Controller
{
public function download(): Response
{
$document = app(PdfDocumentInterface::class);
$document->addPage();
$document->cell(0, 10, 'Monthly report', newLine: true);
return PdfResponse::download($document, 'report.pdf');
}
}

ดู คู่มือเริ่มต้นใช้งานด่วนของ Laravel ได้

ตอนนี้คุณได้สร้าง PDF ด้วยสามวิธีแล้ว ใช้หน้าต่อไปนี้เพื่อต่อยอดในแต่ละวิธี