【发布时间】:2023-04-11 05:38:01
【问题描述】:
我在 for 循环中调用 ExportToPDF2 方法来生成 pdf 文档。
问题是循环在Respons.End() 之后停止。
我怎样才能解决这个问题,有没有比使用这种技术更好的方法?
private int ExportToPDF2()
{
using (StringWriter sw = new StringWriter())
{
using (HtmlTextWriter hw = new HtmlTextWriter(sw))
{
Page.RenderControl(hw);
StringReader sr = new StringReader(sw.ToString());
Document pdfDoc = new Document(PageSize.A4, 10f, 10f, 10f, 0f);
PdfWriter writer = PdfWriter.GetInstance(pdfDoc, Response.OutputStream);
pdfDoc.Open();
XMLWorkerHelper.GetInstance().ParseXHtml(writer, pdfDoc, sr);
pdfDoc.Close();
Response.ContentType = "application/pdf";
Response.AddHeader("content-disposition", "attachment;filename=GridViewExport.pdf");
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Write(pdfDoc);
Response.End();
}
}
return 0;
}
【问题讨论】:
-
您不能像那样一次下载多个文档。您可以在服务器上生成一堆 PDF,然后将它们放入某种存档文件格式(例如 zip 文件),然后允许用户下载该文件。
-
感谢您的回复。您能否对我需要编写的代码(即示例)有所了解。到目前为止,我看到的所有示例都涉及使用 Response.End() 的 Web 表单。当我尝试在 c# 类中编写代码时,我无法使用响应,或者我是否需要在“使用”部分中引用我的代码?非常感谢您的帮助。
-
他说的是不要写回复。将文件写入磁盘,然后向用户显示一个列出所有文件的页面,以便他可以通过单击每个链接进行下载。
-
然后研究如何!当你想到一个问题时,你的第一反应不应该是问 Stack Overflow 是怎么做的。做一个网络搜索,看看其他人是怎么做的。尝试实施它。如果遇到困难,请提供MCVE。