Ответ
У меня есть практический опыт генерации PDF в PHP-проектах, в основном с использованием библиотек **TCPDF** и **Dompdf**. Выбор зависит от задачи:
* **TCPDF** я применял для сложных отчетов с кастомной графикой, штрих-кодами и полным контролем над размещением элементов. Он мощный, но требует больше кода для верстки.
* **Dompdf** отлично подходит для быстрого рендеринга HTML/CSS в PDF. Я использовал его, когда уже были готовые HTML-шаблоны для писем или простых документов.
**Пример типичного использования Dompdf в проекте:**
```php
use DompdfDompdf;
use DompdfOptions;
$options = new Options();
$options->set('isRemoteEnabled', true); // Разрешаем загрузку внешних CSS/изображений
$dompdf = new Dompdf($options);
$html = '
Отчет по заказу #' . $orderId . '
'; $html .= 'Дата: ' . $date . '
'; $dompdf->loadHtml($html); $dompdf->setPaper('A4', 'portrait'); $dompdf->render(); // Либо вывод в браузер, либо сохранение на сервер $dompdf->stream("order_$orderId.pdf", ["Attachment" => false]); ``` **С какими сложностями сталкивался:** 1. **Поддержка современных CSS:** Dompdf не всегда корректно обрабатывает Flexbox/Grid. Приходилось использовать более простые табличные структуры для сложной верстки. 2. **Шрифты в TCPDF:** Необходимо явно добавлять и конфигурировать TTF-шрифты, что увеличивает объем работы. 3. **Производительность:** Очень большие HTML-документы или документы с множеством изображений могли приводить к превышению лимита памяти. Решалось оптимизацией шаблонов и увеличением `memory_limit` для скриптов генерации.