如何在PHP Laravel中使用MPDF合并2个PDF文件
Laravel 基于mPDF合并存储目录PDF实现方案
你可以直接通过mPDF自带的PDF页面导入能力完成合并,无需引入额外扩展,完整实现代码如下:
public function mergePDF() { // 实例化mPDF,可根据业务需要调整纸张、方向、边距等参数 $mpdf = new \Mpdf\Mpdf(); // 替换为你实际需要合并的两个PDF文件名,也可以从merge_pdf表查询获取 $pdfList = [ Storage::path('files/filename1.pdf'), Storage::path('files/filename2.pdf') ]; foreach ($pdfList as $pdfPath) { // 加载源PDF并获取总页数 $totalPage = $mpdf->setSourceFile($pdfPath); // 逐页导入源PDF内容 for ($pageNum = 1; $pageNum <= $totalPage; $pageNum++) { $template = $mpdf->importPage($pageNum); $mpdf->AddPage(); $mpdf->useTemplate($template); } } // 输出合并后的PDF,此处示例为存储到storage/app/files目录 $mergedFileName = 'merged_pdf_' . time() . '.pdf'; $mpdf->Output(Storage::path('files/' . $mergedFileName), 'F'); // 可选:将合并后的文件记录存入数据库 DB::table('merge_pdf')->insert([ 'name' => $mergedFileName ]); // 可根据业务需求返回文件路径、下载响应等 return $mergedFileName; }
注意事项
- 实例化
\Mpdf\Mpdf时的配置建议和你生成单份PDF的参数保持一致,避免出现样式偏移 Output方法的第二个参数支持多种输出模式:F为存储到本地路径,D为触发浏览器下载,I为直接在浏览器渲染PDF内容- 确保
storage/app/files目录具备可读、可写权限,避免文件读写失败 - 如果需要合并多于2份PDF,只需在
$pdfList数组中新增对应文件路径即可
内容的提问来源于stack exchange,提问作者Arslan Ayoub
相关产品推荐
相关产品推荐

