javascript - Cordova 将 PDF 写入文件

标签 javascript cordova pdf blob

我想为 BlackBerry10 编写一个 Cordova 应用程序,它可以编写一个 PDF 文件(来自 SharePointWeb 服务)并显示它。

PDF 作为 byte[] 使用 ASP.NET Web 服务传输

byte[] result = spFile.OpenBinary();

我可以使用 JSON 访问该文件。这很好用。 要将数据从 JSON 转换为可用格式,我使用以下代码:

var binary = '';
var bytes = new Uint8Array(data.d);
var len = bytes.byteLength;
for (var i = 0; i < len; i++) {
    binary += String.fromCharCode(data.d[i]);
}

二进制文件现在看起来像这样:

%PDF-1.5%µµµµ 1 0 obj ... startxref 103423 %%EOF

这是使用 cordova-plugin-file 将其写入文件的代码。

var blob = new Blob([binary], { type: 'application/pdf' });
fileWriter.write(blob);

它适用于 txt 文件,但当我尝试编写 PDF 文件时,我得到一个空文档。 我也尝试过 window.btoa(binary) 而不是仅仅使用二进制。

知道如何创建数据 blob 或使用哪种格式吗?

最佳答案

我已经使用 cordova fileOpener2 插件解决了这个问题。我正在使用上面的 var "bytes"填充到新的命名变量数据中。

    try {
        window.resolveLocalFileSystemURL(cordova.file.externalApplicationStorageDirectory, function (directoryEntry) {
            directoryEntry.getFile(fileName, { create: true }, function (fileEntry) {

                fileEntry.createWriter(function (fileWriter) {
                    fileWriter.onwriteend = function (e) {

                        cordova.plugins.fileOpener2.open(cordova.file.externalApplicationStorageDirectory + fileName, 'application/pdf',
                            {
                                error: function (e) {
                                    ...
                                },
                                success: function () {
                                    ... //PDF has opened
                                }
                            }
                        );
                    };

                    fileWriter.onerror = function (e) {
                        ...
                    };

                    //Blob erstellen - Blackberry File Plugin verwenden
                    var blob = new Blob([data], { type: 'application/pdf' });

                    fileWriter.write(blob);

                }, function onerror(e) {
                    ...
                });
            }, function onerror(e) {
                ...
            });
        }, function onerror(e) {
            ...
        });

    } catch (e) {
        ...
    }

使用的插件: Cordova 插件文件& cordova-plugin-file-opener2

对于我使用的其他文件类型,例如 PNG(对于 jpg,只需将 png 替换为 jpg):

var blob = new Blob([data], { type: 'image/png' });

写入文件和

window.open(cordova.file.externalApplicationStorageDirectory + fileName);

打开并显示它。

显示txt文件很简单,你可以这样做:

if (fileName.split('.')[1].indexOf("txt") > -1) {
    var blob = new Blob([bytes], { type: 'text/plain' });
    var objectUrl = URL.createObjectURL(blob);
    window.open(objectUrl);
}

这对我有用,如果您有任何问题,请发表评论。

关于javascript - Cordova 将 PDF 写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34784440/

相关文章:

javascript - Ionic 2 - 传单 map onclick 事件

android - <select> 在 Android 2.3.3 上的 Phonegap 应用程序中不工作

javascript:直接发送base64string进行打印,无需预览

iphone - 使用 PhoneGap 并显示 iAd

javascript - Adobe Acrobat Pro XI - 将 Javascript 添加到 PDF

java - JFreeChart 具有一类和自定义条形位置的条形图

javascript - D3 js可折叠图表增加圆弧曲线半径

javascript - 如何从标题中删除 CSS

javascript - Uikit 切换器组件和当前窗口哈希

ios - 创建PhoneGap 3.0.0自定义iOS插件时出错