You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Laravel中使用Dompdf生成PDF时Base64图片无法显示的问题求助

Laravel中使用Dompdf生成PDF时Base64图片无法显示的问题求助

大家好,我现在碰到个头疼的问题想请教各位!我在Laravel项目里用Dompdf生成PDF文件,在Blade视图里我用html2canvas把页面上的.rondes.veh这两个区块分别转成Base64格式的图片,我的JavaScript代码大概是这样的:

const rondes = await html2canvas(document.querySelector('.rondes'), { scale: 2 });
const veh = await html2canvas(document.querySelector('.veh'), { scale: 2 });

const pictures = [
    rondes.toDataURL('image/png'),
    veh.toDataURL('image/png')
];

可问题来了,当我把这些Base64图片放到PDF里的时候,它们完全显示不出来!我检查过Base64字符串的格式,看起来是完整的,但Dompdf就是不肯渲染它们。有没有大佬遇到过类似的情况,能给我点解决思路吗?

我自己也琢磨了几个可能的方向,但还没搞定,也列出来给大家参考:

  • 会不会是Dompdf对Base64的格式要求太严?比如toDataURL生成的前缀data:image/png;base64,有没有丢失?我打算再去控制台打印下pictures数组确认下。
  • 是不是Dompdf的配置有问题?比如有没有什么资源加载的限制没放开?或者版本太旧有bug?我打算试试升级到最新版的Dompdf看看。
  • 还有我是直接把Base64字符串通过Blade输出到<img>src里的,会不会是Blade自动转义了字符串导致内容错乱?考虑换成{!! $picture !!}来输出试试。
  • 会不会是html2canvas生成的图片尺寸太大?毕竟我设了scale为2,打算把scale改成1再测试下。

备注:内容来源于stack exchange,提问作者Romain

火山引擎 最新活动