信号

GtkPrintOperation::draw-page

声明

void
draw_page (
  GtkPrintOperation* self,
  GtkPrintContext* context,
  gint page_nr,
  gpointer user_data
)

描述 [src]

在每一页打印时发出。

信号处理程序必须在从 context 使用 gtk_print_context_get_cairo_context() 获得的 cairo 上下文中渲染 page_nr 的页面。

static void
draw_page (GtkPrintOperation *operation,
           GtkPrintContext   *context,
           int                page_nr,
           gpointer           user_data)
{
  cairo_t *cr;
  PangoLayout *layout;
  double width, text_height;
  int layout_height;
  PangoFontDescription *desc;

  cr = gtk_print_context_get_cairo_context (context);
  width = gtk_print_context_get_width (context);

  cairo_rectangle (cr, 0, 0, width, HEADER_HEIGHT);

  cairo_set_source_rgb (cr, 0.8, 0.8, 0.8);
  cairo_fill (cr);

  layout = gtk_print_context_create_pango_layout (context);

  desc = pango_font_description_from_string ("sans 14");
  pango_layout_set_font_description (layout, desc);
  pango_font_description_free (desc);

  pango_layout_set_text (layout, "some text", -1);
  pango_layout_set_width (layout, width * PANGO_SCALE);
  pango_layout_set_alignment (layout, PANGO_ALIGN_CENTER);

  pango_layout_get_size (layout, NULL, &layout_height);
  text_height = (double)layout_height / PANGO_SCALE;

  cairo_move_to (cr, width / 2,  (HEADER_HEIGHT - text_height) / 2);
  pango_cairo_show_layout (cr, layout);

  g_object_unref (layout);
}

在开始打印操作之前,使用 gtk_print_operation_set_use_full_page()gtk_print_operation_set_unit() 设置 cairo 上下文的转换以满足你的需求。

默认处理程序

默认处理程序在通过 g_signal_connect() 添加的处理程序之后调用。

参数

context

类型: GtkPrintContext

当前操作的 GtkPrintContext

数据由函数的调用者拥有。
page_nr

类型: gint

当前打印页的编号(基于 0)。