Resoluciones de las impresoras X TReport/TPrinter

User avatar
Armando Picon
Posts: 448
Joined: Mon Dec 26, 2005 9:11 pm
Location: Lima, Peru

Post by Armando Picon »

El inconveniente es que no siempre sale lo impreso según se espera en todas las impresoras.

La mayor parte de nosotros utilizamos preview en forma general, excepto cuando se trata de impresión de boletas y facturas o registros contables como en Perú que tienen requisitos de copias al carbón que exigen las autoridades tributarias y para lo cual utilizamos las clase TdosPrn.

Por ello es que cada uno, en su afán de conseguir la estandarización de la salida, sin importar la marca o modelo de la impresora, establecimos factores para corregir las salidas. Ese es el motivo de las rutinas que mostramos en el foro y que de alguna manera podrían ayudar a los copartícipes.

Saludos
jacgsoft wrote:Lo que yo hago es simple, tengo una funcion simplemente para PREVISUALIZAR y otra para imprimir.

Para el Preview uso: TPrint(Asi me olvido del modelo de la impresora)
-----------------------

Define Font oFont Name 'Arial' Size 16,25

Print oPrn Preview
Page

oprn:Say(10,10,'ejemplo',oFont)

EndPage



para Impresion directamente a Impresora uso: TdosPrn()
------------------------------------------------------
FWH + BCC582 + WorkShop 4.5 + Resource Hacker + Mingw
Mis nuevas herramientas
Comunicacion via WhatsApp (+51) 957549 665
Comunicación via Correo: apic1002002 at yahoo dot es; apic1002002@gmail.com
Carlos Mora
Posts: 988
Joined: Thu Nov 24, 2005 3:01 pm
Location: Madrid, España

Post by Carlos Mora »

Muy buena la solución de Carlos Vargas. Un solo detalle: no se puede tener una única Cm2Pix porque las resoluciones verticales y horizontales son diferentes. Cero que debe estar diferenciada Cm2PixH y Cm2PixV.

Saludos,

Carlos
Carlos Mora
Posts: 988
Joined: Thu Nov 24, 2005 3:01 pm
Location: Madrid, España

Post by Carlos Mora »

Antonio,

He aplicado la correción de Carlos Vargas a todas las impresiones y salen *perfectas*. Eso incluye a 3 impresoras laser y un Pdf generado con PdfCreator.

Mi recomendación para el parche al método Cmtr2Pix.

Saludos,

Carlos.
User avatar
carlos vargas
Posts: 1421
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

Post by carlos vargas »

Carlos me alegro de que te sirviera, me podria explicar con mas detalle
los de la resolucion :-)

es que ando un poco atontado estos dias :-)

salu2
carlos vargas
Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
User avatar
carlos vargas
Posts: 1421
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

Post by carlos vargas »

Carlos
Ya, entendi :-)

Podrias mostrar la modificacion que has hecho?
Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
User avatar
Armando Picon
Posts: 448
Joined: Mon Dec 26, 2005 9:11 pm
Location: Lima, Peru

Post by Armando Picon »

Carlos

¿Cómo aplicaste las correcciones de Carlos Vargas? ¿Puedes compartir tu código con estos "informáticos"?

Saludos
Carlos Mora wrote:Antonio,

He aplicado la correción de Carlos Vargas a todas las impresiones y salen *perfectas*. Eso incluye a 3 impresoras laser y un Pdf generado con PdfCreator.

Mi recomendación para el parche al método Cmtr2Pix.

Saludos,

Carlos.
FWH + BCC582 + WorkShop 4.5 + Resource Hacker + Mingw
Mis nuevas herramientas
Comunicacion via WhatsApp (+51) 957549 665
Comunicación via Correo: apic1002002 at yahoo dot es; apic1002002@gmail.com
Carlos Mora
Posts: 988
Joined: Thu Nov 24, 2005 3:01 pm
Location: Madrid, España

Post by Carlos Mora »

Hola gente,

no he modificado la clase tprinter, sino que he calculado las constantes necesarias para transformar centímetros a pixeles, he cambiado los :CmSay por :Says y en el cálculo de dimensiones de los bitmaps que están en centímetros, multiplico todo por las constantes.

Code: Select all

      nKY:= Cm2PixY(oPrint, 1.0)
      nKX:= Cm2PixX(oPrint, 1.0)
      oPrint:SayBitmap( 0, 0, "fondo.bmp", nKX * 21, nKY * 29.7 )
      oPrint:Say( nKY* 7.4, nKX* 4.0, cNombre, oFont )
      oPrint:Say( nKY*10.1, nKX* 4.0, cDatReg, oFont )
      oPrint:Say( nKY*12.7, nKX* 5.0, Empresas->CIF, oFont )
      oPrint:Say( nKY*12.7, nKX*13.7, Str( Year( Empresas->Fecha ), 4 ), oFont )

STATIC FUNCTION Cm2PixX( Self, nCm )
RETURN nCm * 10 * ::nHorzRes() / ::nHorzSize()

STATIC FUNCTION Cm2PixY( Self, nCm )
RETURN nCm * 10 * ::nVertRes() / ::nVertSize()

Creo que el código es bastante claro y sencillo. Si se analiza los valores de resolucion y tamaño para varias impresoras se ven diferencias sutiles, pero por lo visto son significativas.

Si alguien hace experiencias con el tema sería importante que las comparta, a ver si podemos dar una solucion definitiva del tema.

Carlos.
Last edited by Carlos Mora on Wed May 30, 2007 1:58 pm, edited 1 time in total.
User avatar
Kleyber
Posts: 581
Joined: Tue Oct 11, 2005 11:28 am
Location: São Luiz, Brasil

Post by Kleyber »

Hola Carlos Mora,

Una luz en el fin del tunel!!! Gracias por compartir tus experiencias. Voy a hacer algunos testes cambiando la TPrinter con lo que pusiste aca y si tengo algo positivo, les comento. Creo que esto es MUY importante para nosotros que tenemos clientes con distinctas impresoras, usando nuestros reportes hechos en TReport o Tprinter.

Saludos
Kleyber Derick

FWH / xHb / xDevStudio / SQLLIB
User avatar
Armando Picon
Posts: 448
Joined: Mon Dec 26, 2005 9:11 pm
Location: Lima, Peru

Post by Armando Picon »

Hola Kleyber

Si las pruebas te salieran bien, sugiero que los compartas con el foro para ver si todos efectúan los ajustes a la clase tprinter y no tengamos que estar haciendo pruebas según las impresoras de los usuarios.

Saludos
Kleyber wrote:Hola Carlos Mora,

Una luz en el fin del tunel!!! Gracias por compartir tus experiencias. Voy a hacer algunos testes cambiando la TPrinter con lo que pusiste aca y si tengo algo positivo, les comento. Creo que esto es MUY importante para nosotros que tenemos clientes con distinctas impresoras, usando nuestros reportes hechos en TReport o Tprinter.

Saludos
FWH + BCC582 + WorkShop 4.5 + Resource Hacker + Mingw
Mis nuevas herramientas
Comunicacion via WhatsApp (+51) 957549 665
Comunicación via Correo: apic1002002 at yahoo dot es; apic1002002@gmail.com
User avatar
carlos vargas
Posts: 1421
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

Post by carlos vargas »

companeros

Hoy mismo en la tarde le doy una miradita para ver que se pude hacer.

salu2
carlos vargas
Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
Carlos Mora
Posts: 988
Joined: Thu Nov 24, 2005 3:01 pm
Location: Madrid, España

Post by Carlos Mora »

Carlos,

Hay un detalle que tu sí aplicas, que es la corrección con nXOffset, y que yo no la apliqué.
La función, tal como la puse, transforma de manera correcta cm. a pixels, pero no a coordenadas, que es diferente. Por ejemplo tu función no la podría usar para calcular el tamaño en pixels de una imagen, porque en ese caso las dimensiones no deberían verse afectadas por el nXOffset. No sé si he sido claro, pero creo que con esto vamos a poder homogeneizar las impresiones.
Te reitero que consideres diferenciar en el cálculo cuando las coordenadas son verticales u horizontales, ya que si tenemos diferente resolución en cada dirección saldría mal en sentido vertical.

Por cierto, el usar pixels para diseñar no parece muy apropiado dado que esas unidades son relativas, cambian de impresora a impresora. Lo que he visto en muchas librerías es el uso del twip como unidad de medida. En la clase hay un método para seleccionar twip como unidad de medida.
Es la unidad de medida por defecto en VB y Delphi.

http://en.wikipedia.org/wiki/Twip
User avatar
carlos vargas
Posts: 1421
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

Post by carlos vargas »

Ok,
Carlos, Kleyber

lamentablemente se me ha complicado la semana :-( pero este fin de semana tendre que trabajar sobre esto, ya que me es urgente :-)

tomare en cuenta sus puntos.

ok, incluso tengo un metodo par ala impresion de bitmap, que como tu indicas tendre que revisar, lo del offset lo checare tambien.

una pregunta que es offset?
ya que lo estaba intentando aplicarlo, pero no estoy muy seguro sobre lo que hace.
(lo que comprendo es que es una especie de correccion)

salu2
carlos vargas
Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
User avatar
Kleyber
Posts: 581
Joined: Tue Oct 11, 2005 11:28 am
Location: São Luiz, Brasil

Post by Kleyber »

Armando,
Si las pruebas te salieran bien, sugiero que los compartas con el foro para ver si todos efectúan los ajustes a la clase tprinter y no tengamos que estar haciendo pruebas según las impresoras de los usuarios.
Claro que si. Asi que tengas los resultados, envio para ustedes lo que tengo y tambien para Antonio Linares, para que se pueda arreglar en las nuevas versiones de FWH. :D

Carlos Vargas,
lamentablemente se me ha complicado la semana pero este fin de semana tendre que trabajar sobre esto, ya que me es urgente
Sin problemas, mi amigo. Si te puedo ayudar, estoy en el MSN.

Saludos,
Kleyber Derick

FWH / xHb / xDevStudio / SQLLIB
carlos.mora
Posts: 6
Joined: Sun Jan 29, 2006 7:43 pm

Post by carlos.mora »

carlos vargas wrote:Ok,
una pregunta que es offset?
ya que lo estaba intentando aplicarlo, pero no estoy muy seguro sobre lo que hace. (lo que comprendo es que es una especie de correccion)
Exacto. xXOffset y nYOffset son valores de ajuste de coordenadas, indicando la posición de inicio del "viewport", es decir del area imprimible. Si revisas los valores que te devuelven los distintos parámetros de la impresora verás que, por ejemplo, teniendo configurada una hoja A4 te dice que el ancho es 198 o 202 o algo parecido. Eso es porque el viewport tiene el tamaño *realmente* disponible. Por ello, como nosotros siempre indicamos las coordenadas referidas al borde de la hoja debemos corregir el cálculo restando ese valor, ya que las coordenadas 0,0 no se refieren a la esquina superior izq. sino a ese punto en particular.
Dicho esto ahora resultan obvias las correciones de coordenadas: se calcula la relación o proporcion pixels-cm, y se les aplica la corrección por el offset siempre y cuando sean coordenadas. Si son dimensiones el nXOffset y nYOffset no deben aplicarse.

Espero que les haya resultado útil el tema. Cuenten como les fue.

Un saludo desde los Madriles,

Carlos.
Post Reply