”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 在 Laravel 中生成 PDF 文档

在 Laravel 中生成 PDF 文档

发布于2024-08-16
浏览:412

Generating PDF documents in Laravel

Laravel 和 DomPDF:使用图像和 CSS 生成 PDF 文档的分步指南

创建 PDF 文档是 Web 应用程序中的常见要求,尤其是生成发票、收据、证书、票据和各种报告。在这个综合教程中,我们将深入研究如何使用 Laravel 和 DomPDF 生成带有图像和 CSS 的 PDF 文档。我们将介绍配置选项、设计注意事项、输出大小、性能和数据库查询。此外,我们还将讨论处理分页符、使用 base64 加载图像等的提示和技巧。

先决条件

在我们开始之前,请确保您已安装以下软件:

  • PHP >=8.2
  • 作曲家 2
  • Laravel 10

介绍

DomPDF 是一个流行的 PHP 库,允许您从 HTML 内容生成 PDF 文档。它支持 CSS 样式、图像和各种配置选项。通过将 DomPDF 与 Laravel 集成,您可以使用 Blade 模板和 Laravel 的强大功能轻松创建复杂的 PDF 文档。

其他流行的 PDF 库包括 TCPDF、FPDF 和 Snappy。

然而,DomPDF 由于其易于集成和强大的功能集而被广泛使用。

在本教程中,我们将逐步介绍设置 Laravel 项目、配置 DomPDF、创建处理 PDF 生成的控制器、为 PDF 内容设计 Blade 模板、添加路由和优化性能的过程。我们还将讨论高级配置选项并提供生成高质量 PDF 文档的提示和技巧。

假设

本教程假设您对 Laravel 和 PHP 有基本的了解。如果您是 Laravel 新手,请考虑阅读官方 Laravel 文档来熟悉该框架。否则,您可以按照 Laravel Bootcamp 开始使用 Laravel。

第 1 步:设置 Laravel 项目

首先,如果你还没有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',

第三步:创建控制器

创建一个控制器来处理 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 步:创建刀片模板

为 PDF 内容创建 Blade 模板:

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步:添加路由

在routes/web.php中添加处理PDF生成的路由:

use App\Http\Controllers\PDFController;

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

第 6 步:添加图像

您可以通过将图像嵌入为 Base64 编码字符串或使用 URL 来将图像添加到 PDF。

图像可以使用base64编码直接嵌入到Blade模板中。例如,要嵌入来自 public/images 的图像,可以这样做:

Logo

或直接从 URL:

Logo

第 7 步:优化性能

数据库查询

处理大型数据集(例如 1,000 条记录)时,使用分页或分块来管理内存使用情况:

$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 模板中:


结论

通过遵循此分步指南,您可以使用 Laravel 和 DomPDF 生成复杂的 PDF 文档,并包含图像和 CSS 样式。本教程涵盖了基本的配置选项、设计注意事项、性能优化。您可以扩展此基础,为您的 Laravel 应用程序构建强大的文档生成系统。

潜在系列和存储库

本教程是使用 Laravel 生成 PDF 系列的一部分。可以在此处找到包含各种文档模板(发票、收据、证书、票据等)的完整存储库。请随意贡献并扩大收藏。

编码愉快!

版本声明 本文转载于:https://dev.to/alphaolomi/generating-pdf-documents-in-laravel-n07?1如有侵犯,请联系[email protected]删除
最新教程 更多>

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3