使用PhoneGap中的JsPdf在本地存储上编写PDF

时间:2014-08-12 08:01:18

标签: javascript cordova jspdf

我正在尝试通过jspdf编写一个html转换的pdf文件,但它在这里不起作用的是js方法

function gotFileWriter(writer) {
    writer.onwriteend = function(evt) {
        console.log("contents of file now 'some sample text'");
        writer.truncate(11);
        writer.onwriteend = function(evt) {



            console.log("contents of file now 'some sample'");
            writer.seek(4);var pdfOut;
        var pdf = new jsPDF('p','pt','a4');
        pdf.addHTML(document.body,function() {
        pdfOut = pdf.output('datauri');
                });
         // this alerts shows "Undefined"
        alert(pdfOut);
        writer.write(pdfOut);



            writer.onwriteend = function(evt){
                console.log("contents of file now 'some different text'");
            }
        };
    };
            var pdfOut;
        var pdf = new jsPDF('p','pt','a4');
        pdf.addHTML(document.body,function() {
        pdfOut = pdf.output('datauri');
                });
        // this alerts shows "Undefined"
            alert(pdfOut);
        writer.write(pdfOut);


}

两个警报都显示“未定义”。如果我将其创建为 .txt 文件,则会显示空文件,如果我将其保存为 .pdf ,则会创建损坏的文件。 JsPdf工作正常,因为我可以在日志中看到 pdf.output('datauri'); 的结果是base64字符串......

1 个答案:

答案 0 :(得分:1)

addHTML调用是异步的,因此在尝试使用pdf输出之前必须等待完成。另外,使用FileWriter时,“arraybuffer”输出最合适。

试试这个:

    function gotFileWriter(writer) {
      writer.onwriteend = function (evt) {
        console.log("contents of file now 'some sample text'");
        // ...
      };
      var pdf = new jsPDF('p', 'pt', 'a4');
      pdf.addHTML(document.body, function () {
        writer.write(pdf.output('arraybuffer'));
      });
    }