我正在尝试将位于DOM中的<svg>
元素导出到在客户端生成的PDF文件。
我试过不同的库,pdfmake非常接近我想要的。使用此库或任何其他库的任何工作示例都会有所帮助。
downloadPdf = function() {
//var docDefinition = { content: 'This is an sample PDF'};
var html = d3.select("svg")
.attr("version", 1.1)
.attr("xmlns", "http://www.w3.org/2000/svg")
.node().parentNode.innerHTML;
console.log(btoa(html));
var imgsrc = 'data:image/svg+xml;base64,'+btoa(html);
var docDefinition = {content: [{image: imgsrc}]}
pdfMake.createPdf(docDefinition).open('Sample.pdf');
}
答案 0 :(得分:4)
pdfMake不支持矢量图形。在这种情况下,您需要使用fabricJS或canvg通过画布绕过,一旦您有图像,您可以将其放在pdfMake中
// Create fabric instance
var canvas = new fabric.StaticCanvas( undefined, {
width: 500,
height: 500,
} );
// Load SVG document; add to canvas;
fabric.parseSVGDocument(<svg element>,function(objects, options) {
var g = fabric.util.groupSVGElements( objects, options );
var data = "";
// ADD ELEMENTS
canvas.add( g );
// EXPORT TO DATA URL
data = canvas.toDataURL({
format: "jpeg"
});
console.log(data);
// REVIVER
},function(svg,group) {
// possiblitiy to filter the svg elements or adapt the fabric object
});