none
Preciso gerar vários pdf's RRS feed

  • Pergunta

  • 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 PDF's, 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();
                }
            }

    sexta-feira, 1 de junho de 2012 21:28

Todas as Respostas