2010-06-01 90 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。