AngularJS将SVG导出为PDF

时间:2014-07-18 15:17:34

标签: javascript pdf svg pdfmake

我正在尝试将位于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');    
   }    

1 个答案:

答案 0 :(得分:4)

pdfMake不支持矢量图形。在这种情况下,您需要使用fabricJScanvg通过画布绕过,一旦您有图像,您可以将其放在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
});