iTextSharp:创建 PDF 文件时显示“打开/保存”对话框
Posted
技术标签:
【中文标题】iTextSharp:创建 PDF 文件时显示“打开/保存”对话框【英文标题】:iTextSharp: Display "Open/Save" dialog box when PDF file is created 【发布时间】:2013-08-23 04:03:46 【问题描述】:我正在使用 iTextSharp 创建 PDF 文件(我使用 C#)。该文件创建良好;但是,它保存在一个文件夹中。该文件是响应链接按钮单击而创建的,我想显示“打开/保存”对话框,而不是将文件保存在文件夹中。 我使用以下内容:
using(MemoryStream ms = new MemoryStream())
Document doc1 = new Document();
PdfWriter pdfw = PdfWriter.GetInstance(doc1, ms);
doc1.open();
string sPath = Server.MapPath("PDF/");
string sFileName = "Something.PDF";
// create the PDF content
doc1.Close();
byte[] content = ms.ToArray();
using (FileStream fs = FileStream.Create(sPath + sFileName))
fs.Write(content, 0, (int)content.Length);
我做错了吗?它创建文件并将其保存在“blahblah/PDF”文件夹中,但不显示打开/保存对话框 bx。
【问题讨论】:
您没有标记此 ASP.Net,所以您是在使用桌面应用程序吗? 这是一个网络应用程序(.Net 3.5,C# 2.0) 【参考方案1】:如果您已经拥有该文件,请使用Response.TransmitFile
方法将其刷新到用户的浏览器中。
Response.Clear();
Response.ContentType = "application/pdf";
Response.AppendHeader("Content-Disposition", "attachment; filename=buylist.pdf");
Response.TransmitFile(Server.MapPath("~/myfile.pdf"));
【讨论】:
感谢瓦希德。有没有办法在不先将文件保存到文件夹的情况下做到这一点?我想知道如果 100 个用户同时点击链接创建 PDF 文件,使用不同的标准生成数据会发生什么。 您可以使用Response.BinaryWrite()
代替 Response.TransmitFile()
并将您的字节数组直接传递给它。
太棒了!那解决了它。它显示打开/保存,而无需先将文件写入文件夹。 Vahid 的建议为我指明了正确的方向,您更改完成。以上是关于iTextSharp:创建 PDF 文件时显示“打开/保存”对话框的主要内容,如果未能解决你的问题,请参考以下文章