Mercurial > hg > orthanc-stone
annotate Applications/StoneWebViewer/WebApplication/pdf-viewer.js @ 2173:4596ad1b2aa4 dicom-sr
integration mainline->dicom-sr
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Tue, 22 Oct 2024 15:56:08 +0200 |
parents | 952674a812c2 |
children |
rev | line source |
---|---|
1652
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
1 /** |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
2 * Stone of Orthanc |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
3 * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
4 * Department, University Hospital of Liege, Belgium |
2124
16c01cc201e7
updated copyright, as Osimis is not active on Orthanc anymore
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2114
diff
changeset
|
5 * Copyright (C) 2017-2023 Osimis S.A., Belgium |
2114
c23eef785569
update year to 2024
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2077
diff
changeset
|
6 * Copyright (C) 2021-2024 Sebastien Jodogne, ICTEAM UCLouvain, Belgium |
1652
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
7 * |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
8 * This program is free software: you can redistribute it and/or |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
9 * modify it under the terms of the GNU Affero General Public License |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
10 * as published by the Free Software Foundation, either version 3 of |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
11 * the License, or (at your option) any later version. |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
12 * |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
13 * This program is distributed in the hope that it will be useful, but |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
14 * WITHOUT ANY WARRANTY; without even the implied warranty of |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
16 * Affero General Public License for more details. |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
17 * |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
18 * You should have received a copy of the GNU Affero General Public License |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
19 * along with this program. If not, see <http://www.gnu.org/licenses/>. |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
20 **/ |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
21 |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
22 |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
23 |
1657
66e5fcdf5597
pdf viewer is working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1652
diff
changeset
|
24 /** |
66e5fcdf5597
pdf viewer is working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1652
diff
changeset
|
25 * This source file is an adaptation for Vue.js of the sample code |
66e5fcdf5597
pdf viewer is working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1652
diff
changeset
|
26 * "Previous/Next example" of PDF.js: |
66e5fcdf5597
pdf viewer is working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1652
diff
changeset
|
27 * https://mozilla.github.io/pdf.js/examples/ |
66e5fcdf5597
pdf viewer is working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1652
diff
changeset
|
28 * |
66e5fcdf5597
pdf viewer is working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1652
diff
changeset
|
29 * ======================================================================= |
66e5fcdf5597
pdf viewer is working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1652
diff
changeset
|
30 * |
66e5fcdf5597
pdf viewer is working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1652
diff
changeset
|
31 * Original license of the sample code: |
66e5fcdf5597
pdf viewer is working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1652
diff
changeset
|
32 * |
66e5fcdf5597
pdf viewer is working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1652
diff
changeset
|
33 * Copyright 2014 Mozilla Foundation |
66e5fcdf5597
pdf viewer is working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1652
diff
changeset
|
34 * |
66e5fcdf5597
pdf viewer is working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1652
diff
changeset
|
35 * Licensed under the Apache License, Version 2.0 (the "License"); |
66e5fcdf5597
pdf viewer is working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1652
diff
changeset
|
36 * you may not use this file except in compliance with the License. |
66e5fcdf5597
pdf viewer is working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1652
diff
changeset
|
37 * You may obtain a copy of the License at |
66e5fcdf5597
pdf viewer is working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1652
diff
changeset
|
38 * |
66e5fcdf5597
pdf viewer is working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1652
diff
changeset
|
39 * http://www.apache.org/licenses/LICENSE-2.0 |
66e5fcdf5597
pdf viewer is working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1652
diff
changeset
|
40 * |
66e5fcdf5597
pdf viewer is working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1652
diff
changeset
|
41 * Unless required by applicable law or agreed to in writing, software |
66e5fcdf5597
pdf viewer is working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1652
diff
changeset
|
42 * distributed under the License is distributed on an "AS IS" BASIS, |
66e5fcdf5597
pdf viewer is working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1652
diff
changeset
|
43 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
66e5fcdf5597
pdf viewer is working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1652
diff
changeset
|
44 * See the License for the specific language governing permissions and |
66e5fcdf5597
pdf viewer is working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1652
diff
changeset
|
45 * limitations under the License. |
66e5fcdf5597
pdf viewer is working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1652
diff
changeset
|
46 **/ |
66e5fcdf5597
pdf viewer is working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1652
diff
changeset
|
47 |
1652
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
48 |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
49 // Loaded via <script> tag, create shortcut to access PDF.js exports. |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
50 var pdfjsLib = window['pdfjs-dist/build/pdf']; |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
51 |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
52 // The workerSrc property shall be specified. |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
53 pdfjsLib.GlobalWorkerOptions.workerSrc = 'https://cdn.jsdelivr.net/npm/pdfjs-dist@2.5.207/build/pdf.worker.min.js'; |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
54 |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
55 |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
56 |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
57 var ZOOM_FACTOR = 1.3; |
1657
66e5fcdf5597
pdf viewer is working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1652
diff
changeset
|
58 var FIT_MARGIN = 10; // Additional margin for width/height fitting, in order to avoid spurious scrollbars |
1652
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
59 |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
60 Vue.component('pdf-viewer', { |
1657
66e5fcdf5597
pdf viewer is working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1652
diff
changeset
|
61 props: [ 'prefix' ], |
1652
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
62 template: '#pdf-viewer', |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
63 data: function() { |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
64 return { |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
65 container: null, |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
66 canvas: null, |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
67 ctx: null, |
1657
66e5fcdf5597
pdf viewer is working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1652
diff
changeset
|
68 pdf: null, // "pdf" must correspond to a "Uint8Array" |
1652
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
69 |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
70 scale: 1, |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
71 countPages: 0, |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
72 currentPage: 0, |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
73 pdfDoc: null, |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
74 isRendering: false, |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
75 pageNumPending: null |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
76 } |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
77 }, |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
78 mounted: function() { |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
79 this.container = document.getElementById(this.prefix + '-container'); |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
80 this.canvas = document.getElementById(this.prefix + '-canvas'); |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
81 this.ctx = this.canvas.getContext('2d'); |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
82 |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
83 if (this.container === null || |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
84 this.canvas === null || |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
85 this.ctx === null) { |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
86 alert('Bad viewer configuration'); |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
87 } |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
88 |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
89 var that = this; |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
90 this.container.addEventListener('wheel', function(event) { |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
91 that.MouseWheel(event); |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
92 }); |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
93 }, |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
94 methods: { |
2164
952674a812c2
Added a Download button in the PDF viewer toolbar
Alain Mazy <am@orthanc.team>
parents:
2163
diff
changeset
|
95 Download: function() { |
952674a812c2
Added a Download button in the PDF viewer toolbar
Alain Mazy <am@orthanc.team>
parents:
2163
diff
changeset
|
96 if (this.pdfDoc !== null) { |
952674a812c2
Added a Download button in the PDF viewer toolbar
Alain Mazy <am@orthanc.team>
parents:
2163
diff
changeset
|
97 const blob = new Blob([this.pdf], { type: 'application/pdf'}); |
952674a812c2
Added a Download button in the PDF viewer toolbar
Alain Mazy <am@orthanc.team>
parents:
2163
diff
changeset
|
98 const blobUrl = URL.createObjectURL(blob); |
952674a812c2
Added a Download button in the PDF viewer toolbar
Alain Mazy <am@orthanc.team>
parents:
2163
diff
changeset
|
99 |
952674a812c2
Added a Download button in the PDF viewer toolbar
Alain Mazy <am@orthanc.team>
parents:
2163
diff
changeset
|
100 const a = document.createElement('a'); |
952674a812c2
Added a Download button in the PDF viewer toolbar
Alain Mazy <am@orthanc.team>
parents:
2163
diff
changeset
|
101 a.href = blobUrl; |
952674a812c2
Added a Download button in the PDF viewer toolbar
Alain Mazy <am@orthanc.team>
parents:
2163
diff
changeset
|
102 a.download = "report.pdf"; |
952674a812c2
Added a Download button in the PDF viewer toolbar
Alain Mazy <am@orthanc.team>
parents:
2163
diff
changeset
|
103 |
952674a812c2
Added a Download button in the PDF viewer toolbar
Alain Mazy <am@orthanc.team>
parents:
2163
diff
changeset
|
104 document.body.appendChild(a); |
952674a812c2
Added a Download button in the PDF viewer toolbar
Alain Mazy <am@orthanc.team>
parents:
2163
diff
changeset
|
105 a.click(); |
952674a812c2
Added a Download button in the PDF viewer toolbar
Alain Mazy <am@orthanc.team>
parents:
2163
diff
changeset
|
106 document.body.removeChild(a); |
952674a812c2
Added a Download button in the PDF viewer toolbar
Alain Mazy <am@orthanc.team>
parents:
2163
diff
changeset
|
107 |
952674a812c2
Added a Download button in the PDF viewer toolbar
Alain Mazy <am@orthanc.team>
parents:
2163
diff
changeset
|
108 // Revoke the object URL to free up memory |
952674a812c2
Added a Download button in the PDF viewer toolbar
Alain Mazy <am@orthanc.team>
parents:
2163
diff
changeset
|
109 URL.revokeObjectURL(blobUrl); |
952674a812c2
Added a Download button in the PDF viewer toolbar
Alain Mazy <am@orthanc.team>
parents:
2163
diff
changeset
|
110 } |
952674a812c2
Added a Download button in the PDF viewer toolbar
Alain Mazy <am@orthanc.team>
parents:
2163
diff
changeset
|
111 }, |
2163
0a2b450cec3a
Added a Print button in the PDF viewer toolbar
Alain Mazy <am@orthanc.team>
parents:
2124
diff
changeset
|
112 Print: function() { |
0a2b450cec3a
Added a Print button in the PDF viewer toolbar
Alain Mazy <am@orthanc.team>
parents:
2124
diff
changeset
|
113 if (this.pdfDoc !== null) { |
0a2b450cec3a
Added a Print button in the PDF viewer toolbar
Alain Mazy <am@orthanc.team>
parents:
2124
diff
changeset
|
114 if (0) { // works on Chrome but with a popup that is blocked by default ! |
0a2b450cec3a
Added a Print button in the PDF viewer toolbar
Alain Mazy <am@orthanc.team>
parents:
2124
diff
changeset
|
115 const blob = new Blob([this.pdf], { type: 'application/pdf'}); |
0a2b450cec3a
Added a Print button in the PDF viewer toolbar
Alain Mazy <am@orthanc.team>
parents:
2124
diff
changeset
|
116 const blobUrl = URL.createObjectURL(blob); |
0a2b450cec3a
Added a Print button in the PDF viewer toolbar
Alain Mazy <am@orthanc.team>
parents:
2124
diff
changeset
|
117 |
0a2b450cec3a
Added a Print button in the PDF viewer toolbar
Alain Mazy <am@orthanc.team>
parents:
2124
diff
changeset
|
118 let w = window.open(blobUrl, '_blank'); |
0a2b450cec3a
Added a Print button in the PDF viewer toolbar
Alain Mazy <am@orthanc.team>
parents:
2124
diff
changeset
|
119 w.print(); |
0a2b450cec3a
Added a Print button in the PDF viewer toolbar
Alain Mazy <am@orthanc.team>
parents:
2124
diff
changeset
|
120 } else { |
0a2b450cec3a
Added a Print button in the PDF viewer toolbar
Alain Mazy <am@orthanc.team>
parents:
2124
diff
changeset
|
121 // Let's open a new window with the pdf |
0a2b450cec3a
Added a Print button in the PDF viewer toolbar
Alain Mazy <am@orthanc.team>
parents:
2124
diff
changeset
|
122 // First we need to convert the pdf from a byte array to a binary string and then to b64 |
0a2b450cec3a
Added a Print button in the PDF viewer toolbar
Alain Mazy <am@orthanc.team>
parents:
2124
diff
changeset
|
123 let binaryStringPdf = ''; |
0a2b450cec3a
Added a Print button in the PDF viewer toolbar
Alain Mazy <am@orthanc.team>
parents:
2124
diff
changeset
|
124 for (let i = 0; i < this.pdf.length; i++) { |
0a2b450cec3a
Added a Print button in the PDF viewer toolbar
Alain Mazy <am@orthanc.team>
parents:
2124
diff
changeset
|
125 binaryStringPdf += String.fromCharCode(this.pdf[i]); |
0a2b450cec3a
Added a Print button in the PDF viewer toolbar
Alain Mazy <am@orthanc.team>
parents:
2124
diff
changeset
|
126 } |
0a2b450cec3a
Added a Print button in the PDF viewer toolbar
Alain Mazy <am@orthanc.team>
parents:
2124
diff
changeset
|
127 |
0a2b450cec3a
Added a Print button in the PDF viewer toolbar
Alain Mazy <am@orthanc.team>
parents:
2124
diff
changeset
|
128 const htmlContent = '<html><body style="margin: 0;"><embed width="100%" height="100%" src="data:application/pdf;base64,' + btoa(binaryStringPdf) + '" type="application/pdf" /></body></html>'; |
0a2b450cec3a
Added a Print button in the PDF viewer toolbar
Alain Mazy <am@orthanc.team>
parents:
2124
diff
changeset
|
129 |
0a2b450cec3a
Added a Print button in the PDF viewer toolbar
Alain Mazy <am@orthanc.team>
parents:
2124
diff
changeset
|
130 let w = window.open('', '_blank'); |
0a2b450cec3a
Added a Print button in the PDF viewer toolbar
Alain Mazy <am@orthanc.team>
parents:
2124
diff
changeset
|
131 w.document.write(htmlContent); |
0a2b450cec3a
Added a Print button in the PDF viewer toolbar
Alain Mazy <am@orthanc.team>
parents:
2124
diff
changeset
|
132 } |
0a2b450cec3a
Added a Print button in the PDF viewer toolbar
Alain Mazy <am@orthanc.team>
parents:
2124
diff
changeset
|
133 } |
0a2b450cec3a
Added a Print button in the PDF viewer toolbar
Alain Mazy <am@orthanc.team>
parents:
2124
diff
changeset
|
134 }, |
1652
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
135 NextPage: function() { |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
136 if (this.pdfDoc !== null && |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
137 this.currentPage < this.pdfDoc.numPages) { |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
138 this.QueueRenderPage(this.currentPage + 1); |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
139 } |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
140 }, |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
141 PreviousPage: function() { |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
142 if (this.pdfDoc !== null && |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
143 this.currentPage > 1) { |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
144 this.QueueRenderPage(this.currentPage - 1); |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
145 } |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
146 }, |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
147 FitWidth: function() { |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
148 if (this.pdfDoc !== null) { |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
149 var that = this; |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
150 this.pdfDoc.getPage(this.currentPage).then(function(page) { |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
151 // https://github.com/mozilla/pdf.js/issues/5628 |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
152 // https://stackoverflow.com/a/21064102/881731 |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
153 // https://stackoverflow.com/a/60008044/881731 |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
154 var scrollbarWidth = window.innerWidth - document.body.clientWidth + FIT_MARGIN; |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
155 that.scale = (that.container.offsetWidth - scrollbarWidth) / page.getViewport({ scale: 1.0 }).width; |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
156 that.QueueRenderPage(that.currentPage); |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
157 }); |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
158 } |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
159 }, |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
160 FitHeight: function() { |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
161 if (this.pdfDoc !== null) { |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
162 var that = this; |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
163 this.pdfDoc.getPage(this.currentPage).then(function(page) { |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
164 // The computation below assumes that "line-height: 0px" CSS |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
165 // on the parent element of the canvas. |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
166 |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
167 // https://github.com/mozilla/pdf.js/issues/5628 |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
168 var scrollbarHeight = window.innerHeight - document.body.clientHeight + FIT_MARGIN; |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
169 that.scale = (that.container.offsetHeight - scrollbarHeight) / page.getViewport({ scale: 1.0 }).height; |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
170 that.QueueRenderPage(that.currentPage); |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
171 }); |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
172 } |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
173 }, |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
174 ZoomIn: function() { |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
175 this.scale *= ZOOM_FACTOR; |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
176 this.QueueRenderPage(this.currentPage); |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
177 }, |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
178 ZoomOut: function() { |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
179 this.scale /= ZOOM_FACTOR; |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
180 this.QueueRenderPage(this.currentPage); |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
181 }, |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
182 LoadPdf: function(pdf) { |
1657
66e5fcdf5597
pdf viewer is working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1652
diff
changeset
|
183 if (!this.isRendering && |
66e5fcdf5597
pdf viewer is working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1652
diff
changeset
|
184 pdf.length > 0) { |
66e5fcdf5597
pdf viewer is working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1652
diff
changeset
|
185 this.pdf = pdf; |
66e5fcdf5597
pdf viewer is working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1652
diff
changeset
|
186 this.isRendering = true; |
66e5fcdf5597
pdf viewer is working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1652
diff
changeset
|
187 |
66e5fcdf5597
pdf viewer is working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1652
diff
changeset
|
188 var that = this; |
66e5fcdf5597
pdf viewer is working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1652
diff
changeset
|
189 pdfjsLib.getDocument(this.pdf).promise.then(function(pdfDoc_) { |
66e5fcdf5597
pdf viewer is working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1652
diff
changeset
|
190 that.pdfDoc = pdfDoc_; |
66e5fcdf5597
pdf viewer is working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1652
diff
changeset
|
191 that.currentPage = 1; |
66e5fcdf5597
pdf viewer is working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1652
diff
changeset
|
192 that.countPages = pdfDoc_.numPages; |
66e5fcdf5597
pdf viewer is working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1652
diff
changeset
|
193 that.scale = 1; |
66e5fcdf5597
pdf viewer is working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1652
diff
changeset
|
194 that.isRendering = false; |
66e5fcdf5597
pdf viewer is working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1652
diff
changeset
|
195 that.pageNumPending = null; |
66e5fcdf5597
pdf viewer is working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1652
diff
changeset
|
196 |
66e5fcdf5597
pdf viewer is working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1652
diff
changeset
|
197 // Initial/first page rendering, after fitting the PDF to the available viewport |
66e5fcdf5597
pdf viewer is working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1652
diff
changeset
|
198 that.FitHeight(); |
66e5fcdf5597
pdf viewer is working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1652
diff
changeset
|
199 }); |
66e5fcdf5597
pdf viewer is working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1652
diff
changeset
|
200 } |
1652
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
201 }, |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
202 RenderPage: function(pageNum) { |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
203 var that = this; |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
204 |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
205 if (this.pdfDoc !== null && |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
206 pageNum >= 1 && |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
207 pageNum <= this.countPages) { |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
208 this.isRendering = true; |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
209 this.pdfDoc.getPage(pageNum).then(function(page) { |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
210 var viewport = page.getViewport({scale: that.scale}); |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
211 |
1661
e4589378ad8b
warning message about unsupported videos
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1657
diff
changeset
|
212 that.canvas.style['background-color'] = 'white'; // avoids flickering while the page changes |
1652
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
213 that.canvas.height = viewport.height; |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
214 that.canvas.width = viewport.width; |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
215 |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
216 // Horizontal centering of the canvas. This requires CSS |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
217 // "position: relative" on the canvas element. |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
218 if (that.canvas.width < that.container.clientWidth) { |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
219 that.canvas.style.left = Math.floor((that.container.clientWidth - viewport.width) / 2) + 'px'; |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
220 } else { |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
221 that.canvas.style.left = '0px'; |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
222 } |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
223 |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
224 // Render PDF page into canvas context |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
225 var renderContext = { |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
226 canvasContext: that.ctx, |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
227 viewport: viewport |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
228 }; |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
229 |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
230 var renderTask = page.render(renderContext); |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
231 |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
232 // Wait for rendering to finish |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
233 renderTask.promise.then(function() { |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
234 that.isRendering = false; |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
235 that.currentPage = pageNum; |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
236 if (that.pageNumPending !== null) { |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
237 // New page rendering is pending |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
238 that.currentPage = that.pageNumPending; |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
239 that.pageNumPending = null; |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
240 that.RenderPage(); |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
241 } |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
242 }); |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
243 }); |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
244 } |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
245 }, |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
246 QueueRenderPage: function(pageNum) { |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
247 if (this.isRendering) { |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
248 this.pageNumPending = pageNum; |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
249 } else { |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
250 this.RenderPage(pageNum); |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
251 } |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
252 }, |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
253 MouseWheel: function(event) { |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
254 if (event.ctrlKey) { |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
255 if (event.deltaY < 0) { |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
256 this.ZoomIn(); |
1657
66e5fcdf5597
pdf viewer is working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1652
diff
changeset
|
257 event.preventDefault(); |
1652
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
258 } else if (event.deltaY > 0) { |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
259 this.ZoomOut(); |
1657
66e5fcdf5597
pdf viewer is working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1652
diff
changeset
|
260 event.preventDefault(); |
1652
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
261 } |
1657
66e5fcdf5597
pdf viewer is working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1652
diff
changeset
|
262 } else if (!event.shiftKey && |
66e5fcdf5597
pdf viewer is working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1652
diff
changeset
|
263 !event.altKey && |
66e5fcdf5597
pdf viewer is working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1652
diff
changeset
|
264 !event.metaKey) { |
66e5fcdf5597
pdf viewer is working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1652
diff
changeset
|
265 // Is the vertical scrollbar hidden? |
66e5fcdf5597
pdf viewer is working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1652
diff
changeset
|
266 // https://stackoverflow.com/a/4814526/881731 |
66e5fcdf5597
pdf viewer is working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1652
diff
changeset
|
267 if (this.container.scrollHeight <= this.container.clientHeight) { |
66e5fcdf5597
pdf viewer is working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1652
diff
changeset
|
268 if (event.deltaY < 0) { |
66e5fcdf5597
pdf viewer is working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1652
diff
changeset
|
269 this.PreviousPage(); |
66e5fcdf5597
pdf viewer is working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1652
diff
changeset
|
270 event.preventDefault(); |
66e5fcdf5597
pdf viewer is working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1652
diff
changeset
|
271 } else if (event.deltaY > 0) { |
66e5fcdf5597
pdf viewer is working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1652
diff
changeset
|
272 this.NextPage(); |
66e5fcdf5597
pdf viewer is working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1652
diff
changeset
|
273 event.preventDefault(); |
66e5fcdf5597
pdf viewer is working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1652
diff
changeset
|
274 } |
66e5fcdf5597
pdf viewer is working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1652
diff
changeset
|
275 } |
1652
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
276 } |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
277 } |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
278 } |
fa9e6bf84958
integrating pdf.js into Stone Web viewer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
279 }); |