javascript - 在 Angularjs 中使用 pdfMake 从 HTML 生成 PDF

标签 javascript angularjs pdf pdfmake

我正在尝试使用 pdfMakeAngular 从我的 HTML 创建一个 PDF(我也尝试过 jsPDF,也无法让它工作)。我尝试在我的 Angular Controller 中使用以下代码:

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

但我收到以下错误:

Unrecognized document structure: {"_margin":null}".

我的 HTML 包含一个 div exportable 中的两个简单表格。

如果有人知道这个问题的解决方案,或者其他从 Angular 将 HTML 转换为 PDF 的方法,请提供帮助。

非常感谢任何帮助!

最佳答案

好的,我想通了。

  1. 您需要 html2canvaspdfmake .你不需要在你的 app.js 中做任何注入(inject),只需包含在你的脚本标签中

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

     <div id="exportthis">
    
  3. 在 Angular Controller 中,在调用 html2canvas 时使用 div 的 ID:

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

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

  6. Controller 中的完整代码如下所示:

           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");
                }
            });
    

我希望这对其他人有帮助。编码愉快!

关于javascript - 在 Angularjs 中使用 pdfMake 从 HTML 生成 PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34049956/

相关文章:

javascript - 如何在nodejs中使用SHA1进行加密?

javascript - 刷新路由参数后无法加载索引

java - iText - 裁剪出 pdf 文件的一部分

angularjs - 将 Aria 标签添加到 Angular 分页网格以使其更易于访问

vba - 用于将 Excel 文档导出为 PDF 供所有用户使用的宏

pdf - 在R中使用工具提示创建pdf

Javascript 正则表达式在 Firefox 中不起作用

javascript - 将 js 对象值作为字符串复制到 html 中

javascript - 使用 JavaScript 正则表达式进行全局匹配

angularjs - Angular-ui-bootstrap 模式和 typescript