示例#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;
}
示例#2
0
文件: testapp.c 项目: oier/couchstore
int docset_check(Db* db, DocInfo* info, void *ctx)
{
    int errcode = 0;
    docset* ds = ctx;
    counterset* ctr = &ds->counters;
    ctr->totaldocs++;
    if(info->deleted)
        ctr->deleted++;
    EQUAL_INFO_BUF(id);
    EQUAL_INFO_BUF(rev_meta);
    Doc* doc;
    try(open_doc_with_docinfo(db, info, &doc, DECOMPRESS_DOC_BODIES));
    if(testdocset.docs[testdocset.pos].data.size > 0)
    {
        assert(doc);
        EQUAL_DOC_BUF(data);
        EQUAL_DOC_BUF(id);
    }
    testdocset.pos++;
    free_doc(doc);
cleanup:
    assert(errcode == 0);
    return 0;
}

void assert_id_rv(char* buf, uint64_t deleted, uint64_t notdeleted, uint64_t size)
{
    uint64_t r_deleted, r_notdeleted, r_size;
    int pos = 0;
    assert(ei_decode_tuple_header(buf, &pos, NULL) == 0);
    ei_decode_uint64(buf, &pos, &r_notdeleted);
    ei_decode_uint64(buf, &pos, &r_deleted);
    ei_decode_uint64(buf, &pos, &r_size);
    //fprintf(stderr,"notdeleted, deleted, size = %llu, %llu, %llu\n", notdeleted, deleted, size);
    //fprintf(stderr,"notdeleted, deleted, size = %llu, %llu, %llu\n", r_notdeleted, r_deleted, r_size);
    assert(notdeleted == r_notdeleted);
    assert(deleted == r_deleted);
    assert(size == r_size);

}