我有一个显示图像的应用程序。 我希望能够打印图片,但我无法想象如何将图像发送到打印机。 我遇到了gtk.PrintOperation,但我什么都没看到要告诉我要打印的图像文件(所以我有一个空白页)。
有谁知道如何设置数据以使用pygtk和gtk.PrintOperation进行打印?
答案 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()
答案 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)
再次感谢。