asp.net - 在 Web 应用程序中显示 PDF

标签 asp.net pdf web

我已经用谷歌搜索了这个,搜索了这个,浏览了 SO 和其他网站(我已经尝试阅读这个问题几个小时了),但我似乎仍然无法找到一个令人满意的解决方案来解决看似简单的问题,常见的编程问题。

让我设置场景:

  • 我有一个网站/Web 应用程序,允许用户搜索 SQL Server 库。
  • 大多数与搜索结果相关的文档都是 PDF 文件。
  • PDF 文件以 BLOB 形式存储在 SQL Server 数据库中。
  • 我希望能够从数据库中动态提取 PDF 并将其显示给用户。
  • 为了保留用户的搜索进度,我想我想在另一个浏览器窗口/选项卡中打开文件
  • 我已经想出了如何将 PDF 保存到指定目录中的服务器。
  • 我不希望用户看到文件的路径。
  • 在合理的范围内,我想要一个适用于所有主流浏览器的解决方案:

  • Internet Explorer
  • 火狐
  • Chrome
  • Safari(包括 iPhone/iPad 移动版 Safari)

  • 我不想购买第 3 方组件,但如有必要,我愿意走那条路。
  • 我不认为我想将文件作为下载发送(我想我已经知道该怎么做),因为这不会在 iPhone/iPad 上失败吗?

  • 到目前为止,我尝试过的每个解决方案都存在一些基本问题:

  • 在 iPhone/iPad 上使用 iFrame 似乎很失败
  • 使用 Server.Transfer(我正在使用 ASP.NET)显示乱码而不是 PDF
  • 我已经尝试了几个演示 3rd 方解决方案,但它们也很臭!

  • 我想不通!我真的是一个桌面开发人员,这在 Windows 中很容易!为什么网络这么难?

    我是不是很傻,这真的是一个简单的练习,还是这个基本任务真的那么难?

    请帮我指出正确的方向!

    谢谢!!!

    最佳答案

    您是否尝试过使用 content-disposition-inline 添加 http header ?此外,您可能希望将结果直接写入输出响应而不是保存它。这将确保文件的实际路径不会显示为您直接将其写入响应。

    例如

    Response.ContentType = "application/pdf";
    Response.AddHeader("Content-disposition","inline");
    Response.BinaryWrite(myfilestream.ToArray());
    

    其中 myfilestream 是内存流,或者如果您的 blob 中已经有一个字节数组,则可以将其直接写入响应而无需 toarray

    关于asp.net - 在 Web 应用程序中显示 PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9647551/

    相关文章:

    html - 无法使用 <embed> HTML 在 iOS 中滚动

    mysql - "Buffering"断开连接时在线表格中的数据输入( Racket )

    c# - 单击 anchor 标记运行服务器端功能

    asp.net - Asp.net mvc中应该有一个服务层吗?

    javascript - 如何检测图像是否可见?

    pdf - 获取并设置itext pdf文档的元数据

    c# - 只有绝对 URI 可以用作基地址

    ruby - 在 *Linux 服务器* : qt. qpa.screen: QXcbConnection: 无法连接到显示

    php - 是否有与 TCPDF 的 'annotate' 函数等效的 python ReportLab?

    web - 将 Google Tag Manager 过滤到仅我的主域(不包括测试环境)?