Here's an example, I hope you find it useful #!/usr/bin/env python import os import sys from gi.repository import GLib, Gtk, Poppler class PrintingApp: def __init__(self, file_uri): self.operation = Gtk.PrintOperation() self.operation.connect('begin-print', self.begin_print, None) self.operation.connect('draw-page', self.draw_page, None) self.doc = Poppler.Document.new_from_file(file_uri) def begin_print(self, operation, print_ctx, print_data): operation.set_n_pages(self.doc.get_n_pages()) def draw_page(self, operation, print_ctx, page_num,...