使用Extjs将SVG转换为PNG的Python脚本

2024-10-04 05:33:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用Python脚本将SVG转换成PNG来保存图表。 因此,我开始将svg数据存储在一个变量中:

var svgdata = Ext.draw.engine.SvgExporter.generate(chart.surface);

当我做alert(svgdata)时,我可以看到这个输出是正确的。在

但当我像这样发送到服务器时:

^{pr2}$

已发送的svgdata如下所示:

<?xml version=

我刚接触extjs,请帮我做这个。将svg数据发送到python脚本并呈现png图像的正确方法是什么?在

这是我的python脚本:

import cairo
import cgi
import rsvg
print "Content-type: image/png\n\n"

arguments = cgi.FieldStorage()
img =  cairo.ImageSurface(cairo.FORMAT_ARGB32, 640,480)
ctx = cairo.Context(img)
handler= rsvg.Handle(None, str(arguments["svgdata"]))
handler.render_cairo(ctx)
img.write_to_png("svg.png")

请帮帮我!在


Tags: 数据svgimport脚本imgpngargumentshandler
1条回答
网友
1楼 · 发布于 2024-10-04 05:33:18
<div style="display:none;">
    <iframe id="file_download_iframe" src="blank.html"></iframe>
</div>

你需要在你的服务器上有一个空白的html页面,这样才能在所有浏览器中正常工作。基本上空白.htmlpage是一个空页,以满足ifram中始终有一个页。在

那么你也需要一个隐藏在某处的基本形式:

^{pr2}$

然后使用如下javascript函数:

function getImage(svgdata){
    var form = document.getElementById("file_download_iframe_form");
    document.getElementById("svgdata").value = svgdata;
    form.submit();
};

相关问题 更多 >