Read PrintPageRange viewer preference

Lookup for PrintPageRange viewer preference
in constructor of ViewerPreferences and make
it available via getPrintPageRange() method.

https://gitlab.freedesktop.org/poppler/poppler/issues/290
diff --git a/poppler/ViewerPreferences.cc b/poppler/ViewerPreferences.cc
index 60eb31c..0ab4523 100644
--- a/poppler/ViewerPreferences.cc
+++ b/poppler/ViewerPreferences.cc
@@ -108,6 +108,30 @@
     if (numCopies < 2)
       numCopies = 1;
   }
+
+  obj = prefDict->lookup("PrintPageRange");
+  if (obj.isArray()) {
+    Array *range = obj.getArray();
+    int length = range->getLength();
+    int pageNumber1, pageNumber2;
+
+    if (length % 2 == 1)
+      length--;
+
+    for (int i = 0; i < length; i += 2) {
+      Object obj2 = range->get(i);
+      Object obj3 = range->get(i + 1);
+
+      if (obj2.isInt() && (pageNumber1 = obj2.getInt()) >= 1 &&
+          obj3.isInt() && (pageNumber2 = obj3.getInt()) >= 1 &&
+          pageNumber1 < pageNumber2) {
+        printPageRange.push_back(std::pair<int, int>(pageNumber1, pageNumber2));
+      } else {
+        printPageRange.clear();
+        break;
+      }
+    }
+  }
 }
 
 ViewerPreferences::~ViewerPreferences()
diff --git a/poppler/ViewerPreferences.h b/poppler/ViewerPreferences.h
index 79d63f9..28e9299 100644
--- a/poppler/ViewerPreferences.h
+++ b/poppler/ViewerPreferences.h
@@ -12,6 +12,8 @@
 #ifndef VIEWERPREFERENCES_H
 #define VIEWERPREFERENCES_H
 
+#include <vector>
+
 class Dict;
 
 //------------------------------------------------------------------------
@@ -57,6 +59,7 @@
   Duplex getDuplex() const { return duplex; }
   bool getPickTrayByPDFSize() const { return pickTrayByPDFSize; }
   int getNumCopies() const { return numCopies; }
+  std::vector<std::pair<int, int> > getPrintPageRange() const { return printPageRange; }
 
 private:
 
@@ -74,6 +77,7 @@
   Duplex duplex;
   bool pickTrayByPDFSize;
   int numCopies;
+  std::vector<std::pair<int, int> > printPageRange;
 };
 
 #endif