Re: Windows printing problem



Hi,

I've refined the code a bit.

This I can print to PDF using pdfFactory Pro, and it is displayed in the
pdfFactory Pro preview window properly, but Windows always errors out on
the actual printing.

Printing direct to the printer (HP laserjet) also causes windows to
report an error trying to print.

(The printer works fine for every other app on Windows and Ubuntu).

Draw page code below.

Regards,
James.

static void draw_page (GtkPrintOperation *operation,
                GtkPrintContext   *context,
                gint               page_nr,
                gpointer           user_data)
{
        g_print("Draw page %d\n", page_nr);


        int i;
        char text[256];
        int len;
        PangoLayout *layout;
        PangoFontDescription *desc;
        GError *gerror = NULL;
        GdkPixbuf *pb;

        cairo_t *cr;
        gdouble width, height;

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

        pb = gdk_pixbuf_new_from_file("./Logo.jpg", &gerror);
        if(!pb) {
                eprintf("error message: %s\n", gerror->message);
                return;
        }

        int pb_width = gdk_pixbuf_get_width (pb);
        int pb_height = gdk_pixbuf_get_height (pb);

        cairo_operator_t op = cairo_get_operator(cr);
        cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE);
        gdk_cairo_set_source_pixbuf(cr, pb, 0.0, 0.0);
        cairo_paint (cr);
        cairo_set_operator(cr, op);

        cairo_set_source_rgb (cr, 0.0, 0.0, 0.0);

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

        sprintf(text, "Title details");

        cairo_move_to(cr, pb_width+10, 0);
        pango_layout_set_text (layout, text, -1);
        pango_cairo_update_layout (cr, layout);
        pango_cairo_show_layout (cr, layout);

        pango_layout_set_text (layout, text, -1);

        pango_font_description_free (desc);
        g_object_unref (layout);

        for (i = 0; i < 6; i++) {
                layout = gtk_print_context_create_pango_layout (context);

                len = 0;
                len += sprintf(&text[len], "Stuff\n");
                len += sprintf(&text[len], "More stuff\n");

                pango_layout_set_text (layout, text, -1);

                desc = pango_font_description_from_string ("sans 9");
                pango_layout_set_font_description (layout, desc);
                pango_font_description_free (desc);
                pango_cairo_update_layout (cr, layout);

                cairo_move_to(cr, (5 - i) * (width - GAP_X_AXIS) / 6, height - 80);
                pango_cairo_show_layout (cr, layout);

                g_object_unref (layout);
        }

        cairo_translate(cr, 0, pb_height);

        if (page_nr == 0) {
#if 1
                //Various text and line drawing 
                //with pango and cairo functions.
#endif
        } else if (page_nr == 1) {
#if 1
                //Various text and line drawing 
                //with pango and cairo functions.
#endif
        }
}





[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]