android - 桌面网站无法在移动设备上打开 pdf 文件 - 如何解决

标签 android asp.net ipad pdf

VS2010 VB.NET ASP.NET

我有一个简单的网站,用户点击一个按钮,一个 pdf 文件就会显示在一个新的浏览器窗口中。

为此,一个按钮会在页面加载事件中使用以下代码启动一个新的浏览器窗口:

            Response.Clear()
            Response.ClearContent()
            Response.ClearHeaders()

            Response.Cache.SetExpires(DateTime.UtcNow.AddMinutes(-1))
            Response.Buffer = True

            Response.ContentType = "application/pdf"
            'Response.ContentType = "text/plain"

            If Download_Flag Then
                'force SaveAs  (this is the download option)
                Response.AppendHeader("Content-Disposition", "attachment; filename=" & "myfile" & ".pdf")
            Else
                'open in borwser
                Response.AddHeader("Content-Disposition", "inline")
            End If

            Response.OutputStream.Write(PdfBuffer, 0, PdfBuffer.Length)
            Response.OutputStream.Flush()
            Response.OutputStream.Close()
            Response.End()

PDFBuffer 是一个包含 pdf 文档的字节数组

此代码使用安装的任何 pdf 插件在浏览器(即 chrome、mozilla、safari?)中显示 pdf 文件。

如果 download_flag 为真,则 pdf 不会在查看器中打开,而是浏览器提示保存文件对话框

正如我所说,此代码适用于桌面浏览器,但不适用于 ipad 或 android 手机,可能也不适用于其他设备。

该网站不支持移动设备,但我想如果需要的话可以。

我知道苹果不允许下载,安卓可能无法打开额外的窗口,那么如何在这些设备上单击按钮打开pdf文件?我知道他的 ipad 和 android 都可以打开 pdf 文件,我在其他网站上做过。

最佳答案

我的解决方案是在与站点相同的窗口中打开 pdf 文件。在 android 上,这会导致文件下载,用户可以转到下载文件夹并查看 pdf。在 ipad 上,这会打开默认的 pdf 查看器。如果 ipad 用户下载了 adobe pdf 查看器,他们可以从默认的 ipad 阅读器切换到 adobe reader; adobe reader 允许打印和通过电子邮件发送文档。在桌面浏览器上,此解决方案在同一窗口中显示 pdf,用户可以在完成 pdf 后使用浏览器的后退按钮返回站点。一个更强大的解决方案是检测客户端并采取适当的行动,但这种通用实现是可行的。

关于android - 桌面网站无法在移动设备上打开 pdf 文件 - 如何解决,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18922840/

相关文章:

android - com.google.firebase.database.DatabaseException:无法将java.lang.String类型的对象转换为com.example.noalumni.model.Users类型

ipad - 获取 iPad 的当前方向?

android - DaggerAppComponent - Unresolved reference

java - 如何列出字符串中的所有提及

asp.net - IIS url 重写 |如何删除目录和扩展名?

c# - 如何检查字符串的最后一个字符并查看它的空格

c# - 使用 channel ID嵌入YouTube直播

ipad - OpenGL ES 性能 2.0 与 1.1 (iPad)

iphone - 如何将选择器声明为属性iOS,接下来如何使用我的属性?

android - 跳过特定构建类型的测试任务