我正在尝试将数据库(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来测试)。可能是它的一些浏览器问题?
任何想法? alt text http://img442.imageshack.us/img442/9242/pdfdisplay.jpg
答案 0 :(得分:3)
损坏的adobe安装会这样做。在目标(客户端)计算机上重新安装Adobe Reader。
有时Adobe Installer会崩溃并执行此操作。
答案 1 :(得分:1)
如果您确定,您的浏览器可以查看pdf,那么您应该使用@PAGE ContentType="application/pdf"
指令代替Response.ContentType = "application/pdf";
此外,您应该使用Response.AddHeader("content-disposition", "filename=\"document.pdf\"" );
来设置文件名
答案 2 :(得分:0)
确保IIS(Internet信息服务)中.pdf扩展名的MIME类型设置为“application / pdf”。
答案 3 :(得分:0)
正如其他人所说,尝试将MIME类型/标题设置为application / pdf,如果这不起作用,最后一件事是关闭浏览器并重新打开同一页面,我之前遇到过这个问题FPDF(PDF生成)在PHP中的库),它看起来像浏览器缓存页面的MIME(php)并永远保持它,通过关闭浏览器并重新打开它,它将工作#1。