Asp.net mvc 提示下载生成的PDF文件

Asp.net mvc 提示下载生成的PDF文件,asp.net-mvc,pdf-generation,itextsharp,Asp.net Mvc,Pdf Generation,Itextsharp,我一直在尝试从我的应用程序生成简单的PDF,以便以后可以使用动态数据生成PDF。我的代码会生成文件,但我希望有一种方法可以让浏览器提示下载文件 实际上,我甚至不想在我的服务器上存储生成的文件,但我不知道如何让它只提供给用户,而不首先将其存储在服务器驱动器中 public ActionResult GetPDF() { Document document = new Document(); PdfWriter.GetInstance(document, new FileStream

我一直在尝试从我的应用程序生成简单的PDF,以便以后可以使用动态数据生成PDF。我的代码会生成文件,但我希望有一种方法可以让浏览器提示下载文件

实际上,我甚至不想在我的服务器上存储生成的文件,但我不知道如何让它只提供给用户,而不首先将其存储在服务器驱动器中

public ActionResult GetPDF()
{
    Document document = new Document();
    PdfWriter.GetInstance(document, new FileStream(Server.MapPath("../Content/test.pdf"), FileMode.Create));
    document.Open();
    string strHTML = "<B>I Love ASP.Net!</B>";
    HTMLWorker htmlWorker = new HTMLWorker(document);
    htmlWorker.Parse(new StringReader(strHTML));
    document.Close();

    return File(document, "application/pdf", Server.HtmlEncode(filename));//this doesnt work, obviously
}
public ActionResult GetPDF()
{
文档=新文档();
GetInstance(文档,新文件流(Server.MapPath(“../Content/test.pdf”),FileMode.Create));
document.Open();
string strHTML=“我爱ASP.Net!”;
HTMLWorker HTMLWorker=新HTMLWorker(文档);
Parse(新的StringReader(strHTML));
document.Close();
返回文件(文档“application/pdf”,Server.HtmlEncode(文件名));//显然这不起作用
}

使用
FileStreamResult
操作

public FileStreamResult Export(int? ID)
{        
    MemoryStream stream = new MemoryStream();

    //Start of PDF work using iTextSharp PDF library
    Document pdf = new Document();
    PdfWriter writer = PdfWriter.GetInstance(pdf, stream);    
    pdf.Open();    
    pdf.Add(new Phrase("test"));    
    pdf.Close();
    //End of PDF work using iTextSharp PDF library

    //Where the download magic happens
    Response.ContentType = "application/pdf";
    Response.AddHeader("content-disposition", "attachment;filename=Log.pdf");
    Response.Buffer = true;
    Response.Clear();
    Response.OutputStream.Write(stream.GetBuffer(), 0, stream.GetBuffer().Length);
    Response.OutputStream.Flush();
    Response.End();

    return new FileStreamResult(Response.OutputStream, "application/pdf");
}

你需要做一些像

改变

PdfWriter.GetInstance(document, new FileStream(Server.MapPath("../Content/test.pdf"), FileMode.Create));

最后

Response.Clear;
Response.ContentType = "application/pdf";
Response.AddHeader("content-disposition", "attachment;filename=PDFFile.pdf");

ms.Write(Response.OutputStream);

这给了我几个错误。。主要是Write女士,她不以Response.OutputStream作为参数。。。如果mvc2上的im产生了不同的blimage.AddCell();pdf.Add(图片);这两行给了我一个错误:SSORY,拿出一堆,你只需要底部的部分,我会更新以澄清。只是好奇,你用什么API生成PDF?
Response.Clear;
Response.ContentType = "application/pdf";
Response.AddHeader("content-disposition", "attachment;filename=PDFFile.pdf");

ms.Write(Response.OutputStream);