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