Authoring · PHP

Generate a PDF in PHP

Create PDFs programmatically from PHP: pages, vector graphics, embedded and subset fonts with full Unicode shaping, justified paragraphs, tables and images. rust-pdf gives PHP a fast, memory-safe core with deterministic output.

Last updated: 2026-06-29

Why PHP needs this

Most server-side PDF in PHP is built by gluing TCPDF or FPDF to a templating layer, or by shelling out to wkhtmltopdf, each with its own gaps in Unicode shaping, font embedding and reproducibility.

rust-pdf gives PHP a single memory-safe core for authoring: vector graphics, JPEG and PNG images, embedded and subset fonts with HarfBuzz-quality shaping and kerning, wrapping and justified paragraphs, tables, links and bookmarks. Identical input yields identical bytes, which makes the output auditable and testable.

Generation is free: composer require rust-pdf/rustpdf, enable ffi in php.ini, and call the API from a controller, a Symfony command or an Artisan job. There is no separate rendering service to deploy and scale. The only constraint is shared hosting that forbids the FFI extension.

  • Vector graphics, embedded and subset fonts, HarfBuzz-quality Unicode shaping and kerning.
  • Wrapping and justified paragraphs, tables, images (JPEG, PNG, alpha, 16-bit).
  • Deterministic output: identical bytes for identical input, ideal for audits and tests.

Generate a PDF in PHP with rust-pdf

Install via Composer, then call the same idiomatic API every rust-pdf binding shares. The authoring snippet below is real PHP from the reference docs.

composer require rust-pdf/rustpdf

PHP
<?php
require 'vendor/autoload.php';

use RustPdf\Document;

$doc = new Document();            // A4 by default
$doc->addPage()
    ->setFillRgb(0.86, 0.20, 0.18)
    ->rect(72, 640, 200, 120)     // x, y, width, height (points)
    ->fill()
    ->save('out.pdf');
Validated by: qpdfmutool

Everything is free.

The complete authoring API is in the PHP documentation.

Generation in PHP: FAQ

Is generating PDFs free in PHP?

Yes. All basic generation (pages, graphics, fonts, text, paragraphs, images, links, bookmarks, watermarks) is free forever, as are PDF/A, signatures and encryption.

Does it support Unicode and custom fonts?

Yes. Fonts are embedded and subset with HarfBuzz-quality shaping and kerning, using Type0 fonts with ToUnicode, so non-Latin scripts render and extract correctly.

Why a Rust core for PHP?

One memory-safe, high-performance Rust core is exposed to PHP through a thin idiomatic binding. You get the same engine, the same features and deterministic output, without a heavy runtime.

Do I need the FFI extension, and does this run on shared hosting?

rust-pdf bridges to its Rust core through PHP's ext-ffi, so you set ffi.enable=true in php.ini and ship the platform cdylib next to your app. That works on any VPS, container or Laravel Forge server you control; the exception is most shared-hosting plans, which forbid the FFI extension outright.

Start building documents in your PHP app today

One Rust core, the same output in every language — free and MIT licensed.