iOS safari 浏览器有一个方便的选项,每当您在浏览器中打开 PDF 页面时就会出现该选项
如果您安装了 Adobe Reader,则会出现一个按钮,其中显示:
Open in "Adobe Reader"...
但是,如果您打开隐藏 HUD(地址栏等)的 PDF 文档,例如在手机间隙应用程序中,或者使用以下元的快速而肮脏的“添加到主屏幕应用程序”:
<meta name="apple-mobile-web-app-capable" content="yes" />
那么,显然,该按钮将不会出现。
我仍想在 Adobe Reader 中打开 PDF 文档。有谁知道如何以编程方式执行此操作?
我想在phonegap应用程序中包含jsPDF,并保存结果,这将是最简单的方法。
提前致谢!
最佳答案
在 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,您可以(经过调整),但就我而言,它是内部 URL。
因此,将我的文件位置作为输入(我们将其称为输入变量 myDocumentPath
),您只需声明一个文档 Controller 即可:
self.docInteractionController = [UIDocumentInteractionController interactionControllerWithURL:[NSURL fileURLWithPath:myDocumentPath]];
这使用 interactionControllerWithURL
方法创建一个 UIDocumentInteractionController
,该方法需要一个 NSURL
变量。
我们使用 fileURLWithPath
方法创建 NSURL
变量,并将其传递给我们的 myDocumentPath
。
下一行调用 presentOpenInMenuFromRect
,它需要一个矩形和一个视口(viewport):
[self.docInteractionController presentOpenInMenuFromRect:CGRectMake(0,0,1,1) inView:UIApplication.sharedApplication.keyWindow animated:YES];
在位置 0,0 处创建宽度和高度为 0,0 的矩形 (GCRectMake(0,0,1,1)
)
视口(viewport)取自 PhoneGap 应用程序:UIApplication.sharedApplication.keyWindow
我感到既高兴又惊讶,只需要两行代码就可以解决这个问题。当然,没有办法仅使用 JavaScript 来完成此操作,但它仍然非常优雅,并且效果很好。
关于javascript - 以编程方式来自 JavaScript 的 "open in Adobe Reader",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15259166/