Ionic - 无法打开位于应用程序内的PDF文件

时间:2015-11-12 23:48:48

标签: cordova ionic inappbrowser

我正在开发一个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

我做错了吗?

4 个答案:

答案 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。