Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog8
-rw-r--r--backend/pdf/ev-poppler.cc13
2 files changed, 17 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index aca41a9..0cac521 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,13 @@
2007-10-04 Carlos Garcia Campos <carlosgc@gnome.org>
+ * backend/pdf/ev-poppler.cc: (ev_form_field_from_poppler_field),
+ (pdf_document_forms_get_form_fields):
+
+ Silently ignore unknown form fields. Fixes bug #482654. Patch by
+ Matthias Drochner.
+
+2007-10-04 Carlos Garcia Campos <carlosgc@gnome.org>
+
* configure.ac:
* backend/pdf/ev-poppler.cc: (pdf_document_file_exporter_do_page):
diff --git a/backend/pdf/ev-poppler.cc b/backend/pdf/ev-poppler.cc
index 13be06f..9ccfd22 100644
--- a/backend/pdf/ev-poppler.cc
+++ b/backend/pdf/ev-poppler.cc
@@ -2053,7 +2053,7 @@ ev_form_field_from_poppler_field (PopplerFormField *poppler_field)
ev_field = ev_form_field_signature_new (id);
break;
case POPPLER_FORM_FIELD_UNKNOWN:
- break;
+ return NULL;
}
ev_field->font_size = font_size;
@@ -2072,7 +2072,6 @@ pdf_document_forms_get_form_fields (EvDocumentForms *document,
GList *fields;
GList *list;
double height;
-
pdf_document = PDF_DOCUMENT (document);
poppler_page = poppler_document_get_page (pdf_document->document, page);
@@ -2082,19 +2081,25 @@ pdf_document_forms_get_form_fields (EvDocumentForms *document,
for (list = fields; list; list = list->next) {
PopplerFormFieldMapping *mapping;
EvFormFieldMapping *field_mapping;
-
+ EvFormField *ev_field;
+
mapping = (PopplerFormFieldMapping *)list->data;
+ ev_field = ev_form_field_from_poppler_field (mapping->field);
+ if (!ev_field)
+ continue;
+
field_mapping = g_new0 (EvFormFieldMapping, 1);
field_mapping->x1 = mapping->area.x1;
field_mapping->x2 = mapping->area.x2;
field_mapping->y1 = height - mapping->area.y2;
field_mapping->y2 = height - mapping->area.y1;
- field_mapping->field = ev_form_field_from_poppler_field (mapping->field);
+ field_mapping->field = ev_field;
field_mapping->field->page = page;
retval = g_list_prepend (retval, field_mapping);
}
+
poppler_page_free_form_field_mapping (fields);
g_object_unref (poppler_page);