imprimir multiples paginas con gtk.PrintOperation()



Hola estimados...

Estoy parado en la impresión de un documento con varias páginas. Al ver ejemplos
de gtk.PrintOperation() usan por lo general dos señales para el manejo de la
impresión.

begin_print, donde en la función definida para esta señal se define la cantidad
de páginas del documento, y

draw_page, la cual es emitida por cada página del documento y es en donde se
imprime el documento propiamente tal.

el orden de la señales al imprimir es begin_print y luego draw_page tantas veces
como número de páginas se hayan definido.

el problema es que debo saber apriori la cantidad de páginas que tendrá el
documento antes de comenzar a imprimir (draw_page). ¿cómo calcular ese número?

un ejemplo, la función show_dialog_print() es llamada cuando se quiere imprimir
un documento:

...........

def show_dialog_print(admin):
        settings = gtk.PrintSettings()

        op = gtk.PrintOperation()
        op.set_print_settings(settings)
        op.set_unit(gtk.UNIT_MM)
        op.set_show_progress(True)

        op.connect("begin_print",begin_print,admin)
        op.connect("draw_page",draw_page,admin)

        response = op.run(gtk.PRINT_OPERATION_ACTION_PRINT_DIALOG)

        if response == gtk.PRINT_OPERATION_RESULT_APPLY:
                settings = op.get_print_settings()


def begin_print(operation,context,admin):
        # seteado en duro 5 paginas, aqui debo calcular la cantidad de paginas
del documento
        operation.set_n_pages(5)


def draw_page(operation,context,page,admin):
        # esta funcion es llamada tantas veces el numero definido en begin_print

        cairo_context = context.get_cairo_context()
        page_setup = context.get_page_setup()
        .....
         print_string(cairo_context,....)

..............

Saludos y gracias.

-- 
Alejandro Valdés Jiménez.
Ingeniero en Redes y Sistemas.
Area Plataforma
DTI - Dirección de Tecnologías de Información
Universidad de Talca.
Talca - Chile.
Teléfono: (71) 200408  FAX: (71) 200409

-------------------------------------------------
Este mensaje fue enviado por: http://webmail.utalca.cl


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]