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