Генерация PDF в PHP: обзор библиотек и инструментов
Создание PDF-документов — одна из частых задач в веб-разработке. PHP предлагает несколько зрелых библиотек, которые позволяют генерировать PDF из HTML, динамических данных или напрямую через рисование. В этой статье мы рассмотрим четыре основные библиотеки: TCPDF, FPDF, Dompdf и mPDF, их особенности, примеры использования и рекомендации по выбору для образовательного сайта.
1. TCPDF — промышленный стандарт
TCPDF — одна из самых мощных библиотек для генерации PDF на PHP. Она поддерживает Unicode, шрифты TrueType, OpenType, защиту паролем, водяные знаки, QR-коды и многое другое. Идеальна для создания сложных отчётов, счетов, сертификатов.
Установка: через Composer: composer require tecnickcom/tcpdf
Пример создания простого PDF:
<?php
require_once __DIR__ . '/vendor/autoload.php';
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
$pdf->SetCreator('PythonLib.ru');
$pdf->SetAuthor('Автор');
$pdf->SetTitle('Пример TCPDF');
$pdf->SetSubject('Генерация PDF');
$pdf->AddPage();
$pdf->SetFont('dejavusans', '', 14);
$pdf->Cell(0, 10, 'Привет, мир! Это PDF из TCPDF.', 0, 1);
$pdf->Output('example_tcpdf.pdf', 'I');
?>
2. FPDF — лёгкая и быстрая
FPDF — классическая библиотека для простых PDF-документов. Она не требует установки дополнительных расширений, очень проста в изучении. Подходит для создания таблиц, простых отчётов, накладных.
Установка: скачать с fpdf.org или через Composer: composer require setasign/fpdf
Пример с таблицей:
<?php
require_once __DIR__ . '/vendor/autoload.php';
$pdf = new FPDF();
$pdf->AddPage();
$pdf->SetFont('Arial', 'B', 12);
// Заголовки таблицы
$pdf->Cell(40, 10, 'Имя', 1);
$pdf->Cell(40, 10, 'Фамилия', 1);
$pdf->Cell(40, 10, 'Возраст', 1);
$pdf->Ln();
$pdf->SetFont('Arial', '', 10);
$pdf->Cell(40, 10, 'Иван', 1);
$pdf->Cell(40, 10, 'Петров', 1);
$pdf->Cell(40, 10, '25', 1);
$pdf->Output('example_fpdf.pdf', 'I');
?>
3. Dompdf — из HTML в PDF
Dompdf позволяет конвертировать HTML+CSS в PDF. Это удобно, если у вас уже есть вёрстка страниц (например, счёт или статья). Поддерживает CSS 2.1 и частично CSS 3, шрифты, изображения.
Установка: composer require dompdf/dompdf
Пример конвертации HTML:
<?php
require_once __DIR__ . '/vendor/autoload.php';
use Dompdf\Dompdf;
$dompdf = new Dompdf();
$html = '
<h1 style="color: #3498db;">Заголовок PDF</h1>
<p>Этот документ создан из HTML с помощью Dompdf.</p>
<table border="1" cellpadding="5">
<tr><th>Колонка 1</th><th>Колонка 2</th></tr>
<tr><td>Данные 1</td><td>Данные 2</td></tr>
</table>
';
$dompdf->loadHtml($html);
$dompdf->setPaper('A4', 'portrait');
$dompdf->render();
$dompdf->stream('example_dompdf.pdf', ['Attachment' => 0]);
?>
4. mPDF — мощный конвертер HTML
mPDF — ещё одна библиотека для конвертации HTML в PDF. Она лучше Dompdf поддерживает CSS, Unicode, восточные шрифты, создание оглавления, колонтитулов. Отлично подходит для книг, журналов, сложных документов.
Установка: composer require mpdf/mpdf
Пример с колонтитулами:
<?