使用Python创建svg

2024-04-25 04:26:16 发布

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

我正在构建一组SVG文件,其中包含了一些不幸的硬编码值(它们必须打印一些以mm为单位的元素,而其他元素必须按百分比缩放,并且大多数值都是相对于彼此定义的)。我宁愿用我的手来管理这些数字,而不是用它来管理我的数字。在

svg1.1本机不支持任何类型的变量方案,我也不想将javascript或不稳定的w3c草案规范引入混合中。一个明显的解决方案是使用字符串格式来读取、解析和替换SVG文件中的变量。对于较大的文档来说,这似乎是个坏主意,但它的优点是简单和可移植。在

我的第二个想法是研究可用的python->;svg库。不幸的是,似乎少数几个选项要么太新(pySVG仍然有一个不稳定的接口)、要么太旧(自2005年以来没有更新)或者被放弃。我没有仔细研究过,但我的感觉是图表应用程序不够灵活,无法生成我的文档。在

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

我已经做了谷歌搜索,所以我正在寻找那些使用过上述方法的人的意见,或者可能知道其他方法的人。无论选择哪种解决方案,长期稳定性对我来说都很重要(这是手工编码的原始原因,而不仅仅是使用illustrator)。在

现在,我倾向于使用第一种解决方案,因此欢迎推荐使用python解析和替换XML文件中的变量的最佳实践。在


Tags: 文件方法文档svg元素类型编码定义
2条回答

由于SVG是XML,所以也许可以使用XSLT将包含变量的源XML文件转换为SVG。在XSLT样式表中,您将拥有与SVG插图中的各种元素相对应的模板,这些元素根据源XML文件中的值更改其输出。在

或者,您可以使用模板SVG作为源代码,并将其转换为最终的模板,并将值作为参数传递给XSLT处理器。在

您可以直接使用XSLT,如果您需要一些在传统语言中更容易执行的逻辑,则可以通过Python。在

基于标记的模板引擎,例如genshi可能会有用。它允许您使用SVG工具进行大部分的创作,并在模板中进行定制。我肯定更喜欢它而不是XSLT。在

相关问题 更多 >