c# - 使用 iTextSharp 打开另存为窗口

标签 c# asp.net asp.net-mvc asp.net-mvc-4 itext

在使用 iTextSharp 将网页保存为 PDF 时,有没有办法打开另存为窗口?现在我只是将它保存到一个集合文件中。

var pdfDoc = new Document();

const string folderPath = "C:\\SG-ListingPDFs\\";

bool isExists = Directory.Exists(folderPath);

if (!isExists)
    Directory.CreateDirectory(folderPath);

var writer = PdfWriter.GetInstance(pdfDoc, new FileStream("C:\\SG-ListingPDFs\\" + detailsViewModel.ListingNumber + ".pdf", FileMode.Create));
pdfDoc.Open();

....Code Here

pdfDoc.Add(table);

TempData["SavedPdF"] = true;
pdfDoc.Close();

最佳答案

您需要一个 ActionResult 方法来返回一个文件并设置适当的请求 header 。

public ActionResult Pdf()
{
    Response.AddHeader("Content-Disposition", "attachment;filename=YourFile.pdf");
    return File(yourPdfFile, "application/octet-stream");
}

File() 有一些重载,它们采用 byte[]System.IO.Stream 或指向磁盘上的实际文件。我对 iTextSharp 不太熟悉,所以无法进一步帮助您,但这应该会让您走上正轨。

如果我没记错的话,特定浏览器(我想是 IE)需要 header 才能弹出另存为对话框。

关于c# - 使用 iTextSharp 打开另存为窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20246772/

相关文章:

css - 如何在asp.net 网站中使用自定义字体?

c# - 确定解决实例的依赖关系 - IoC (autofac)

c# - 我可以通过 ASP.NET 将对象从客户端 javascript 发送到服务器端代码吗?

c# - 合并xml文件

asp.net - 在哪里可以找到丢失的 .aspx.vb 文件的副本?

asp.net - 如何在 asp.net MVC 5 中注销用户?

c# - 从 MVC Controller 返回 FileStreamResult 时文件大小变为零

c# - 在linq表达式中获取属性值

c# - Log4Net 如何同时使用 ErrorFormat 和 Error

c# - "Could not load file or assembly ' PresentationUI.Aero2 ' or one of its dependencies."为什么不呢?