/* * To compile: * cc test.c -o test $(pkg-config --libs --cflags gtk+-3.0 glib-2.0 cairo gio-2.0 poppler-glib) */ #include #include #include #include #include #include PopplerPage *page; gboolean draw_cb(GtkWidget *widget, cairo_t *cr, gpointer user_data) { cairo_set_source_rgb(cr, 1., 1., 1.); cairo_paint(cr); poppler_page_render(page, cr); } int main(int argc, char *argv[]) { gtk_init(&argc, &argv); // Open a file, read as stream to poppler GFile *arg = g_file_new_for_commandline_arg("test.pdf"); GInputStream *input = G_INPUT_STREAM(g_file_read(arg, NULL, NULL)); PopplerDocument *document = poppler_document_new_from_stream(input, -1, NULL, NULL, NULL); //g_object_unref(input); //g_object_unref(arg); // Extract a certain page int pageno = 0; page = poppler_document_get_page(document, pageno); // Create a window that displays said page GtkWidget *main = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_widget_set_size_request(main, 800, 1000); g_signal_connect(main, "draw", G_CALLBACK(draw_cb), NULL); g_signal_connect(main, "destroy", G_CALLBACK(gtk_main_quit), NULL); gtk_widget_show_all(main); gtk_main(); }