«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Генерация PDF-документов в Laravel

Генерация PDF-документов в Laravel

Опубликовано 16 августа 2024 г.
Просматривать:317

Generating PDF documents in Laravel

Laravel и DomPDF: пошаговое руководство по созданию PDF-документов с изображениями и CSS

Создание PDF-документов — распространенное требование в веб-приложениях, особенно для создания счетов, квитанций, сертификатов, билетов и различных отчетов. В этом подробном руководстве мы углубимся в использование Laravel и DomPDF для создания PDF-документов с изображениями и CSS. Мы рассмотрим параметры конфигурации, особенности проектирования, размер вывода, производительность и запросы к базе данных. Кроме того, мы обсудим советы и рекомендации по обработке разрывов страниц, загрузке изображений с использованием base64 и многому другому.

Предварительные условия

Прежде чем мы начнем, убедитесь, что у вас установлено следующее:

  • PHP >=8.2
  • Композитор 2
  • Ларавель 10

Введение

DomPDF — это популярная PHP-библиотека, которая позволяет создавать PDF-документы из содержимого HTML. Он поддерживает стили CSS, изображения и различные параметры конфигурации. Интегрировав DomPDF с Laravel, вы можете легко создавать сложные PDF-документы, используя шаблоны Blade и мощные функции Laravel.

Другие популярные библиотеки PDF включают TCPDF, FPDF и Snappy.

Однако DomPDF широко используется благодаря простоте интеграции и надежному набору функций.

В этом руководстве мы рассмотрим процесс настройки проекта Laravel, настройки DomPDF, создания контроллера для обработки создания PDF-файлов, разработки шаблона Blade для содержимого PDF, добавления маршрутов и оптимизации производительности. Мы также обсудим расширенные параметры конфигурации и дадим советы и рекомендации по созданию высококачественных PDF-документов.

Предположения

В этом руководстве предполагается, что у вас есть базовые знания Laravel и PHP. Если вы новичок в Laravel, рассмотрите возможность просмотреть официальную документацию Laravel, чтобы ознакомиться с инфраструктурой. В противном случае вы можете пройти курс Laravel Bootcamp, чтобы начать работу с Laravel.

Шаг 1. Настройка проекта Laravel

Сначала создайте новый проект Laravel, если у вас его еще нет, или используйте существующий проект. Конечно, вы можете пропустить этот шаг, если у вас уже есть проект Laravel.

composer create-project --prefer-dist laravel/laravel pdf-tutorial
cd pdf-tutorial

Далее установите DomPDF:

composer require barryvdh/laravel-dompdf

Опубликуйте файл конфигурации:

php artisan vendor:publish --provider="Barryvdh\DomPDF\ServiceProvider"

Шаг 2. Настройка DomPDF

Откройте файл config/dompdf.php. Файл конфигурации содержит различные параметры для настройки вывода PDF. Здесь вы можете установить различные параметры, включая размер бумаги по умолчанию, ориентацию, шрифт и многое другое.

  • Размер бумаги: Вы можете установить размер бумаги по умолчанию.
  'default_paper_size' => 'a4',
  • Ориентация: Установите ориентацию по умолчанию (книжная или альбомная).
  'orientation' => 'portrait',
  • Шрифт: Вы можете указать шрифт по умолчанию и добавить собственные шрифты.
  'default_font' => 'serif',

Шаг 3: Создание контроллера

Создайте контроллер для создания PDF-файлов:

php artisan make:controller PDFController

В app/Http/Controllers/PDFController.php добавьте следующий код:

 'Laravel PDF Example',
            'date' => date('m/d/Y'),
        ];

        $pdf = PDF::loadView('myPDF', $data);

        return $pdf->download('document.pdf');
    }
}

Шаг 4. Создание шаблона блейда

Создайте шаблон Blade для содержимого PDF:

touch resources/views/myPDF.blade.php

Добавьте в myPDF.blade.php следующее содержимое:



    Laravel PDF Example

{{ $title }}

Date: {{ $date }}

This is an example of a PDF document generated using Laravel and DomPDF.

Шаг 5: Добавление маршрутов

Добавьте маршруты для обработки создания PDF-файлов в маршрутах/web.php:

use App\Http\Controllers\PDFController;

Route::get('generate-pdf', [PDFController::class, 'generatePDF']);

Шаг 6: Добавление изображений

Вы можете добавлять изображения в PDF-файл, встраивая их в виде строк в кодировке Base64 или используя URL-адреса.

Изображения можно встраивать непосредственно в шаблон Blade с использованием кодировки base64. Например, чтобы встроить изображение из паблика/images, вы можете сделать это следующим образом:

Logo

Или напрямую с URL-адреса:

Logo

Шаг 7. Оптимизация производительности

Запросы к базе данных

При работе с большими наборами данных (например, 1000 записей) используйте нумерацию страниц или фрагментирование для управления использованием памяти:

$data = DB::table('users')->paginate(50);

$pdf = PDF::loadView('myPDF', ['data' => $data]);

Выходной размер

Чтобы уменьшить размер вывода, сведите к минимуму использование тяжелых изображений и по возможности выбирайте векторную графику. Также используйте эффективный CSS.

Разрывы страниц

Убедитесь, что контент хорошо структурирован с учетом разрывов страниц. Используйте CSS для обработки разрывов страниц:

.page-break {
    page-break-after: always;
}

И в вашем шаблоне Blade:

Шаг 8: Расширенная настройка

Более сложные настройки см. в документации DomPDF. Вы можете настроить практически все: от полей до способа загрузки шрифтов.

Использование пользовательских шрифтов

Чтобы использовать пользовательские шрифты, сначала добавьте их в свой проект и настройте DomPDF на их использование:

'custom_font_dir' => base_path('resources/fonts/'),
'custom_font_data' => [
    'custom-font' => [
        'R' => 'CustomFont-Regular.ttf',
        'B' => 'CustomFont-Bold.ttf',
    ]
],

В вашем шаблоне Blade:

Заключение

Следуя этому пошаговому руководству, вы сможете создавать сложные PDF-документы с помощью Laravel и DomPDF, дополненные изображениями и стилями CSS. В этом руководстве рассмотрены основные параметры конфигурации, особенности проектирования и оптимизация производительности. Вы можете расширить эту основу, чтобы создать надежную систему создания документов для вашего приложения Laravel.

Потенциальные серии и репозиторий

Это руководство является частью серии по созданию PDF-файлов с помощью Laravel. Полный репозиторий с различными шаблонами документов (счета-фактуры, квитанции, сертификаты, билеты и т. д.) можно найти здесь. Не стесняйтесь вносить свой вклад и расширять коллекцию.

Удачного программирования!

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/alphaolomi/generating-pdf-documents-in-laravel-n07?1. Если есть какие-либо нарушения, свяжитесь с [email protected], чтобы удалить их.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3