- pixbuf = gdk_pixbuf_new(GDK_COLORSPACE_RGB,
- FALSE, 8, scaled_width, scaled_height);
- poppler_page_render_to_pixbuf(
+
+ if (ui.poppler_force_cairo) { // poppler -> cairo -> pixmap -> pixbuf
+ pixmap = gdk_pixmap_new(GTK_WIDGET(canvas)->window, scaled_width, scaled_height, -1);
+ cr = gdk_cairo_create(pixmap);
+ cairo_set_source_rgb(cr, 1., 1., 1.);
+ cairo_paint(cr);
+ cairo_scale(cr, scaled_width/width, scaled_height/height);
+ poppler_page_render(pdfpage, cr);
+ cairo_destroy(cr);
+ pixbuf = gdk_pixbuf_get_from_drawable(NULL, GDK_DRAWABLE(pixmap),
+ NULL, 0, 0, 0, 0, scaled_width, scaled_height);
+ g_object_unref(pixmap);
+ }
+ else { // directly poppler -> pixbuf: faster, but bitmap font bug
+ pixbuf = gdk_pixbuf_new(GDK_COLORSPACE_RGB,
+ FALSE, 8, scaled_width, scaled_height);
+ wrapper_poppler_page_render_to_pixbuf(