Merge pull request #8043 from Rob--W/issue6696-auto-rotate-page
Allow automatic print rotation via the enablePrintAutoRotate preference
This commit is contained in:
commit
573236e3ad
@ -114,6 +114,12 @@
|
|||||||
"renderInteractiveForms": {
|
"renderInteractiveForms": {
|
||||||
"type": "boolean",
|
"type": "boolean",
|
||||||
"default": false
|
"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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -190,6 +190,7 @@ var PDFViewerApplication = {
|
|||||||
renderer: 'canvas',
|
renderer: 'canvas',
|
||||||
enhanceTextSelection: false,
|
enhanceTextSelection: false,
|
||||||
renderInteractiveForms: false,
|
renderInteractiveForms: false,
|
||||||
|
enablePrintAutoRotate: false,
|
||||||
},
|
},
|
||||||
isViewerEmbedded: (window.parent !== window),
|
isViewerEmbedded: (window.parent !== window),
|
||||||
url: '',
|
url: '',
|
||||||
@ -304,6 +305,9 @@ var PDFViewerApplication = {
|
|||||||
Preferences.get('disablePageLabels').then(function resolved(value) {
|
Preferences.get('disablePageLabels').then(function resolved(value) {
|
||||||
self.viewerPrefs['disablePageLabels'] = value;
|
self.viewerPrefs['disablePageLabels'] = value;
|
||||||
}),
|
}),
|
||||||
|
Preferences.get('enablePrintAutoRotate').then(function resolved(value) {
|
||||||
|
self.viewerPrefs['enablePrintAutoRotate'] = value;
|
||||||
|
}),
|
||||||
]).catch(function (reason) { });
|
]).catch(function (reason) { });
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -342,6 +346,7 @@ var PDFViewerApplication = {
|
|||||||
renderer: self.viewerPrefs['renderer'],
|
renderer: self.viewerPrefs['renderer'],
|
||||||
enhanceTextSelection: self.viewerPrefs['enhanceTextSelection'],
|
enhanceTextSelection: self.viewerPrefs['enhanceTextSelection'],
|
||||||
renderInteractiveForms: self.viewerPrefs['renderInteractiveForms'],
|
renderInteractiveForms: self.viewerPrefs['renderInteractiveForms'],
|
||||||
|
enablePrintAutoRotate: self.viewerPrefs['enablePrintAutoRotate'],
|
||||||
});
|
});
|
||||||
pdfRenderingQueue.setViewer(self.pdfViewer);
|
pdfRenderingQueue.setViewer(self.pdfViewer);
|
||||||
pdfLinkService.setViewer(self.pdfViewer);
|
pdfLinkService.setViewer(self.pdfViewer);
|
||||||
|
@ -15,5 +15,6 @@
|
|||||||
"enhanceTextSelection": false,
|
"enhanceTextSelection": false,
|
||||||
"renderer": "canvas",
|
"renderer": "canvas",
|
||||||
"renderInteractiveForms": false,
|
"renderInteractiveForms": false,
|
||||||
|
"enablePrintAutoRotate": false,
|
||||||
"disablePageLabels": false
|
"disablePageLabels": false
|
||||||
}
|
}
|
||||||
|
@ -61,7 +61,7 @@
|
|||||||
var renderContext = {
|
var renderContext = {
|
||||||
canvasContext: ctx,
|
canvasContext: ctx,
|
||||||
transform: [PRINT_UNITS, 0, 0, PRINT_UNITS, 0, 0],
|
transform: [PRINT_UNITS, 0, 0, PRINT_UNITS, 0, 0],
|
||||||
viewport: pdfPage.getViewport(1),
|
viewport: pdfPage.getViewport(1, size.rotation),
|
||||||
intent: 'print'
|
intent: 'print'
|
||||||
};
|
};
|
||||||
return pdfPage.render(renderContext).promise;
|
return pdfPage.render(renderContext).promise;
|
||||||
|
@ -60,7 +60,7 @@
|
|||||||
var renderContext = {
|
var renderContext = {
|
||||||
canvasContext: ctx,
|
canvasContext: ctx,
|
||||||
transform: [PRINT_UNITS, 0, 0, PRINT_UNITS, 0, 0],
|
transform: [PRINT_UNITS, 0, 0, PRINT_UNITS, 0, 0],
|
||||||
viewport: pdfPage.getViewport(1),
|
viewport: pdfPage.getViewport(1, size.rotation),
|
||||||
intent: 'print'
|
intent: 'print'
|
||||||
};
|
};
|
||||||
return pdfPage.render(renderContext).promise;
|
return pdfPage.render(renderContext).promise;
|
||||||
|
@ -81,6 +81,9 @@ var DEFAULT_CACHE_SIZE = 10;
|
|||||||
* text selection behaviour. The default is `false`.
|
* text selection behaviour. The default is `false`.
|
||||||
* @property {boolean} renderInteractiveForms - (optional) Enables rendering of
|
* @property {boolean} renderInteractiveForms - (optional) Enables rendering of
|
||||||
* interactive form elements. The default is `false`.
|
* 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'.
|
* @property {string} renderer - 'canvas' or 'svg'. The default is 'canvas'.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -122,6 +125,10 @@ var PDFViewer = (function pdfViewer() {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function isPortraitOrientation(size) {
|
||||||
|
return size.width <= size.height;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @constructs PDFViewer
|
* @constructs PDFViewer
|
||||||
* @param {PDFViewerOptions} options
|
* @param {PDFViewerOptions} options
|
||||||
@ -135,6 +142,7 @@ var PDFViewer = (function pdfViewer() {
|
|||||||
this.removePageBorders = options.removePageBorders || false;
|
this.removePageBorders = options.removePageBorders || false;
|
||||||
this.enhanceTextSelection = options.enhanceTextSelection || false;
|
this.enhanceTextSelection = options.enhanceTextSelection || false;
|
||||||
this.renderInteractiveForms = options.renderInteractiveForms || false;
|
this.renderInteractiveForms = options.renderInteractiveForms || false;
|
||||||
|
this.enablePrintAutoRotate = options.enablePrintAutoRotate || false;
|
||||||
this.renderer = options.renderer || RendererType.CANVAS;
|
this.renderer = options.renderer || RendererType.CANVAS;
|
||||||
|
|
||||||
this.defaultRenderingQueue = !options.renderingQueue;
|
this.defaultRenderingQueue = !options.renderingQueue;
|
||||||
@ -949,12 +957,30 @@ var PDFViewer = (function pdfViewer() {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns sizes of the pages.
|
* Returns sizes of the pages.
|
||||||
* @returns {Array} Array of objects with width/height fields.
|
* @returns {Array} Array of objects with width/height/rotation fields.
|
||||||
*/
|
*/
|
||||||
getPagesOverview: function () {
|
getPagesOverview: function () {
|
||||||
return this._pages.map(function (pageView) {
|
var pagesOverview = this._pages.map(function (pageView) {
|
||||||
var viewport = pageView.pdfPage.getViewport(1);
|
var viewport = pageView.pdfPage.getViewport(1);
|
||||||
return {width: viewport.width, height: viewport.height};
|
return {
|
||||||
|
width: viewport.width,
|
||||||
|
height: viewport.height,
|
||||||
|
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,
|
||||||
|
};
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user