每当您在浏览器中打开PDF页面时,iOS Safari浏览器都会显示一个方便的选项
如果您安装了Adobe Reader,则会出现一个按钮,显示:
在“Adobe Reader”中打开...
但是,如果您打开隐藏HUD(地址栏等)的PDF文档,例如电话间隙应用程序,或使用以下元数据快速而脏的“添加到主屏幕应用程序”:
<meta name="apple-mobile-web-app-capable" content="yes" />
显然,按钮不会出现。
我还想在Adobe Reader中打开PDF文档。有没有人知道以编程方式执行此操作的方法?
我想在手机应用程序中包含jsPDF,并保存结果,这将是最简单的方法。
提前致谢!
答案 0 :(得分: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];
您的输入将是文件位置。 就我而言,它位于app沙盒中,所以看起来像是:
/var/mobile/Applications/B16-HU83-GU1D-1D3NT1F13R/Documents/DocumentToExport.pdf
如果您想使用外部网址,您可以(通过调整),但就我的目的而言,它是内部的。
所以,以我的文件位置作为输入(让我们调用我的输入变量myDocumentPath
),你只需要声明一个文档控制器:
self.docInteractionController = [UIDocumentInteractionController interactionControllerWithURL:[NSURL fileURLWithPath:myDocumentPath]];
这会使用UIDocumentInteractionController
方法创建interactionControllerWithURL
,该方法需要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,但它仍然非常优雅,而且效果很好。
答案 1 :(得分:0)
如果PDF是使用URL从服务器打开的,或者如果是从本地设备打开PDF,则可以使用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。< / p>
无论如何,本机默认PDF阅读器将用于打开PDF。
答案 2 :(得分:0)
我真的在寻找一个随时可用的解决方案,并且一度放弃了。 GitHub上有一些旧的存储库,有些文章建立在绿色标记答案的两行上 - 但没有什么能让我感到满意。
这就是为什么我分叉cordova-plugin-file-opener2
来改变iOS的行为,这对我来说非常适合。为了允许并行使用分叉插件,我已创造性地将其重命名为cordova-plugin-file-opener3
。它提供与分叉插件2.0.1版相同的功能,但在iOS上显示“Open In”-Dialog。
对插件的更改很简单。刚刚替换了一个方法调用并进行了一些重命名。不知道为什么找到一个有效的解决方案是如此困难 - 但也许我没有找到正确的方法。
您可以在此处找到存储库:
https://github.com/napolitano/cordova-plugin-file-opener3
随意使用它。