PDF pertama Anda
Gambaran umum
Bagian berjudul “Gambaran umum”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.
Sebelum Anda memulai
Bagian berjudul “Sebelum Anda memulai”Anda memerlukan mesin inti yang sudah terpasang serta lingkungan untuk menjalankan skrip PHP.
-
Pastikan PHP 8.4 menjadi runtime yang aktif:
Terminal window php --version -
Pasang mesin inti di proyek Anda, jika belum tersedia:
Terminal window composer require nextpdf/core -
Buat berkas kerja bernama
first-pdf.phpdi root proyek.
Menghasilkan PDF dari PHP
Bagian berjudul “Menghasilkan PDF dari PHP”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.
-
Letakkan kode ini di
first-pdf.php. Skrip ini mendeklarasikan strict types, memuat autoloader, dan membangun satu halaman:<?phpdeclare(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"; -
Jalankan skrip:
Terminal window php first-pdf.php -
Periksa keluarannya. Anda akan melihat baris ini pada keluaran standar dan berkas baru bernama
first-pdf.pdfdi 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.
Merender HTML menjadi PDF
Bagian berjudul “Merender HTML menjadi PDF”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.
-
Buat berkas kedua,
html-pdf.php, yang merender fragmen HTML:<?phpdeclare(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"; -
Jalankan:
Terminal window php html-pdf.php -
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.
Dari controller framework
Bagian berjudul “Dari controller framework”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.
Bundle ini mengekspos layanan PdfFactory. Beri type-hint NextPDF\Symfony\Service\PdfFactory di sebuah controller, bangun dokumen dengan cara yang sama, lalu kembalikan sebagai respons HTTP. Lihat panduan cepat Symfony.
Dengan NextPDF Server yang berjalan, kirim sebuah array operasi terurut melalui POST, dan server mengembalikan byte PDF:
curl -sS -X POST http://localhost:8080/api/v1/render \ -H 'Authorization: Bearer <api-key>' \ -H 'Content-Type: application/json' \ -d '{ "page_size": "A4", "orientation": "portrait", "operations": [ { "type": "add_text", "text": "Hello from NextPDF Connect" } ] }' \ --output hello.pdfUntuk respons 200, body-nya adalah PDF. Lihat panduan cepat Connect.
Langkah selanjutnya
Bagian berjudul “Langkah selanjutnya”Anda kini telah menghasilkan PDF dengan tiga cara. Gunakan halaman-halaman ini untuk mengembangkan masing-masing pendekatan tersebut.