Ionic - не удается открыть файл PDF, расположенный внутри приложения

Я разрабатываю приложение 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

Я делаю что-то неправильно?


person brevleq    schedule 12.11.2015    source источник


Ответы (4)


Как насчет использования плагина Cordova под названием «cordova-plugin-file-opener2»? Подробности по двум ссылкам:

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

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

В нем говорится, что он откроет файл PDF с приложением устройства по умолчанию.

person denden130    schedule 13.11.2015

Веб-просмотр Android не может открывать PDF-файлы. Вы можете попробовать использовать pdf.js или использовать намерение открыть PDF-файл в другом приложении ( есть некоторые плагины, которые делают это).

person Connor    schedule 13.11.2015

Поскольку открытие файлов непосредственно из пути к приложению не сработало, я решил скопировать файл во внешний путь к приложению:

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

Короче говоря, я скопировал файлы PDF из applicationDirectory в externalApplicationStorageDirectory, а затем открыл файл из этого нового места.

person brevleq    schedule 14.11.2015

Как уже упоминалось brevleq, вам нужно скопировать файл PDF из applicationDirectory на SDCard. Затем откройте файл с SDCard. Вы можете найти простой пример в примере открытия локального файла ionic . Проверено на андроид, нужно проверить на ios.

person prodeveloper    schedule 25.02.2017