Re: Windows printing problem
- From: James <jamessteward optusnet com au>
- To: gtk-app-devel-list gnome org
- Subject: Re: Windows printing problem
- Date: Fri, 20 Aug 2010 15:55:57 +1000
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]