Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net Internet explorer中未显示pdf文件_Asp.net_Pdf Generation_Itextsharp - Fatal编程技术网

Asp.net Internet explorer中未显示pdf文件

Asp.net Internet explorer中未显示pdf文件,asp.net,pdf-generation,itextsharp,Asp.net,Pdf Generation,Itextsharp,语言:ASP.NET/VB.NET 我正在使用itextsharp库创建pdf文件。在我的开发机器上,生成的文件可以毫无问题地打开。但当我在生产服务器上上传编译后的程序时,internet explorer只是打开和关闭窗口,但不显示pdf文件。其他浏览器正在显示pdf文件 这是我正在使用的代码 Dim LABNO As Integer = Request.QueryString("LABNO") Dim vDoc As New iTextSharp.text.D

语言: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()
这个问题(由于MSIE接受字节的方式)在“iText in Action”一书中有解释。您可以通过添加额外的头来解决此问题:
内容长度
(该值是vOutPut中的字节数)

为什么会出现此问题?如果您不告诉MSIE预期的字节数,它将下载特定大小的块(例如,每次1028字节)。如果您的PDF大小不是此大小的精确倍数,则会在末尾添加额外的(垃圾)字符。某些PDF查看器无法处理这些额外字符

根据经验,我还添加了以下标题:

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

我不知道它们是否真的是必要的,但它们不会造成伤害。

感谢Bruno的快速响应,我正在应用这些更改并在开发服务器上进行检查。我正在检查这些更改,并将在测试后恢复。但它在其他浏览器和其他机器上工作?那么它可能无法在服务器端修复,但需要修复客户端ing:您确定没有遇到本地配置错误吗?它与internet explorer中的安全设置有关。已将intranet的安全设置从“中”更改为“低”。这显示pdf文件的“打开文件”对话框,但此对话框继续尝试下载该文件。将在上测试后恢复其他浏览器。