无法使用 ionic-native/file 插件将 pdf base64 编码文件写入 android 和 ios 设备

问题描述

我正在使用 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 (将#修改为@)