Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.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 将PDF从内存流显示到浏览器_Asp.net_Asp.net Mvc_Asp.net Mvc 3_Pdf_Itextsharp - Fatal编程技术网

Asp.net 将PDF从内存流显示到浏览器

Asp.net 将PDF从内存流显示到浏览器,asp.net,asp.net-mvc,asp.net-mvc-3,pdf,itextsharp,Asp.net,Asp.net Mvc,Asp.net Mvc 3,Pdf,Itextsharp,我试图显示动态创建的pdf并在浏览器中显示,但我得到了以下字符(很多字符) 我在用iTextSharp \�(l)�x�)�(�)���G���29��2.�`C�B�佤邦���[�(�o��x��3.�J:k��v�操作系统�R 我用来创建pdf的代码在通过电子邮件作为附件发送时确实有效 也许我展示它是错的 .... doc.Close(); Response.Clear(); Response.ContentType = "

我试图显示动态创建的pdf并在浏览器中显示,但我得到了以下字符(很多字符)

我在用iTextSharp

\�(l)�x�)�(�)���G���29��2.�`C�B�佤邦���[�(�o��x��3.�J:k��v�操作系统�R

我用来创建pdf的代码在通过电子邮件作为附件发送时确实有效

也许我展示它是错的

        ....
        doc.Close();

        Response.Clear();

        Response.ContentType = "application/pdf";
        Response.AddHeader("content-disposition", "attachment;filename=labtest.pdf");
        Response.Buffer = true;
        stream2.WriteTo(Response.OutputStream);
        Response.End(); 

上述代码在控制器方法中

在问题注释中回答。 归功于克里斯·哈斯


AJAX的一般形式是基于文本的,这就是为什么您会看到 PDF的文本表示。您需要切换到二进制处理 如果你想处理二进制数据,但那是完全不同的 问题。有关html5rocks.com/en/tutorials/file/xhr2的介绍,请参见此


如果我没记错的话,
Write
WriteTo
方法知道当前的
位置,并将其考虑在内。您可以尝试将代码更改为
Response.BinaryWrite(stream2.ToArray())
另外,您没有尝试使用AJAX来实现这一点,是吗?我找到了另一种解决方案,首先保存文件,然后打开它。是的,我使用AJAX来实现,为什么?AJAX的一般形式是基于文本的,这就是为什么您会看到PDF的文本表示形式。如果您想使用二进制数据,您需要切换到二进制处理这是一个完全不同的问题。看这个作为一个介绍啊,很高兴知道谢谢。