Ejemplo n.º 1
0
cairo_surface_t* get_pdf_cairo_surface(char* filename, int n_page, int width, int height) {
    if (NULL != currentDocument) {
        free_doc();
    }
    PopplerDocument* doc;
    GError* err = NULL;

    gchar* uri = g_strconcat("file:", filename, NULL);

    doc = poppler_document_new_from_file(uri, NULL, &err);

    if (NULL != err) {
        g_print(err->message);
        return NULL;
    }

    cairo_surface_t* result = cairo_image_surface_create(CAIRO_FORMAT_RGB24, width, height);
    render_pdf_page(doc, n_page, result, width, height);

    currentDocument = (document_page_t*)g_malloc(sizeof(document_page_t));
    currentDocument->doc = doc;
    currentDocument->page = 0;
    currentDocument->page_count = poppler_document_get_n_pages(doc);
    currentDocument->surface = result;
    currentDocument->width = width;
    currentDocument->height = height;

    return result;
}
Ejemplo n.º 2
0
cairo_surface_t* get_pdf_thumbnail_cairo_surface(char* filename, int width, int height) {
    PopplerDocument* doc;
    GError* err = NULL;
    g_print("Thumbnail %s\n", filename);
    gchar* uri = g_strconcat("file:", filename, NULL);

    doc = poppler_document_new_from_file(uri, NULL, &err);

    if (NULL != err) {
        g_print(err->message);
        return NULL;
    }
    PopplerPage* page = poppler_document_get_page(doc, 0);
    cairo_surface_t* result = poppler_page_get_thumbnail(page);
    if (NULL == result) {
        result = cairo_image_surface_create(CAIRO_FORMAT_RGB24, width, height);
        render_pdf_page(doc, 0, result, width, height);
    }
    g_object_unref(doc);
    g_object_unref(page);
    return result;
}
Ejemplo n.º 3
0
static void render_doc_page(document_page_t* doc_page) {
    render_pdf_page(doc_page->doc, doc_page->page, doc_page->surface, doc_page->width, doc_page->height);
    doc_page->on_render(doc_page->surface, doc_page->width, doc_page->height);
    get_page_label_text(doc_page->page_label, doc_page);
}
Ejemplo n.º 4
0
int render_page(int pg, Window win, bool fixed) {
	render_pdf_page(0, pg, win, fixed);
	//notes_draw(pg);
	return 0;
}