【问题标题】:iTextSharp: Display "Open/Save" dialog box when PDF file is creatediTextSharp:创建 PDF 文件时显示“打开/保存”对话框
【发布时间】: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)

标签: c# pdf itextsharp save-as


【解决方案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 的建议为我指明了正确的方向,您更改完成。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-08
  • 1970-01-01
  • 1970-01-01
  • 2012-06-22
相关资源
最近更新 更多