如何打开(不保存)生成的pdf(英特尔XDK-Android)blob数组?

时间:2016-09-19 08:05:35

标签: javascript android cordova intel-xdk

如果我正在使用Intel XDK和Cordova进行Android开发,我想知道一个正确且经过验证的方法打开(不保存)生成的pdf的blob数组,其中包含一些默认应用程序(例如Adobe Reader)。

尝试不成功(使用jspdf生成):

    function createPDF(){
        console.log("generating pdf...");
        var doc = new jsPDF();

        doc.text(20, 20, 'HELLO!');

        doc.setFont("courier");
        doc.setFontType("normal");
        doc.text(20, 30, 'This is a PDF document generated using JSPDF.');
        doc.text(20, 50, 'YES, Inside of cordova!');

        pdfOutput = doc.output();
        console.log(pdfOutput);

        var buffer = new ArrayBuffer(pdfOutput.length);
        var array = new Uint8Array(buffer);
        for (var i = 0; i < pdfOutput.length; i++) {
          array[i] = pdfOutput.charCodeAt(i);
        }
        var pdfAsDataUri = "data:application/pdf;base64," + array;
        window.open(pdfAsDataUri);
    }

此外,我尝试了很多示例,但没有任何效果,以防万一,控制台中没有显示任何错误。

谢谢大家。

2 个答案:

答案 0 :(得分:0)

您可以从Blob创建pdfOutput,然后使用Blob URL

Blob创建URL.createObjectURL()
    var blob = new Blob([pdfOutput], {type:"application/pdf"});
    var url = URL.createObjectURL(blob);
    var pdfAsDataUri = url;
    window.open(pdfAsDataUri);

plnkr http://plnkr.co/edit/xt5uVvskmcgSlf13xVVM?p=preview

答案 1 :(得分:0)

最后,我可以将问题分解为:

*创建文档的一个按钮

*创建pdf内容的一个按钮

*一个按钮,用于将pdf内容写入创建的文档

*一个按钮打开文件

*仅限Cordova文件插件

在本文中关注并调整解决方案: https://github.com/pwlin/cordova-plugin-file-opener2/issues/60

稍后我会做一个视频教程,因为这个问题似乎很常见,很难解决。