2013-09-16 99 views
0

我尝试将图像从ASP.NET图表控件保存为pdf。 我发现在互联网上该解决方案:将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

尝试用以下各项

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();此行。是不是真的有必要将其关闭。(尝试,如果没有必要取出)

+0

还是一样的。我不得不用Response.Write替换Response.WriteFile,因为有错误。我删除了pdfDoc.Close() - 相同的效果:( – user2682156

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()); 

希望这能解决你的问题