Foros del Web » Programación para mayores de 30 ;) » .NET »

[SOLUCIONADO] C# Problema Impresión Imagen

Estas en el tema de C# Problema Impresión Imagen en el foro de .NET en Foros del Web. Buenos días, tengo un programa que se encarga de imprimir cada imagen n veces. El problema es que si le digo que imprima 3 veces, ...
  #1 (permalink)  
Antiguo 19/11/2014, 04:07
 
Fecha de Ingreso: noviembre-2014
Mensajes: 4
Antigüedad: 9 años, 5 meses
Puntos: 0
Pregunta C# Problema Impresión Imagen

Buenos días,

tengo un programa que se encarga de imprimir cada imagen n veces.

El problema es que si le digo que imprima 3 veces, sólo imprime 1 y si pongo 2 imágenes, sólo imprime la primera.

(tiene que ir una imagen por hoja)

Código:
private void btnImprimir_Click(object sender, EventArgs e)
        {
            try
            {
                printDocument1.PrinterSettings = printDialog1.PrinterSettings;

                printDocument1.PrintPage += new PrintPageEventHandler(print_my_page);
                printDocument1.BeginPrint += new PrintEventHandler(begin_print);
                printDocument1.DefaultPageSettings.Landscape = true;

                printDocument1.Print();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message.ToString() + " - " + ex.StackTrace.ToString());
            }
        }
Código:
private void print_my_page(object sender, PrintPageEventArgs ev)
        {
            ev.Graphics.PageUnit = GraphicsUnit.Millimeter;
            int ncopias;
            int totcopias;

            DataGridViewRow fila;
                    
            for (int p = 0; p < dtgv.Rows.Count; p++)
            {
                fila = dtgv.Rows[p];

                if (fila.Cells[0].Value.ToString() == "True")
                {

                    ncopias = 0;
                    totcopias = Convert.ToInt32(fila.Cells[2].Value.ToString());
                    while (ncopias < totcopias)
                    {

                        DataGridViewRow row = dtgv.Rows[p];
                        string strFoto = row.Cells[1].Value.ToString();
                        picPlantilla.Image = new Bitmap(strFoto);

                        ev.Graphics.DrawImage(picPlantilla.Image, 0, 8, 145, 95);
                        
                        ev.HasMorePages = true;
                        ncopias++;
                    }
                }

            }
            ev.HasMorePages = false;
              
        }

Última edición por raul1986; 19/11/2014 a las 04:14
  #2 (permalink)  
Antiguo 20/11/2014, 09:20
 
Fecha de Ingreso: noviembre-2014
Mensajes: 4
Antigüedad: 9 años, 5 meses
Puntos: 0
Respuesta: C# Problema Impresión Imagen

ya he conseguido que funcione.
Sigo sin tener claro porqué antes el código no funcionaba, pero dándole la vuelta si imprime como quiero.

Código:
       private void btnImprimir_Click(object sender, EventArgs e)
        {
            try
            {
                int ncopias;
                int totcopias;
                DataGridViewRow fila;

                for (int p = 0; p < dtgv.Rows.Count; p++)
                {
                    fila = dtgv.Rows[p];

                    if (fila.Cells[0].Value.ToString() == "True")
                    {

                        ncopias = 0;
                        totcopias = Convert.ToInt32(fila.Cells[2].Value.ToString());
                        while (ncopias < totcopias)
                        {
                            intPosicion = p;
                            printDocument1.PrinterSettings = printDialog1.PrinterSettings;
                            printDocument1.PrintPage += new PrintPageEventHandler(print_my_page);
                            printDocument1.BeginPrint += new PrintEventHandler(begin_print);
                            printDocument1.DefaultPageSettings.Landscape = true;

                            printDocument1.Print();
                            
                            ncopias++;
                        }
                    }

                }
                
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message.ToString() + " - " + ex.StackTrace.ToString());
            }
        }
Código:
private void print_my_page(object sender, PrintPageEventArgs ev)
        {
            ev.Graphics.PageUnit = GraphicsUnit.Millimeter;
            
            DataGridViewRow row = dtgv.Rows[intPosicion];
            string strFoto = row.Cells[1].Value.ToString();
            picPlantilla.Image = new Bitmap(strFoto);

            ev.Graphics.DrawImage(picPlantilla.Image, 0, 8, 145, 95);

            ev.HasMorePages = false;
              
        }
  #3 (permalink)  
Antiguo 20/11/2014, 14:38
Avatar de Drako_18  
Fecha de Ingreso: mayo-2005
Ubicación: Madrid
Mensajes: 505
Antigüedad: 18 años, 11 meses
Puntos: 16
Respuesta: C# Problema Impresión Imagen

Buenas compañero,

Pues viendo tu código, diría, que en el primero estabas lanzando la impresión antes de prepararla, y en tu solución, preparas lo que quieres imprimir, y después lo imprimes...

Este diseña una página y la mandas a imprimir y el otro le decías imprime y luego montabas todo consecutivo, sin ningún tipo de salto de página ni nada.. Por eso te lo imprimiría todo consecutivo.
Nunca había usado ni visto este control, por eso no sabía cómo funcionaba... :/


Un saludo y gracias por la solución!
__________________
Rubén Espada
Desarrollador full stack .Net (Angular + JS + .Net Core)
  #4 (permalink)  
Antiguo 20/11/2014, 14:43
 
Fecha de Ingreso: noviembre-2014
Mensajes: 4
Antigüedad: 9 años, 5 meses
Puntos: 0
Respuesta: C# Problema Impresión Imagen

es extraño, ya que ese código lo había cogido de otro programa que ya estaba implementado y funcionaba correctamente, solo que el original imprimía 4 imágenes por folio y el mío sólo tenía que imprimir una por folio.

Por lo menos he conseguido dar con la solución.

Saludos

Etiquetas: programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:18.