Page 1 of 1
Imprimir un texto centrado
Posted: Wed Jan 04, 2006 4:34 pm
by Rafael Clemente
Estoy utilizando una impresora laser de 600 dpi. ¿Cómo puedo imprimir una linea de texto centrada horizontalmente en la página? Algo así como el PADC() pero que funcione en pixels y que tenga en cuenta el tamaño del font que uso
DEFINE FONT oFont3 NAME "TIMES NEW ROMAN" OF oPr SIZE 0,-30
oPr:Say( 30, 0, "MI TEXTO EN LETRA GRANDE", oFont3, CLR_BLACK)
Gracias,
Rafael
Re: Imprimir un texto centrado
Posted: Wed Jan 04, 2006 8:10 pm
by Fco_Ozuna
Hola Rafael.
Hace tiempo yo hice la misma pregunta que amablemente me contesto Marcelo Via Giglio, en la que me explico que depende del ancho del quinto parametro <oPrn>:Say( <nRow>, <nCol>, <cText>, <oFont>, <nWidth>, <nClrText>, <nBkMode>, <nPad> ) , pero como muchas cosas, buscandole y haciendo pruebas di con esto con la fuente "Times New Roman" Size 0.0 ,-8 que es la que yo necesitaba, y el ancho que le di fue de 5000,no se si sean pixels o que, y en el ultimo parametro el de centrar, asi me quedo:
::oPrn:CmSay(9,0,"TEXTO A CENTRAR",::oFont10,5000,,,2 ) // 1
para otra fuente pues hay que buscarle con otro ancho, espero que te sirva de algo.
si alguien me puede ampliar mi poco entendiiento se lo agradecieria.
fco_ozuna@prodigy.net.mx
Posted: Thu Jan 05, 2006 12:15 am
by Rafael Clemente
Gracias, Francisco.
Yo no sabía que Say() admitía un octavo parámetro. Con tu información me ha funcionado perfectamente.
Por si te sirve, yo uso Say(), no cmSay. Say() funciona en pixeles. El quinto parámetro indica la anchura del rectángulo en cuyo interior se centra el texto. En mi caso, uso 4800 (8 pulgadas x 600 dpi = 4800)
No sé si tu 5000 es excesivo. Si cmSay() funciona en cmts, estás centrando tu texto en un rectángulo de 5 metros!!! Pero no estoy seguro; no lo he probado.
Gracias por tu ayuda,
Rafael
Posted: Thu Jan 05, 2006 12:34 am
by R.F.
Exactametne eso iba a comentar yo.
Pero para mas seguro:
oPrinter:GetPhyWidth(), retorna el ancho físico del la hoja
Re: Imprimir un texto centrado
Posted: Thu Jan 05, 2006 4:24 am
by Fco_Ozuna
Gracias Rafael y Rene, que bonito trabajar así, como se aprenden cosas nuevas.
Y si yo tampoco entiendo porque el CmSay en el quinto parámetro no toma en cuenta la conversión a Cm, pero así funciona, yo lo deje en 5000 porque estuve probando +- 500 y con esta información de 600 dpi x 8 pulgadas que da 4800, pues queda mejor centrada, y para no fallarle con el tipo de resolución de la impresora vi este método: <oPrn>:nHorzRes, que nos regresa la resolución horizontal expresada en pixels, que es lo que se necesita: con una resolución de 300 dpi nos da 2400, con 600 dpi nos da 4800, con 1200 dpi nos da 9600, etc.. Todo esto con 8 pulgadas de ancho, y para no tener sorpresas a la hora de la hora, así lo puse y funciona perfectamente.
::oPrn:CmSay(9,0,"TEXTO A CENTRAR",::oFont10,::oPrn:nHorzRes,,,2 )
Gracias por su informacion.
Francisco
Posted: Thu Jan 05, 2006 4:33 am
by Fco_Ozuna
Gracias Rafael y Rene, que bonito trabajar así, como se aprenden cosas nuevas.
Y si yo tampoco entiendo porque el CmSay en el quinto parámetro no toma en cuenta la conversión a Cm, pero así funciona, yo lo había dejado así en 5000 porque estuve probando +- 500, y con esta información de 600 dpi x 8 pulgadas que da 4800, pues queda mejor centrada, y para no fallarle con el tipo de resolución de la impresora vi este método: <oPrn>: nHorzRes que nos regresa la resolución horizontal expresada en pixels, que es lo que se necesita.
Con una resolución de 300 dpi nos da 2400
600 dpi nos da 4800
1200 dpi nos da 9600, etc..
Todo esto con 8 pulgadas de ancho, y para no tener sorpresas a la hora de la hora, así lo puse y funciona perfectamente para cualquier resolución de la impresora.
::oPrn:CmSay(5,0,"TEXTO EN CUALQUIER TAMAÑO",::oFont10
,::oPrn:nHorzRes,,,2 )
Gracias por la información.
Francisco
Posted: Thu Jan 05, 2006 4:46 am
by Fco_Ozuna
Disculpen tenia mal la fecha. en el reloj de mi computadora y no vi posteado el primer mensaje y lo volví a escribir otra vez.
Francisco