pdfmake不使用离子2在移动设备上下载PDF

问题描述:

我想在我的离子应用程序中输出pdf。 在我的.ts文件,我有这样的功能:pdfmake不使用离子2在移动设备上下载PDF

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文件?

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

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

+0

你见过这个答案吗? https://*.com/questions/36130527/save-this-pdf-in-the-cache-local-storage-on-ionic – misha130

+0

我试过但没有发生 – JSmith

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

你可以通过下面的链接了解详情:

代码

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