问题描述
我正在使用 ionic native ("ionic-native": "2.4.1") 并使用 FileOpener 插件打开一个 pdf 文件,该文件从 api 响应中获取为 base64 编码。我尝试了几种选择来编写文件使用 File.writeFile() 方法,它被写入为 0kb。当我使用下面的方法时,文件被写入了一些文件大小,但它的格式无效。
import { FileOpener,File } from 'ionic-native';
declare var cordova: any
@Component({
providers: [File,FileOpener]
})
openArrBuffer(b64Data)
{
const base64ToArrayBuffer = (b64Data) => {
const binary_string = window.atob(b64Data);
const len = binary_string.length;
const bytes = new Uint8Array(len);
for (let i = 0; i < len; i++) {
bytes[i] = binary_string.charCodeAt(i);
}
return bytes.buffer;
}
File.writeFile(cordova.file.externalDataDirectory,'testnew.pdf',b64Data,{replace: true}).then((response) => {
//console.log('successfully wrote to file3',response);
FileOpener.open( cordova.file.externalDataDirectory+ 'testnew.pdf','application/pdf').then((response) => {
//console.log('opened PDF file successfully3',response);
}).catch((err) => {
//console.log('error in opening pdf file3',err);
});
}).catch((err) => {
//console.log('error writing to file3',err);
});
}
在浏览器中,我可以使用相同的 base64 pdf 生成 pdf
const byteCharacters = atob(b64Data);
const byteNumbers = new Array(byteCharacters.length);
for (let i = 0; i < byteCharacters.length; i++) {
byteNumbers[i] = byteCharacters.charCodeAt(i);
}
const byteArray = new Uint8Array(byteNumbers);
//console.log(byteArray);
var blobFile = new Blob([byteArray],{ type: 'application/pdf' });
var fileURL = URL.createObjectURL(blobFile);
window.open(fileURL,'_blank','location=no');
谁能提出在ionic 2中打开base64 pdf的解决方案
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)