javascript - iOS 在 Powerpoint 中从 Cordova 应用程序打开 ppt/pptx 文件
问题描述
我对这个问题做了很多研究,但没有一个解决方案对我有用。现在我决定问问自己。另外,我对整个主题还很陌生。
那么我的问题是什么?实际上,这似乎很容易。我有一个cordova-app,我也在使用Quasar v0.13,目标是带有iOS 9+的Ipad。在这个应用程序中有一个文档列表,用户可以首先下载文件然后打开它。这些文件 (ppt/pptx) 应在 Powerpoint 中打开,当单击它们时,它们不会。到目前为止,我已经知道 Powerpoint 打开了,但是它会抛出一个错误,它只是说它无法打开文件。在此错误消息中,它显示文件的正确路径。现在我不知道了。所以这是我已经尝试过的:
1. 使用cordova的fileOpener2-Plugin
这个插件实际上工作得很好。它会打开文件,但会在应用程序中打开它们。因此,我阅读了文档,其中说您可以通过在 Open-Method 中设置第二个参数来使用另一个应用程序打开文件。第二个参数必须是您希望打开文件的应用程序的 MIME 类型。所以我这样做了:
openItem: function (fullPath) {
return cordova.plugins.fileOpener2.open(fullPath,'application/vnd.openxmlformats-officedocument.presentationml.presentation',{
error : function(e) {
console.log('Error status: ' + e.status + ' - Error message: ' + e.message);
},
success : function () {
console.log('file opened successfully');
}
});}
我尝试了几种 MIME 类型,但没有任何反应。这些文件仍然在我的科尔多瓦应用程序中打开。行为没有变化,也没有记录错误。它只是说“成功打开文件”。所以我检查了文件下载到的文件夹。如果我做对了,它是documentsDirectory和其他应用程序应该能够处理存储在其中的文件。我对该问题进行了一些研究,但似乎没有其他解决方案有帮助。fullPath -Variable 具有以下结构:file:/// + 路径,它也显示在 cordova 文档中。
所以,因为那不起作用,我试图通过cordova inAppBrowser打开文件。
2.使用corodova InAppBrowser-Plugin
在做了更多研究后,我发现带有特定 Powerpoint-Prefix 的 URL 可以工作。所以它必须是“ms-powerpoint:+ fileURL”之类的东西。然后我将前缀添加到我的科尔多瓦 config.xml 和 info.plist。
配置文件
<platform name="ios">
<allow-intent href="ms-powerpoint:*" />
<allow-navigation href="ms-powerpoint:*" />
</platform>
信息列表:
<key>LSApplicationQueriesSchemes</key>
<array>
<string>ms-powerpoint</string>
</array>
我还用 AppAvailability-plugin 来检查前缀是否实际可行。原来是这样。所以我打开 InAppBrowser 的代码如下所示:
openItem: function (fullPath) {
const changedFullPath = "ms-powerpoint:ofv|u|" + fullPath;
const changedFullPathEncoded = "ms-powerpoint:" + encodeURIComponent(fullPath);
const shortFullPath = "ms-powerpoint:" + fullPath;
console.log('electron.shell.openItem: ' + fullPath);
console.log('electron.shell.openItem: ' + changedFullPath);
console.log('electron.shell.openItem: ' + changedFullPathEncoded);
console.log('electron.shell.openItem: ' + shortFullPath);
return cordova.InAppBrowser.open(changedFullPath, '_blank');}
这打开了 Powerpoint,但出现了我上面提到的错误消息。Powerpoint 说它无法打开文件。如您所见,我尝试了不同版本的 URL。我尝试了编码的文件路径并扩展了前缀,但只有一个区别。当我尝试编码版本的 powerpoint 时,在其错误消息中打印了整个文件路径。当它没有被编码时,只显示文件名。此外,当我使用“_blank”之外的另一个参数时,powerpoint 没有打开,当我对前缀进行编码时也会发生同样的情况。
所以,到目前为止就是这样。我很确定我犯了一些愚蠢的错误,但我没有想法。也许我必须进一步扩展 URL?我真的很感谢你的帮助。
提前非常感谢!
解决方案
推荐阅读
- python - 用 django 中的 dict 匹配和减去 QuerySet
- mongodb - MongoDB $lookup 聚合导致嵌套数组
- json - 使用 XSLT 将单个 xml 元素转换为 Json 数组的问题
- lua - 修复我的 roblox 益智游戏的彩色触控脚本
- node.js - 我无法将连接到房间的客户端的流(视频)
- javascript - 是否可以将自定义 html 元素插入到 youtube iframe 中?
- python - 复杂 Ctypes 结构的问题
- python - Python类型提示合并两个类列表,这些类是同一类的子类
- jenkins - 从 Jenkins Rest API 公开自定义参数
- android - 为什么将此视图转换为按钮会停止我的循环?