将SVG转换为PNG和PDF命令行

将SVG转换为PNG和PDF命令行,pdf,svg,png,inkscape,Pdf,Svg,Png,Inkscape,我有一个SVG文件,我想把它转换成PDF格式 它在我的浏览器(chrome、edge、firefox)上表现良好。 文件可在此处获得: 它包括渐变 我尝试了magick、inkskape、librsvg2将其转换为png或pdf。 最大的问题是不支持“停止颜色”和“停止颜色不透明度” 注意,这里只有inkscape给出了这个消息,而另一个转换器没有给出任何信息,即使是详细的信息,但是结果很糟糕 ```猛击 **(inkscape:648850):警告**:未实现的样式属性SP_PROP_STO

我有一个SVG文件,我想把它转换成PDF格式

它在我的浏览器(chrome、edge、firefox)上表现良好。 文件可在此处获得:

它包括渐变

我尝试了magick、inkskape、librsvg2将其转换为png或pdf。 最大的问题是不支持“停止颜色”和“停止颜色不透明度” 注意,这里只有inkscape给出了这个消息,而另一个转换器没有给出任何信息,即使是详细的信息,但是结果很糟糕 ```猛击

**(inkscape:648850):警告**:未实现的样式属性SP_PROP_STOP_颜色:值:#ffa500

**(inkscape:648850):警告**:未实现的样式属性SP_PROP_STOP_不透明性:值:0.59999999998

**(inkscape:648850):警告**:未实现的样式属性SP_PROP_STOP_颜色:值:#ffff00 ```

我想PDF(保持格式矢量化)将是理想的, 但是我需要能够从命令行运行它。

您是否知道为什么这不起作用以及如何修复它?

备注我使用SVG类,但该样式在SVG本身的样式§中


解决方案 来自ccprog的解决方案

我移动了svg xml顶部的DEF, 我使用fill=url(#gradientid)来声明渐变,而不是类
我替换了“停止颜色”和“停止不透明度”的定义,这些定义在类中用于在停止标记中内联它们。

这里的问题是,浏览器旁边的各种渲染器都不支持样式表。您需要内联所有样式才能使其正常工作

个人广告:我已经为该任务编写了一个节点模块:。您可以加载文件,执行
inline
任务,然后使用
write
将其写回。然后可以在回调的派生进程中完成PDF转换


第二个问题是说明使用后的坡度。根据规范,它是完全有效的,但librsvg不喜欢它。Inkscape会很好的。(如果系统上存在Inkscape或librsvg,magick将使用其中一个进行渲染,因此这是多余的。)

如果仅用于此单一图形,也可以从浏览器打印到文件。例如,Inkscape可以导入创建的pdf(使用poppler/cairo选项可以在我的测试中获得更好的结果)。谢谢ccprog,我已经解决了我的问题(在我的例子中,通过更改xml的生成)