В этой статье разберём, как создать динамический PDF-файл на сайте WordPress, используя PHP. Это полезно для генерации счетов, отчетов, договоров и других документов, которые зависят от данных пользователей или содержимого сайта.
Почему стоит генерировать PDF динамически?
Статичные PDF-файлы редко подходят для современных сайтов, где данные постоянно меняются. Автоматическое создание PDF позволяет:
- Подставлять актуальную информацию из базы данных;
- Генерировать документы по запросу пользователя;
- Автоматизировать документооборот;
- Экономить время и ресурсы на ручном формировании файлов.
В WordPress есть несколько способов реализации динамической генерации PDF, как с помощью плагинов, так и с использованием собственных PHP-скриптов.
Основные плагины для генерации PDF в WordPress
Рассмотрим популярные плагины, которые помогут быстро начать работать с PDF:
1. Clearfy Pro
Хотя Clearfy Pro в первую очередь — плагин для оптимизации сайта, он обладает модулем для создания PDF-версий страниц и постов. Поддерживает кастомизацию шаблонов, добавление водяных знаков и автоматическую генерацию.
2. PDF Generator for WordPress
Простой плагин, который позволяет преобразовывать содержимое постов и страниц в PDF. Имеет интуитивный интерфейс и шаблоны для настройки внешнего вида документов.
3. WP PDF Generator
Плагин с расширенной функциональностью: создание PDF по кастомным шаблонам, интеграция с WooCommerce для генерации счетов и накладных, поддержка пользовательских полей.
Как создать PDF с помощью PHP: библиотека TCPDF
Для полного контроля и кастомизации часто лучше использовать PHP-библиотеки. Одна из самых популярных — TCPDF. Она бесплатна, поддерживает много функций и не требует внешних зависимостей.
Далее пример создания PDF с TCPDF в WordPress:
function wpdirect_generate_pdf() {
require_once(ABSPATH . 'wp-content/plugins/tcpdf/tcpdf.php'); // Путь к библиотеке TCPDF
$pdf = new TCPDF();
$pdf->AddPage();
$pdf->SetFont('helvetica', '', 12);
$content = 'Привет, это динамический PDF, сгенерированный в WordPress!';
$pdf->Write(0, $content);
// Вывод PDF в браузер
$pdf->Output('wpdirect_sample.pdf', 'I');
exit;
}
add_action('wp_ajax_wpdirect_generate_pdf', 'wpdirect_generate_pdf');
add_action('wp_ajax_nopriv_wpdirect_generate_pdf', 'wpdirect_generate_pdf');Этот код создаёт простую PDF-страницу и отдаёт её пользователю. Подключение к WordPress происходит через AJAX, что позволяет запускать генерацию без перезагрузки страницы.
Как подключить TCPDF в WordPress
1. Скачайте TCPDF с официального сайта и положите папку в директорию wp-content/plugins/tcpdf.
2. Подключите библиотеку в вашем плагине или теме, как показано в примере.
3. Используйте функции TCPDF для создания контента, стилей, таблиц и изображений в PDF.
Динамическое создание PDF с данными пользователя
Частая задача — сгенерировать PDF с персонализированной информацией. Например, данные о заказе или заполненной форме.
Пример кода для вставки пользовательских данных в PDF:
function wpdirect_generate_user_pdf() {
if (!is_user_logged_in()) {
wp_die('Доступ запрещён');
}
require_once(ABSPATH . 'wp-content/plugins/tcpdf/tcpdf.php');
$user = wp_get_current_user();
$pdf = new TCPDF();
$pdf->AddPage();
$pdf->SetFont('helvetica', '', 12);
$content = "PDF для пользователя: " . $user->display_name . "\n";
$content .= "Email: " . $user->user_email . "\n";
$content .= "Дата регистрации: " . $user->user_registered;
$pdf->Write(0, $content);
$pdf->Output('user_info.pdf', 'I');
exit;
}
add_action('wp_ajax_wpdirect_generate_user_pdf', 'wpdirect_generate_user_pdf');Такой подход позволяет создавать уникальные документы для каждого пользователя по запросу.
Интеграция с WooCommerce: автоматическая генерация счетов в PDF
Для интернет-магазинов на WooCommerce актуальна задача генерации счетов и накладных прямо из заказа.
Рассмотрим базовый пример, как привязать генерацию PDF к событию оформления заказа:
add_action('woocommerce_order_status_completed', 'wpdirect_generate_invoice_pdf');
function wpdirect_generate_invoice_pdf($order_id) {
require_once(ABSPATH . 'wp-content/plugins/tcpdf/tcpdf.php');
$order = wc_get_order($order_id);
$pdf = new TCPDF();
$pdf->AddPage();
$pdf->SetFont('helvetica', '', 12);
$content = "Счет по заказу №" . $order->get_order_number() . "\n";
$content .= "Клиент: " . $order->get_billing_first_name() . " " . $order->get_billing_last_name() . "\n";
$content .= "Дата: " . $order->get_date_created()->date('d.m.Y') . "\n\n";
foreach ($order->get_items() as $item) {
$content .= $item->get_name() . ' — ' . $item->get_quantity() . ' шт.\n';
}
$pdf->Write(0, $content);
$upload_dir = wp_upload_dir();
$filepath = $upload_dir['basedir'] . '/invoices/invoice_' . $order_id . '.pdf';
$pdf->Output($filepath, 'F');
// Можно прикрепить PDF к письму с подтверждением заказа или сохранить в мета
}Этот код создаёт PDF-файл счета и сохраняет его в папку загрузок. Далее вы можете отправить файл клиенту по почте или предоставить для скачивания.
Советы по работе с PDF в WordPress
- Обязательно проверяйте права доступа при генерации PDF с персональными данными.
- Кэшируйте сгенерированные PDF, если они не меняются часто, чтобы снизить нагрузку на сервер.
- При больших объёмах данных используйте асинхронную генерацию через WP Cron или внешние сервисы.
- Следите за обновлениями библиотек и совместимостью с вашей версией PHP и WordPress.
Заключение
Создание динамических PDF-файлов в WordPress — мощный инструмент для расширения функционала сайта. Используйте готовые плагины для простых задач и библиотеки вроде TCPDF для гибких и комплексных решений. Это позволит автоматизировать документооборот и повысить удобство для пользователей.
Для удобной работы с плагином Clearfy Pro и другими решениями посетите официальный сайт WPSHOP.