PDF генерация в PHP: лучшие библиотеки и примеры кода

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

PDF генерация в PHP: обзор библиотек и практические примеры

Создание PDF-документов — одна из частых задач в веб-разработке. От счетов и отчетов до сертификатов и книг — PDF остаётся универсальным форматом для обмена документами. В PHP существует несколько мощных библиотек, которые позволяют генерировать PDF как из HTML, так и программно. В этой статье мы разберём четыре популярных инструмента: TCPDF, FPDF, Dompdf и mPDF.

1. FPDF — лёгкая и быстрая классика

FPDF — одна из старейших и самых простых библиотек. Она не требует установки дополнительных расширений (кроме GD). Основное преимущество — минимализм и скорость. FPDF работает напрямую с координатами, что даёт полный контроль над расположением элементов.

Пример создания простого PDF:

<?php
require('fpdf.php');

$pdf = new FPDF();
$pdf->AddPage();
$pdf->SetFont('Arial', 'B', 16);
$pdf->Cell(40, 10, 'Привет, мир!');
$pdf->Output();
?>

Плюсы:

  • Очень маленький размер (около 100 КБ)
  • Не требует внешних зависимостей
  • Поддержка UTF-8 через отдельные шрифты

Минусы:

  • Сложная работа с HTML
  • Ограниченная поддержка CSS

2. TCPDF — мощный и функциональный

TCPDF — это расширенная версия FPDF с поддержкой UTF-8, HTML, CSS, изображений, QR-кодов, цифровых подписей и многого другого. Это стандартный выбор для сложных документов.

Пример с HTML:

<?php
require_once('tcpdf/tcpdf.php');

$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
$pdf->AddPage();
$pdf->writeHTML('<h1>Заголовок</h1><p>Это абзац с <b>жирным</b> текстом.</p>');
$pdf->Output('example.pdf', 'I');
?>

Особенности:

  • Полная поддержка Unicode и RTL (арабский, иврит)
  • Встроенные шрифты (DejaVu, FreeSerif)
  • Поддержка SVG, JavaScript, форм

3. Dompdf — генерация из HTML/CSS

Dompdf преобразует HTML и CSS в PDF. Это идеальный выбор, если у вас уже есть вёрстка страницы или шаблон. Dompdf поддерживает большинство CSS-свойств, но не все (например, Flexbox и Grid могут работать некорректно).

Пример:

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

use Dompdf\Dompdf;

$dompdf = new Dompdf();
$html = '<h2 style="color:red;">Красный заголовок</h2><p>Текст с отступами.</p>';
$dompdf->loadHtml($html);
$dompdf->setPaper('A4', 'portrait');
$dompdf->render();
$dompdf->stream("document.pdf");
?>

Плюсы:

  • Простота: пишете HTML, получаете PDF
  • Хорошая поддержка таблиц и изображений

Минусы:

  • Требует PHP 7.1+ и расширения mbstring, dom
  • Сложные CSS-макеты могут ломаться

4. mPDF — гибридный подход

mPDF — это библиотека, которая объединяет возможности TCPDF и Dompdf. Она отлично работает с HTML и CSS, поддерживает Unicode, таблицы, колонтитулы, водяные знаки. mPDF особенно хорош для создания книг и журналов.

Пример с CSS:

<?php
require_once __DIR__ . '/vendor/autoload.php';

$mpdf = new \Mpdf\Mpdf();
$html = '<div style="border:1px solid #000; padding:10px;">Содержимое блока</div>';
$mpdf->WriteHTML($html);
$mpdf->Output('output.pdf', 'I');
?>

Преимущества:

  • Отличная поддержка CSS 2.1 и частично CSS3
  • <

Рекомендаций