Created
April 20, 2013 05:47
-
-
Save khajavi/5424907 to your computer and use it in GitHub Desktop.
pdf viewer by poppler library
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <stdio.h> | |
#include <stdlib.h> | |
#include <glib.h> | |
#include <gtk/gtk.h> | |
#include <gdk/gdk.h> | |
#include <cairo.h> | |
#include <poppler.h> | |
/* gcc `pkg-config --cflags --libs gtk+-2.0 poppler-glib` -o pdfviewer pdfviewer.c */ | |
static PopplerDocument* doc; | |
static PopplerPage* page; | |
static void | |
on_destroy(GtkWidget* w, gpointer data) { | |
gtk_main_quit(); | |
} | |
static gboolean | |
on_expose(GtkWidget* w, GdkEventExpose* e, gpointer data) { | |
cairo_t* cr; | |
cr = gdk_cairo_create(w->window); | |
poppler_page_render(page, cr); | |
cairo_destroy(cr); | |
return FALSE; | |
} | |
int main(int argc, char* argv[]) { | |
GtkWidget* win; | |
GError* err = NULL; | |
if (argc != 2) { | |
printf("Useage: pdfviewer <uri>\n"); | |
return 1; | |
} | |
gtk_init(&argc, &argv); | |
doc = poppler_document_new_from_file(argv[1], NULL, &err); | |
if (!doc) { | |
printf("%s\n", err->message); | |
g_object_unref(err); | |
return 2; | |
} | |
page = poppler_document_get_page(doc, 0); | |
if(!page) { | |
printf("Could not open first page of document\n"); | |
g_object_unref(doc); | |
return 3; | |
} | |
int pages = poppler_document_get_n_pages(doc); | |
printf("There are %d pages in this pdf.\n", pages); | |
win = gtk_window_new(GTK_WINDOW_TOPLEVEL); | |
g_signal_connect(G_OBJECT(win), "destroy", G_CALLBACK(on_destroy), NULL); | |
g_signal_connect(G_OBJECT(win), "expose-event", G_CALLBACK(on_expose), NULL); | |
gtk_widget_set_app_paintable(win, TRUE); | |
gtk_widget_show_all(win); | |
gtk_main(); | |
g_object_unref(page); | |
g_object_unref(doc); | |
return 0; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment