2017-03-03 5 views
0

iTextSharpを使用して2つのCharts Asp.netを単一のPDFにエクスポートしたいと考えています。 1つのチャートのitextSharpを使用して複数のチャート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=Charts.pdf"); 
    Response.Cache.SetCacheability(HttpCacheability.NoCache); 
    Response.Write(pdfDoc); 
    Response.End(); 
} 

しかし、私は同じ時間に2つのチャートをエクスポートすることはできません...

誰かが答えを持っていますか?大変ありがとうございます...

+0

'Chart1'のように' pdfDoc.Close() 'の前の' Chart2'のために? – mkl

+0

私はすでにChart2についても同じことをしましたが、結果として、最初のChart1が2回複製されます。 – ista9im

答えて

1

おそらく、同じチャートを参照しているのでしょうか、またはMemoryStreamをクリーンアップしていないのでしょうか?ここでは、2つの異なるグラフを生成し、Documentに追加する簡単な例を示します。まず

いくつかのサンプルデータを生成するためのヘルパーメソッド:

byte[] GetChartImage(params int[] points) 
{ 
    using (var stream = new MemoryStream()) 
    { 
     using (var chart = new Chart()) 
     { 
      chart.ChartAreas.Add(new ChartArea()); 
      Series s = new Series(); 
      for (int i = 0; i < points.Length; ++i) 
      { 
       s.Points.AddXY(points[i], points[i]); 
      } 
      chart.Series.Add(s); 
      chart.SaveImage(stream, ChartImageFormat.Png); 
     } 
     return stream.ToArray(); 
    } 
} 

は、その後のチャートを追加します。

Response.ContentType = "application/pdf"; 
Response.AppendHeader("Content-Disposition", "attachment; filename=charts.pdf"); 
using (Document document = new Document()) 
{ 
    PdfWriter.GetInstance(document, Response.OutputStream); 
    document.Open(); 
    document.Add(Image.GetInstance(GetChartImage(3, 5, 7))); 
    document.Add(Image.GetInstance(GetChartImage(2, 4, 6, 8))); 
} 
Response.End(); 

PDF出力:同じことをやっについてどのように

enter image description here

+0

あなたは正しいです。私はMemoryStreamをクリーンアップしていません!どうもありがとうございました。今はOKです。 – ista9im

関連する問題