2010-06-01 87 views
2

我试图从数据库(byte [])向用户显示PDF。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

代码位于何处? – 2010-06-01 14:30:58

+0

你使用什么浏览器? – VMAtm 2010-06-01 14:31:56

+0

请参阅我的更新...谢谢。 – spt3210 2010-06-01 15:49:58

回答

3

损坏的adobe安装会执行此操作。在目标客户机上重新安装Adobe Reader。

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

+0

问题已损坏PDF安装。重新安装后它工作正常。谢谢! – spt3210 2010-06-01 17:10:28

+0

由于我们的人员配备不足,程序员在覆盖范围较小的日子里联系服务台。你得到一个完整的图片,而不是在编程的象牙塔里闲逛! – ggonsalv 2010-06-01 19:01:29

+0

我完全同意,服务台对开发人员来说是非常好的体验。几个星期前我在微软支持部门打电话,并且对这些人所拥有的广泛知识感到惊讶。它不能带有任何培训或阅读书籍。 – spt3210 2010-06-02 04:02:06

0

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

+1

他正在手动设置Content-type。 – 2010-06-01 14:32:47

+0

与IIS添加到响应中的行为相同吗? – Koen 2010-06-02 09:31:12

1

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

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

+0

我认为OP缺少文件名称。 – NotMe 2010-06-01 14:48:56

+0

试着用文件名仍然是一样的。 – spt3210 2010-06-01 15:43:08

0

正如有人说,尝试设置MIME类型/头到应用程序/ pdf,如果这不起作用,最后一件事就是关闭浏览器并重新打开相同的页面,但我之前在使用FPDF(PHP中的PDF生成库)时遇到了此问题,它看起来像浏览器缓存通过关闭浏览器并重新打开该页面(php)的MIME并永久保存,它将工作#1。