Tamaño de página en Datawindows

Necesito cambiar el tamaño de la página de mi report en tiempo de ejecución, (o en todo caso el tamaño de papel de la impresora seleccionada) utilizo la función printjob() para enviar más de un datawindows a la impresora es allí que tengo inconvenientes, porque los datawindows no respetan la configuración predeterminada del tiempo de desarrollo; toma el tamaño de papel de la impresora es decir, si tengo mi report en tamaño carta y mi impresora en tamaño oficio me imprime en tamaño oficio. Es un problema porque utilizo una impresora laser con 4 bandejas y si no le paso la configuración correcta no funciona la propiedad bandeja automática, el usuario debe elegir el tamaño manualmente, lo cual resulta muy tedioso.
Obs: ya probe con: cdw_imprimir.Modify("DataWindow.Print.Paper.Size='1 - Letter 8.5x11") pero no pasa nada.

1 respuesta

Respuesta
1
Por lo que veo el problema es que tu necesitas que el programa se adecue a el tamaño indicado por la impresora, o en otras palabras, el tamaño que esta definido en el driver o manejador de la impresora instalado en el cliente.
Con referencia a la función modify(), no estabas muy lejos de la realidad, el problema es que el valor que recibe la propiedad size es de tipo numérico y no alfanumérico, como te podrás dar cuenta lo primeros caracteres de cada una de las descripción, justo antes del guion, es un numero eso significa que ese es el numero que corresponde a la descripción o en este caso al tamaño de la página a imprimir, por ejemplo 1 es igual a el formato Letter 8.5x11 en la impresora, y así sucesivamente, claro CERO implica el formato dado por el manejador, o en otras palabras el formato por omisión.
El cual puedes indicar en caso que necesites que estrictamente se acondicione el reporte al formato por omisión de la impresora o mejor dicho, al formado dado por el manejador en el cliente.
si aun todavia estas intentando que por alguna razon el usuario cambie directamente el formato del papel, simplemente haces por medio de una instruccion modify lo siguiente
cdw_imprimir.Modify("DataWindow.Print.Paper.Size=1")
ó
cdw_imprimir.object.datawindow.print.paper = 1
agdsys
Hola agdsys!
Gracias por la aclaración, la verdad que lo estaba utilizando de la manera correcta, solo que no respeta esa configuración igual utiliza el de la impresora, lo que se me paso comentarte es que utilizo la función Printjob() pues necesito enviar más de un datawindows en un mismo trabajo de impresión porque el informe es en duplex. Es allí que no me funciona lo del Modify.
¿Tu no sabes como podría cambiar de manera automática la configuración del tamaño del papel predeterminada de la impresora? Ya busque el en regedit pero no encuentro en que lugar almacena esa información.
Desde ya gracias por tu tiempo.
No he tenido la oportunidad de enviar un reporte a una impresora para que este se convierta de tipo duplex, sin embargo me da la impresión que lo que te hace falta es enviar la interrupción o código hexadecimal a la impresora para que imprima en la cara opuesta de la hoja, por ejemplo,
Abres el trabajo con printjob()
Luego envías el datawindow que corresponde a la cara A, con los parámetros modificados, para el tamaño de la hoja, luego envías el hexadecimal o código de control que indica a la impresora el cambio de cara, y luego envías la cara B.
El código hexadecimal o el código de impresión para esta tarea deberás encontrarlo en el manual de la impresora
Asegurate igualmente que cada datawindow contenga solo una hoja, de tal manera que imprima en el orden cara A y luego cara B.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas