domingo, 23 de septiembre de 2007

Forms10g: clientDPI

Se me ha dado el caso de una aplicación desarrollada en Forms10g sobre plataforma Windows, que al desplegarse en algún sistema Linux se veían las pantallas demasiado pequeñas.

Dependiendo de la aplicación, puede ser que parezca que es problema de las fuentes, en mi caso la aplicación al arrancar se maximizaba y ocupaba toda la pantalla y eso hacía que pareciese que el problema fuera con las fuentes.

El problema se encuentra en los puntos por pulgada que usa la máquina virtual de Java. La configuración de los puntos por pulgada se puede variar añadiendo el parámetro clientDPI en el archivo de configuración formsweb.cfg en la sección de nuestra aplicación, por ejemplo:

[prueba]
form=prueba.fmx
...
clientDPI=96

Para que el applet tenga en cuenta este parámetro tenemos que modificar los archivos webutiljpi.htm, webutiljini.htm, webutilbase.htm, basejpi.htm, basejini.htm y base.htm. En realidad solo sería necesario modificar los que terminan en jpi (Java plug-in) ya que en Linux no se puede instalar el Jinitiator por lo que nunca podríamos usar los que terminan en jini (Jinitiator), pero podría ser que en ordenadores Windows con Jinitiator quisiesemos alterar este valor, por lo que modificarlos todos no está más.

La modificación que hay que hacer es la siguiente (para el webutiljpi.htm):

Después de la línea: <param name="WebUtilMaxTransferSize" value="%WebUtilMaxTransferSize%">

Añadir:

<param name="clientDPI" value="%clientDPI%">

Después de la línea: WebUtilMaxTransferSize="%WebUtilMaxTransferSize%"

Añadir la línea:

clientDPI="%clientDPI%"

Ejemplo del formulario de prueba a 96 dpi:


Ejemplo del formulario de prueba a 50 dpi:



Para hacer pruebas para encontrar el valor que mejor se nos ajuste, no hace falta estar modificando el archivo de configuración formsweb.cfg, podemos alterar el valor añadiendo el parámetro clientDPI a la url, por ejemplo: http://equipo:8889/forms/frmservlet?config=pru&form=test&clientDPI=50

Para más detalles consultar la nota 1071248.6 en el metalink.