2012-09-18 111 views
2

語言:ASP.NET/VB.NETpdf文件未顯示在Internet Explorer中

我正在使用itextsharp庫創建pdf文件。在我的開發機器生成的文件打開沒有任何問題。但是,當我在生產服務器上傳編譯的程序時,Internet Explorer只是打開並關閉窗口,但不顯示PDF文件。其他瀏覽器正在顯示PDF文件。

這裏是我使用

 Dim LABNO As Integer = Request.QueryString("LABNO") 
     Dim vDoc As New iTextSharp.text.Document(PageSize.A4, 20, 20, 50, 50) 

     Dim vOutPut As New IO.MemoryStream 
     Dim vWriter = pdf.PdfWriter.GetInstance(vDoc, vOutPut) 
     Dim cb As New PdfContentByte(vWriter) 
     MakeReceipt(LABNO, vDoc, cb) 
     vDoc.NewPage() 
     MakeReceipt(LABNO, vDoc, cb) 
     'MakeSheet(LABNO) 
     vDoc.Close() 

     Dim rnd As New Random 
     Response.Clear() 
     Response.ClearContent() 
     Response.ClearHeaders() 

     Response.ContentType = "Application/pdf" 
     Response.AddHeader("Content-Disposition", String.Format("attachment;filename=Rct-{0}.pdf", rnd.Next.ToString())) 
     Response.BinaryWrite(vOutPut.ToArray()) 
     Response.Flush() 

回答

1

這個問題(由於MSIE接受字節的方式)在「iText的在行動」的書解釋的代碼。您可以通過添加額外的頭部解決這個問題:Content-Length(該值的字節VOUTPUT數量

爲什麼會出現這種問題的發生。如果你不告訴MSIE多少字節期望,它會下載塊?一個特定的大小(例如,一次1028個字節)如果你的PDF的大小不是這個大小的確切倍數,那麼額外的(垃圾)字符將被添加到最後,一些PDF查看器不能處理這些。多餘的字符

根據經驗,我也將添加以下標題:

"Expires", "0" 
"Cache-Control", "must-revalidate, post-check=0, pre-check=0" 
"Pragma", "public" 

我不知道自己是否真的necess阿里,但他們並沒有受傷。

+0

感謝布魯諾的快速響應,我正在應用這些更改並檢查開發服務器。 – raj

+0

我正在檢查此項,並在測試後恢復。 – raj

+0

它對我不起作用:( – raj