我试图从使用Python的SVG图像生成PDF图像。我试过CairoSVG和svglib。问题是,在这两种情况下,生成的PDF都没有应用任何嵌入的CSS样式。将嵌入式CSS的SVG转换为Python中的PDF
这里是一个应该呈现蓝色的长方形黑色的边框一个简单的SVG文件:
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="200" height="200" version="1.1" xmlns="http://www.w3.org/2000/svg">
<defs>
<style type="text/css"><![CDATA[
rect {
fill: #1f77b4;
stroke: black;
stroke-width: 1;
shape-rendering: crispEdges;
}
]]></style>
</defs>
<rect x="50" y="50" width="100" height="100"></rect>
</svg>
渲染时使用CairoSVG这个SVG的PDF,PDF格式的图像呈现为黑色矩形。使用svglib,没有笔画或样式应用于矩形,因此不可见。有没有人知道一种方法将SVG 与CSS样式转换为Python中的PDF图像?
我必须做出对D3可视化缩略图,到目前为止,我想出最好是使用phantomjs呈现SVG有点令人费解的设置。由于phantomjs是一个真正的webkit浏览器,所以SVG的渲染与浏览器版本完全相同(有一个幻影模块,但它在我的环境中存在缺陷,我没有时间调查原因)。 – 2013-07-22 15:37:32
的CairoSVG文档中有这样一个字条:CairoSVG可以使用LXML解析SVG文件,tinycss加cssselect申请不包括在标签的样式属性CSS。如果这些软件包不可用,CSS将只在样式属性中受支持。如果你安装tinycss和cssselect软件包,它可能会解决你的问题。看到这里的依赖关系部分:http://cairosvg.org/user_documentation/ – MonkeyWrench 2013-07-26 19:16:26
@MonkeyWrench:这是迄今为止最好的提示,如果你关心你可以做出答案并收集奖金。 – 2013-07-28 00:46:58