python - 使用 Python 创建 SVG

标签 python xml graphics svg

我正在构建一组 SVG 文件,其中包含不幸数量的硬编码值(它们必须使用某些元素以毫米为单位打印,而其他元素必须按百分比缩放,并且大多数值是相对于每个元素定义的其他)。与其手动管理这些数字(老天保佑我想改变一些东西),我想我可以使用我可信赖的 hammer python 来完成这项任务。

SVG 1.1 本身不支持任何类型的可变方案,让我可以做我想做的事,而且我对将 javascript 或不稳定的 w3c 草案规范引入混合不感兴趣。一个明显的解决方案是使用字符串格式来读取、解析和替换我的 SVG 文件中的变量。这对于较大的文档来说似乎不是一个好主意,但具有简单和便携的优点。

我的第二个想法是调查可用的 python->svg 库。不幸的是,这几个选项似乎要么太新(pySVG 仍然有一个不稳定的界面),要么太旧(自 2005 年以来未更新),要么被废弃。我没有仔细查看,但我的感觉是图表应用程序不够灵活,无法生成我的文档。

我遇到的第三个选择是使用其他可以说服输出 svg 的绘图工具(例如 cairo)。这有一个(潜在的)缺点,即不支持对我来说非常重要的绝对元素大小,但可能包括输出 PDF 的能力,这会很方便。

我已经完成了谷歌搜索,所以我正在寻找使用过任何提到的方法或可能知道其他方法的人的意见。无论选择哪种解决方案,长期稳定性对我来说都很重要(这是手工编码而不是仅仅使用插画的最初原因)。

在这一点上,我倾向于第一种解决方案,因此欢迎提供有关使用 python 解析和替换 XML 文件中的变量的最佳实践的建议。

最佳答案

基于标记的模板引擎,例如 genshi可能有用。它可以让您使用 SVG 工具完成大部分创作工作,并在模板中进行自定义。与 XSLT 相比,我绝对更喜欢它。

关于python - 使用 Python 创建 SVG,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1353976/

相关文章:

python - 有没有办法测试 SQLAlchemy 连接?

python - Pandas groupby 顺序值

c# - 从 XML 模式生成 C# 类文件

java - 哪个 .jar 文件有 javax.xml.stream.*?

python - %matplotlib 返回无效语法错误

python - 在 Python 中使用 Marionette/Selenium 的多个 Firefox 实例

Android 应用程序在 Marshmallow 及以上 API 版本上运行,但不在其以下运行

c++ - SDL_FillRect 不绘图?

javascript - 在 Highcharts 中更改 SVG 描边选项

python - 如何在 Python 中绘制多面体和 Lemke-Howson 路径?