当前位置: 首页 > 面试题库 >

适用于Linux的SVG渲染器好吗?

池庆
2023-03-14
问题内容

我正在开发一些脚本来生成SVG文件,我想知道对于Linux有什么好的SVG渲染器。我知道Firefox /
Chrome提供了SVG支持(我觉得Chrome渲染速度更快),但也许我缺少其他独立的SVG渲染器。我知道pySVG的存在。

足够好,我的意思是尽可能覆盖SVG 1.1规范。我之所以选择一个独立的库,是因为我的工作流程更快,因为我不必每次都按F5。


问题答案:

由draw.io工具导出的SVG
1.1太“现代”,无法被当前的Batik,Cairo,qiv甚至FireFox正确渲染:似乎它们都不支持 object> 元素。但是WebKit确实可以正确渲染它,因此要将SVG转换为高质量图像,我使用 http://wkhtmltopdf.org的“
wkhtmlto …”工具。

wkhtmltoimage会以屏幕分辨率生成输出,并且其--zoom切换比例尺的线条和文本会有所不同,从而导致剪切(尽管在Chrome中打开了相同的SVG并正确执行了缩放)。因此,我改为使用wkhtmltopdf生成中间pdf,然后使用ghostscript将其渲染为高分辨率图像:

wkhtmltopdf callbacks.svg callbacks.pdf
gs -sDEVICE=pnggray -sOutputFile=callbacks.png -dBATCH -dNOPAUSE -r900 callbacks.pdf

编辑:通过页面描述格式的缺点是生成的图像文件可能具有很大的边框。您可以尝试使用纸张尺寸和布局以将其最小化,或者只是将它们自动裁剪掉,例如使用ImageMagick:

convert callbacks.png -trim callbacks.png

编辑:FireFox 49.0.2(2016年11月)现在可以正确渲染draw.io
SVG。尚未重新测试开罗或蜡染。样本draw.io文件



 类似资料:
  • SVGRenderer被用于使用SVG来渲染几何数据,所产生的矢量图形在以下几个方面十分有用: 动画标志(logo)或者图标(icon) 可交互的2D或3D图表或图形 交互式地图 复杂的或包含动画的用户界面 SVGRenderer具有很多优势。它产生清晰并且锐利的图像输出,它和实际视口分辨率无关。 SVG元素可以通过CSS来控制样式;并且由于它可以添加诸如标题或者描述文字之类的元数据(对于搜索引擎

  • 因此,我正在构建这个游戏和一个地图编辑器/sdk类型的协议。在我运行w7的台式电脑和我的朋友运行w10的笔记本电脑上,一切都工作得非常好。我可以添加对象并四处移动它们(每个对象都有一个自动更新属性窗口),一切都很好。 我目前正在旅行,所以我决定将项目复制到我的macbook上。UI上的一切都仍然有效,除了停止渲染的东西。我知道对象存在于应用程序中,因为我可以单击它们所在的位置,属性更新就像在我的桌

  • 我有一个组件,我想在用户点击后显示/隐藏。 它是这样的: 和 只需将wasPressed属性适当地设置为true或false。我正在使用<代码> 问题是“我的按钮”的“渲染”属性的值。它明确地包括两个方面:解释和显示按钮。 只要始终存在(它只更改它的标签),仅在属性为真时才存在。否则它说: malformedXML:更新期间:找不到解释 我如何解决这个问题? 我不想恢复到在源代码中隐藏元素,所以我

  • 问题内容: 在pyGame应用程序中,我想呈现SVG中描述的无分辨率的GUI小部件。 我可以使用什么工具和/或库来实现此目标? (我喜欢OCEMP GUI工具箱,但它的呈现似乎取决于位图) 问题答案: 这是一个完整的示例,其中结合了其他人的提示。它应该从当前目录渲染一个名为test.svg的文件。它已在Ubuntu 10.10,python-cairo 1.8.8,python-pygame 1.

  • 我正在尝试为mathml呈现SVG。它在chrome上看起来不错,但在IE中,svg的标签有附加属性,我们如何避免添加这些附加属性?请尝试在chrome和IE中将下面的mathml呈现为SVG。您可以看到生成的SVG标记中的差异(两种浏览器中的附加scrrenshots) MathML是:

  • 问题内容: 我有一个要在用户点击时显示/隐藏的组件。 就像这样: 和 在简单地设置属性为true或false适当。我正在使用。 问题是我的按钮的属性值。它明确列出了和。 只要始终存在(仅更改其标签),则仅在属性为true 时才存在。否则它说: malformedXML:更新期间:找不到说明 我怎么解决这个问题? 我不想回到隐藏源代码中的元素的位置,所以我不想使用任何jQuery toggle(-)