[poppler] 3 commits - glib/demo glib/poppler-document.cc glib/poppler-document.h glib/reference

Carlos Garcia Campos carlosgc at kemper.freedesktop.org
Sun May 13 11:14:16 PDT 2012


 glib/demo/main.c                    |    9 +-----
 glib/poppler-document.cc            |   47 ++++++++++++++++++++++++++++++++++++
 glib/poppler-document.h             |    4 +++
 glib/reference/poppler-sections.txt |    1 
 4 files changed, 54 insertions(+), 7 deletions(-)

New commits:
commit ff2c251dbaef9b964af48f51ebb517626ac3145c
Author: Carlos Garcia Campos <carlosgc at gnome.org>
Date:   Sun May 13 20:13:32 2012 +0200

    glib-demo: Use poppler_document_new_from_gfile to load the given uri

diff --git a/glib/demo/main.c b/glib/demo/main.c
index f52c5b8..d8ed142 100644
--- a/glib/demo/main.c
+++ b/glib/demo/main.c
@@ -293,7 +293,6 @@ gint main (gint argc, gchar **argv)
 	GtkWidget        *treeview;
 	GtkTreeSelection *selection;
 	GFile            *file;
-	gchar            *uri;
 	GTimer           *timer;
 	GError           *error = NULL;
 	GtkAccelGroup    *gtk_accel;
@@ -313,10 +312,9 @@ gint main (gint argc, gchar **argv)
 	gtk_init (&argc, &argv);
 
 	file = g_file_new_for_commandline_arg (argv[1]);
-	uri = g_file_get_uri (file);
 
 	timer = g_timer_new ();
-	document = poppler_document_new_from_file (uri, NULL, &error);
+	document = poppler_document_new_from_gfile (file, NULL, NULL, &error);
 	g_timer_stop (timer);
 	if (error) {
 		while (g_error_matches (error, POPPLER_ERROR, POPPLER_ERROR_ENCRYPTED)) {
@@ -327,7 +325,6 @@ gint main (gint argc, gchar **argv)
 			if (gtk_dialog_run (dialog) != GTK_RESPONSE_OK) {
 				g_print ("Error: no password provided\n");
 				g_object_unref (file);
-				g_free (uri);
 
 				return 1;
 			}
@@ -336,7 +333,7 @@ gint main (gint argc, gchar **argv)
 			password = g_object_get_data (G_OBJECT (dialog), "pgd-password");
 
 			g_timer_start (timer);
-			document = poppler_document_new_from_file (uri, password, &error);
+			document = poppler_document_new_from_gfile (file, password, NULL, &error);
 			g_timer_stop (timer);
 
 			gtk_widget_destroy (GTK_WIDGET (dialog));
@@ -346,14 +343,12 @@ gint main (gint argc, gchar **argv)
 			g_print ("Error: %s\n", error->message);
 			g_error_free (error);
 			g_object_unref (file);
-			g_free (uri);
 
 			return 1;
 		}
 	}
 
 	g_object_unref (file);
-	g_free (uri);
 
 	g_print ("Document successfully loaded in %.4f seconds\n",
 		 g_timer_elapsed (timer, NULL));
commit a7629331ab4ba5b256213af1f1b2954a49953c34
Author: Carlos Garcia Campos <carlosgc at gnome.org>
Date:   Sun May 13 20:13:03 2012 +0200

    glib: Add poppler_document_new_from_gfile

diff --git a/glib/poppler-document.cc b/glib/poppler-document.cc
index cba440b..d404fcd 100644
--- a/glib/poppler-document.cc
+++ b/glib/poppler-document.cc
@@ -312,6 +312,52 @@ poppler_document_new_from_stream (GInputStream *stream,
   return _poppler_document_new_from_pdfdoc (newDoc, error);
 }
 
+/**
+ * poppler_document_new_from_gfile:
+ * @file: a #GFile to load
+ * @password: (allow-none): password to unlock the file with, or %NULL
+ * @cancellable: (allow-none): a #GCancellable, or %NULL
+ * @error: (allow-none): Return location for an error, or %NULL
+ *
+ * Creates a new #PopplerDocument reading the PDF contents from @file.
+ * Possible errors include those in the #POPPLER_ERROR and #G_FILE_ERROR
+ * domains.
+ *
+ * Returns: (transfer full): a new #PopplerDocument, or %NULL
+ *
+ * Since: 0.22
+ */
+PopplerDocument *
+poppler_document_new_from_gfile (GFile        *file,
+                                 const char   *password,
+                                 GCancellable *cancellable,
+                                 GError      **error)
+{
+  PopplerDocument *document;
+  GFileInputStream *stream;
+
+  g_return_val_if_fail(G_IS_FILE(file), NULL);
+
+  if (g_file_is_native(file)) {
+    gchar *uri;
+
+    uri = g_file_get_uri(file);
+    document = poppler_document_new_from_file(uri, password, error);
+    g_free(uri);
+
+    return document;
+  }
+
+  stream = g_file_read(file, cancellable, error);
+  if (!stream)
+    return NULL;
+
+  document = poppler_document_new_from_stream(G_INPUT_STREAM(stream), -1, password, cancellable, error);
+  g_object_unref(stream);
+
+  return document;
+}
+
 static gboolean
 handle_save_error (int      err_code,
 		   GError **error)
diff --git a/glib/poppler-document.h b/glib/poppler-document.h
index 7ac6672..a34e88c 100644
--- a/glib/poppler-document.h
+++ b/glib/poppler-document.h
@@ -178,6 +178,10 @@ PopplerDocument   *poppler_document_new_from_stream        (GInputStream    *str
                                                             const char      *password,
                                                             GCancellable    *cancellable,
                                                             GError         **error);
+PopplerDocument   *poppler_document_new_from_gfile         (GFile           *file,
+                                                            const char      *password,
+                                                            GCancellable    *cancellable,
+                                                            GError         **error);
 gboolean           poppler_document_save                   (PopplerDocument *document,
 							    const char      *uri,
 							    GError         **error);
diff --git a/glib/reference/poppler-sections.txt b/glib/reference/poppler-sections.txt
index 8573051..6efef6a 100644
--- a/glib/reference/poppler-sections.txt
+++ b/glib/reference/poppler-sections.txt
@@ -116,6 +116,7 @@ PopplerPermissions
 poppler_document_new_from_file
 poppler_document_new_from_data
 poppler_document_new_from_stream
+poppler_document_new_from_gfile
 poppler_document_save
 poppler_document_save_a_copy
 poppler_document_get_id
commit 95277b1f481e274ab0ce22ffb44b40437bffa3c8
Author: Carlos Garcia Campos <carlosgc at gnome.org>
Date:   Sun May 13 20:11:12 2012 +0200

    glib Add missing cancellable param in poppler_document_new_from_stream doc

diff --git a/glib/poppler-document.cc b/glib/poppler-document.cc
index 98500b8..cba440b 100644
--- a/glib/poppler-document.cc
+++ b/glib/poppler-document.cc
@@ -259,6 +259,7 @@ stream_is_memory_buffer_or_local_file (GInputStream *stream)
  * @stream: a #GInputStream to read from
  * @length: the stream length, or -1 if not known
  * @password: (allow-none): password to unlock the file with, or %NULL
+ * @cancellable: (allow-none): a #GCancellable, or %NULL
  * @error: (allow-none): Return location for an error, or %NULL
  *
  * Creates a new #PopplerDocument reading the PDF contents from @stream.


More information about the poppler mailing list