X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;f=pdf%2Fev-poppler.cc;h=7f2330da8755974adfbced7f3efcb1248ee4ecd0;hb=3a5debb394dd45d4b802ab83e1249d9749fc4d84;hp=082c3dc971058c600bc5f5b1028e1409ca5ae41e;hpb=3f3b7a054f3b5d704fc1389b4551a4bed49e63bc;p=evince.git diff --git a/pdf/ev-poppler.cc b/pdf/ev-poppler.cc index 082c3dc9..7f2330da 100644 --- a/pdf/ev-poppler.cc +++ b/pdf/ev-poppler.cc @@ -23,6 +23,7 @@ #include #include #include +#include #include "ev-poppler.h" #include "ev-ps-exporter.h" @@ -87,9 +88,22 @@ G_DEFINE_TYPE_WITH_CODE (PdfDocument, pdf_document, G_TYPE_OBJECT, pdf_document_ps_exporter_iface_init); }); +static void +pdf_document_dispose (GObject *object) +{ + PdfDocument *pdf_document = PDF_DOCUMENT(object); + + if (pdf_document->document) { + g_object_unref (pdf_document->document); + } +} + static void pdf_document_class_init (PdfDocumentClass *klass) { + GObjectClass *g_object_class = G_OBJECT_CLASS (klass); + + g_object_class->dispose = pdf_document_dispose; } static void @@ -305,6 +319,7 @@ pdf_document_get_info (EvDocument *document) PopplerPageLayout layout; PopplerPageMode mode; PopplerViewerPreferences view_prefs; + PopplerPermissions permissions; info = g_new0 (EvDocumentInfo, 1); @@ -315,8 +330,15 @@ pdf_document_get_info (EvDocument *document) EV_DOCUMENT_INFO_KEYWORDS | EV_DOCUMENT_INFO_LAYOUT | EV_DOCUMENT_INFO_START_MODE | - /* Missing EV_DOCUMENT_INFO_CREATION_DATE | */ - EV_DOCUMENT_INFO_UI_HINTS; + EV_DOCUMENT_INFO_PERMISSIONS | + EV_DOCUMENT_INFO_UI_HINTS | + EV_DOCUMENT_INFO_CREATOR | + EV_DOCUMENT_INFO_PRODUCER | + EV_DOCUMENT_INFO_CREATION_DATE | + EV_DOCUMENT_INFO_MOD_DATE | + EV_DOCUMENT_INFO_LINEARIZED | + EV_DOCUMENT_INFO_N_PAGES | + EV_DOCUMENT_INFO_SECURITY; g_object_get (PDF_DOCUMENT (document)->document, @@ -328,6 +350,12 @@ pdf_document_get_info (EvDocument *document) "page-mode", &mode, "page-layout", &layout, "viewer-preferences", &view_prefs, + "permissions", &permissions, + "creator", &(info->creator), + "producer", &(info->producer), + "creation-date", &(info->creation_date), + "mod-date", &(info->modified_date), + "linearized", &(info->linearized), NULL); switch (layout) { @@ -394,6 +422,30 @@ pdf_document_get_info (EvDocument *document) info->ui_hints |= EV_DOCUMENT_UI_HINT_DIRECTION_RTL; } + info->permissions = 0; + if (permissions & POPPLER_PERMISSIONS_OK_TO_PRINT) { + info->permissions |= EV_DOCUMENT_PERMISSIONS_OK_TO_PRINT; + } + if (permissions & POPPLER_PERMISSIONS_OK_TO_MODIFY) { + info->permissions |= EV_DOCUMENT_PERMISSIONS_OK_TO_MODIFY; + } + if (permissions & POPPLER_PERMISSIONS_OK_TO_COPY) { + info->permissions |= EV_DOCUMENT_PERMISSIONS_OK_TO_COPY; + } + if (permissions & POPPLER_PERMISSIONS_OK_TO_ADD_NOTES) { + info->permissions |= EV_DOCUMENT_PERMISSIONS_OK_TO_ADD_NOTES; + } + + info->n_pages = ev_document_get_n_pages (document); + + if (ev_document_security_has_document_security (EV_DOCUMENT_SECURITY (document))) { + /* translators: this is the document security state */ + info->security = g_strdup (_("Yes")); + } else { + /* translators: this is the document security state */ + info->security = g_strdup (_("No")); + } + return info; } @@ -874,7 +926,8 @@ pdf_document_ps_exporter_begin (EvPSExporter *exporter, const char *filename, PdfDocument *pdf_document = PDF_DOCUMENT (exporter); pdf_document->ps_file = poppler_ps_file_new (pdf_document->document, filename, - first_page, last_page); + first_page, + last_page - first_page + 1); } static void