FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Imprimiendo con print y resolucion de pagina
Posts: 396
Joined: Tue Mar 18, 2008 09:41 PM
Imprimiendo con print y resolucion de pagina
Posted: Wed Jun 30, 2010 05:39 PM
Hola amigos,

Tengo un listado desarrollado con la clase Print como muestra mi codigo:
Code (fw): Select all Collapse
PRINT oPrn PREVIEW
PAGE
.....
ENDPAGE
ENDPRINT


Lo cierto es que todo iba bien. Ya habia ajustado las coordenadas fila y columna en la sentencias
Code (fw): Select all Collapse
oPrn:Say(...)


Pero ho mi sorpresa cuando en casa del cliente veo que el listado sale mucho mas peque帽o en proporci贸n al tama帽o de la hoja que es A4.

Para aumento de mi horror compruebo que al cambiar de impresora predeterminada bien sea fisica o pdf, el tama帽o de mi listado siempre cambia con respecto al tama帽o de la hoja. Tengo que volver a mi casa y solo funciona bien pues las coordenadas parece que solo sirven para mi impresora.

Ahora la pregunta clave 驴existe algun modo de ajustar las coordenadas de oprn:Say() para que el listado siempre salga igual en una hoja de A4, aunque se cambie de impresora?

Lo he intentado con
Code (fw): Select all Collapse
nRow := oPrn:nVertRes() / 20
nCol := oPrn:nHorzRes() / 15


Pensabe que si incremento por ejemplo nRow += 50 siempre es proporcional seg煤n el cambio de impresora. Y la posici贸n se mantiene relativa.
Pero tampoco! :-) :-) :-)
No me digan que tengo que generar un listado por cada tipo de resoluci贸n o impresora porfavor. :-)
La verdad es que no se como hacerlo. :-) :-) :-)

Ayudaaaaa.
Javier,

FWH 8.04 2008
Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM
Re: Imprimiendo con print y resolucion de pagina
Posted: Wed Jun 30, 2010 06:44 PM

Javier:

El problema es que oPrn:Say(...) utiliza la resoluci贸n en pixeles de cada impresora
por eso te var铆a de impresora a impresora, porque las resoluciones de cada una de
ellas no es la misma.

Intenta con

oPrn:CmSay(...)

De esta forma se imprime en cms no en p铆xeles.

Saludos

SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
Posts: 1335
Joined: Fri Jun 13, 2008 11:04 AM
Re: Imprimiendo con print y resolucion de pagina
Posted: Thu Jul 01, 2010 05:11 AM

This topic may be useful to you

viewtopic.php?f=3t=17943

Regards
Anser

&

Posts: 396
Joined: Tue Mar 18, 2008 09:41 PM
Re: Imprimiendo con print y resolucion de pagina
Posted: Thu Jul 01, 2010 02:02 PM
Armando, Anserkk,

Gracias por vuestra ayuda.
Tras leer vuestros consejos, he hecho una prueba con el uso de Cmsay()

Code (fw): Select all Collapse
PRINT oPrn NAME ;
  OemToAnsi( "Listado de facturaci贸n." ) PREVIEW

DEFINE FONT oFont NAME "Arial" SIZE 23, 30 OF oPrn

PAGE

oPrn:CmSay( 4, 4, "N潞 FACTURA " )

ENDPAGE

ENDPRINT


Con este ejemplo tan facil, parece que el descuadre ya no es tan grave como antes. Pero a pesar de que trabajo
en centimetros, sigue cambiando la posici贸n del texto seg煤n la impresora que selecciono.

Como os he dicho, parece que ahora el desajuste no es tan grave. Pero no me da tranquilidad. Me parece que nuestro amigo James Bott hablaba de los OFFSET seg煤n he seguido en el link de anserkk. 驴ser谩n esos offset la causa?. Parece que hay que calcularlos seg煤n cada impresora, lo que me lleva al principio otra vez, al temor de tener que hacer listados para cada tipo de impresoras en lugar de uno universal.

驴podeis decirme si hay alguna otra soluci贸n para tener un listado que salga en A4 sea cual sea la impresora?

Gracias y un saludo.
Javier,

FWH 8.04 2008
Posts: 498
Joined: Thu May 10, 2007 08:30 PM
Re: Imprimiendo con print y resolucion de pagina
Posted: Thu Jul 01, 2010 06:17 PM

jfafive

Es posible que tenga algo que ver con el procesador de impresi贸n, y c贸mo este env铆a los datos a la impresora. Lo mismo lo tienes puesto en EMF en las propiedaddes de impresi贸n, prueba a ponerlo en RAW, pues RAW no modifica los datos como lo hace el EMF.

Peaaaaaso de foro...

FWH 2007 - xHarbour - BCC55
Posts: 337
Joined: Fri Oct 07, 2005 02:44 PM
Re: Imprimiendo con print y resolucion de pagina
Posted: Thu Jul 01, 2010 07:20 PM
Hola,

Pues yo uso print y sin problemas con la proporcion asi :

Code (fw): Select all Collapse
// Obtengo el ancho y alto de cada linea/columna en pixeles.
nAltoRow   := oprinter:nvertres()/65
nAnchoCol :=  oprinter:nhorzres()/170

// Luego para imprimir uso :

oPrinter:say(nAltoRow*nRow,nanchoCol*nCol,"lo que quiero imprimir",oFont4)

// donde nRow es la fila y  ncol es la columna en mi matriz de 65 filas x 170 columnas


Una correccion que suelo hacer dependiendo del tama帽o del informe es restarle 30 pixeles a la resolucion horizontal y vertical antes de divider por el numero de filas/columnas para evitarme el margen inutilizable de la hoja.

Saludos,

Lautaro Moreira
Hola,

Soy un Contador que por necesidad aprendio a programar y se quedo programando.
Posts: 498
Joined: Thu May 10, 2007 08:30 PM
Re: Imprimiendo con print y resolucion de pagina
Posted: Mon Jul 05, 2010 06:10 AM
Me ha he dado cuenta de un detalle que a lo mejor te puede ayudar, pues justamente estoy realizando un impreso con TPrinter.

Lo que hago es dibujar primero el impreso a mano en un folio y despues mido las ditancias con una regla para poner los textos en su sitio con oPrn:CmSay. (y las lineas y cajas con oPrn:Box y oPrn:Line) y cuando imprimo, todo va a su sitio. He probado con dos impresoras diferentes y no tengo problemas. Entonces, repasando el c贸digo me he dado cuenta de una cosa que a lo mejor se te ha pasado a ti: Y es que lo primero que hago despues de definir el TPrinter con PRINTER oPrn NAME ... PREVIEW es definir el tipo dep谩gina con oPrn:SetPage(9) para DIN A4 y la orietaci贸n con oPrn:SetPortrait() o oPrn:SetLandScape().

A lo mejor tienes que definir en que tipo de folio quieres imprimir para que no tengas problemas de cambios de impresora. Espero que te ayude.

Un saludo.
Peaaaaaso de foro...

FWH 2007 - xHarbour - BCC55
Posts: 396
Joined: Tue Mar 18, 2008 09:41 PM
Re: Imprimiendo con print y resolucion de pagina
Posted: Mon Jul 05, 2010 09:34 AM

Gracias a todos por vuestras ideas, que seguro me han ofrecido la base para la soluci贸n.

Antol铆n, la misma tactica utilic茅 yo. Pues lo primero que hice fu茅 imprimir una plantilla en papel con lineas horizontales y verticales que marcan las posiciones fila columna en numeros. Pero esta rejilla tambien cambia de resoluci贸n cuando cambio de impresora. Tendr茅 que probar esa funci贸n de configuraci贸n de p谩gina que me ocmentas.

Puede que no sea m谩s que eso.

Gracias, os ir茅 informando de como resulta todo esto al final.
Una vez mas, muchas gracias por vuestra inestimable ayuda.

:D

Javier,

FWH 8.04 2008
Posts: 396
Joined: Tue Mar 18, 2008 09:41 PM
Re: Imprimiendo con print y resolucion de pagina
Posted: Thu Jul 08, 2010 10:19 AM
Antolin,

He probado usando oPrn:CmSay() y oPrn:SetPage(9), as铆 como oPrn:SetPortrait(), pero sigo encontrando diferencias aunque leves como por ejemplo: el tama帽o y distribuci贸n de los fuentes cambia de una impresora a otra, el texto se puede ver con mas o menos separaci贸n entre las letras as铆 como varia su tama帽o.

Este es el codigo fuente que he usado para el ejemplo:
Code (fw): Select all Collapse
      local oPrn
      
      PRINT oPrn NAME ;
         OemToAnsi( "Listado de facturaci贸n." ) PREVIEW 

      PAGE

      oPrn:SetPage(9)
      oPrn:SetPortrait()

      oPrn:CmSay( 10,10, "N潞 FACTURA" )
      oPrn:CmSay( 20,10, "NOMBRE" )

      ENDPAGE

      ENDPRINT



Si hay algo que falta te agradecer铆a me lo dijeses o si me puedes pasar un ejemplo de tu codigo, pues mejor.

Lautaro:
Tambien he probado con tu ejemplo:
Code (fw): Select all Collapse
nAltoRow   := oprinter:nvertres()/65
nAnchoCol :=  oprinter:nhorzres()/170

// Luego para imprimir uso :

oPrinter:say(nAltoRow*nRow,nanchoCol*nCol,"lo que quiero imprimir",oFont4)


Pero el resultado siempre es el mismo, una diferencia aunque peque帽a pero no se si lo suficiente como para descuadrarme todo el listado seg煤n la impresora.

Antolin:
No he podido encontrar esas opciones para cambiar el lenguaje de la impresora de EMF a RAW por lo que no puedo confirmar si se trata de eso al final o no. Te agradecer铆a me indicases donde debo cambiar esas opciones, pues en propiedades de impresora no he encontrado nada.

Si alguien me puede enviar un codigo de ejemplo que le funcione independientemente de en que impresora trabaje, se lo agradecer铆a. As铆 podria descartar que la causa sea externa.

De todos modos, voy a intentar instalar varias impresoras en mi pc para ver si el listado conserva su consistencia y soporta esas peque帽as variaciones.

Un saludo y gracias por vuestra atenci贸n.
:-)
Javier,

FWH 8.04 2008
Posts: 498
Joined: Thu May 10, 2007 08:30 PM
Re: Imprimiendo con print y resolucion de pagina
Posted: Fri Jul 09, 2010 10:19 AM
jfafive

Al revisar el c贸digo que viene en tus post me ha saltado a la vista un detalle que a lo mejor tiene m谩s importancia de lo pueda parecer, y es que no especificas que font quieres untilizar en el CmSay

Code (fw): Select all Collapse
oPrn:CmSay( 10,10, "N潞 FACTURA" ,oFont) // <--- falta el font en tu c贸digo
oPrn:CmSay( 20,10, "NOMBRE",oFont ) // <--- falta el font en tu c贸digo

Es posible que ese sea el problema; pues seguramente cogera el font por defecto de cada ordenador produciendo variaciones de anchuras.

En cuanto a lo del RAW y EMF, tienes que entrar en propiedades de impresora desde el panel de control (no preferencas de impresi贸n) veras una pesta帽a (o un bot贸n) llamada "propiedades avanzadas" y en ella un bot贸n llamado "procesador de impresi贸n" all铆 podr谩s cambiar de EMF a RAW. Esto, aunque parezca una tonter铆a es posible que tenga algo que ver, pues, la misma Microsoft reconoce que el procesamiento EMF tiene un error que hace que la funci贸n SetTextCharacterExtra() no funcione.

Suete

Un saludo
Peaaaaaso de foro...

FWH 2007 - xHarbour - BCC55
Posts: 396
Joined: Tue Mar 18, 2008 09:41 PM
Re: Imprimiendo con print y resolucion de pagina
Posted: Fri Jul 09, 2010 11:08 AM
Antolin,

Gracias por tus indicaciones. He podido comprobar y ya estaba en RAW por defecto.
Por lo que esa posibilidad queda descartada.

Respecto a los fonts, bueno, estaba usando un font solo que lo definia antes de definir el PRINT.

Ahora queda as铆:

Code (fw): Select all Collapse
PRINT oPrn NAME ;
   OemToAnsi( "Listado de facturaci贸n." ) PREVIEW

DEFINE FONT oFont NAME "Arial" SIZE 15, 5 OF oPrn

PAGE

oPrn:SetPage(9)
oPrn:SetPortrait()

oPrn:CmSay( 5, 2, cNumFac,    oFont )

ENDPAGE

ENDPRINT


Como ves, uso CmSay.
He notado que las coordenadas siempre funcionan bien, es decir, independientemente de la impresora que use, si le digo que pinte un texto a 2cm, 2cm siempre lo pintar谩 en esa posici贸n.

Lo que cambia es el tama帽o o espaciado entre letras seg煤n la impresora.
Ya no se que mas puedo cambiar, parece que sea imposible hacer que el listado salga identico sea cual sea la impresora.
Pero al menos las diferencias no son muy grandes, al menos en las impresoras que he instalado para hacer pruebas.

No se si se me escapa algo.
:-)
Javier,

FWH 8.04 2008
Posts: 498
Joined: Thu May 10, 2007 08:30 PM
Re: Imprimiendo con print y resolucion de pagina
Posted: Sat Jul 10, 2010 08:10 AM
jfafive
Pens茅 que si dec铆as de imprimir a 2cm, algunas impresoras lo hacian a 1,8 y otras a 2,3 etc. Pero lo que pides es m谩s complejo, pues creo que eso tiene que ver con los drivers propios de cada impresora y con el metaarchivo intermedio. Estuve estudiano un poquito el mundo del font, y te aseguro que es muy complejo, y a mi nivel, soy incapaz de ayudarte, dado la cantidad de funciones y estructuras que intervienen.

algunos ejemplos de estructuras:

Code (fw): Select all Collapse
ABC
ABCFLOAT
AXESLIST
AXISINFO
DESIGNVECTOR
DRAWTEXTPARAMS
ENUMLOGFONT
ENUMLOGFONTEX
ENUMLOGFONTEXDV
ENUMTEXTMETRIC
EXTLOGFONT
FIXED
GCP_RESULTS
GLYPHMETRICS
GLYPHSET
KERNINGPAIR
LOGFONT
MAT2
NEWTEXTMETRIC
NEWTEXTMETRICEX
OUTLINETEXTMETRIC
PANOSE
POINTFX
POLYTEXT
RASTERIZER_STATUS
SIZE
TEXTMETRIC
TTPOLYCURVE
TTPOLYGONHEADER
WCRANGE


Con estas estructuras y algunas funciones puedes tocar hasta el 煤ltimo pixel del glipho de cada letra del font, pero 驴c贸mo? a mi me supera.

A lo mejor hay una soluci贸n tonta, pero la desconozco.

Un saludo
Peaaaaaso de foro...

FWH 2007 - xHarbour - BCC55
Posts: 396
Joined: Tue Mar 18, 2008 09:41 PM
Re: Imprimiendo con print y resolucion de pagina
Posted: Sat Jul 10, 2010 11:27 AM

Gracias por tu ayuda Antolin,

De todos modos los listados se van a volcar casi siempre a PDF directamente.
De momento trabajo con novaPDF como impresora virtual y parfece que no da ning煤n
tipo de problema.

Creo que la calidad de mi trabajo ahora mismo es aceptable.

Gracias de todos modos.
Javier.

Javier,

FWH 8.04 2008

Continue the discussion