//gcc `pkg-config --cflags --libs poppler-glib` pdf.cpp #include #include #include #include #include int main() { GooString* fname = new GooString("foo.pdf"); PDFDoc* doc = new PDFDoc(fname); CairoOutputDev* dev = new CairoOutputDev(); dev->startDoc(doc->getXRef()); cairo_surface_t* surface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, 100, 100); cairo_t* cr = cairo_create(surface); dev->setCairo(cr); // FIXME: Crashes here: doc->displayPage(dev, 1, 72.0, 72.0, 0, gFalse, gTrue, gTrue); dev->setCairo(0); cairo_destroy(cr); return cairo_surface_status(surface); } /* Program received signal SIGSEGV, Segmentation fault. [Switching to Thread -1488202048 (LWP 18041)] 0xa7605550 in pthread_mutex_lock () from /lib/tls/i686/cmov/libpthread.so.0 (gdb) bt #0 0xa7605550 in pthread_mutex_lock () from /lib/tls/i686/cmov/libpthread.so.0 #1 0xa7a7d546 in pthread_mutex_lock () from /lib/tls/i686/cmov/libc.so.6 #2 0xa78a1a7b in GlobalParams::getPrintCommands () from /usr/lib/libpoppler.so.2 #3 0xa78c3fd2 in PDFDoc::displayPage () from /usr/lib/libpoppler.so.2 #4 0x08048bf6 in main () */