diff --git a/extensions/chromium/preferences_schema.json b/extensions/chromium/preferences_schema.json
index 43bd863d6..763387f0e 100644
--- a/extensions/chromium/preferences_schema.json
+++ b/extensions/chromium/preferences_schema.json
@@ -114,6 +114,12 @@
     "renderInteractiveForms": {
       "type": "boolean",
       "default": false
+    },
+    "enablePrintAutoRotate": {
+      "title": "Automatically rotate printed pages",
+      "description": "When enabled, pages whose orientation differ from the first page are rotated when printed.",
+      "type": "boolean",
+      "default": false
     }
   }
 }
diff --git a/web/app.js b/web/app.js
index f7e76b3e9..1a51ebc5e 100644
--- a/web/app.js
+++ b/web/app.js
@@ -190,6 +190,7 @@ var PDFViewerApplication = {
     renderer: 'canvas',
     enhanceTextSelection: false,
     renderInteractiveForms: false,
+    enablePrintAutoRotate: false,
   },
   isViewerEmbedded: (window.parent !== window),
   url: '',
@@ -304,6 +305,9 @@ var PDFViewerApplication = {
       Preferences.get('disablePageLabels').then(function resolved(value) {
         self.viewerPrefs['disablePageLabels'] = value;
       }),
+      Preferences.get('enablePrintAutoRotate').then(function resolved(value) {
+        self.viewerPrefs['enablePrintAutoRotate'] = value;
+      }),
     ]).catch(function (reason) { });
   },
 
@@ -342,6 +346,7 @@ var PDFViewerApplication = {
         renderer: self.viewerPrefs['renderer'],
         enhanceTextSelection: self.viewerPrefs['enhanceTextSelection'],
         renderInteractiveForms: self.viewerPrefs['renderInteractiveForms'],
+        enablePrintAutoRotate: self.viewerPrefs['enablePrintAutoRotate'],
       });
       pdfRenderingQueue.setViewer(self.pdfViewer);
       pdfLinkService.setViewer(self.pdfViewer);
diff --git a/web/default_preferences.json b/web/default_preferences.json
index 7e8114f31..dbb9dd5a5 100644
--- a/web/default_preferences.json
+++ b/web/default_preferences.json
@@ -15,5 +15,6 @@
   "enhanceTextSelection": false,
   "renderer": "canvas",
   "renderInteractiveForms": false,
+  "enablePrintAutoRotate": false,
   "disablePageLabels": false
 }
diff --git a/web/pdf_viewer.js b/web/pdf_viewer.js
index 3fe031510..95bf67e5b 100644
--- a/web/pdf_viewer.js
+++ b/web/pdf_viewer.js
@@ -81,6 +81,9 @@ var DEFAULT_CACHE_SIZE = 10;
  *   text selection behaviour. The default is `false`.
  * @property {boolean} renderInteractiveForms - (optional) Enables rendering of
  *   interactive form elements. The default is `false`.
+ * @property {boolean} enablePrintAutoRotate - (optional) Enables automatic
+ *   rotation of pages whose orientation differ from the first page upon
+ *   printing. The default is `false`.
  * @property {string} renderer - 'canvas' or 'svg'. The default is 'canvas'.
  */
 
@@ -122,6 +125,10 @@ var PDFViewer = (function pdfViewer() {
     return false;
   }
 
+  function isPortraitOrientation(size) {
+    return size.width <= size.height;
+  }
+
   /**
    * @constructs PDFViewer
    * @param {PDFViewerOptions} options
@@ -135,6 +142,7 @@ var PDFViewer = (function pdfViewer() {
     this.removePageBorders = options.removePageBorders || false;
     this.enhanceTextSelection = options.enhanceTextSelection || false;
     this.renderInteractiveForms = options.renderInteractiveForms || false;
+    this.enablePrintAutoRotate = options.enablePrintAutoRotate || false;
     this.renderer = options.renderer || RendererType.CANVAS;
 
     this.defaultRenderingQueue = !options.renderingQueue;
@@ -952,7 +960,7 @@ var PDFViewer = (function pdfViewer() {
      * @returns {Array} Array of objects with width/height/rotation fields.
      */
     getPagesOverview: function () {
-      return this._pages.map(function (pageView) {
+      var pagesOverview = this._pages.map(function (pageView) {
         var viewport = pageView.pdfPage.getViewport(1);
         return {
           width: viewport.width,
@@ -960,6 +968,20 @@ var PDFViewer = (function pdfViewer() {
           rotation: viewport.rotation,
         };
       });
+      if (!this.enablePrintAutoRotate) {
+        return pagesOverview;
+      }
+      var isFirstPagePortrait = isPortraitOrientation(pagesOverview[0]);
+      return pagesOverview.map(function (size) {
+        if (isFirstPagePortrait === isPortraitOrientation(size)) {
+          return size;
+        }
+        return {
+          width: size.height,
+          height: size.width,
+          rotation: (size.rotation + 90) % 360,
+        };
+      });
     },
   };