[英]pdf file not showing up in Internet explorer
語言:ASP.NET/VB.NET
我正在使用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()
在“ iText in Action”一書中解釋了此問題(由於MSIE接受字節的方式)。 您可以通過添加一個額外的標頭來解決它: Content-Length
(值是vOutPut中的字節數。
為什么會出現此問題? 如果您不告訴MSIE期望多少字節,它將下載特定大小的塊(例如一次下載1028個字節)。 如果PDF的大小不是該大小的精確倍數,則會在末尾添加多余的(垃圾)字符。 某些PDF查看器無法處理這些多余的字符。
根據經驗,我還會添加以下標頭:
"Expires", "0"
"Cache-Control", "must-revalidate, post-check=0, pre-check=0"
"Pragma", "public"
我不知道它們是否真的必要,但它們不會受傷。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.