Bỏ qua để đến nội dung

PDF đầu tiên của bạn

Trong hướng dẫn này, bạn sẽ tạo hai tệp PDF. Trước tiên, bạn viết văn bản trực tiếp bằng core Application Programming Interface (API) dạng fluent. Sau đó, bạn kết xuất một đoạn Hypertext Markup Language (HTML) có Cascading Style Sheets (CSS) thành một trang. Khi hoàn tất, bạn sẽ có một script chạy được để điều chỉnh cho tài liệu thực tế, cùng các liên kết đến các biến thể framework và server.

Cả hai cách tiếp cận đều chạy trên cùng một engine, nên những gì bạn học ở đây áp dụng cho mọi bản phân phối.

Sơ đồ bên dưới cho thấy hai cách tạo nội dung và ba bề mặt triển khai có thể dùng lại chúng.

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

Bạn cần cài đặt core engine và có môi trường để chạy script PHP.

  1. Xác nhận PHP 8.4 là runtime hiện đang hoạt động:

    Terminal window
    php --version
  2. Cài đặt core engine vào dự án của bạn, nếu chưa có sẵn:

    Terminal window
    composer require nextpdf/core
  3. Tạo một tệp làm việc có tên first-pdf.php trong thư mục gốc của dự án.

Bắt đầu với fluent API. Document::createStandalone() trả về một tài liệu có thể dùng ngay. Thêm một trang, đặt phông chữ, viết các cell, rồi lưu. Mỗi phương thức tạo nội dung đều trả về tài liệu, nên chuỗi lệnh gọi có thể đọc từ trên xuống dưới.

  1. Đưa đoạn code này vào first-pdf.php. Script khai báo strict types, nạp autoloader và dựng một trang:

    <?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. Chạy script:

    Terminal window
    php first-pdf.php
  3. Kiểm tra kết quả đầu ra. Bạn sẽ thấy dòng này trên standard output và một tệp mới có tên first-pdf.pdf nằm cạnh script:

    Wrote first-pdf.pdf

Bây giờ bạn đã tạo được một tệp PDF 2.0 hợp lệ. Mở tệp đó trong bất kỳ trình xem PDF nào để thấy tiêu đề và dòng bên dưới.

Viết các cell cho bạn khả năng kiểm soát chính xác. Tuy nhiên, với hầu hết tài liệu, diễn đạt bằng HTML và CSS sẽ nhanh hơn. Core engine bao gồm một pipeline HTML thuần PHP. Phương thức writeHtml() kết xuất một đoạn vào trang hiện tại. Nó không dùng trình duyệt hay dịch vụ bên ngoài.

  1. Tạo một tệp thứ hai, html-pdf.php, để kết xuất một đoạn HTML:

    <?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. Chạy tệp đó:

    Terminal window
    php html-pdf.php
  3. Kiểm tra dòng kết quả và tệp mới:

    Wrote html-pdf.pdf

Engine kết xuất tập con HTML và CSS được hỗ trợ. Trước khi dựa vào một thuộc tính, hãy kiểm tra ma trận hỗ trợ CSS. Khi bố cục cần độ trung thực đầy đủ của trình duyệt, chẳng hạn flexbox, grid hoặc web font, hãy cài đặt Artisan renderer và gọi writeHtmlChrome() thay thế. Phương thức đó giữ cho văn bản vẫn chọn được.

Ứng dụng của bạn có thể đã chạy trong một framework hoặc thông qua server. Hai lệnh gọi đó vẫn được đưa vào môi trường ấy. Engine không đổi. Chỉ phần kết nối thay đổi.

Facade Pdf phân giải một tài liệu mới cho mỗi lệnh gọi. PdfResponse chuyển tài liệu thành phản hồi tải xuống:

<?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');
}
}

Xem hướng dẫn khởi động nhanh Laravel.

Bây giờ bạn đã tạo được PDF theo ba cách. Hãy dùng các trang này để tiếp tục xây dựng trên từng cách.