我有一个ASP.NET网站,我需要从其中一个网页生成一个PDF文档,其中包含用户选择的一组网页的输出。我称之为“批处理PDF”。基本上,要求用户选择需要将哪些网页放入PDF中,然后单击创建包含所有选定网页的PDF的按钮。
为此,我通过查询字符串发送所选页面的列表(其ID),并在服务器上为查询字符串中的每个网页ID发送,它生成一个http请求到localhost并获取页面的PDF来自此请求(我有Request.Filter
从HTML转换为PDF)。然后,它将所有PDF流合并为一个PDF并将其转储到响应流中。一切正常。
但是我想用AJAX来做。目前,将打开一个新的浏览器窗口,用户必须等待服务器完成才能看到该页面。相反,我想发送一个AJAX请求,并在PDF生成完成后,显示PDF。
执行此操作的一种方法是在AJAX发送请求然后重定向到此文件时将PDF写入服务器上的文件,但有没有办法避免弄乱文件?例如,我可以将整个PDF放入会话中吗?还有其他想法吗?
感谢。
答案 0 :(得分:0)
为什么不将所有内容都放入内存流而不是会话?阅读HTML页面的内容,生成字节输出,并执行以下操作:
[HttpGet]
public ActionResult PreviewPDF()
{
// ...
// The PDF file stream.
MemoryStream pdf = PDF.Render(xmldata, xslfo);
return new FileStreamResult(pdf, "application/pdf");
}
另外,一个简单的问题:您如何将网页转换为PDF,您使用的是第三方工具吗?