使用mPDF转换SVG图片为PDF时出现透明色格式异常问题
mPDF SVG转PDF透明色显示异常解决方法
- 开启mPDF的透明支持配置
初始化mPDF时加入alpha参数强制开启透明通道渲染,修改后的代码如下:$mpdf = new \Mpdf\Mpdf(['mode' => 'utf-8','default_font' => 'dejavusans', 'alpha' => true]); $html = '<style>@page { sheet-size: '.$width.'mm '.$height.'mm; }</style><div style="position: absolute; left:0; right: 0; top: 0; bottom: 0;"> <img src="'.$svgurl.'" width="'.$width.'mm" height="'.$height.'mm"/></div>'; $mpdf->WriteHTML($html); - 升级mPDF版本
8.0以下版本的mPDF对SVG的透明属性(包括rgba色值、opacity属性)解析存在大量已知bug,建议升级到8.1及以上的稳定版本即可解决绝大多数SVG渲染异常问题。 - 替换插入方式
若引入外部SVG文件始终异常,可直接将SVG源码内嵌到传入mPDF的HTML代码中,无需通过img标签引入,可大幅提升SVG属性的解析兼容性。 - 预转格式兜底
上述方案都无效的情况下,可以先通过Imagick扩展将SVG转换为带透明通道的PNG图片后再插入PDF,可完全避免SVG解析带来的透明异常问题。
效果参考
原始SVG正常效果:
转换后PDF内异常效果:
内容的提问来源于stack exchange,提问作者Ashish Soni
相关产品推荐
相关产品推荐

