1
From 14092aab7c2c57becf045f3120297ab56ff76470 Mon Sep 17 00:00:00 2001
2
From: Carlos Garcia Campos <carlosgc@gnome.org>
3
Date: Wed, 30 Oct 2013 09:32:31 +0000
4
Subject: pdf: Do not use EvDocument API in get_info implementation
6
get_info might be called while the document is being loaded and the
7
EvDocument cache is not filled yet. Use only the poppler API to make
8
sure we get valid values. This fixes the page size always reported as
9
0x0 in the properties dialog.
11
https://bugzilla.gnome.org/show_bug.cgi?id=711093
13
diff --git a/backend/pdf/ev-poppler.cc b/backend/pdf/ev-poppler.cc
14
index f4c63c7..c751768 100644
15
--- a/backend/pdf/ev-poppler.cc
16
+++ b/backend/pdf/ev-poppler.cc
17
@@ -795,12 +795,15 @@ pdf_document_get_info (EvDocument *document)
21
- info->n_pages = ev_document_get_n_pages (document);
22
+ info->n_pages = poppler_document_get_n_pages (PDF_DOCUMENT (document)->document);
24
if (info->n_pages > 0) {
25
- ev_document_get_page_size (document, 0,
26
- &(info->paper_width),
27
- &(info->paper_height));
28
+ PopplerPage *poppler_page;
30
+ poppler_page = poppler_document_get_page (PDF_DOCUMENT (document)->document, 0);
31
+ poppler_page_get_size (poppler_page, &(info->paper_width), &(info->paper_height));
32
+ g_object_unref (poppler_page);
35
info->paper_width = info->paper_width / 72.0f * 25.4f;
36
info->paper_height = info->paper_height / 72.0f * 25.4f;
37
diff --git a/backend/xps/xps-document.c b/backend/xps/xps-document.c
38
index 23f4737..b759098 100644
39
--- a/backend/xps/xps-document.c
40
+++ b/backend/xps/xps-document.c
41
@@ -171,16 +171,18 @@ xps_document_get_info (EvDocument *document)
42
EV_DOCUMENT_INFO_PAPER_SIZE;
45
- if (gxps_document_get_n_pages (xps->doc) > 0) {
46
- ev_document_get_page_size (document, 0,
47
- &(info->paper_width),
48
- &(info->paper_height));
49
+ info->n_pages = gxps_document_get_n_pages (xps->doc);
50
+ if (info->n_pages > 0) {
51
+ GXPSPage *gxps_page;
53
+ gxps_page = gxps_document_get_page (xps->doc, 0, NULL);
54
+ gxps_page_get_size (gxps_page, &(info->paper_width), &(info->paper_height));
55
+ g_object_unref (gxps_page);
57
info->paper_width = info->paper_width / 96.0f * 25.4f;
58
info->paper_height = info->paper_height / 96.0f * 25.4f;
61
- info->n_pages = gxps_document_get_n_pages (xps->doc);