新闻中心 分类>>

Laravel如何生成PDF文件_Laravel DomPDF扩展包使用

2025-11-26 00:00:00
浏览次数:
返回列表
使用DomPDF可高效生成PDF。通过Composer安装barryvdh/laravel-dompdf,利用PDF门面加载视图并生成文件,支持下载、预览、保存操作,可设置纸张大小、方向,并需注意中文字体兼容性。

在Laravel项目中生成PDF文件,一个简单高效的方式是使用DomPDF扩展包。它能将HTML内容渲染为PDF文档,非常适合生成报表、发票、合同等场景。下面介绍如何在Laravel中集成并使用DomPDF。

安装Laravel DomPDF扩展包

通过Composer安装barryvdh/laravel-dompdf,这是Laravel对DomPDF的封装包,支持服务容器和门面调用。

在项目根目录运行以下命令:

composer require barryvdh/laravel-dompdf

安装完成后,Laravel 5.5+会自动注册服务提供者和门面,无需手动操作。如果使用较旧版本,需在config/app.php中添加:

  • providers: Barryvdh\DomPDF\ServiceProvider::class
  • aliases: 'PDF' => Barryvdh\DomPDF\Facade::class

基本使用方法

安装完成后,可以在控制器中使用PDF门面快速生成PDF。

示例:生成一个简单的PDF文件

use PDF;

public function generatePDF()
{
    $data = [
        'title' => '欢迎使用Laravel DomPDF',
        'content' => '这是一段用于测试PDF生成的内容。'
    ];

    $pdf = PDF::loadView('pdf.document', $data);
    return $pdf->download('example.pdf');
}

上述代码中,loadView方法加载名为pdf.document的视图文件,并传入数据。调用download()会强制浏览器下载PDF文件。若想直接在浏览器中预览,可使用stream()方法:

return $pdf->stream('document.pdf');

创建PDF视图模板

resources/views/pdf/document.blade.php中创建视图文件:




    
    {{ $title }}
    


    

{{ $title }}

{{ $content }}

注意:建议使用内联样式或标签定义CSS,因为外部样式表可能无法正确加载。

设置PDF选项(如纸张大小、方向)

你可以自定义PDF的输出格式,例如更改纸张尺寸或页面方向:

$pdf = PDF::loadView('pdf.document', $data)
           ->setPaper('a4')
           ->setOrientation('portrait'); // 或 'landscape'

常见纸张类型包括a4letterlegal等。setOrientation控制纵向或横向排版。

保存PDF到服务器

如果需要将PDF保存到服务器而非下载,可以使用save()方法:

$pdf->save(storage_path('app/pdfs/invoice.pdf'));

确保目标目录存在且有写入权限。

基本上就这些。结合Blade模板和PHP逻辑,你可以动态生成结构复杂的PDF文档。不复杂但容易忽略的是字体和中文支持问题——若需显示中文,建议在CSS中引入支持中文的字体(如SimSun),并确保服务器环境支持。

搜索