diff --git a/src/lib/viewers/doc/DocBaseViewer.js b/src/lib/viewers/doc/DocBaseViewer.js index 911af7b01..a639dc72c 100644 --- a/src/lib/viewers/doc/DocBaseViewer.js +++ b/src/lib/viewers/doc/DocBaseViewer.js @@ -32,6 +32,7 @@ const MAX_SCALE = 10.0; const MIN_SCALE = 0.1; const DEFAULT_RANGE_REQUEST_CHUNK_SIZE = 393216; // 384KB const LARGE_RANGE_REQUEST_CHUNK_SIZE = 1048576; // 1MB +const MOBILE_MAX_CANVAS_SIZE = 2949120; // ~3MP 1920x1536 const SHOW_PAGE_NUM_INPUT_CLASS = 'show-page-number-input'; const IS_SAFARI_CLASS = 'is-safari'; const SCROLL_EVENT_THROTTLE_INTERVAL = 200; @@ -661,6 +662,9 @@ class DocBaseViewer extends BaseViewer { // Disable text layer if user doesn't have download permissions PDFJS.disableTextLayer = !checkPermission(file, PERMISSION_DOWNLOAD); + + // Decrease mobile canvas size to ~3MP (1920x1536) + PDFJS.maxCanvasPixels = Browser.isMobile() ? MOBILE_MAX_CANVAS_SIZE : PDFJS.maxCanvasPixels; } /** diff --git a/src/lib/viewers/doc/__tests__/DocBaseViewer-test.js b/src/lib/viewers/doc/__tests__/DocBaseViewer-test.js index 82249c735..56afee1e6 100644 --- a/src/lib/viewers/doc/__tests__/DocBaseViewer-test.js +++ b/src/lib/viewers/doc/__tests__/DocBaseViewer-test.js @@ -27,6 +27,7 @@ const DEFAULT_SCALE_DELTA = 1.1; const MAX_SCALE = 10.0; const MIN_SCALE = 0.1; const SCROLL_END_TIMEOUT = 500; +const MOBILE_MAX_CANVAS_SIZE = 2949120; // ~3MP 1920x1536 const sandbox = sinon.sandbox.create(); let docBase; @@ -1055,7 +1056,6 @@ describe('src/lib/viewers/doc/DocBaseViewer', () => { it('should enable range requests if the file and browser meet the conditions', () => { stubs.browser.returns('Chrome'); - docBase.setupPdfjs(); expect(PDFJS.disableRange).to.be.false; }); @@ -1069,6 +1069,12 @@ describe('src/lib/viewers/doc/DocBaseViewer', () => { docBase.setupPdfjs(); expect(PDFJS.disableTextLayer).to.be.true; }); + + it('should decrease max canvas size to 3MP if on mobile', () => { + sandbox.stub(Browser, 'isMobile').returns(true); + docBase.setupPdfjs(); + expect(PDFJS.maxCanvasPixels).to.equal(MOBILE_MAX_CANVAS_SIZE); + }); }); describe('initAnnotations()', () => {