我正在开发一个Ionic应用程序,我需要打开2个PDF文件,这些文件存储在应用程序的www文件夹中。我在控制器中创建了一个函数来打开这些文件:
$scope.abrirPoliticaPrivacidade=function(){
window.open('/legal/politica_de_privacidade.pdf', '_system', 'location=yes');
};
$scope.abrirTermosUso=function(){
window.open('legal/termos_de_uso.pdf', '_blank', 'location=yes');
};
无论我做什么,应用程序都无法打开文件。浏览器打开一个空白页面或外部应用程序说该文件不再存在。路径是正确的:
文件:///android_asset/www/legal/termos_de_uso.pdf
我做错了吗?
答案 0 :(得分:0)
如何使用名为" cordova-plugin-file-opener2"的cordova插件? 详细信息可以从两个链接中找到:
http://ngcordova.com/docs/plugins/fileOpener2/
https://github.com/pwlin/cordova-plugin-file-opener2
它声明它将使用设备的默认应用程序打开pdf文件。
答案 1 :(得分:0)
Android webview无法打开PDF。您可以尝试使用pdf.js或使用意图在另一个应用程序中打开pdf(有一些插件可以执行此操作)。
答案 2 :(得分:0)
由于直接从应用内部路径打开文件不起作用,我决定将文件复制到外部应用程序路径:
$scope.abrirPoliticaPrivacidade = function () {
abrirArquivoPDF('politica_de_privacidade.pdf');
};
$scope.abrirTermosUso = function () {
abrirArquivoPDF('termos_de_uso.pdf');
};
function abrirArquivoPDF(arquivo) {
$cordovaFile.checkFile($window.cordova.file.applicationDirectory, 'www/legal/' + arquivo)
.then(function () {
$cordovaFile.copyFile($window.cordova.file.applicationDirectory, 'www/legal/' + arquivo, $window.cordova.file.externalApplicationStorageDirectory, arquivo)
.then(function () {
window.open($window.cordova.file.externalApplicationStorageDirectory + arquivo, '_system', 'location=yes');
});
});
}
简而言之,我将pdfs文件从 applicationDirectory 复制到 externalApplicationStorageDirectory ,然后从这个新位置打开文件。
答案 3 :(得分:0)
正如brevleq所提到的,您需要将pdf文件从applicationDirectory复制到SDCard。然后从SDCard打开文件。你可以在ionic local file opening example找到一个简单的例子。 测试了android,需要检查ios。