我尝试将图像从ASP.NET图表控件保存到pdf。 我在互联网上找到了这个解决方案:
Document pdfDoc = new Document(PageSize.A4, 10f, 10f, 10f, 0f);
PdfWriter.GetInstance(pdfDoc, Response.OutputStream);
pdfDoc.Open();
using (MemoryStream stream = new MemoryStream())
{
Chart1.SaveImage(stream, ChartImageFormat.Png);
iTextSharp.text.Image chartImage = iTextSharp.text.Image.GetInstance(stream.GetBuffer());
chartImage.ScalePercent(75f);
pdfDoc.Add(chartImage);
pdfDoc.Close();
Response.ContentType = "application/pdf";
Response.AddHeader("content-disposition", "attachment;filename=Chart.pdf");
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Write(pdfDoc);
Response.End();
}
但是当我运行此代码时没有任何反应(带有问题的窗口将不会出现保存PDF的内容)。
在web.config中我有这个:
<add key="ChartImageHandler" value="storage=session;timeout=360;" />
我无法使用已定义的文件路径保存文件。
请帮助:)
答案 0 :(得分:0)
尝试使用以下代码替换代码 -
using (MemoryStream stream = new MemoryStream())
{
Chart1.SaveImage(stream, ChartImageFormat.Png);
iTextSharp.text.Image chartImage = iTextSharp.text.Image.GetInstance(stream.GetBuffer());
chartImage.ScalePercent(75f);
pdfDoc.Add(chartImage);
pdfDoc.Close();
Response.Clear();
Response.AppendHeader("content-disposition", "attachment;filename=Chart.pdf");
Response.ContentType = "application/pdf";
Response.WriteFile(pdfDoc);
Response.Flush();
Response.End();
}
另外,我发现pdfDoc.Close();
这一行。是否真的有必要关闭它。(如果没有必要,请尝试删除它)
答案 1 :(得分:0)
替换你的这一行
PdfWriter.GetInstance(pdfDoc, Response.OutputStream);
带
System.IO.MemoryStream msReport = new System.IO.MemoryStream();
iTextSharp.text.pdf.PdfWriter.GetInstance(pdfDoc, msReport);
和
Response.Write(pdfDoc);
与
Response.BinaryWrite(msReport.ToArray());
希望这能解决你的问题