+ PdfDocument *pdf_document = PDF_DOCUMENT (document);
+ PDFDoc *newDoc;
+ int err;
+ char *filename;
+ GString *filename_g;
+
+ if (!globalParams) {
+ globalParams = new GlobalParams("/etc/xpdfrc");
+ globalParams->setupBaseFonts(NULL);
+ }
+
+ filename = g_filename_from_uri (uri, NULL, error);
+ if (!filename)
+ return FALSE;
+
+ filename_g = new GString (filename);
+ g_free (filename);
+
+ // open the PDF file
+ newDoc = new PDFDoc(filename_g, 0, 0);
+
+ delete filename_g;
+
+ if (!newDoc->isOk()) {
+ err = newDoc->getErrorCode();
+ delete newDoc;
+
+ /* FIXME: Add a real error enum to EvDocument */
+ g_set_error (error, G_FILE_ERROR,
+ G_FILE_ERROR_FAILED,
+ "Failed to load document (error %d) '%s'\n",
+ err,
+ uri);
+
+ return FALSE;
+ }
+
+ if (pdf_document->doc)
+ delete pdf_document->doc;
+ pdf_document->doc = newDoc;
+
+ if (pdf_document->out) {
+ pdf_document->out->startDoc(pdf_document->doc->getXRef());
+ pdf_document->doc->displayPage (pdf_document->out, 1, 72, 72, 0, gTrue, gTrue);
+ }
+