项目中应用到svg转pdf操作,原来是用svglib实现的,代码如下:
from svglib.svglib import svg2rlg
from reportlab.graphics import renderPDF
drawing = svg2rlg(svg_file)
renderPDF.drawToFile(drawing, pdf_file)
以上方法基本上能处理大部分文件,但是发现有些svg包含盖章图片,而且这图片是以掩码形式存在的,于是就发现了图章变成灰色的图片贴在PDF文件的页面左上角.
为了解决以上问题,尝试换其他第三方库,找到了cairosvg
安装
pip install cairosvg
如果安装有问题,先安装依赖库
pip install pycairo cairocffi
使用
svg_file = 'pdf_0.svg'
pdf_file = os.path.basename(svg_file).replace('.svg','.pdf')
res = cairosvg.svg2pdf(url=svg_file,write_to=pdf_file)