Re: imprimir multiples paginas con gtk.PrintOperation()
- From: Claudio Saavedra <csaavedra alumnos utalca cl>
- To: avaldes utalca cl
- Cc: gnome-cl-list gnome org
- Subject: Re: imprimir multiples paginas con gtk.PrintOperation()
- Date: Thu, 31 Jan 2008 10:10:05 -0300
El jue, 31-01-2008 a las 09:38 -0300, Alejandro Valdes Jimenez escribió:
> claro.. ese es un caso en el que conoces exactamente lo que
> necesitaras
> para imprimir las "imagenes", ¿pero que pasa en el caso de texto?..
> por
> ejemplo al imprmir un reporte que se genera mediante el filtro de
> cierta
> información, en este caso no sabes cuantas páginas necesitaras por que
> el resultado es variable, además debes considerar el tamaño de las
> fuentes y todo eso. ¿como se en este caso la cantidad de páginas
> necesarias?
Usando matemáticas. Sea l la cantidad de líneas de texto que quieres
imprimir, h la altura de una linea de texto, y p la altura imprimible de
cada página, entonces
n = l*h/p
te da la cantidad de páginas que necesitas.
l, asumo que lo puedes calcular fácilmente a partir del texto que
quieres imprimir. En C lo puedes hacer con:
p = str;
l = 0;
while (*p)
if (*p++ == '\n')
l++;
h, lo defines tu mismo y luego utilizas esa misma altura para el tamaño
de las fuentes del texto que vas a utilizar. Eso lo puedes hacer en el
callback para el dibujado de cada página usando pango:
PangoLayout *layout = gtk_print_context_create_pango_layout (context);
/* Elige una fuente, en este caso "mono" */
PangoFontDescription *d = pango_font_description_from_string ("mono");
/* Define el tamaño de la fuente */
pango_font_description_set_size (d, font_size * PANGO_SCALE);
/* Define la fuente a usar en el layout del contexto de impresión */
pango_layout_set_font_description (layout, d);
/* Se bueno, y libera la descripción de la fuente */
pango_font_description_free (d);
/* escribir todo el texto de la página... */
...
/* Dereferencia tu copia del layout */
g_object_unref (layout);
p, lo puedes obtener con gtk_print_context_get_height ().
¿Fácil, no? :-)
Claudio
--
Claudio Saavedra <csaavedra alumnos utalca cl>
[
Date Prev][Date Next] [
Thread Prev][Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]