提示下载生成的PDF文件
我一直在尝试从我的应用程序生成简单的PDF文件,以便稍后转到使用动态数据生成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
}
使用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");
}
tblImage.AddCell(); pdf.Add(Image); 这两行代码给我的错误:S – ignaciofuentes 2010-08-26 20:29:08
对不起,拿了一大堆,你只需要底部,我会更新来说清楚。 – 2010-08-26 20:37:16
你需要做这样的事情......
变化
PdfWriter.GetInstance(document, new FileStream(Server.MapPath("../Content/test.pdf"), FileMode.Create));
到
var memorystream ms = new memorystream;
PdfWriter.GetInstance(document, ms);
,然后在年底...
Response.Clear;
Response.ContentType = "application/pdf";
Response.AddHeader("content-disposition", "attachment;filename=PDFFile.pdf");
ms.Write(Response.OutputStream);
这给了我几个错误..主要与ms.Write,它没有采取Response.OutputStream作为参数...即时通讯在mvc2,如果它有所作为 – ignaciofuentes 2010-08-26 20:25:03
只是好奇,你使用的是什么API生成PDF? – 2011-02-17 23:01:47