### Signal

# Gtk PrintOperation::draw-page

#### Declaration

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

#### Description [src]

Emitted for every page that is printed.

The signal handler must render the `page_nr`‘s page onto the cairo context obtained from `context` using `gtk_print_context_get_cairo_context()`.

    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);
    }

Use `gtk_print_operation_set_use_full_page()` and `gtk_print_operation_set_unit()` before starting the print operation to set up the transformation of the cairo context according to your needs.

Default handler: The default handler is called after the handlers added via `g_signal_connect()`.

#### Parameters

`context`

  Type: `GtkPrintContext`

  The `GtkPrintContext` for the current operation.

  The data is owned by the caller of the function.

`page_nr`

  Type: `gint`

  The number of the currently printed page (0-based).