【问题标题】:Good SVG renderer for Linux? [closed]适合 Linux 的 SVG 渲染器? [关闭]
【发布时间】:2016-11-08 18:59:45
【问题描述】:

我正在开发一些脚本来生成 SVG 文件,我想知道有哪些适合 Linux 的 SVG 渲染器。我知道 Firefox/Chrome 提供 SVG 支持(而且我感觉 Chrome 的渲染速度更快),但也许还有其他我缺少的独立 SVG 渲染器。我知道 pySVG 的存在。

足够好我的意思是尽可能多地涵盖 SVG 1.1 规范。我更喜欢独立库的原因是我的工作流程更快,因为我不必每次都按 F5。

【问题讨论】:

  • "good" 是相当主观的,我建议更新说明您的要求、您需要哪些 svg 功能、您需要如何使用库等的问题。
  • 您是指屏幕渲染器还是 PDF/位图渲染器?任何编程语言偏好?
  • 是的,一个屏幕渲染器,用于根据标准 SVG 定义创建典型的光栅图像。关于语言偏好,我使用 python 来生成 SVG,但我没有绑定到 SVG 部分的任何语言。
  • SVG-to-PNG 理论上很好,因为它使用了和 Chrome 相同的渲染器,但是我无法让它工作。

标签: linux svg


【解决方案1】:

Apache Batik 是一个非常好的库/程序集合,支持很大一部分 SVG 规范。它包括一个独立的查看器/编辑器,以及一个可以将 SVG 转换为光栅图像格式的命令行光栅器。

【讨论】:

  • 最后我继续使用蜡染。它可以用一个简单的脚本从命令行执行,似乎有很好的 SVG 支持和积极的开发。谢谢!
  • ## 2016 年 11 月更新 ## 一段时间后,我迁移到 Chrome 作为 SVG 渲染器。 Firefox 也做得很好,但我发现 Chrome 的速度要快得多。 IExplorer 是一个不错的选择,令人惊讶的是,它带有一个非常好的原生 PNG 导出器。
【解决方案2】:

draw.io 工具导出的 SVG 1.1 过于“现代”,无法正确渲染当前的 Batik、Cairo、qiv 甚至 FireFox:似乎它们都不支持 元素。然而,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。没有重新测试开罗或蜡染。 sample draw.io file

【讨论】:

  • 几个月前我切换到 ImageMagick。我发现它生成的 png 的质量比使用 Cairo 生成的要高。它甚至可以直接计算输入/输出扩展而无需额外的参数。
  • @figurebelow - 我附上了一个示例 draw.io 导出:对我来说,这仍然通过 ImageMagick 以“查看器不支持”呈现,但现在可以在 FireFox 中使用。它适用于您的配置吗?
  • 你指责蜡染不是它的错。 Batik 是一个 SVG 渲染器。如果您在 <foreignObject> 元素中包含 HTML,则呈现它不是 Batik 的责任。您应该只期望 HTML 在专为 HTML 设计的引擎中呈现,例如浏览器。 Cairo 不是 SVG 渲染器,所以我也不知道你为什么要包含它。
  • 我的错误。我想我在这里制造了一些混乱。我的意思是我正在使用 ImageMagick 从 SVG 转换为 PNG。这与任何 SVG 渲染无关。
【解决方案3】:

您可以尝试带有-m -T 标志的命令行应用qiv

【讨论】:

  • qiv 效果很好,但我更喜欢没有带有小图像的标志。
【解决方案4】:

如果您安装 Qt 4.7 并选择本地安装的示例项目 svgviewer,只需单击 2 次 Qt SVG。只需构建并运行即可获得动画视口:

【讨论】:

    【解决方案5】:

    我推荐 WebkitGtk。这是用于驱动 Safari、Chrome 和许多其他浏览器的渲染器。它支持渲染 SVG 和 HTML。

    只需apt-get install libwebkitgt-3.0-0。您可以通过运行/usr/lib/webkitgtk-3.0-0/libexec/GtkLauncher 进行尝试。

    然后,您可以使用任何您喜欢的语言/绑定围绕 SVG 渲染器构建 GUI,包括 Python 的 Gtk 绑定:http://www.aclevername.com/articles/python-webgui/

    这是另一篇关于使用 Webkit 和 pygtk 绑定构建桌面 UI 的好文章:http://arstechnica.com/information-technology/2009/07/how-to-build-a-desktop-wysiwyg-editor-with-webkit-and-html-5/

    【讨论】:

    • /usr/lib/webkitgtk-3.0-0/libexec/GtkLauncher 来自哪里?我安装了libwebkitgtk-3.0-0,但没有这样的东西。
    猜你喜欢
    • 2019-08-11
    • 1970-01-01
    • 1970-01-01
    • 2021-10-20
    • 2011-03-03
    • 2011-05-30
    • 2011-09-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多