使用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'
常见纸张类型包括a4、letter、legal等。setOrientation控制纵向或横向排版。
保存PDF到服务器
如果需要将PDF保存到服务器而非下载,可以使用save()方法:
$pdf->save(storage_path('app/pdfs/invoice.pdf'));
确保目标目录存在且有写入权限。
基本上就这些。结合Blade模板和PHP逻辑,你可以动态生成结构复杂的PDF文档。不复杂但容易忽略的是字体和中文支持问题——若需显示中文,建议在CSS中引入支持中文的字体(如SimSun),并确保服务器环境支持。










