none
Como imprimir duas imagens em duas páginas diferentes de uma vez? RRS feed

  • Pergunta

  • Olá!

    Consigo imprimir um panel (pnlPrint) através do código a seguir. Porém, não estou conseguindo imprimir um datagridview que já pertence ao mesmo Form junto, na seguda página para que os dois saiam na mesma impressão. Eu poderia fazer dois botões diferentes para imprimir os dois separados, mas preciso que os dois panels saiam na mesma impressão pois o usuário pode optar pela impressora PDF e assim gerar um arquivo de duas páginas.

    void Imprimir() { PrintDocument pd = new PrintDocument(); pd.DocumentName = "Relatório SisIndice"; pd.PrintPage += new PrintPageEventHandler(doc_PrintPage); pd.DefaultPageSettings.Landscape = true; PrintDialog printDialog1 = new PrintDialog(); printDialog1.Document = pd; DialogResult result = printDialog1.ShowDialog(); if (result == DialogResult.OK) { pd.Print(); } } private void doc_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e) { Bitmap bmp = new Bitmap(pnlPrint.Width, pnlPrint.Height, pnlPrint.CreateGraphics()); pnlPrint.DrawToBitmap(bmp, new Rectangle(0, 0, pnlPrint.Width, pnlPrint.Height)); RectangleF bounds = e.PageSettings.PrintableArea; float factor = ((float)bmp.Height / (float)bmp.Width); e.Graphics.DrawImage(bmp, bounds.Left, bounds.Top, 1118, 855);


    Bitmap bmp1 = new Bitmap(dgvDetGraf.Width, dgvDetGraf.Height, dgvDetGraf.CreateGraphics());
               dgvDetGraf.DrawToBitmap(bmp1, new Rectangle(0, 0, dgvDetGraf.Width, dgvDetGraf.Height));
                RectangleF bounds1 = e.PageSettings.PrintableArea;
               
                e.Graphics.DrawImage(bmp1, bounds1.Left, bounds1.Top, 1118, 855);

                e.HasMorePages = false;

    }





    • Editado LD_7 quinta-feira, 16 de junho de 2016 18:02 atualização
    quinta-feira, 16 de junho de 2016 17:23

Respostas

  • Bom dia LD_7,

    Obrigado por sua participação no Fórum MSDN.

    Você pode tentar aplicar o controle para impressão de DataGrid:

    private void printGrid_Click(System.Object sender, System.EventArgs e)
    {
       printDocument1.Print();
    }
    private void printDocument1_PrintPage(System.Object sender, System.Drawing.Printing.PrintPageEventArgs e)
    {
       PaintEventArgs myPaintArgs = new PaintEventArgs(e.Graphics, new Rectangle(new Point(0, 0), this.Size));
       this.InvokePaint(dataGrid1, myPaintArgs);
    }

    Mais informações aqui

    Espero que esse exemplo o ajude.

    Atenciosamente.


    Robson William Silva

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    • Marcado como Resposta Thales F Quintas quinta-feira, 30 de junho de 2016 16:13
    quinta-feira, 30 de junho de 2016 14:32
    Moderador

Todas as Respostas

  • Um aparece sobreposto ao outro. 

    Como faço para que o datagrid seja inserido em uma nova página?

    sexta-feira, 17 de junho de 2016 17:57
  • Bom dia LD_7,

    Obrigado por sua participação no Fórum MSDN.

    Você pode tentar aplicar o controle para impressão de DataGrid:

    private void printGrid_Click(System.Object sender, System.EventArgs e)
    {
       printDocument1.Print();
    }
    private void printDocument1_PrintPage(System.Object sender, System.Drawing.Printing.PrintPageEventArgs e)
    {
       PaintEventArgs myPaintArgs = new PaintEventArgs(e.Graphics, new Rectangle(new Point(0, 0), this.Size));
       this.InvokePaint(dataGrid1, myPaintArgs);
    }

    Mais informações aqui

    Espero que esse exemplo o ajude.

    Atenciosamente.


    Robson William Silva

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    • Marcado como Resposta Thales F Quintas quinta-feira, 30 de junho de 2016 16:13
    quinta-feira, 30 de junho de 2016 14:32
    Moderador
  • Muito obrigado, Robson William Silva!!!

    Abs!

    segunda-feira, 15 de agosto de 2016 13:09