我正在开发一些脚本来生成SVG文件,我想知道对于Linux有什么好的SVG渲染器。我知道Firefox / Chrome提供了SVG支持(我觉得Chrome渲染速度更快),但也许我缺少其他独立的SVG渲染器。我知道pySVG的存在。
足够好,我的意思是尽可能覆盖SVG 1.1规范。我之所以选择一个独立的库,是因为我的工作流程更快,因为我不必每次都按F5。
由draw.io工具导出的SVG 1.1太“现代”,无法被当前的Batik,Cairo,qiv甚至FireFox正确渲染:似乎它们都不支持元素。但是WebKit确实可以正确渲染它,因此要将SVG转换为高质量图像,我使用http://wkhtmltopdf.org的“ wkhtmlto …”工具。
wkhtmltoimage会以屏幕分辨率生成输出,并且其--zoom切换比例尺的线条和文本会有所不同,从而导致剪切(尽管在Chrome中打开了相同的SVG并正确执行了缩放)。因此,我改为使用wkhtmltopdf生成中间pdf,然后使用ghostscript将其渲染为高分辨率图像:
wkhtmltoimage
--zoom
wkhtmltopdf
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文件