我想在我的离子应用程序中输出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文件?
我试图搜索,但没有明确的解决方案。
如果您知道解决方案,请提供帮助。非常感谢!!!
答案 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);
}