Генерация PDF отчётов на PHP: полное руководство для разработчика
Создание PDF-документов — одна из самых востребованных задач в веб-разработке. Отчёты, счета, сертификаты, учебные материалы — всё это часто требуется генерировать динамически на стороне сервера. PHP предлагает несколько мощных библиотек, которые позволяют создавать PDF любой сложности. В этой статье мы разберём четыре популярных инструмента: TCPDF, FPDF, Dompdf и mPDF, а также приведём практические примеры кода.
Зачем нужна генерация PDF на PHP?
PDF (Portable Document Format) — универсальный формат, который корректно отображается на любых устройствах. В образовательных проектах, таких как PythonLib, PDF-отчёты могут использоваться для:
- Экспорта результатов тестов и экзаменов
- Создания сертификатов о прохождении курсов
- Генерации учебных пособий и конспектов
- Формирования статистических отчётов для преподавателей
Обзор популярных библиотек
1. TCPDF
TCPDF — одна из самых мощных и зрелых библиотек для работы с PDF на PHP. Она поддерживает:
- Полный набор возможностей PDF 1.7
- Встраивание шрифтов (включая Unicode и кириллицу)
- Рисование графиков, таблиц, QR-кодов
- Поддержка CSS (ограниченно)
Пример базового использования:
require_once('tcpdf/tcpdf.php');
$pdf = new TCPDF('P', 'mm', 'A4', true, 'UTF-8', false);
$pdf->SetCreator('PythonLib');
$pdf->SetAuthor('Разработчик');
$pdf->SetTitle('Отчёт о тестировании');
$pdf->AddPage();
$pdf->SetFont('dejavusans', '', 14);
$pdf->Cell(0, 10, 'Привет, мир! Это PDF отчёт.', 0, 1, 'C');
$pdf->Output('report.pdf', 'I');
2. FPDF
FPDF — легковесная и быстрая библиотека, идеальная для простых документов. Её главные особенности:
- Не требует внешних зависимостей
- Простой API для добавления текста, изображений и линий
- Поддержка UTF-8 через дополнительные пакеты
Пример создания таблицы:
require('fpdf/fpdf.php');
$pdf = new FPDF();
$pdf->AddPage();
$pdf->SetFont('Arial', 'B', 16);
$pdf->Cell(40, 10, 'Имя', 1);
$pdf->Cell(40, 10, 'Баллы', 1);
$pdf->Ln();
$pdf->SetFont('Arial', '', 12);
$pdf->Cell(40, 10, 'Иван', 1);
$pdf->Cell(40, 10, '95', 1);
$pdf->Output();
3. Dompdf
Dompdf позволяет конвертировать HTML+CSS в PDF. Это удобно, если вы уже используете шаблонизаторы (например, Twig). Возможности:
- Поддержка CSS 2.1 и частично CSS3
- Работа с изображениями и шрифтами
- Простая интеграция с веб-приложениями
Пример с HTML-шаблоном:
use Dompdf\Dompdf;
$dompdf = new Dompdf();
$html = '<h2 style="color:blue;">Отчёт по курсу Python</h2>
<p>Студент: Алексей, результат: 87%</p>';
$dompdf->loadHtml($html, 'UTF-8');
$dompdf->setPaper('A4', 'portrait');
$dompdf->render();
$dompdf->stream('report.pdf');
4. mPDF
mPDF — ещё одна библиотека для конвертации HTML в PDF. Она поддерживает сложные стили, Unicode, а также:
- Автоматическое создание оглавления
- Водяные знаки и фоны
- Работу с большими объёмами данных
Пример с таблицей стилей:
require_once __DIR__ . '/vendor/autoload.php';
$mpdf = new \Mpdf\Mpdf();
$mpdf->WriteHTML('<h1>Статистика</h1> Также в библиотеке
HTTP-клиент для Swift (iOS/macOS): топ библиотек 2024
Redis клиент на Rust: полное руководство по работе с библиотекой redis-rs
Работа с изображениями в TypeScript: библиотеки, инструменты и примеры кода
HTTP-клиент для C# (.NET): топ библиотек для работы с веб-запросами