首页 > 解决方案 > 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?我真的很感谢你的帮助。

提前非常感谢!

标签: javascriptioscordovapowerpointhybrid-mobile-app

解决方案


推荐阅读