我们使用CairoSVG(http://cairosvg.org/)将svg字符串数据转换为png并将png返回到浏览器。svg字符串直接来自FusionCharts图表的getSVGString()方法。在
如果我在本地将这个字符串保存为svg文件,并在Illustrator或浏览器中打开它,它看起来很好。以下是svg数据:http://pastebin.com/GG0vqWF4
图像应该是这样的:http://pbrd.co/1nE9y11
但是在返回到浏览器的png中,所有的圆圈都是空的:http://pbrd.co/1nE9IFL
下面是执行转换的Python代码:
import cherrypy
import cairocffi as cairo
import cairosvg
...
class SaveImagePage(LoggedInPage):
@cherrypy.expose
def index(self, svgString, **params):
png = cairosvg.svg2png(svgString)
cherrypy.response.headers['content-type'] = 'image/png'
cherrypy.response.headers['content-disposition'] = \
'attachment; filename="BrandIndex Chart.png"'
return png
有什么想法吗?我对svg格式不太熟悉,Cairo也没有抛出任何错误;不确定这里可能出了什么问题。在
凯洛桑的问题似乎是这样的。在
就您所面临的具体问题而言,早期版本的FusionCharts(<;3.4)在生成的SVG字符串中的%,:字符中有一个问题。FusionCharts的最新版本纠正了这个问题,生成的SVG在Inkscape、Batik库中导出时没有问题。在
我已经用Inkscape和Cairo替换了SVG字符串中有问题的%,:符号。在Inkscape上,导出的图像是正确的,而问题仍然存在于Cairo中。在
如果您愿意使用其他导出库,请使用Inkscape。但是FusionCharts也有自己的导出功能,如果您希望在浏览器上下载导出的png,那么使用FusionCharts导出功能就可以了。
相关问题 更多 >
编程相关推荐