#include <poppler.h>
#include <poppler-document.h>
#include <poppler-page.h>
+#include <glib/gi18n.h>
#include "ev-poppler.h"
#include "ev-ps-exporter.h"
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
PopplerPageLayout layout;
PopplerPageMode mode;
PopplerViewerPreferences view_prefs;
+ PopplerPermissions permissions;
info = g_new0 (EvDocumentInfo, 1);
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,
"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) {
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;
}
}
static void
-pdf_document_ps_exporter_begin (EvPSExporter *exporter, const char *filename)
+pdf_document_ps_exporter_begin (EvPSExporter *exporter, const char *filename,
+ int first_page, int last_page)
{
PdfDocument *pdf_document = PDF_DOCUMENT (exporter);
- int n_pages;
- n_pages = pdf_document_get_n_pages (EV_DOCUMENT (exporter));
- pdf_document->ps_file = poppler_ps_file_new (pdf_document->document,
- filename, n_pages);
+ pdf_document->ps_file = poppler_ps_file_new (pdf_document->document, filename,
+ first_page,
+ last_page - first_page + 1);
}
static void