miércoles, 27 de noviembre de 2013

Imprimir un string en varias lineas de un reporte PDF

Bueno no se si les haya pasado, pero en mi caso me ocurrió que tenía un string o varchar o como le llamen de un tamaño de 500 caracteres, y que al momento de enviarlo a imprimir a un reporte PDF se salía de los márgenes del mismo y no como uno esperaba que se recorra automáticamente hacia abajo. Así que a buscar la manera de solucionar el inconveniente. (Me olvidaba, aclaro estaba trabajando en ambiente Web para el Generador Java)

Es aquí cuando me enteré de la función GXGetMLi, y en base a un poco de programación se consiguió que se imprima todo el string hacia abajo sin que salga de los márgenes del reporte PDF.

La función GXGetMLi recibe el string, el número de línea y el número de caracteres a imprimir por esa línea y devuelve el resto del string especificado por los parámetros mencionados. Todo esto más un contador y un for y una que otra validación con un if y listo.

For &contadorlinea = 1 to 5
    &lineaImprimir = GXGetMLi(&Descripcion, &contadorlinea, 100)
    if NOT &lineaImprimir.IsEmpty() AND &contadorlinea = 1
        print LineaDescripcion
    else
        if NOT &lineaImprimir.IsEmpty()
            print LineaDescripcion1
        endif
    endif
Endfor

A tomar en consideración:
  1. No es lo mismo imprimir minúsculas que Mayúsculas, por lo que recomiendo tomar en cuenta la impresión como si se lo estuviera haciendo solo con mayúsculas para no llevarse sorpresas cuando el usuario ingrese solo este tipo de caracteres.
  2. Tomar en cuenta el número de caracteres a imprimir, porque puede ser el caso de tener varias descripciones a imprimir y en forma de columna. Por lo que se debe tomar en cuenta el ancho y por ende el número de caracteres que calzarán en ese ancho de columna.
  3. Si se dieron cuenta el número de repeticiones del for por el número de caracteres enviado a la función explicada es igual a 500 que es el tamaño del string.
  4. Y me olvidaba si tienen saltos de línea la función hará los saltos de línea correspondiente así que esto puede alterar el número de líneas a imprimir por lo que al menos yo elimino los saltos de lìnea del string ( para saber cómo eliminar saltos de línea de un string click aquí ).
Nota:

Para .Net me dijeron, pero ustedes pueden comprobarlo, que no hace falta esta codificación sino simplemente configurar en las propiedades de la variable a imprimir en la pestaña de Layout aquella que dice Alignment y colocar MiddleJustify. Si no les funciona ya saben que hacer.

1 comentario:

  1. SOS UN GENIO!
    Estamos desarrollando en .NET y lo solucionamos con el Middle Justify!
    Muchas gracias!
    Recomendable 100%!

    ResponderEliminar