diff --git a/glib/poppler-annot.cc b/glib/poppler-annot.cc
index 29051f9..9f42864 100644
--- a/glib/poppler-annot.cc
+++ b/glib/poppler-annot.cc
@@ -26,12 +26,6 @@ typedef struct _PopplerAnnotMarkupClass   PopplerAnnotMarkupClass;
 typedef struct _PopplerAnnotFreeTextClass PopplerAnnotFreeTextClass;
 typedef struct _PopplerAnnotTextClass     PopplerAnnotTextClass;
 
-struct _PopplerAnnot
-{
-  GObject  parent_instance;
-  Annot   *annot;
-};
-
 struct _PopplerAnnotClass
 {
   GObjectClass parent_class;
@@ -160,6 +154,34 @@ _poppler_annot_free_text_new (Annot *annot)
 
 /* Public methods */
 /**
+ * poppler_annot_text_new:
+ * @doc: a #PopplerDocument
+ * @poppler_rect: a #PopplerRectangle of the annontation.
+ *
+ * Create a @poppler_annot object
+ *
+ * Return value: @poppler_annot.
+ **/ 
+PopplerAnnot *
+poppler_annot_text_new(PopplerDocument *document,
+	PopplerRectangle *poppler_rect)
+{
+    PDFRectangle annot_rect;
+    PopplerAnnot *poppler_annot;
+
+    annot_rect.x1 = poppler_rect->x1;
+    annot_rect.x2 = poppler_rect->x2;
+    annot_rect.y1 = poppler_rect->y1;
+    annot_rect.y2 = poppler_rect->y2;
+
+    poppler_annot = POPPLER_ANNOT (g_object_new (POPPLER_TYPE_ANNOT_TEXT, NULL));
+    poppler_annot->annot = new AnnotText(document->doc->getXRef (),
+	    &annot_rect, document->doc->getCatalog ());
+    poppler_annot_set_contents (poppler_annot, "new");
+    return poppler_annot;
+}
+
+/**
  * poppler_annot_get_annot_type:
  * @poppler_annot: a #PopplerAnnot
  *
diff --git a/glib/poppler-annot.h b/glib/poppler-annot.h
index 4648027..faf15e3 100644
--- a/glib/poppler-annot.h
+++ b/glib/poppler-annot.h
@@ -132,6 +132,7 @@ struct _PopplerAnnotCalloutLine
 };
 
 GType                         poppler_annot_get_type                           (void) G_GNUC_CONST;
+PopplerAnnot                 *poppler_annot_text_new 		               (PopplerDocument *doc, PopplerRectangle *poppler_rect);
 PopplerAnnotType              poppler_annot_get_annot_type                     (PopplerAnnot *poppler_annot);
 gchar                        *poppler_annot_get_contents                       (PopplerAnnot *poppler_annot);
 void                          poppler_annot_set_contents                       (PopplerAnnot *poppler_annot,
diff --git a/glib/poppler-page.cc b/glib/poppler-page.cc
index 225c97b..710cb71 100644
--- a/glib/poppler-page.cc
+++ b/glib/poppler-page.cc
@@ -31,6 +31,7 @@
 
 #include "poppler.h"
 #include "poppler-private.h"
+#include "poppler-annot.h"
 
 enum
 {
@@ -1771,6 +1772,22 @@ poppler_page_free_annot_mapping (GList *list)
   g_list_free (list);
 }
 
+/**
+ * poppler_page_add_annot:
+ * @page: A #PopplerPage
+ * @annot: A #PopplerAnnot
+ *
+ * Attach the annotation @annot to the @page
+ *
+ **/
+void poppler_page_add_annot(PopplerPage *page, PopplerAnnot *annot)
+{
+  g_return_if_fail (POPPLER_IS_PAGE (page));
+  g_return_if_fail (POPPLER_IS_ANNOT(annot));
+
+  page->page->addAnnot(annot->annot);
+}
+
 /* PopplerRectangle type */
 
 POPPLER_DEFINE_BOXED_TYPE (PopplerRectangle, poppler_rectangle,
diff --git a/glib/poppler-page.h b/glib/poppler-page.h
index 9351048..ed5b984 100644
--- a/glib/poppler-page.h
+++ b/glib/poppler-page.h
@@ -119,6 +119,8 @@ GList              *poppler_page_get_form_field_mapping  (PopplerPage        *pa
 void                poppler_page_free_form_field_mapping (GList              *list);
 GList                 *poppler_page_get_annot_mapping    (PopplerPage        *page);
 void                   poppler_page_free_annot_mapping   (GList              *list);
+void                   poppler_page_add_annot            (PopplerPage *page,
+	                                                  PopplerAnnot *annot);
 void 		      poppler_page_get_crop_box 	 (PopplerPage        *page,
 							  PopplerRectangle   *rect);
 
diff --git a/glib/poppler-private.h b/glib/poppler-private.h
index e8ace14..3c408de 100644
--- a/glib/poppler-private.h
+++ b/glib/poppler-private.h
@@ -68,6 +68,12 @@ struct _PopplerPage
   Annots *annots;
 };
 
+struct _PopplerAnnot
+{
+  GObject  parent_instance;
+  Annot   *annot;
+};
+
 struct _PopplerFormField
 {
   GObject parent_instance;
