c#如何在不必写入本地目录的情况下即时生成pdf文件并将其流式传输到浏览器

use*_*921 2 c# browser pdf pdf-generation itext

我正在编写一个简单的asp.net,用户可以将对象列表下载为PDF文档.单击"获取pdf"按钮时,客户端浏览器应询问用户他们希望保存文件的位置.就是这样.挺直的.

我找到了几个指南,解释了如何从数据表生成PDF,但所有这些似乎都要求您将pdf保存到某种临时文件,并在过程中将其存储在本地.

PdfWriter writer = PdfWriter.GetInstance(document, new FileStream("c://sample.pdf", FileMode.Create));
Run Code Online (Sandbox Code Playgroud)

这是否真的需要在本地保存文件然后将其传递给用户,然后用户可以选择再次保存文件?我在这里想念一下吗?有没有办法在文件上生成PDF然后将其传递给客户端浏览器?

编辑:

要指定,我在这里谈论的可能是直接将流发送到客户端浏览器,该文件是在运行中完全生成的.在用户收到"您是否要下载此文件"提示之前,没有本地存储.

Pad*_*ddy 5

如果使用iText(如您所见),此函数调用将采用任何类型的流,例如,以下将返回一个字节数组,然后您可以将其流式传输到客户端,而无需写入磁盘:

using (MemoryStream ms = new MemoryStream())
{
    Document doc = new Document(PageSize.A4, 50, 50, 15, 15);

    PdfWriter writer = PdfWriter.GetInstance(doc, ms);

    //You need to actually write something to the document here...

    return ms.ToArray();
}
Run Code Online (Sandbox Code Playgroud)