Resoluciones de las impresoras X TReport/TPrinter

Postby Armando Picon » Wed May 23, 2007 3:23 am

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
User avatar
Armando Picon
 
Posts: 446
Joined: Mon Dec 26, 2005 9:11 pm
Location: Lima, Peru

Postby Carlos Mora » Tue May 29, 2007 9:57 am

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: 989
Joined: Thu Nov 24, 2005 3:01 pm
Location: Madrid, España

Postby Carlos Mora » Tue May 29, 2007 10:20 am

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.
Carlos Mora
 
Posts: 989
Joined: Thu Nov 24, 2005 3:01 pm
Location: Madrid, España

Postby carlos vargas » Tue May 29, 2007 4:30 pm

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: 1721
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

Postby carlos vargas » Tue May 29, 2007 4:51 pm

Carlos
Ya, entendi :-)

Podrias mostrar la modificacion que has hecho?
Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
User avatar
carlos vargas
 
Posts: 1721
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

Postby Armando Picon » Tue May 29, 2007 11:15 pm

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
User avatar
Armando Picon
 
Posts: 446
Joined: Mon Dec 26, 2005 9:11 pm
Location: Lima, Peru

Postby Carlos Mora » Wed May 30, 2007 8:11 am

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  Expand view  RUN
      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.
Carlos Mora
 
Posts: 989
Joined: Thu Nov 24, 2005 3:01 pm
Location: Madrid, España

Postby Kleyber » Wed May 30, 2007 1:43 pm

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
Kleyber
 
Posts: 581
Joined: Tue Oct 11, 2005 11:28 am
Location: São Luiz, Brasil

Postby Armando Picon » Wed May 30, 2007 3:18 pm

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
Armando Picon
 
Posts: 446
Joined: Mon Dec 26, 2005 9:11 pm
Location: Lima, Peru

Postby carlos vargas » Wed May 30, 2007 5:22 pm

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)
User avatar
carlos vargas
 
Posts: 1721
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

Postby Carlos Mora » Thu May 31, 2007 8:52 am

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
Carlos Mora
 
Posts: 989
Joined: Thu Nov 24, 2005 3:01 pm
Location: Madrid, España

Postby carlos vargas » Fri Jun 01, 2007 2:32 pm

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
carlos vargas
 
Posts: 1721
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

Postby Kleyber » Fri Jun 01, 2007 4:00 pm

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
User avatar
Kleyber
 
Posts: 581
Joined: Tue Oct 11, 2005 11:28 am
Location: São Luiz, Brasil

Postby carlos.mora » Sat Jun 02, 2007 8:43 pm

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.
carlos.mora
 
Posts: 6
Joined: Sun Jan 29, 2006 7:43 pm

Previous

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 52 guests