You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 17:54:04