在NativeScript应用程序中生成和显示PDF

在NativeScript应用程序中生成和显示PDF,pdf,nativescript,nativescript-vue,Pdf,Nativescript,Nativescript Vue,我想在一个nativescript Vue应用程序中显示一个带有nativescript PDF视图插件的pdfMake生成的PDF文件 我无法在插件小部件中显示文件。我从开始,但我想在应用程序中显示文件 首先,我生成将PDF编码为base64,这很好,然后我将编码的字符串写入文件。当我将文件路径传递给小部件时,没有显示任何内容。URL显示正确,因此在写入文件或处理路径时可能会发生错误 PDF生成(app/scripts/PDF.js): 从“pdfmake/build/pdfmake”导入{

我想在一个nativescript Vue应用程序中显示一个带有
nativescript PDF视图
插件的pdfMake生成的PDF文件

我无法在插件小部件中显示文件。我从开始,但我想在应用程序中显示文件

首先,我生成将PDF编码为base64,这很好,然后我将编码的字符串写入文件。当我将文件路径传递给小部件时,没有显示任何内容。URL显示正确,因此在写入文件或处理路径时可能会发生错误


PDF生成(app/scripts/PDF.js):

从“pdfmake/build/pdfmake”导入{createPdf};
从“pdfMake/build/vfs_字体”导入{pdfMake};
从“tns核心模块/文件系统”导入{knownFolders};
导出默认值{
generatePdf(){
返回新承诺((解决、拒绝)=>{
变量定义={
页面大小:“A5”,
页边距:[40,40,40,40],
内容:{文本:“测试”,字体大小:80}
};
var file=knownFolders.documents().getFile(“document1.pdf”);
createPdf(docDefinition,“,”,pdfMake.vfs)。getBase64(base64=>{
//解码此字符串将返回正确的pdf文件
file.writeText(base64)。然后(()=>{
//更新文件属性
解析(file.path);
//路径示例:“/data/user/0/{app package}/files/document1.pdf”
}).捕获(e=>拒绝(e));
});
});
},
//其他代码
}
组成部分:


从“./scripts/pdf”导入pdfModule;
导出默认值{
数据(){
pdf:“
},
方法:{
异步getPDF(){
this.pdf=await pdfModule.generatePdf().catch(e=>console.error(e));
}
}
}

使用本机字节数组解决

从“pdfmake/build/pdfmake”导入{createPdf};
从“pdfMake/build/vfs_字体”导入{pdfMake};
从“tns核心模块/文件系统”导入{knownFolders};
从“tns核心模块/平台”导入{isAndroid};
导出默认值{
generatePdf(){
返回新承诺((解决、拒绝)=>{
让docDefinition={
页面大小:“A5”,
页边距:[40,40,40,40],
内容:{文本:“测试”,字体大小:80}
};
让file=knownFolders.documents().getFile(“document1.pdf”);
createPdf(docDefinition,“,”,pdfMake.vfs).getBuffer(结果=>{
file.writeSync(this.\u bufferToNativeArray(result),e=>{
控制台错误(e);
拒绝(e);
});
解析(file.path);
});
});
},
_bufferToNativeArray(byteArray){
let数组;
if(isAndroid){
array=array.create(“byte”,byteArray.bytellength);
for(设i=0;i
您不应该将base64字符串写入文件。如果要将数据写入文件,则该文件应为二进制文件,浏览器/webview通常使用base64字符串。它是二进制文件的替代文件。好的,我看到writeText不接受base64字符串。现在我正试图用
writeSync
编写Uint8Array,但在
java.io.FileOutputStream
上出现了一个错误,我能够在Android上使用本机字节数组实现这一点。现在我需要一个代码片段,用于将字节数组转换为ios NSData。您可以使用语法
NSData.dataWithBytesLength(bytePointer,length)