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

Ionic - Can't open PDF file located inside application

我正在开发 Ionic 应用程序,我需要打开存储在应用程序的 www 文件夹中的 2 个 PDF 文件。我在控制器中创建了一个函数来打开这些文件:

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

无论我做什么,应用程序都无法打开文件。浏览器打开一个空白页面或外部应用程序说该文件不再存在。路径正确:

file:///android_asset/www/legal/termos_de_uso.pdf

我是不是做错了什么?

如何使用名为 "cordova-plugin-file-opener2" 的 cordova 插件? 详情可以从两个链接找到:

http://ngcordova.com/docs/plugins/fileOpener2/

https://github.com/pwlin/cordova-plugin-file-opener2

它声明它将使用设备的默认应用程序打开一个 pdf 文件。

Android 网络视图无法打开 PDF。您可以尝试使用 pdf.js 或使用 intent 在另一个应用程序中打开 pdf(有一些插件可以执行此操作)。

由于直接从内部应用路径打开文件不起作用,我决定将文件复制到外部应用路径:

    $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,然后从这个新位置打开文件。

如 brevleq 所述,您需要将 pdf 文件从 applicationDirectory 复制到 SDCard。然后从 SDCard 打开文件。您可以在 ionic local file opening example 找到一个简单的例子。 已测试 android,需要检查 ios。