Etiqueta

10 junio 2015

Como programar la impresión de rangos de páginas

Se debe tener en cuenta que (cuando no se especifican rangos de páginas) el administrador de impresión, construye previamente todas las páginas del informe, quedando temporalmente almacenadas en el disco. Sólo entonces son enviadas al dispositivo impresor. De hecho la ejecución del método “$ejectpage” no tiene efecto alguno hasta haber concluido los trabajos previos. Éste comportamiento es ligeramente diferente, cuando no se especifican rangos de páginas, en estos casos, el administrador de impresión expulsará las páginas tan pronto como se completan, excepto si la eyección automática está desactivada.

Algunos dispositivos (según el destino elegido para el informe) no soportan rangos de páginas. De hecho, (aparte de cualquier impresora) sólo los dispositivos de “pantalla” y ”vista previa” soportan actualmente rangos de páginas. Cómo siempre los rangos de páginas puede ser especificadas desde el diálogo de configuración del trabajo de impresión, pero en éste artículo lo que vamos a ver es, cómo hacerlo desde programación.

 

El componente “screen report field”


Éste componente contempla el método “$redirect”, el cual es usado para re-enviar el informe hacia otro dispositivo y la propiedad “$root.$prefs.$pages” puede ser utilizada para especificar el rango de páginas a enviar, a continuación mostramos un ejemplo:

Calculate $cdevice as kDevPrinter
Calculate $prefs.$pages as "20-1"
Do $cobj.$redirect(kFalse)
Calculate $prefs.$pages as ""

 

Rangos posibles


Los rangos de página que pueden ser especificados en “$root.$prefs.$pages” o en “$cinst.$pages”, si queremos que afecte sólo al informe en uso. Son los siguientes:
  • “1,3,5,2,4”
  • Imprimirá las páginas especificadas y en el orden en que se indican.
  • "1-10,30-35"
  • Imprimirá páginas de la 1 a la 10 y después las páginas de la 30 a la 35.
  • "O1-10, E1-10"
  • Imprimirá primero todas las páginas impares que se encuentren entre la 1 y la 10, después todas las páginas en el rango de 1 a 10.
  • "30-1"
  • Imprimirá las páginas de la 1 a la 30, pero en orden inverso.
  • "C"
  • Imprimirá la página en ese momento visible  (obviamente sólo utilizable junto con el método “$redirect” del componente “screen report field”).

Por supuesto podemos realizar cualesquiera combinaciones, basándonos en las reglas anteriores, si una página aparece más de una vez se imprimirá también más de una vez.

No hay comentarios: