小编典典

使用Angularjs中的pdfMake从HTML生成PDF

javascript

我正在尝试PDF使用pdfMake和从HTML创建一个Angular(我也尝试过jsPDF并且也无法使其正常工作)。我尝试在Angular控制器中使用以下代码:

var blob = new Blob([document.getElementById('exportable').innerHTML])
var docDefinition = {
    content: [blob]
}
pdfMake.createPdf(docDefinition).open();

但我收到以下错误:

无法识别的文档结构:{“ _ margin”:null}“。

我的HTML由div中的两个简单表组成exportable。如果有人知道解决此问题的方法,或者知道从Angular将HTML转换为PDF的另一种方法,请帮助。

非常感谢您的协助!


阅读 689

收藏
2020-05-01

共1个答案

小编典典

好的,我知道了。

  1. 您将需要html2canvas和pdfmake。您无需在app.js中进行任何注入,只需将其包含在脚本标签中

  2. 在要创建其PDF的div上,添加如下所示的ID名称:

     <div id="exportthis">
    
  3. 在Angular控制器中,在对html2canvas的调用中使用div的ID:

  4. 使用toDataURL()将画布更改为图像

  5. 然后在pdfmake的docDefinition中,将图像分配给内容。

  6. 控制器中完整的代码如下所示:

           html2canvas(document.getElementById('exportthis'), {
            onrendered: function (canvas) {
                var data = canvas.toDataURL();
                var docDefinition = {
                    content: [{
                        image: data,
                        width: 500,
                    }]
                };
                pdfMake.createPdf(docDefinition).download("Score_Details.pdf");
            }
        });
    

我希望这可以帮助其他人。

2020-05-01