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

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

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

Начать курс

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

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

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

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

  • Работает без установки дополнительных расширений (кроме стандартного GD для изображений).
  • Поддерживает UTF-8 через отдельный плагин (tFPDF) или ручную конвертацию шрифтов.
  • Отличная производительность на простых документах.

Пример создания простого PDF-отчёта с таблицей:

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

$pdf = new FPDF();
$pdf->AddPage();
$pdf->SetFont('Arial', 'B', 16);
$pdf->Cell(40, 10, 'Отчёт по продажам', 0, 1);
$pdf->SetFont('Arial', '', 12);

// Заголовки таблицы
$pdf->Cell(40, 10, 'Товар', 1);
$pdf->Cell(30, 10, 'Кол-во', 1);
$pdf->Cell(40, 10, 'Цена', 1);
$pdf->Ln();

// Данные
$pdf->Cell(40, 10, 'Ноутбук', 1);
$pdf->Cell(30, 10, '5', 1);
$pdf->Cell(40, 10, '45000 руб.', 1);
$pdf->Ln();
$pdf->Cell(40, 10, 'Мышь', 1);
$pdf->Cell(30, 10, '10', 1);
$pdf->Cell(40, 10, '1200 руб.', 1);

$pdf->Output('D', 'report.pdf');
?>

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

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

  • Документов с кириллицей и другими не-Latin шрифтами.
  • Отчётов с вложенной вёрсткой (колонтитулы, многостраничные таблицы).
  • Генерации PDF/A для архивации.

Пример использования HTML-разметки в TCPDF:

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

$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
$pdf->SetCreator('PythonLib');
$pdf->SetAuthor('Разработчик');
$pdf->SetTitle('Сложный отчёт');

$pdf->AddPage();
$html = '<h2>Статистика за месяц</h2>
<table border="1" cellpadding="5">
<tr><th>Параметр</th><th>Значение</th></tr>
<tr><td>Посетители</td><td>12 450</td></tr>
<tr><td>Заказы</td><td>342</td></tr>
</table>
<p>Сформировано <strong>автоматически</strong>.</p>';

$pdf->writeHTML($html, true, false, true, false, '');
$pdf->Output('stat.pdf', 'I');
?>

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

Dompdf — уникальная библиотека, которая рендерит PDF из обычного HTML и CSS. Это идеальный выбор, если у вас уже есть вёрстка отчёта (например, для печати из браузера). Поддерживает:

  • CSS 2.1 и частично CSS 3 (float, position, border-radius).
  • Встраивание изображений (base64 или по URL).
  • Таблицы, списки, многостраничные документы.

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

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

use Dompdf\Dompdf;

$dompdf = new Dompdf();
$html = '
<html>
<head>                    

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