iOS在Powerpoint中通过Cordova应用程序打开ppt / pptx文件

时间:2018-07-02 17:32:42

标签: javascript ios cordova powerpoint hybrid-mobile-app

我对此问题进行了大量研究,但没有解决方案对我有用。现在我决定问问自己。另外,对于整个主题我还是很陌生。

那我的问题是什么?实际上,这似乎很容易。我有一个cordova-app,我也使用Quasar v0.13,目标是装有iOS 9+的Ipad。在此应用程序中,有一个文档列表,用户可以在其中首先下载文件,然后将其打开。这些文件(ppt / pptx)在单击时应在Powerpoint中打开,但不要打开。到目前为止,我知道Powerpoint可以打开,但是随后它抛出一个错误,提示它无法打开文件。在此错误消息中,它显示文件的正确路径。 现在我不知道了。所以这是我已经尝试过的:

1。使用fileOpener2-Plugin for cordova

此插件实际上效果很好。它会打开文件,但会在应用程序中打开它们。因此,我在文档中读到它说可以通过在“打开方法”中设置第二个参数来使用另一个应用程序打开文件。第二个参数必须是您要用来打开文件的应用程序的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类型,但没有任何反应。这些文件仍在我的cordova应用中打开。行为没有变化,也没有记录错误。它只是说“成功打开文件”。所以我检查了下载文件的文件夹。这是 documentsDirectory ,如果我正确的话,其他应用程序应该可以使用其中存储的文件。我对此问题进行了一些研究,但似乎没有其他解决方案会有所帮助。 fullPath-Variable 具有以下结构:file:/// +路径,科尔多瓦文档中也显示了该路径。

因此,由于无法正常工作,我尝试通过cordova inAppBrowser打开文件。

2。使用corodova InAppBrowser-Plugin

进行更多研究后,我发现带有特定Powerpoint-Prefix的URL可以工作。因此它必须类似于“ ms-powerpoint:+ fileURL”。然后,将前缀添加到我的cordova config.xml和info.plist中。

config.xml

<platform name="ios">
    <allow-intent href="ms-powerpoint:*" />
    <allow-navigation href="ms-powerpoint:*" />
</platform>

info.plist:

<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。我尝试了编码的文件路径并扩展了Prefix,只有一个区别。当我尝试编码版本时,powerpoint在其错误消息中打印了整个文件路径。如果未编码,则仅显示文件名。此外,当我使用除“ _blank” PowerPoint以外的其他参数未打开时,对前缀进行编码时也发生了同样的情况。

到目前为止,到目前为止。我很确定自己犯了一些愚蠢的错误,但是我没有想法。也许我必须再扩展URL?非常感谢您的帮助。

非常感谢!

0 个答案:

没有答案