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

Definir Unidad Métrica en un PrintDocument

Estas en el tema de Definir Unidad Métrica en un PrintDocument en el foro de .NET en Foros del Web. Buenos Dias a todos! Paso a solicitarles un poco de vuestra ayuda con respecto a los PrintDocument, sucede que enlazo a un printPreviewDialog como documento ...
  #1 (permalink)  
Antiguo 30/09/2011, 09:39
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 13 años, 10 meses
Puntos: 267
Definir Unidad Métrica en un PrintDocument

Buenos Dias a todos! Paso a solicitarles un poco de vuestra ayuda con respecto a los PrintDocument, sucede que enlazo a un printPreviewDialog como documento un PrintDocument y al mostrarlo en este PrintPreviewDialog como vista previa antes de Imprimir no me cuadra correctamente a Milimetros(Probablemente en algo estoy fallando o puede que me falta alguna codificacion más). Mi Formulario posee ademas unas cajas de texto en la cual defino el ancho y el alto de la hoja predeterminada y un boton con el cual confirmo :

Código C:
Ver original
  1. private void btnDefinir_Click(object sender, EventArgs e)
  2.         {
  3.             try
  4.             {
  5.                 PaperSize plantilla;
  6.                 plantilla = new PaperSize(lblVale.Text, Convert.ToInt32(txtAncho.Text), Convert.ToInt32(txtAlto.Text));
  7.                 printDocument1.PrinterSettings = impresoraActual;
  8.                 printDocument1.DefaultPageSettings.PaperSize = plantilla;
  9.             }
  10.             catch (Exception ex)
  11.             {
  12.                 MessageBox.Show(ex.Message, ex.Source);
  13.             }
  14.         }

Donde impresoraActual es :
Código C:
Ver original
  1. PrinterSettings impresoraActual = new PrinterSettings();

Luego en el codigo del PrintDocument_PrintPage donde se dibuja la estructura a mostrar :
Código C:
Ver original
  1. private void printDocument1_PrintPage(object sender, PrintPageEventArgs e)
  2.         {
  3.             try
  4.             {
  5.                 Font fuente = new Font("Verdana", 8);
  6.  
  7.                 //La unidad de medida a usar sera milimetros
  8.                 e.Graphics.PageUnit = GraphicsUnit.Millimeter;
  9.  
  10.                 //1ra linea
  11.                 e.Graphics.DrawString(cliente_p[contador].ToString(), fuente, Brushes.Black, 30, 42);
  12.                 e.Graphics.DrawString(fecha_d[contador].ToString(), fuente, Brushes.Black, 107, 42);
  13.                 e.Graphics.DrawString(vale_d[contador].ToString(), fuente, Brushes.Black, 180, 42);
  14.  
  15.                 //2da linea
  16.                 e.Graphics.DrawString(vale_p[contador].ToString(), fuente, Brushes.Black, 30, 46);
  17.                 e.Graphics.DrawString(cliente_d[contador].ToString(), fuente, Brushes.Black, 107, 46);
  18.                 e.Graphics.DrawString(factura_d[contador].ToString(), fuente, Brushes.Black, 180, 46);
  19.  
  20.                 //3ra linea
  21.                 e.Graphics.DrawString(fecha_p[contador].ToString(), fuente, Brushes.Black, 30, 50);
  22.                 e.Graphics.DrawString(kilometraje_d[contador].ToString(), fuente, Brushes.Black, 107, 50);
  23.                 e.Graphics.DrawString(combustible_d[contador].ToString(), fuente, Brushes.Black, 180, 50);
  24.  
  25.                 //4ta linea
  26.                 e.Graphics.DrawString(entrega_p[contador].ToString(), fuente, Brushes.Black, 30, 54);
  27.                 e.Graphics.DrawString(placa_d[contador].ToString(), fuente, Brushes.Black, 107, 54);
  28.                 e.Graphics.DrawString(importe_d[contador].ToString(), fuente, Brushes.Black, 180, 54);
  29.  
  30.                 //5ta linea
  31.                 e.Graphics.DrawString(galones_p[contador].ToString(), fuente, Brushes.Black, 30, 58);
  32.                 e.Graphics.DrawString(chofer_d[contador].ToString(), fuente, Brushes.Black, 107, 58);
  33.                 e.Graphics.DrawString(galones_d[contador].ToString(), fuente, Brushes.Black, 180, 58);
  34.  
  35.                 //6ta linea
  36.                 e.Graphics.DrawString(importe_p[contador].ToString(), fuente, Brushes.Black, 30, 62);
  37.  
  38.  
  39.                 if (contador < paginas - 1)
  40.                 {
  41.                     contador = contador + 1;
  42.                     e.HasMorePages = true;
  43.                    
  44.                 }
  45.                 else
  46.                 {
  47.                     e.HasMorePages = false;
  48.                 }
  49.             }
  50.             catch (Exception ex)
  51.             {
  52.                 MessageBox.Show(ex.Message, ex.Source);
  53.             }
  54.         }

Verán que indico la unidad a medida a usar la defino a milimetros, pero al momento de mostrar no figura la imagen porque no muestra nada porque si yo defino el alto y el ancho de la hoja en milimetros en las cajas de texto 225 y 102 no muestra, pero si defino una cantidad mas alta como 900 x 370 cuadra en la imagen pero al imprimir no cuadra con lo impreso en las coordenadas en milimetros que definí. Espero vuestra ayuda. Saludos!.

PDT: No importa si las respuestas que me puedan brindar son en VB.NET igual sé su definicion en c#
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net
  #2 (permalink)  
Antiguo 30/09/2011, 10:24
Avatar de rikakashi  
Fecha de Ingreso: julio-2011
Mensajes: 226
Antigüedad: 12 años, 9 meses
Puntos: 33
Respuesta: Definir Unidad Métrica en un PrintDocument

no se si te sea de ayuda amigo pero tuve un problema similar mi problema fue que yo colocaba mis elemento en en coordenadas fuera de los parámetros de margen de la misma impresora, solo tuve que verificar mis margenes disponibles y de ahí comenzar las ordenadas para el drawstrins

y por lo que veo estas dibujando en coordenadas muy cercanas a los margenes de impresion stardar que son 33mm arriba y abajo y 25 derecho e izquierdo..

Espero haberte ayudado, suerte
__________________
la programación es tan grande como la imaginación (+.+)
  #3 (permalink)  
Antiguo 30/09/2011, 10:34
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 13 años, 10 meses
Puntos: 267
Respuesta: Definir Unidad Métrica en un PrintDocument

Agradesco tu respuesta, pero colocandole en coordenadas por debajo de los 33 imprime, solo que no cuadra con las definiciones que le doy, por eso necesito saber la unidad metrica para poder definir y hacer cálculos con respecto al ancho y alto de mi hoja de vale para imprimir. Por otro lado encontré otro error que si tengo 3 hojas imprime solo la ultima
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net
  #4 (permalink)  
Antiguo 30/09/2011, 11:05
Avatar de rikakashi  
Fecha de Ingreso: julio-2011
Mensajes: 226
Antigüedad: 12 años, 9 meses
Puntos: 33
Respuesta: Definir Unidad Métrica en un PrintDocument

eso es a lo que me refería, tus coordenadas deben estar por encima y no debajo de los 33 ya que un valor menor no mostraría la impresión completa por los margenes de impresión. Igual podrías intentarlo para comprobarla unidad métrica es correcta, siempre y cuando la definas cosa que tu ya has hecho, y si también declaras el tipo de hoja? es decir CA A4 etc...

Bueno sigo aportando ideas con el fin de ayudar
__________________
la programación es tan grande como la imaginación (+.+)
  #5 (permalink)  
Antiguo 30/09/2011, 11:19
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 13 años, 10 meses
Puntos: 267
Respuesta: Definir Unidad Métrica en un PrintDocument

No defino un tipo de hoja, yo indique que valores toma la hojas ya que es un vale con formato continuo, al cual ya tiene todos los dibujos y solo se necesita imprimir. El problema está en como indicarle la unidad metrica al momento de hacer clic sobre el boton Definir porque alli se toma la U.M. por defecto que tiene y al dibujar los datos yo defino en Milimetros y al parecer eso lo convierte al por defecto y lo acomoda en la hoja, ese es el problema, si supiera la como asignarle la U.M a la plantilla de hoja seria casi la solucion a 1 de mis 2 problemas.
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net

Etiquetas: .c#, metrica, printdocument, unidad
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 01:05.