Imprimir un texto centrado

Post Reply
User avatar
Rafael Clemente
Posts: 365
Joined: Sat Oct 08, 2005 7:59 pm
Location: Barcelona, Spain

Imprimir un texto centrado

Post 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
Fco_Ozuna
Posts: 14
Joined: Sun Nov 27, 2005 2:49 am
Location: Nogales, Sonora
Contact:

Re: Imprimir un texto centrado

Post 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
User avatar
Rafael Clemente
Posts: 365
Joined: Sat Oct 08, 2005 7:59 pm
Location: Barcelona, Spain

Post 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
R.F.
Posts: 840
Joined: Thu Oct 13, 2005 7:05 pm

Post by R.F. »

Exactametne eso iba a comentar yo.

Pero para mas seguro:

oPrinter:GetPhyWidth(), retorna el ancho físico del la hoja
Saludos
R.F.
Fco_Ozuna
Posts: 14
Joined: Sun Nov 27, 2005 2:49 am
Location: Nogales, Sonora
Contact:

Re: Imprimir un texto centrado

Post 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
Fco_Ozuna
Posts: 14
Joined: Sun Nov 27, 2005 2:49 am
Location: Nogales, Sonora
Contact:

Post 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. :D

Francisco
Fco_Ozuna
Posts: 14
Joined: Sun Nov 27, 2005 2:49 am
Location: Nogales, Sonora
Contact:

Post by Fco_Ozuna »

:oops: 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
Post Reply