2010-08-23 97 views
2

我有一个ASP.NET网站,并从我需要生成一个PDF文档,其中包含用户选择的一组网页的输出的网页之一。我把它叫做“批量PDF”。基本上,要求用户选择她需要将哪些网页放入PDF中,然后单击一个按钮,该按钮创建一个包含所有选定网页的PDF。PDF生成的设计

为此,我通过查询字符串发送选定页面的列表(它们的ID),并在服务器上为查询字符串中的每个网页ID发送一个到本地主机的http请求并获取页面的来自此请求的PDF(我有Request.Filter,它将HTML转换为PDF)。然后,它将所有PDF流合并成一个PDF并将其转储到响应流中。一切正常。

但我想用AJAX来做。目前,打开一个新的浏览器窗口,用户必须等待服务器完成才能看到页面。相反,我想发送一个AJAX请求,并在PDF生成完成后显示PDF。

这样做的一种方法是,当AJAX发送请求并重定向到该文件时,将PDF写入服务器上的文件,但有没有办法避免与文件混淆?例如,我可以将整个PDF放入会话中吗?任何其他想法?

谢谢。

回答

0

而不是会话,为什么不把所有东西放到内存流中?阅读HTML网页的内容,生成您的字节输出,并且这样做:

[HttpGet] 
public ActionResult PreviewPDF() 
{ 
    // ... 
    // The PDF file stream. 
    MemoryStream pdf = PDF.Render(xmldata, xslfo); 
    return new FileStreamResult(pdf, "application/pdf"); 
} 

此外,一个简单的问题:你是如何在地球上变换你的网页转换成PDF,您使用的第三方工具?

+0

感谢您的帮助。我做了类似的事情。为了将页面转换为PDF,我使用了一个称为ABCPdf的第三方工具,它接受HTML并发出PDF。这里是一个相关的讨论:http://stackoverflow.com/questions/564650/convert-html-to-pdf-in-net – akonsu 2010-12-13 17:36:01