我正在开发一些脚本来生成SVG文件,我想知道Linux存在哪些好的SVG渲染器.我知道Firefox/Chrome提供SVG支持(我觉得Chrome渲染速度更快)但也许我还缺少其他独立的SVG渲染器.我知道pySVG的存在.
足够好,我的意思是尽可能地涵盖SVG 1.1规范.我更喜欢独立库的原因是我的工作流程更快,因为我不必每次都按F5.
由draw.io工具导出的SVG 1.1过于"现代",无法通过当前的Batik,Cairo,qiv甚至FireFox进行正确渲染:它们似乎都不支持<foreignObject>元素.然而,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
Run Code Online (Sandbox Code Playgroud)
编辑:通过页面描述格式的缺点是生成的图像文件可能具有非常大的边框.您可以尝试使用纸张尺寸和布局来最小化这种情况,或者只是自动裁剪它们,例如使用ImageMagick:
convert callbacks.png -trim callbacks.png
Run Code Online (Sandbox Code Playgroud)
编辑:FireFox 49.0.2(2016年11月)现在正确渲染draw.io SVG.没有重新测试开罗或蜡染.示例draw.io文件