javascript - 以编程方式来自 JavaScript 的 "open in Adobe Reader"

标签 javascript cordova pdf mobile safari

iOS safari 浏览器有一个方便的选项,每当您在浏览器中打开 PDF 页面时就会出现该选项

如果您安装了 Adob​​e Reader,则会出现一个按钮,其中显示:

Open in "Adobe Reader"...

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

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

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

我仍想在 Adob​​e 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/

相关文章:

html - CSS:如何删除章节首页上的标题

perl - 我如何在 Perl 的 CAM::PDF 中使用 PDF 1.6 文档?

javascript - 'let' 和 'const' ECMAScript 2015 (ES6) 有什么区别?

javascript - 从用作鼠标悬停图像的透明 PNG 获取闪烁

javascript - 我的页面上注册了哪些事件?

xml - 配置文件和 PhoneGap

javascript - 如何使 jshint 缩进选项起作用

javascript - Firebase/Firestore : No document exists but it should

android - 使用 Windows CLI 将 phonegap 应用程序安装到 android 模拟器

java - 使用 itext 创建的 pdf 文档的第一页上看不到标题