Javascript Canvg |如何在从SVG创建画布元素的过程中设置画布元素的样式?

Javascript Canvg |如何在从SVG创建画布元素的过程中设置画布元素的样式?,javascript,css,canvas,svg,canvg,Javascript,Css,Canvas,Svg,Canvg,我有一个从数据中动态绘制的SVG图形。看起来是这样的: 我正在使用Canvg创建一个(隐藏的)画布元素,并允许用户将SVG保存为图像或pdf。画布如下所示: 样式错误(!),某些路径似乎也丢失。我已经尝试使用CSS来更改样式。这适用于背景颜色和字体系列,但不适用于其他任何内容: canvas#canvas { background-color: aliceblue;//works font-family: sans-serif;//works font-size: 1

我有一个从数据中动态绘制的SVG图形。看起来是这样的:

我正在使用Canvg创建一个(隐藏的)画布元素,并允许用户将SVG保存为图像或pdf。画布如下所示:

样式错误(!),某些路径似乎也丢失。我已经尝试使用CSS来更改样式。这适用于背景颜色和字体系列,但不适用于其他任何内容:

canvas#canvas {
    background-color: aliceblue;//works
    font-family: sans-serif;//works
    font-size: 10px;//works
    fill: gray;//doesn't work
}

有人知道如何在使用canvg创建画布元素时设置路径和字体颜色的样式吗

可以使用
printThis
库将SVG的div另存为pdf。 div ID可用于将SVG转换为pdf。 例如:如果divID是
svgdiv
,则可以在jquery中执行此语句:

$("#svgdiv").printThis()
它将以pdf格式下载


有关更多信息:

canvg有漏洞。。。我认为您应该尽可能避免使用CSS和任何
xlink:href
属性或
url()
属性,以便尽可能准确地呈现它。另外,我们可能有兴趣知道您是否使用库来生成svg,也许这个库有一个导出模块,您可以使用。谢谢Kaido-我使用的是d3.js。我没有使用xlink或url()属性。我只是在尝试CSS,因为没有它看起来更糟!那么,我不知道这里的canvg差距是什么。。。你可以试试我在写什么,这样会更好。您可以像
exportInlineSVG(yourSVGElement,receiver)
那样调用它,
receiver
可以是画布元素、img元素或带有dataURL和canvas元素作为参数的calback函数。这在不久的将来可能会改变,但您可以调整代码。