require 'gtk2' class Pop < Gtk::PrintOperation def initialize super() signal_connect('begin-print'){|me,context| me.set_n_pages(2) } signal_connect('draw-page'){|me,context,page_number| cr = context.cairo_context h=context.page_setup.get_page_width(Gtk::PaperSize::UNIT_POINTS) w=context.page_setup.get_page_height(Gtk::PaperSize::UNIT_POINTS) cr.move_to(0,0);cr.rectangle(0,0,h,w) pl=cr.create_pango_layout;pl.set_text("page #{context.page_setup.orientation}");cr.move_to(20,20);cr.show_pango_layout(pl) if page_number == 0 cr.set_source_pixbuf(Gtk::Image.new("im.png").pixbuf.scale(60,60),30,30) cr.paint end pl=cr.create_pango_layout;pl.set_text("#{context.page_setup.paper_size.name}");cr.move_to(20,120);cr.show_pango_layout(pl) cr.move_to(0,0);cr.line_to(h,w) cr.stroke } end end pop1=Pop.new() pop1.run(Gtk::PrintOperation::Action::PRINT_DIALOG)