1
0
Fork 0
mirror of https://github.com/mozilla/pdf.js.git synced 2025-04-21 23:58:07 +02:00

Allow automatic print rotation via enablePrintAutoRotate

This commit is contained in:
Rob Wu 2017-02-08 00:15:09 +01:00
parent 775441b7c6
commit ece44d36e8
4 changed files with 35 additions and 1 deletions

View file

@ -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);

View file

@ -15,5 +15,6 @@
"enhanceTextSelection": false,
"renderer": "canvas",
"renderInteractiveForms": false,
"enablePrintAutoRotate": false,
"disablePageLabels": false
}

View file

@ -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,
};
});
},
};