jsPDF不呈现html对象

时间:2015-07-09 15:12:44

标签: html pdf canvas jspdf

我在这里遇到以下问题:

使用jsPDF时,应该可以从HTML代码生成PDF。 我正在考虑这样做的方式是使用图像,我似乎无法以正确的方式将html表格放入pdf(这清除了所有的表格布局)。在使用html2canvas时,添加HTML插件仍然不会生成包含内容的pdf。我没有收到任何错误,所以我不知道问题是什么。

同样使用下面链接中给出的示例,代码编写的方式略有不同,但是当我使用此代码时,甚至不执行作为参数传递的同名函数,因此我使用以下构造。 pdf.addHTML(document.title, (function() {})()); 即使这是正确的,内容也不会显示在PDF内部。

http://mrrio.github.io/jsPDF/#

我的代码在功能块中尝试了以下三种结构:

$(function() {
    $('#createPDF').click(function () {

        var pdf = new jsPDF('p', 'pt', 'a4');
        var options = {
                 pagesplit: true
            };
        pdf.addHTML($('body'), 0, 0, options, (function() {
            pdf.save("test.pdf");
        })());





        var pdf = new jsPDF('p','pt','a4');
        pdf.addHTML('Hallo' ,function() {
            var string = pdf.output('datauristring');
            $('.preview-pane').attr('src', string);
        });
        pdf.save('Test.pdf');




        var doc = new jsPDF();
        window.alert(document.title);
        doc.addHTML(document.title, (function() {})());
        doc.text(20, 20, document.getElementById('learningCurve'));
        doc.text(20, 20, document.getElementById('123'));
        doc.setProperties({ pagesplit: true} );
        doc.addPage();
        doc.text('Do you like that?');
        doc.save('Maandrapportage.pdf');
    });
});

1 个答案:

答案 0 :(得分:0)

尝试仅调用save()方法一次。 使用addHTML()方法时,其余代码应放在回调函数中。 第一个addHTML参数必须是一个元素而不是一个String(document.title返回一个String)。

  $('#createPDF').click(function () {

       var pdf = new jsPDF('p', 'pt', 'a4');
       var options = {
            pagesplit: true
       };

       pdf.addHTML(document.getElementById('someID'),0, 0, options,function() {
            pdf.text(20, 20, "put only strings here ...");
            pdf.addHTML(document.getElementById('anotherID'),0,50,function() {
                pdf.text(20, 100, "more text here ...");
                pdf.addPage();
                pdf.text(20, 10, "text in another page ...");
                pdf.save("document.pdf");
            });
       });
  });