Django、svglib 和图像
我正在使用svglib这个库来在Django中渲染我的SVG文件(这些文件是从模板生成的)。在渲染的时候,似乎这个库在处理图片路径时出现了问题。我想知道有没有人实现过这个,或者知道更好的方法把包含图片的SVG转换成PDF?
编辑:我的视图代码:
def certificate_image(response, id, output):
...
...
data = certificate_template.render(c)
if output == 'pdf':
doc = xml.dom.minidom.parseString(data)
svg = doc.documentElement
svgRenderer = SvgRenderer()
svgRenderer.render(svg)
drawing = svgRenderer.finish()
buffer = StringIO()
renderPDF.drawToFile(drawing, buffer)
response = HttpResponse(mimetype='application/pdf')
response['Content-Disposition'] = 'attachment; filename=certificate.pdf'
pdf = buffer.getvalue()
buffer.close()
response.write(pdf)
return response
2 个回答
0
我没有用过svglib,但有很多很棒的命令行工具可以把SVG格式转换成PDF格式。比如,Inkscape就有完整的命令行接口,可以在没有图形界面的情况下运行。想了解更多信息,可以查看它的手册页。还有一个不错的工具是Batik SVG Rasterizer,这个工具是用Java写的,也可以通过命令行来运行。最后,ImageMagick(命令行中的“convert”工具)也支持将SVG转换成其他的光栅和矢量格式。
你可能能猜到接下来要说什么。你可以使用Python的os.system函数来调用这些命令行工具,把结果保存到一个文件里,或者对于支持的工具,可以直接输出到标准输出(stdout),然后再把结果读入一个缓冲区。接下来就可以像现在这样使用这个缓冲区。
0
关于把SVG转换成HTML,这要看你要转换的SVG是什么,有时候转换后的结果是一样的。
如果你觉得这有用或者有任何问题,随时告诉我。
你可以去工具的说明页面,那里也有这个工具。