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

如何在Laravel/PHP中用mPDF将Base64编码XML附加到PDF?

如何在Laravel/PHP中解码Base64 XML并通过mPDF附加到PDF

你需要处理Base64编码的XML字符串,将其解码后附加到PDF中,替代原示例中读取本地文件的方式。可以按以下步骤实现:

核心思路

mPDF的SetAssociatedFiles方法不仅支持通过path指定本地文件,还支持直接通过content字段传入内存中的文件内容。我们只需先解码Base64字符串,再将解码后的XML内容传入该字段即可。

实现代码

// 假设你的Base64编码XML字符串存储在这里
$base64Xml = '你的Base64编码XML字符串';

// 解码Base64字符串,得到原始XML内容
$decodedXml = base64_decode($base64Xml);

// 验证解码是否成功(可选但推荐)
if ($decodedXml === false) {
    throw new \Exception('无效的Base64编码字符串');
}

// 初始化mPDF实例
$mpdf = new \Mpdf\Mpdf([
    'PDFA' => true,
    'PDFAauto' => true,
]);

// 设置关联文件,使用content传入解码后的XML内容
$mpdf->SetAssociatedFiles([[
    'name' => 'attachment.xml', // 附加文件的显示名称
    'mime' => 'text/xml',
    'description' => '解码后的XML附件',
    'AFRelationship' => 'Alternative',
    'content' => $decodedXml // 直接传入解码后的内容,替代path字段
]]);

// 写入PDF内容
$mpdf->WriteHTML('<h1>Hello world!</h1>');

// 输出PDF
return $mpdf->Output();

注意事项

  • 确保$base64Xml是有效的Base64编码字符串,解码失败时base64_decode会返回false,建议添加错误处理逻辑。
  • name字段可自定义,是PDF中显示的附件文件名。
  • 若需要兼容旧版mPDF,可先将解码后的内容写入临时文件,再通过path指向临时文件(不过推荐直接使用content字段更高效)。

内容的提问来源于stack exchange,提问作者Ahmar Arshad

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 02:23:14