1

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 手机,也适用于其他设备。

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

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

4

2 回答 2

3

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

于 2013-09-26T16:18:56.123 回答