如何用pygtk打印图像

时间:2015-06-30 17:01:10

标签: python printing pygtk

我有一个显示图像的应用程序。 我希望能够打印图片,但我无法想象如何将图像发送到打印机。 我遇到了gtk.PrintOperation,但我什么都没看到要告诉我要打印的图像文件(所以我有一个空白页)。

有谁知道如何设置数据以使用pygtk和gtk.PrintOperation进行打印?

2 个答案:

答案 0 :(得分:2)

gtk.PrintOperation页面中绘画时,您必须将"draw-page"连接到获取PrintOperation对象的函数,context作为参数,您可以通过 cairo 和 pango 库和page_number作为第三个参数,并通过此函数绘制页面,类似如下:

def print_page(print_dialog, context, n):
    ctx = context.get_cairo_context()
    img = cairo.ImageSurface.create_from_png("an-image.png")
    cr.set_source_surface(img, 20, 20)
    cr.paint()

print_dialog = gtk.PrintOperation()
print_dialog.set_default_page_setup(self.print_page_setup)
print_dialog.set_unit(gtk.Unit.POINTS)
print_dialog.set_n_pages(1)
print_dialog.set_export_filename("/path/to/export/file.pdf")
print_dialog.connect("draw-page", print_page)

win = gtk.Window()
win.connect('clicked', lambda widget: print_dialog.run())
win.set_size_request(200, 200)
win.show_all()
gtk.main()

Read more...

答案 1 :(得分:1)

非常感谢提示!
我没有 PNG 图像,所以我不得不调整代码:

def print_page(self,print_dialog, context, n):
    ctx = context.get_cairo_context()
    gdkcr = gtk.gdk.CairoContext(ctx)
    gdkcr.set_source_pixbuf(self.getPixbuf(), 0,0)
    gdkcr.paint ()

def print_image(self):
    print_dialog = gtk.PrintOperation()
    print_dialog.set_n_pages(1)
    print_dialog.connect("draw-page", self.print_page)

再次感谢。