我有一个SVG文件,我想将其转换为在PDF中使用。
它在我的浏览器(chrome、edge、firefox)上呈现得很好。文件可在此处获得:https://gist.github.com/acourdavault/329b8670517e0716cd38eab202e2ca0e
它包括渐变
我尝试了magick,inkskape,librsvg2把它转换成png或者pdf。最大的问题是不支持stop-color和stop-color-opacity
注意,这里只有inkscape给出了这条消息,其他转换器没有给出任何信息,即使是冗长的,但结果是可怕的‘bash
** (inkscape:648850):警告**:未实现样式属性SP_PROP_STOP_COLOR: value:#ffa500
** (inkscape:648850):警告**:未实现的样式属性SP_PROP_STOP_OPACITY:值: 0.59999999999999998
** (inkscape:648850):警告**:未实现样式属性SP_PROP_STOP_COLOR: value:#ffff00 `
PDF (保持格式矢量)将是理想的,我想,但我需要能够从命令行运行这个。
你知道为什么,这不起作用以及如何修复它吗?
备注:我使用SVG类,但样式在SVG本身的样式§中
解决方案
ccprog提供的解决方案
我移动了svg xml顶部的defs,我使用fill=url(#gradientid)来声明渐变,而不是类。我替换了类中的停止颜色和停止不透明度的定义,以便在停止标记中内联它们。
发布于 2018-05-30 08:16:04
这里的问题是,除了浏览器之外,各种渲染器都不能很好地支持样式表。您需要内联所有样式才能使其正常工作
个人广告:我已经为该任务编写了一个节点模块:。您可以使用write
__加载文件、执行inline
任务并将其写回。然后,可以在从回调中派生的进程中完成PDF转换。
第二个问题是说明使用后的渐变。根据规范,它是完全有效的,但是librsvg不喜欢它。Inkscape会做得很好。(如果系统上存在Inkscape或librsvg,magick将使用其中之一进行渲染,因此这是多余的。)
https://stackoverflow.com/questions/50593661
复制相似问题