【问题标题】:PDF coming as text on browserPDF 在浏览器上以文本形式出现
【发布时间】:2010-06-01 14:28:52
【问题描述】:

我正在尝试向用户显示来自数据库 (byte[]) 的 PDF。

我正在使用下面的代码来呈现 PDF。它给我 PDF 作为二进制文本,如下所示。它不是在 PDF 应用程序中打开,而是将 PDF 呈现为文本。

Response.Buffer = true;
        Response.Charset = "";
        Response.Cache.SetCacheability(HttpCacheability.NoCache);
        //Response.AddHeader("Content-Length", fileToDownload.Length.ToString());
        //Response.AddHeader("Content-Disposition", "inline; name=RemoteUserGuide.pdf");
        Response.AppendHeader("content-length", fileToDownload.Length.ToString());
        Response.ContentType = "application/pdf";
        Response.BinaryWrite(fileToDownload);
        Response.Flush();
        ////Response.Close();
        Response.End();

更新:刚刚注意到,此应用程序页面在 CHROME 中正确呈现 PDF,但仍在 IE 中显示文本。 (服务器上没有 FF3 来测试)。可能是浏览器的问题?

有什么想法吗?

【问题讨论】:

  • 你用什么浏览器?
  • 请看我的更新...谢谢。

标签: c# asp.net pdf moss


【解决方案1】:

损坏的 adobe 安装会执行此操作。在目标(客户端)机器上重新安装 Adob​​e Reader。

有时 Adob​​e 安装程序会崩溃并执行此操作。

【讨论】:

  • 问题是 PDF 安装损坏。重新安装后工作正常。谢谢!
  • 由于我们人手不足,程序员会在覆盖面较少的日子里负责帮助台。你得到一个完整的画面,而不是在编程象牙塔里闲逛!
  • 我完全同意,对于开发人员来说,帮助台将是非常好的体验。几周前我参加了 Microsoft 支持电话,并对这些人所拥有的广泛知识感到惊讶。它不能与任何培训或阅读书籍一起提供。
  • 它被称为“在战壕中”。
【解决方案2】:

如果您确定您的浏览器可以查看 pdf,那么您应该使用 @PAGE ContentType="application/pdf" 指令而不是 Response.ContentType = "application/pdf";

你也应该使用Response.AddHeader("content-disposition", "filename=\"document.pdf\"" ); 来设置文件名

【讨论】:

  • 我认为 OP 缺少文件名调用。
  • 试过文件名还是一样。
【解决方案3】:

确保 IIS(Internet 信息服务)中 .pdf 扩展名的 MIME 类型设置为“application/pdf”。

【讨论】:

  • 他正在手动设置 Content-type。
  • 这种行为是否与 IIS 添加到响应中的行为相同?
【解决方案4】:

正如其他人所说,尝试将 MIME 类型/标题设置为 application/pdf,如果这不起作用最后一件事是关闭浏览器并重新打开同一页面,我之前在使用 FPDF(PDF 生成PHP 中的库),它看起来像浏览器缓存页面的 MIME (php) 并永久保存它,通过关闭浏览器并重新打开它,它将工作#1。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-16
    • 2019-11-21
    • 2012-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    相关资源
    最近更新 更多