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

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

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

Начать курс

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

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

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

FPDF — одна из старейших и самых популярных библиотек для генерации PDF на PHP. Она не требует внешних зависимостей, работает быстро и идеально подходит для простых документов: накладных, квитанций, актов.

Установка

composer require setasign/fpdf

Пример: простой PDF с текстом и изображением

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

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

FPDF поддерживает:

  • Работу с разными шрифтами (TrueType, Type1)
  • Создание таблиц, многострочных ячеек
  • Вставку изображений (JPEG, PNG, GIF)
  • Нумерацию страниц, колонтитулы

Недостаток: ограниченная поддержка HTML и CSS — все элементы нужно создавать программно.

2. TCPDF — мощный инструмент для сложных документов

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

Установка

composer require tecnickcom/tcpdf

Пример: PDF с HTML-контентом и таблицей

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

$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
$pdf->AddPage();
$html = '<h1>Заголовок</h1><table border="1"><tr><td>Ячейка 1</td><td>Ячейка 2</td></tr></table>';
$pdf->writeHTML($html, true, false, true, false, '');
$pdf->Output('example.pdf', 'I');
?>

Ключевые возможности TCPDF:

  • Полная поддержка Unicode (UTF-8) и кириллицы
  • Встроенные шаблоны, нумерация страниц
  • Векторная графика (SVG, PDF-формы)
  • Цифровые подписи, шифрование
  • Поддержка JavaScript в PDF

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

Dompdf позволяет создавать PDF из HTML-разметки, обрабатывая CSS (включая Flexbox, Grid, медиазапросы). Идеально, если у вас уже есть веб-шаблоны или вы хотите быстро превратить HTML-страницу в PDF.

Установка

composer require dompdf/dompdf

Пример: PDF из HTML-строки

<?php
use Dompdf\Dompdf;

require_once 'vendor/autoload.php';

$dompdf = new Dompdf();
$html = '<h2 style="color:blue;">Привет из Dompdf!</h2><p>Это PDF, сгенерированный из HTML.</p>';
$dompdf->loadHtml($html);
$dompdf->setPaper('A4', 'portrait');
$dompdf->render();
$dompdf->stream("document.pdf");
?>

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

  • Поддержка CSS 2.1 и частично CSS3
  • Работа с изображениями, шрифтами (локальными и Google Fonts)
  • Встроенная поддержка кириллицы при использовании правильных шрифтов
  • Простая интеграция с фреймворками (Laravel, Symfony)

Важно: для сложных макетов с JavaScript или анима

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