如何在 Windows 8/Cordova 应用程序中打开本地 PDF?
How to open a local PDF in a Windows 8/Cordova app?
我有一个我构建的 IOS 应用程序,现在我的任务是将其移植到 Windows 8 以便在 Windows 平板电脑上使用。我的应用程序从 Dropbox 下载文件,这些文件存储在本地文件夹中。我可以看到所有这些工作正常。我可以通过在我的 img 标签的 src 中使用 ms-appdata:///local/" + filename
来引用图像,我什至可以使用 HTML5 视频标签播放同一文件夹中的 mp4。
我的问题是,对于我的 IOS 版本,我使用 Cordova 的 InAppBrowser 打开本地 PDF,但在这个 Windows 8 版本上,它不起作用。
我正在使用以下代码(filename
等于 [1]CaseStudy-AC_EN_04.pdf
并且它确实存在于文件系统中):
var ref = window.open("ms-appdata:///local/" + filename, '_blank', 'location=no');
当我 运行 模拟器
时,我在 Visual Studio 中收到以下错误
APPHOST9607: The app can't launch the URI at ms-appdata:///local/[1]CaseStudy-AC_EN_04.pdf because of this error: -2147024846.
我已经尝试切换到 WinJS 编码方法,甚至尝试将 PDF 加载到 iFrame 中,但没有任何效果。如果必须的话,我不介意将用户踢出 Internet Explorer...我只需要某种方式让用户看到这些本地 PDF。这是权限问题吗?我只有一个 config.xml 文件而不是应用程序清单文件,所以我可能缺少设置?
有没有人有这方面的经验?
以防其他人遇到此问题。我能够用这个 WinJS 代码做我想做的事(确保你包含 WinJS 框架文件)
//this is just the filename, you can probably skip this step but my filenames are from downloaded files so they could be encoded.
fileName = decodeURIComponent(fileName);
//get the local folder that contains the downloaded files
var applicationData = Windows.Storage.ApplicationData.current;
var localFolder = applicationData.localFolder;
//grab the file and return a promise
localFolder.getFileAsync(fileName)
.then(function(file) {
//launch the file - this command will let the OS use it's default PDF reader - win 8 app 'reader' works great.
Windows.System.Launcher.launchFileAsync(file);
});
就是这样。
@Matthew Corway 工作正常。
但是,当文件位于子文件夹中时需要额外注意,例如:
var fullPath = "\folderName\fileName.pdf"
我有一个我构建的 IOS 应用程序,现在我的任务是将其移植到 Windows 8 以便在 Windows 平板电脑上使用。我的应用程序从 Dropbox 下载文件,这些文件存储在本地文件夹中。我可以看到所有这些工作正常。我可以通过在我的 img 标签的 src 中使用 ms-appdata:///local/" + filename
来引用图像,我什至可以使用 HTML5 视频标签播放同一文件夹中的 mp4。
我的问题是,对于我的 IOS 版本,我使用 Cordova 的 InAppBrowser 打开本地 PDF,但在这个 Windows 8 版本上,它不起作用。
我正在使用以下代码(filename
等于 [1]CaseStudy-AC_EN_04.pdf
并且它确实存在于文件系统中):
var ref = window.open("ms-appdata:///local/" + filename, '_blank', 'location=no');
当我 运行 模拟器
时,我在 Visual Studio 中收到以下错误APPHOST9607: The app can't launch the URI at ms-appdata:///local/[1]CaseStudy-AC_EN_04.pdf because of this error: -2147024846.
我已经尝试切换到 WinJS 编码方法,甚至尝试将 PDF 加载到 iFrame 中,但没有任何效果。如果必须的话,我不介意将用户踢出 Internet Explorer...我只需要某种方式让用户看到这些本地 PDF。这是权限问题吗?我只有一个 config.xml 文件而不是应用程序清单文件,所以我可能缺少设置?
有没有人有这方面的经验?
以防其他人遇到此问题。我能够用这个 WinJS 代码做我想做的事(确保你包含 WinJS 框架文件)
//this is just the filename, you can probably skip this step but my filenames are from downloaded files so they could be encoded.
fileName = decodeURIComponent(fileName);
//get the local folder that contains the downloaded files
var applicationData = Windows.Storage.ApplicationData.current;
var localFolder = applicationData.localFolder;
//grab the file and return a promise
localFolder.getFileAsync(fileName)
.then(function(file) {
//launch the file - this command will let the OS use it's default PDF reader - win 8 app 'reader' works great.
Windows.System.Launcher.launchFileAsync(file);
});
就是这样。
@Matthew Corway 工作正常。 但是,当文件位于子文件夹中时需要额外注意,例如:
var fullPath = "\folderName\fileName.pdf"