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

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

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

Начать курс

Генерация 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>                    

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