Генерация PDF отчётов на PHP: обзор библиотек и инструментов
Создание PDF-документов — одна из частых задач в веб-разработке на PHP. Будь то формирование счетов, отчётов, сертификатов или просто экспорт данных в удобный для печати формат, PHP предлагает несколько зрелых решений. В этой статье мы рассмотрим четыре основные библиотеки: TCPDF, FPDF, Dompdf и mPDF. Вы узнаете их особенности, сильные стороны и получите примеры кода для каждой.
1. FPDF — лёгкая и быстрая классика
FPDF — это, пожалуй, самая известная библиотека для генерации PDF на PHP. Она не требует внешних расширений, работает «из коробки» и отличается высокой скоростью. Основной минус — ограниченная поддержка сложных CSS-стилей и HTML.
Пример создания простого PDF-отчёта с таблицей:
<?php
require_once('fpdf.php');
$pdf = new FPDF();
$pdf->AddPage();
$pdf->SetFont('Arial', 'B', 16);
$pdf->Cell(40, 10, 'Отчёт о продажах');
$pdf->Ln(20);
$pdf->SetFont('Arial', '', 12);
// Заголовки таблицы
$pdf->Cell(60, 7, 'Товар', 1);
$pdf->Cell(30, 7, 'Кол-во', 1);
$pdf->Cell(40, 7, 'Цена', 1);
$pdf->Ln();
// Данные
$items = [
['Ноутбук', 5, 45000],
['Мышь', 10, 1200],
['Клавиатура', 7, 2500]
];
foreach ($items as $item) {
$pdf->Cell(60, 7, $item[0], 1);
$pdf->Cell(30, 7, $item[1], 1);
$pdf->Cell(40, 7, $item[2] . ' руб.', 1);
$pdf->Ln();
}
$pdf->Output();
?>
Когда использовать: для простых отчётов, где не нужна сложная вёрстка, а важна скорость и малый размер файла.
2. TCPDF — мощный инструмент для сложных PDF
TCPDF — это форк FPDF с расширенными возможностями. Он поддерживает Unicode, JPEG2000, QR-коды, SVG, а также работу с HTML и CSS (ограниченно). Библиотека активно развивается и используется в таких системах, как Drupal и Moodle.
Пример генерации отчёта с использованием HTML-разметки:
<?php
require_once('tcpdf/tcpdf.php');
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
$pdf->SetCreator(PDF_CREATOR);
$pdf->SetAuthor('Ваша компания');
$pdf->SetTitle('Отчёт за месяц');
$pdf->AddPage();
$html = '
<h2>Ежемесячный отчёт</h2>
<table border="1" cellpadding="5">
<tr style="background-color:#cccccc;">
<th>Показатель</th><th>Значение</th>
</tr>
<tr>
<td>Выручка</td><td>1 200 000 руб.</td>
</tr>
<tr>
<td>Расходы</td><td>850 000 руб.</td>
</tr>
<tr>
<td>Прибыль</td><td><strong>350 000 руб.</strong></td>
</tr>
</table>
<p>Дата формирования: ' . date('d.m.Y') . '</p>';
$pdf->writeHTML($html, true, false, true, false, '');
$pdf->Output('report.pdf', 'I');
?>
Когда использовать: для сложных документов с таблицами, изображениями, нестандартными шрифтами и поддержкой кириллицы.
3. Dompdf — превращаем HTML в PDF
Dompdf — это библиотека, которая рендерит HTML-страницу в PDF. Она поддерживает CSS2.1 и частично CSS3, что позволяет создавать отчёты, используя привычную вёрстку. Идеально подходит для конвертации готовых HTML-шаблонов.
Пример создания отчёта из HTML-шаблона:
<?php
require_once 'dompdf/autoload.inc.php';
use Dompdf\Dompdf;
$dompdf = new