Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Cordova将PDF写入文件_Javascript_Cordova_Pdf_Blob - Fatal编程技术网

Javascript Cordova将PDF写入文件

Javascript Cordova将PDF写入文件,javascript,cordova,pdf,blob,Javascript,Cordova,Pdf,Blob,我不想为BlackBerry10编写一个Cordova应用程序,它可以(从SharePointWebservice)编写一个PDF文件并显示出来 PDF是使用字节[]从ASP.NET Web服务传输的 byte[] result = spFile.OpenBinary(); 我可以使用JSON访问该文件。这个很好用。 要将数据从M JSON转换为可用格式,我使用以下代码: var binary = ''; var bytes = new Uint8Array(data.d); var len

我不想为BlackBerry10编写一个Cordova应用程序,它可以(从SharePointWebservice)编写一个PDF文件并显示出来

PDF是使用字节[]从ASP.NET Web服务传输的

byte[] result = spFile.OpenBinary();
我可以使用JSON访问该文件。这个很好用。 要将数据从M 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]);
}
它适用于txt文件,但当我尝试编写PDF文件时,会得到一个空文档。 我也尝试了window.btoa(二进制),而不是仅仅使用二进制


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

我使用cordova fileOpener2插件解决了这个问题。我使用上面的变量“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):

写入文件并

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);
}

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

这里的数据是什么?我想这就是问题所在。
window.open(cordova.file.externalApplicationStorageDirectory + fileName);
if (fileName.split('.')[1].indexOf("txt") > -1) {
    var blob = new Blob([bytes], { type: 'text/plain' });
    var objectUrl = URL.createObjectURL(blob);
    window.open(objectUrl);
}