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; }
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); }