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




