pdfmake不使用离子2在手机上下载pdf

时间:2017-07-15 08:30:35

标签: cordova typescript ionic2 file-transfer pdfmake

我想在我的离子应用程序中输出pdf。 在我的.ts文件中,我有这个功能:

exportPDF() {
      var docDefinition = {
        content: [
                {
                  layout: 'lightHorizontalLines', // optional
                  table: {
                    // headers are automatically repeated if the table spans over multiple pages
                    // you can declare how many rows should be treated as headers
                    headerRows: 1,
                    widths: [ '*', 'auto', 100, '*', 'auto' ],

                    body: [
                      [ 'Title 1', 'Title 2', 'Title 3', 'Title 4', 'Title 5' ],
                      [ 'Value 1', 'Value 2', 'Value 3', 'Value 4', 'Value 5' ],
                      [ 'Value 1', 'Value 2', 'Value 3', 'Value 4', 'Value 5' ],
                    ]
                  }
                }
              ]
      }
      pdfMake.createPdf(docDefinition).open();
      pdfMake.createPdf(dd).download();

            pdfMake.createPdf(docDefinition).getBuffer((buffer) => {
                var utf8 = new Uint8Array(buffer); // Convert to UTF-8...
                var binaryArray = utf8.buffer; // Convert to Binary...
                this.file.writeFile(this.file.dataDirectory, "example.pdf", binaryArray, true).then((success) => {
                        alert(success.toURL());
                    }, (error) => {
                        alert(error);
                });
            });
}

这两行:

  pdfMake.createPdf(docDefinition).open();
  pdfMake.createPdf(dd).download();

仅适用于浏览器,但不适用于移动设备。

现在,如何使用pdfmake和cordova-file-plugin以及cordova-file-transfer-plugin下载pdf文件?

我试图搜索,但没有明确的解决方案。

如果您知道解决方案,请提供帮助。非常感谢!!!

1 个答案:

答案 0 :(得分:0)

尝试以下代码。它适用于科尔多瓦和非科尔多瓦环境。

您可以通过以下链接了解更多详情:

<强>代码

var docDefinition = ''; //your doc definition

if (!window.cordova)
  pdfMake.createPdf(docDefinition).open();

else {
    pdfMake.createPdf(docDefinition).getBuffer(function (buffer) {
        var utf8 = new Uint8Array(buffer);
        binaryArray = utf8.buffer;

        window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFS, fail);
    });
}

function fail(error) {
    console.log(error.code);
};

function gotFS(fileSystem) {
    var fileName = "filename.pdf";

    fileSystem.root.getFile(fileName, {
        create: true,
        exclusive: false
    }, gotFileEntry, fail);
}