2013-09-16 106 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()); 

希望這能解決你的問題