在以HTML和CSS制作的PhoneGap应用程序中打开PDF
我的iPad应用程序在Phone Gap中出现了一个奇怪的问题。问题是,我必须通过链接在我的应用程序中打开PDF文档,当我单击打开PDF的链接时,它会显示没有反向链接的PDF文档 因此,当我通过一个链接打开应用程序中的PDF文档时,它会把我带到死胡同,我无法返回到应用程序的主页 我的问题是,当我打开一个可以带我回到主页的PDF文件时,我怎么能有一个顶部栏呢?iPad的任何内部元素可能是在以HTML和CSS制作的PhoneGap应用程序中打开PDF,css,html,cordova,Css,Html,Cordova,我的iPad应用程序在Phone Gap中出现了一个奇怪的问题。问题是,我必须通过链接在我的应用程序中打开PDF文档,当我单击打开PDF的链接时,它会显示没有反向链接的PDF文档 因此,当我通过一个链接打开应用程序中的PDF文档时,它会把我带到死胡同,我无法返回到应用程序的主页 我的问题是,当我打开一个可以带我回到主页的PDF文件时,我怎么能有一个顶部栏呢?iPad的任何内部元素可能是 非常感谢。尝试使用应用内浏览器插件 如果您使用的是更高版本的Phonegap/Cordova(2.8.0、2.
非常感谢。尝试使用应用内浏览器插件 如果您使用的是更高版本的Phonegap/Cordova(2.8.0、2.9.0等),则应随附该软件-无需安装其他软件 它将允许您在覆盖应用程序的新“窗口”中打开PDF。它有一个“完成”按钮,用户可以使用该按钮关闭它,并在完成后返回到您的应用程序 您可以使用应用程序内浏览器打开PDF,如下所示:
window.open('http://whitelisted-url.com/pdftoopen.pdf', '_blank');
例如,\u blank
选项触发应用程序内浏览器插件。如果您使用\u系统
,它可能会在iBooks中打开它(只是在那里猜测-无法100%确定它是否会使用iBooks)。谢谢asgeo1
我通过使用window.open()
解决了这个问题
希望对您有所帮助。尝试使用前缀
https://docs.google.com/viewer?url=
在URL中
比如,window.open('https://docs.google.com/viewer?url=http://www.example.com/example.pdf&embedded=true“,”空白“,”位置=是“代码>我最终使用了
如上所述。棘手的部分是修改WebIntent.java以正确识别文件类型:
String type = obj.has("type") ? obj.getString("type") : null;
// New code starts
Uri uri = obj.has("url") ? Uri.parse(obj.getString("url")) : null;
String extension = MimeTypeMap.getFileExtensionFromUrl(obj.getString("url"));
if(extension != null){
MimeTypeMap mimeTypeMap = MimeTypeMap.getSingleton();
type = mimeTypeMap.getMimeTypeFromExtension(extension);
}
// New code ends
JSONObject extras = obj.has("extras") ? obj.getJSONObject("extras") : null;
尝试使用以下步骤从URL打开任何类型的文档:
- 安装此插件:cordova插件添加
- 使用此代码:
handleDocumentWithURL(函数(){console.log('success');},函数(error){console.log('failure');if(error==53){console.log('没有处理此文件类型的应用程序');},')
它在Android和IOS上都适用于我。我用它来打开图像和PDF文件
Android:如果可用,它会使用系统应用程序打开文件,否则会给出一个错误,您可以处理该错误
IOS:它使用“完成”按钮和“选项”按钮在弹出式视图中打开文件
它不会显示您的文档URL。
这里提供的源代码:是的,当使用phonegap时,window.open会触发我提到的应用内浏览器插件;)这需要用户登录到Google Drive。还要确保对url参数进行编码。聪明的解决方案。我将PDF上传到谷歌硬盘,将共享设置为公共,然后共享链接。我不相信这种方法需要用户登录。是否有人碰巧知道为什么这对我也不起作用?我用的是iPhone4和Cordova3,我不明白“它应该随它一起来”。我正在使用cordova 3.6,是的,您必须安装org.apache.cordova.inappbrowswer
,它才能工作。这很有效。谢谢@Gallwynmasc-对于Cordova 2.x版,默认情况下包括许多插件(包括应用程序内浏览器)。对于3.x,插件都是可选的,您可以安装所需的插件。
String type = obj.has("type") ? obj.getString("type") : null;
// New code starts
Uri uri = obj.has("url") ? Uri.parse(obj.getString("url")) : null;
String extension = MimeTypeMap.getFileExtensionFromUrl(obj.getString("url"));
if(extension != null){
MimeTypeMap mimeTypeMap = MimeTypeMap.getSingleton();
type = mimeTypeMap.getMimeTypeFromExtension(extension);
}
// New code ends
JSONObject extras = obj.has("extras") ? obj.getJSONObject("extras") : null;