Cordova 将 PDF 写入文件
Cordova write PDF to file
我想为 BlackBerry10 编写一个 Cordova 应用程序,它可以编写 PDF 文件(来自 SharePointWebservice)并显示它。
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-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);
}
这对我有用,如果您有任何问题,请发表评论。
我想为 BlackBerry10 编写一个 Cordova 应用程序,它可以编写 PDF 文件(来自 SharePointWebservice)并显示它。
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-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);
}
这对我有用,如果您有任何问题,请发表评论。