Javascript 使用PDFKit导入完整SVG

Javascript 使用PDFKit导入完整SVG,javascript,svg,pdfkit,Javascript,Svg,Pdfkit,有人知道是否可以将完整的SVG导入PDFKit文档吗?我可以从文档中看到它完全支持SVG,并且有绘制路径等的方法,但我看不到导入完整SVG文档的方法。不幸的是,从V0.7(2014年11月)起,PDFKit不支持将SVG内容绘制到PDF中。但是,大多数构建块都存在(涵盖大多数SVG表示属性的功能+SVGpathparser),因此实现这一点需要从根目录遍历SVG文档树,跟踪转换和属性状态(对于继承的值)以及绘制遇到的SVG图形原语(包括paths)。当然,一些东西,如符号定义和过滤器,实现起来会

有人知道是否可以将完整的SVG导入PDFKit文档吗?我可以从文档中看到它完全支持SVG,并且有绘制路径等的方法,但我看不到导入完整SVG文档的方法。

不幸的是,从V0.7(2014年11月)起,PDFKit不支持将SVG内容绘制到PDF中。但是,大多数构建块都存在(涵盖大多数SVG表示属性的功能+SVG
path
parser),因此实现这一点需要从根目录遍历SVG文档树,跟踪转换和属性状态(对于继承的值)以及绘制遇到的SVG图形原语(包括
path
s)。当然,一些东西,如符号定义和过滤器,实现起来会更复杂,但对于基本的几何图形和样式,考虑到PDFKit提供的功能,实现起来应该不会超过几个小时。

在搜索这个问题的答案时,我发现了一个小型的开源库,它可以实现以下功能:

如果实现自己的接口不方便,那么这个接口非常容易使用(自述文件中的代码示例):

参数如下所示:

doc[PDFDocument]=使用PDFKit创建的PDF文档

svg[SVGElement或string]=svg对象或XML代码

x、 y[number]=将添加SVG的位置


查看演示。

最后,我决定使用API进行转换,我使用的CloudConvert到目前为止似乎非常棒。如果有人仍然需要PDFKit中的这种支持,那么就像你说的,添加该功能并执行拉取请求听起来并不太复杂;我试图在SVG和PDFKit之间构建一个接口,但是在使用转换时遇到了一个问题。pdf中的变换矩阵比例奇怪,无法找到原因。。。但是,当使用
缩放
时,
旋转
。。。它工作得很好,我会调查它,会让你知道我是否能让它正常工作。我试着用PDFKit在PDF中重新创建SVG,最后我做到了。save()和restore()方法变得很方便-首先我保存了状态,然后在最后用transorm matrix调用restore()复制了每一层。注意转换方法,它没有在PDFKit中记录,但它可以工作(有6个变量-m11、m12、m21、m22、x、y)
PDFDocument.prototype.addSVG = function(svg, x, y, options) {
  return SVGtoPDF(this, svg, x, y, options), this;
};
doc.addSVG(svg, x, y, options);