+2009-02-22 Carlos Garcia Campos <carlosgc@gnome.org>
+
+ * backend/pdf/ev-poppler.cc: (pdf_document_save),
+ (pdf_document_forms_form_field_text_set_text),
+ (pdf_document_forms_form_field_button_set_state),
+ (pdf_document_forms_form_field_choice_select_item),
+ (pdf_document_forms_form_field_choice_toggle_item),
+ (pdf_document_forms_form_field_choice_unselect_all),
+ (pdf_document_forms_form_field_choice_set_text):
+
+ Use poppler_document_save_a_copy(), which never saves the document
+ modifications, when saving an unmodified document. It makes saving
+ a copy of encrypted PDFs work again. Fixes bug #566791.
+
2009-02-18 Christian Persch <chpe@gnome.org>
* backend/djvu/djvu-document.c: (ev_djvu_error_quark):
PopplerDocument *document;
gchar *password;
+ gboolean modified;
PopplerFontInfo *font_info;
PopplerFontsIter *fonts_iter;
convert_error (GError *poppler_error,
GError **error)
{
- g_return_if_fail (poppler_error != NULL);
if (poppler_error == NULL)
return;
const char *uri,
GError **error)
{
+ PdfDocument *pdf_document = PDF_DOCUMENT (document);
gboolean retval;
GError *poppler_error = NULL;
- retval = poppler_document_save (PDF_DOCUMENT (document)->document,
- uri,
- &poppler_error);
+ if (pdf_document->modified) {
+ retval = poppler_document_save (pdf_document->document,
+ uri, &poppler_error);
+ } else {
+ retval = poppler_document_save_a_copy (pdf_document->document,
+ uri, &poppler_error);
+ }
+
if (! retval)
convert_error (poppler_error, error);
poppler_field = POPPLER_FORM_FIELD (g_object_get_data (G_OBJECT (field), "poppler-field"));
if (!poppler_field)
return;
+
poppler_form_field_text_set_text (poppler_field, text);
+ PDF_DOCUMENT (document)->modified = TRUE;
}
static void
return;
poppler_form_field_button_set_state (poppler_field, state);
+ PDF_DOCUMENT (document)->modified = TRUE;
}
static gboolean
return;
poppler_form_field_choice_select_item (poppler_field, index);
+ PDF_DOCUMENT (document)->modified = TRUE;
}
static void
return;
poppler_form_field_choice_toggle_item (poppler_field, index);
+ PDF_DOCUMENT (document)->modified = TRUE;
}
static void
return;
poppler_form_field_choice_unselect_all (poppler_field);
+ PDF_DOCUMENT (document)->modified = TRUE;
}
static void
return;
poppler_form_field_choice_set_text (poppler_field, text);
+ PDF_DOCUMENT (document)->modified = TRUE;
}
static gchar *