1

iOS Safari 浏览器有一个方便的选项,只要您在浏览器中打开 PDF 页面,就会出现该选项

如果您安装了 Adob​​e Reader,将出现一个按钮,上面写着:

在“Adobe Reader”中打开...

但是,如果您打开隐藏 HUD(地址栏等)的 PDF 文档,例如在电话间隙应用程序中,或者使用以下元数据快速而肮脏的“添加到主屏幕应用程序”:

<meta name="apple-mobile-web-app-capable" content="yes" />

那么,显然,该按钮将不会出现。

我仍想在 Adob​​e Reader 中打开 PDF 文档。有谁知道以编程方式执行此操作的方法?

我想在 phonegap 应用程序中包含 jsPDF,并保存结果,这将是最简单的方法。

提前致谢!

4

3 回答 3

1

在 Vince Parsons(和其他人)的帮助下,我解决了这个问题。

使用 PhoneGap 插件,您可以创建/公开一个 JavaScript 调用,然后在 Objective-c 中进行处理。

这是您需要的两行(是的,只有两行!),以及随后的解释:

self.docInteractionController = [UIDocumentInteractionController interactionControllerWithURL:[NSURL fileURLWithPath:myDocumentPath]];
[self.docInteractionController presentOpenInMenuFromRect:CGRectMake(0,100,1,1) inView:UIApplication.sharedApplication.keyWindow animated:YES];

解释

您的输入将是文件位置。在我的情况下,它在应用程序沙箱内,所以它看起来像:

/var/mobile/Applications/B16-HU83-GU1D-1D3NT1F13R/Documents/DocumentToExport.pdf

如果您想使用外部 URL,您可以(通过调整),但出于我的目的,它是内部的。

因此,将我的文件位置作为输入(我们称之为输入变量myDocumentPath),您只需要声明一个文档控制器:

self.docInteractionController = [UIDocumentInteractionController interactionControllerWithURL:[NSURL fileURLWithPath:myDocumentPath]];

这将创建一个UIDocumentInteractionControllerusinginteractionControllerWithURL方法,该方法需要一个NSURL变量。我们使用该方法创建该NSURL变量fileURLWithPath,并将其传递给我们的myDocumentPath.

下一行调用presentOpenInMenuFromRect 了一个矩形和一个视口:

[self.docInteractionController presentOpenInMenuFromRect:CGRectMake(0,0,1,1) inView:UIApplication.sharedApplication.keyWindow animated:YES];

矩形在位置 0,0 处创建,宽度和高度为 0,0 ( GCRectMake(0,0,1,1)),视口取自 PhoneGap 应用程序:UIApplication.sharedApplication.keyWindow

只需要两行代码就可以解决这个问题,我感到既高兴又惊讶。诚然,没有办法只使用 JavaScript,但它仍然非常优雅,而且效果很好。

于 2013-04-09T20:44:32.293 回答
0

如果 PDF 是使用 URL 从服务器打开或从本地设备打开,您可以使用 PhoneGap InAppBrowser ( http://docs.phonegap.com/en/2.5.0/cordova_inappbrowser_inappbrowser.md.html#InAppBrowser ) 打开 PDF ,您可以使用 PDFViewer 插件:https ://github.com/phonegap/phonegap-plugins/tree/master/iOS/PDFViewer 。

两种方式都将使用本机默认 PDF 阅读器打开 PDF。

于 2013-03-06T23:00:01.620 回答
0

我真的在寻找一种现成的解决方案,并在某一时刻放弃了。GitHub 上有一些旧的存储库,一些文章建立在绿色标记答案的两行上——但没有什么能让我满意。

这就是为什么我分叉cordova-plugin-file-opener2来改变 iOS 的行为,这对我来说是完美的。为了也允许并行使用分叉插件,我创造性地将其重命名为cordova-plugin-file-opener3. 它提供与分叉插件版本 2.0.1 相同的功能,除了在 iOS 上显示“打开方式”-对话框。

对插件的更改是微不足道的。只是替换了一个方法调用并进行了一些重命名。不知道为什么很难找到一个可行的解决方案 - 但也许我没有找到正确的方法。

您可以在此处找到存储库:

https://github.com/napolitano/cordova-plugin-file-opener3

随意使用它。

于 2015-10-21T11:40:04.427 回答