Lewati ke konten

PDF pertama Anda

Dalam tutorial ini, Anda akan menghasilkan dua berkas PDF. Pertama, Anda menulis teks secara langsung dengan Application Programming Interface (API) inti yang fluent. Kemudian, Anda merender fragmen Hypertext Markup Language (HTML) dengan Cascading Style Sheets (CSS) ke dalam sebuah halaman. Di akhir tutorial, Anda akan memiliki skrip yang berfungsi dan dapat disesuaikan untuk dokumen nyata, serta tautan ke varian framework dan server.

Kedua pendekatan ini berjalan di mesin yang sama, sehingga apa yang Anda pelajari di sini berlaku di setiap distribusi.

Diagram di bawah ini menunjukkan dua pendekatan penyusunan dan tiga permukaan deployment yang menggunakannya kembali.

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

Anda memerlukan mesin inti yang sudah terpasang serta lingkungan untuk menjalankan skrip PHP.

  1. Pastikan PHP 8.4 menjadi runtime yang aktif:

    Terminal window
    php --version
  2. Pasang mesin inti di proyek Anda, jika belum tersedia:

    Terminal window
    composer require nextpdf/core
  3. Buat berkas kerja bernama first-pdf.php di root proyek.

Mulailah dengan API yang fluent. Document::createStandalone() mengembalikan dokumen yang dapat langsung Anda gunakan. Tambahkan halaman, atur fon, tulis sel, lalu simpan. Setiap metode penyusunan mengembalikan dokumen, sehingga rangkaian panggilannya terbaca dari atas ke bawah.

  1. Letakkan kode ini di first-pdf.php. Skrip ini mendeklarasikan strict types, memuat autoloader, dan membangun satu halaman:

    <?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. Jalankan skrip:

    Terminal window
    php first-pdf.php
  3. Periksa keluarannya. Anda akan melihat baris ini pada keluaran standar dan berkas baru bernama first-pdf.pdf di samping skrip:

    Wrote first-pdf.pdf

Anda kini telah menghasilkan berkas PDF 2.0 yang valid. Buka berkas itu di penampil PDF apa pun untuk melihat judul dan baris di bawahnya.

Menulis sel memberi Anda kendali yang presisi. Namun, sebagian besar dokumen lebih cepat disusun sebagai HTML dan CSS. Mesin inti menyertakan pipeline HTML pure-PHP. Metode writeHtml() merender fragmen ke dalam halaman saat ini. Metode ini tidak menggunakan peramban atau layanan eksternal.

  1. Buat berkas kedua, html-pdf.php, yang merender fragmen 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. Jalankan:

    Terminal window
    php html-pdf.php
  3. Konfirmasikan baris keluaran dan berkas baru:

    Wrote html-pdf.pdf

Mesin merender subset HTML dan CSS yang didukung. Sebelum Anda mengandalkan suatu properti, periksa matriks dukungan CSS. Ketika tata letak membutuhkan hasil yang sepenuhnya setara dengan peramban, seperti flexbox, grid, atau web font, pasang renderer Artisan dan panggil writeHtmlChrome(). Metode itu menjaga teks tetap dapat diseleksi.

Aplikasi Anda mungkin sudah berjalan di dalam framework atau melalui server. Dua panggilan yang sama dapat dipindahkan ke lingkungan tersebut. Mesinnya tetap sama. Hanya penyambungannya yang berubah.

Facade Pdf menyediakan dokumen baru untuk setiap panggilan. PdfResponse mengubah dokumen menjadi respons unduhan:

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

Lihat panduan cepat Laravel.

Anda kini telah menghasilkan PDF dengan tiga cara. Gunakan halaman-halaman ini untuk mengembangkan masing-masing pendekatan tersebut.