Gerar vários gráficos em um PDF

01/06/2012

0

Pessoal, tenho o seguinte problema. Quando vou gerar o meu gráfico, ele é gerado dentro de um for, o que faz com que a quantidade de gráficos na tela, varia de acordo com o tamanho da variável. Bem, digamos que eu tenho na tela dois gráficos. Quando eu vou gerar o meu PDF com iTextSharp, só gera um gráfico. Fiz dentro de um for, o mesmo usado para gerar o gráfico, e sempre vem o último gráfico. Como eu resolvo isso, ou seja, a mesma quantidade de gráfico deverá ser a mesma no PDF.Não é vários PDFs, mas no PDF eu ter todos os gráficos.

Código do PDF.

private void GeraPDF()
{
System.IO.MemoryStream ms = new System.IO.MemoryStream();

this.radChart1.Save(ms, System.Drawing.Imaging.ImageFormat.Png);

this.Page.Response.Clear();
this.Page.Response.ClearHeaders();

int opcao = 2; // 1-download de imagem, 2-download de pdf
if (opcao == 1)
{
this.Page.Response.AddHeader(Content-disposition, attachment; filename=Chart.png);
this.Page.Response.AddHeader(Content-type, image/png);
this.Page.Response.BinaryWrite(ms.ToArray());
}
else if (opcao == 2)
{
this.Page.Response.AddHeader(Content-type, application/pdf);

Document pdfDoc = new Document(PageSize.A4.Rotate(), 10f, 10f, 10f, 0f);
PdfWriter.GetInstance(pdfDoc, Response.OutputStream);
pdfDoc.Open();

iTextSharp.text.Image img1 = iTextSharp.text.Image.GetInstance(ms.ToArray());

Font fonteTitulo1 = FontFactory.GetFont(Verdana, 12, iTextSharp.text.Font.BOLD);
fonteTitulo1.SetColor(255, 0, 0);
Chunk titulo1 = new Chunk(DESEMPENHO POR PERIODO, fonteTitulo1);
Phrase phrase1 = new Phrase(titulo1);
Paragraph p = new Paragraph();
p.Add(phrase1);
pdfDoc.Add(p);

img1.ScaleToFit(pdfDoc.PageSize.Width - 40f, pdfDoc.PageSize.Height);
img1.Alignment = Element.ALIGN_CENTER;
pdfDoc.Add(img1);

pdfDoc.Close();

Response.Write(pdfDoc.ToString());
}

this.Page.Response.End();
}

Chamada para gerar o PDF

protected void btnSalvar_Click(object sender, EventArgs e)
{
string anoInicio = Request.QueryString[A1].ToString();
string anoTermino = Request.QueryString[A2].ToString();

int periodo = int.Parse(anoTermino) - int.Parse(anoInicio) + 1;

for (int p = 0; p < periodo; p++)
{
GeraPDF();
}
}
Pjava

Pjava

Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar