diff --git a/backend/pdf/ev-poppler.cc b/backend/pdf/ev-poppler.cc
index 71f2da4..8499185 100644
--- a/backend/pdf/ev-poppler.cc
+++ b/backend/pdf/ev-poppler.cc
@@ -667,6 +667,127 @@ pdf_document_get_format_from_metadata (const char *metadata)
 }
 
 
+static void
+pdf_document_get_license_from_metadata (const char *metadata, EvDocumentInfo *info)
+{
+	xmlDocPtr doc;
+	xmlXPathContextPtr xpathCtx;
+	xmlXPathObjectPtr xpathObj;
+	xmlChar *marked = NULL;
+	
+	const char *license = "/x:xmpmeta/rdf:RDF/rdf:Description/dc:rights/rdf:Alt/rdf:li[lang('%s')]";
+	const char *license_uri = "/x:xmpmeta/rdf:RDF/rdf:Description/cc:license/@rdf:resource";
+	const char *license_web_statement = "/x:xmpmeta/rdf:RDF/rdf:Description/xmpRights:WebStatement";
+	const char *language_string;
+	gchar **tags;
+	gchar *tag, *tag_aux;
+	int i, j;
+
+	doc = xmlParseMemory (metadata, strlen (metadata));
+	if (doc == NULL)
+		return;		/* invalid xml metadata */
+
+	xpathCtx = xmlXPathNewContext (doc);
+	if (xpathCtx == NULL) {
+		xmlFreeDoc (doc);
+		return;		/* invalid xpath context */
+	}
+
+	/* add license namespaces */
+	xmlXPathRegisterNs (xpathCtx, BAD_CAST "x", BAD_CAST "adobe:ns:meta/");
+	xmlXPathRegisterNs (xpathCtx, BAD_CAST "rdf", BAD_CAST "http://www.w3.org/1999/02/22-rdf-syntax-ns#");
+	xmlXPathRegisterNs (xpathCtx, BAD_CAST "xmpRights", BAD_CAST "http://ns.adobe.com/xap/1.0/rights/");
+	xmlXPathRegisterNs (xpathCtx, BAD_CAST "dc", BAD_CAST "http://purl.org/dc/elements/1.1/");
+	xmlXPathRegisterNs (xpathCtx, BAD_CAST "cc", BAD_CAST "http://creativecommons.org/ns#");
+	
+	xpathObj = xmlXPathEvalExpression (BAD_CAST 
+		"/x:xmpmeta/rdf:RDF/rdf:Description/xmpRights:Marked", xpathCtx);
+	if (xpathObj != NULL) {
+		if (xpathObj->nodesetval != NULL &&
+		    xpathObj->nodesetval->nodeNr != 0)
+			marked = xmlNodeGetContent (
+				xpathObj->nodesetval->nodeTab[0]);
+		xmlXPathFreeObject (xpathObj);
+	}
+	if (marked) {
+		if (g_strrstr (g_ascii_strdown ((char *) marked, -1), "false") != 
+		    NULL)
+			info->license = _("Public Domain");
+		else {
+			/* license text */
+			/* a) check for a suitable localized string */
+			language_string =
+			       pango_language_to_string (gtk_get_default_language ());
+			tags = g_strsplit (language_string, "-", -1);
+			i = g_strv_length (tags);
+			while (i-- && !info->license) {
+				tag = g_strdup (tags[0]);
+				for (j=1; j <= i;  j++) {
+					tag_aux = g_strdup_printf ("%s-%s", tag,
+								   tags[j]);
+					g_free (tag);
+					tag = tag_aux;
+				}
+				xpathObj = xmlXPathEvalExpression (BAD_CAST 
+						g_strdup_printf (license, tag), 
+						xpathCtx);
+				if (xpathObj != NULL) {
+					if (xpathObj->nodesetval != NULL && 
+					    xpathObj->nodesetval->nodeNr != 0)
+						info->license = (char *) 
+						     xmlNodeGetContent (
+						        xpathObj->nodesetval->nodeTab[0]);
+					xmlXPathFreeObject (xpathObj);
+				}
+				g_free (tag);
+			}
+			g_strfreev(tags);
+			/* b) if not, use the default string */
+			if (!info->license) {
+				xpathObj = xmlXPathEvalExpression (BAD_CAST 
+						g_strdup_printf (license, "x-default"), 
+						xpathCtx);
+				if (xpathObj != NULL) {
+					if (xpathObj->nodesetval != NULL && 
+					    xpathObj->nodesetval->nodeNr != 0)
+						info->license = (char *) 
+						     xmlNodeGetContent (
+						        xpathObj->nodesetval->nodeTab[0]);
+					xmlXPathFreeObject (xpathObj);
+				}
+			}
+			
+			/* license uri */
+			xpathObj = xmlXPathEvalExpression (BAD_CAST 
+					license_uri, xpathCtx);
+			if (xpathObj != NULL) {
+				if (xpathObj->nodesetval != NULL && 
+				    xpathObj->nodesetval->nodeNr != 0)
+					info->license_uri = (char *) 
+					     xmlNodeGetContent (
+					        xpathObj->nodesetval->nodeTab[0]);
+				xmlXPathFreeObject (xpathObj);
+			}
+			
+			/* web statement */
+			xpathObj = xmlXPathEvalExpression (BAD_CAST
+					license_web_statement, xpathCtx);
+			if (xpathObj != NULL) {
+				if (xpathObj->nodesetval != NULL &&
+				    xpathObj->nodesetval->nodeNr != 0)
+					info->license_web_statement = (char *) 
+						xmlNodeGetContent (
+						   xpathObj->nodesetval->nodeTab[0]);
+				xmlXPathFreeObject (xpathObj);
+			}
+		}
+	}
+	xmlFree (marked);
+	xmlXPathFreeContext (xpathCtx);
+	xmlFreeDoc (doc);
+}
+
+
 static EvDocumentInfo *
 pdf_document_get_info (EvDocument *document)
 {
@@ -697,7 +818,10 @@ pdf_document_get_info (EvDocument *document)
 			    EV_DOCUMENT_INFO_LINEARIZED |
 			    EV_DOCUMENT_INFO_N_PAGES |
 			    EV_DOCUMENT_INFO_SECURITY | 
-		            EV_DOCUMENT_INFO_PAPER_SIZE;
+		            EV_DOCUMENT_INFO_PAPER_SIZE |
+			    EV_DOCUMENT_INFO_LICENSE |
+			    EV_DOCUMENT_INFO_LICENSE_URI |
+			    EV_DOCUMENT_INFO_LICENSE_WEB_STATEMENT;
 
 	g_object_get (PDF_DOCUMENT (document)->document,
 		      "title", &(info->title),
@@ -723,6 +847,7 @@ pdf_document_get_info (EvDocument *document)
 			g_free (info->format);
 			info->format = fmt;
 		}
+		pdf_document_get_license_from_metadata(metadata, info);
 		g_free (metadata);
 	}
 
diff --git a/libdocument/ev-document-info.h b/libdocument/ev-document-info.h
index a75f681..d77db0c 100644
--- a/libdocument/ev-document-info.h
+++ b/libdocument/ev-document-info.h
@@ -98,7 +98,10 @@ typedef enum
 	EV_DOCUMENT_INFO_PERMISSIONS = 1 << 13,
 	EV_DOCUMENT_INFO_N_PAGES = 1 << 14,
 	EV_DOCUMENT_INFO_SECURITY = 1 << 15,
-	EV_DOCUMENT_INFO_PAPER_SIZE = 1 << 16
+	EV_DOCUMENT_INFO_PAPER_SIZE = 1 << 16,
+	EV_DOCUMENT_INFO_LICENSE = 1 << 17,
+	EV_DOCUMENT_INFO_LICENSE_URI = 1 << 18,
+	EV_DOCUMENT_INFO_LICENSE_WEB_STATEMENT = 1 << 19
 } EvDocumentInfoFields;
 
 struct _EvDocumentInfo
@@ -121,6 +124,9 @@ struct _EvDocumentInfo
 	int   n_pages;
 	double paper_height;
 	double paper_width;
+	char *license;
+	char *license_uri;
+	char *license_web_statement;
 
 	/* Mask of all the valid fields */
 	guint fields_mask;
diff --git a/libdocument/ev-document.c b/libdocument/ev-document.c
index e1521b7..91f3c98 100644
--- a/libdocument/ev-document.c
+++ b/libdocument/ev-document.c
@@ -287,6 +287,11 @@ ev_document_info_copy (EvDocumentInfo *info)
 	copy->ui_hints = info->ui_hints;
 	copy->permissions = info->permissions;
 	copy->n_pages = info->n_pages;
+	
+	copy->license = info->license;
+	copy->license_uri = info->license_uri;
+	copy->license_web_statement = info->license_web_statement;
+	
 	copy->fields_mask = info->fields_mask;
 
 	return copy;
@@ -308,6 +313,10 @@ ev_document_info_free (EvDocumentInfo *info)
 	g_free (info->linearized);
 	g_free (info->security);
 	
+	g_free (info->license);
+	g_free (info->license_uri);
+	g_free (info->license_web_statement);
+	
 	g_free (info);
 }
 
diff --git a/properties/ev-properties-view.c b/properties/ev-properties-view.c
index 9a9d13c..2683b3b 100644
--- a/properties/ev-properties-view.c
+++ b/properties/ev-properties-view.c
@@ -38,6 +38,9 @@ typedef enum {
 	URI_PROPERTY,
 	SUBJECT_PROPERTY,
 	AUTHOR_PROPERTY,
+	LICENSE_PROPERTY,
+	LICENSE_URI_PROPERTY,
+	LICENSE_WEB_STATEMENT_PROPERTY,
 	KEYWORDS_PROPERTY,
 	PRODUCER_PROPERTY,
 	CREATOR_PROPERTY,
@@ -60,6 +63,10 @@ static const PropertyInfo properties_info[] = {
 	{ URI_PROPERTY,           N_("Location:") },
 	{ SUBJECT_PROPERTY,       N_("Subject:") },
 	{ AUTHOR_PROPERTY,        N_("Author:") },
+	{ LICENSE_PROPERTY,       N_("License:") },
+	{ LICENSE_URI_PROPERTY,   N_("License uri:") },
+	{ LICENSE_WEB_STATEMENT_PROPERTY,
+	                          N_("Web statement:") },
 	{ KEYWORDS_PROPERTY,      N_("Keywords:") },
 	{ PRODUCER_PROPERTY,      N_("Producer:") },
 	{ CREATOR_PROPERTY,       N_("Creator:") },
@@ -178,6 +185,7 @@ set_property (GtkTable    *table,
 	GtkWidget *label;
 	gchar     *markup;
 	gchar     *valid_text;
+	char* 	  check_uri;
 
 	label = gtk_label_new (NULL);
 	g_object_set (G_OBJECT (label), "xalign", 0.0, NULL);
@@ -197,14 +205,23 @@ set_property (GtkTable    *table,
 		      "ellipsize", PANGO_ELLIPSIZE_END,
 		      NULL);
 	
-
 	if (text == NULL || text[0] == '\000') {
 		markup = g_markup_printf_escaped ("<i>%s</i>", _("None"));
 		gtk_label_set_markup (GTK_LABEL (label), markup);
 		g_free (markup);
 	} else {
 		valid_text = make_valid_utf8 (text ? text : "");
-		gtk_label_set_text (GTK_LABEL (label), valid_text);
+#if GTK_CHECK_VERSION (2, 17, 0)
+		check_uri =  g_uri_parse_scheme (valid_text);
+		if (check_uri) {
+			markup = g_markup_printf_escaped ("<a href=\"%s\">%s</a>",
+							  valid_text, valid_text);
+			gtk_label_set_markup (GTK_LABEL (label), markup);
+			g_free (markup);
+			g_free (check_uri);
+		} else
+#endif
+			gtk_label_set_text (GTK_LABEL (label), valid_text);
 		g_free (valid_text);
 	}
 
@@ -339,6 +356,15 @@ ev_properties_view_set_info (EvPropertiesView *properties, const EvDocumentInfo
 	if (info->fields_mask & EV_DOCUMENT_INFO_AUTHOR) {
 		set_property (GTK_TABLE (table), AUTHOR_PROPERTY, info->author, &row);
 	}
+	if (info->fields_mask & EV_DOCUMENT_INFO_LICENSE && info->license) {
+		set_property (GTK_TABLE (table), LICENSE_PROPERTY, info->license, &row);
+	}
+	if (info->fields_mask & EV_DOCUMENT_INFO_LICENSE_URI && info->license_uri) {
+		set_property (GTK_TABLE (table), LICENSE_URI_PROPERTY, info->license_uri, &row);
+	}
+	if (info->fields_mask & EV_DOCUMENT_INFO_LICENSE_WEB_STATEMENT && info->license_web_statement) {
+		set_property (GTK_TABLE (table), LICENSE_WEB_STATEMENT_PROPERTY, info->license_web_statement, &row);
+	}
 	if (info->fields_mask & EV_DOCUMENT_INFO_KEYWORDS) {
 		set_property (GTK_TABLE (table), KEYWORDS_PROPERTY, info->keywords, &row);
 	}
