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 или анима