diff --git a/PDFjs/main.css b/PDFjs/main.css
index 8ede8dc..beaef2a 100644
--- a/PDFjs/main.css
+++ b/PDFjs/main.css
@@ -29,5 +29,19 @@
*/
.ApplicationPDFjsWindow gui-container {
- background : #fff;
+ overflow: auto;
+ padding-top: 6px;
+ padding-bottom: 6px;
+ position: absolute;
+ top: 32px;
+ right: 0;
+ bottom: 32px;
+ left: 0;
+ text-align: center;
+ background-color: #888;
+ background-image: url(texture.png);
+}
+.ApplicationPDFjsWindow canvas {
+ text-align: center;
+ box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
}
diff --git a/PDFjs/main.js b/PDFjs/main.js
index f390e9f..542b522 100644
--- a/PDFjs/main.js
+++ b/PDFjs/main.js
@@ -57,6 +57,7 @@
ApplicationPDFjsWindow.prototype.init = function(wmRef, app, scheme) {
var root = DefaultApplicationWindow.prototype.init.apply(this, arguments);
var self = this;
+
// Load and set up scheme (GUI) here
scheme.render(this, 'PDFWindow', root);
@@ -73,6 +74,24 @@
scheme.find(this, 'Out').on('click', function() {
self.zoomOut();
});
+ scheme.find(this, 'Print').on('click', function() {
+ self.printDocument();
+ });
+ scheme.find(this, 'First').on('click', function() {
+ self.firstPage();
+ });
+ scheme.find(this, 'Last').on('click', function() {
+ self.lastPage();
+ });
+ scheme.find(this, 'pageNumber').on('enter', function() {
+ self.changePage();
+ });
+ scheme.find(this, 'Fullscreen').on('click', function() {
+ self.fullScreenMode();
+ });
+ document.getElementById('canvas').addEventListener('wheel', function(){
+ self.pageScroll();
+ });
return root;
};
@@ -93,22 +112,23 @@
}
var container = this._scheme.find(this, 'Content').$element;
- Utils.$empty(container);
+ //Utils.$empty(container);
this.pageIndex = pageNum;
- var statustext = Utils.format('Page {0}/{1} - {2}%', this.pageIndex, this.pageCount, this.currentScale*100);
+ var statustext = Utils.format(' - {0}%', this.currentScale*100);
+ var pageNumber = Utils.format('{0}/{1}', this.pageIndex, this.pageCount);
this._scheme.find(this, 'Statusbar').set('value', statustext);
+ this._scheme.find(this, 'pageNumber').set('value', pageNumber);
this.pdf.getPage(this.pageIndex).then(function getPageHelloWorld(page) {
var scale = self.currentScale;
var viewport = page.getViewport(scale);
- var canvas = document.createElement('canvas');
+ var canvas = document.getElementById('canvas');
var context = canvas.getContext('2d');
canvas.height = viewport.height;
canvas.width = viewport.width;
-
- container.appendChild(canvas);
+ context.clearRect(0, 0, viewport.width, viewport.height);
var renderContext = {
canvasContext: context,
@@ -137,12 +157,65 @@
}
this.page(this.pageIndex);
};
+
+ ApplicationPDFjsWindow.prototype.printDocument = function() {
+ var canvas = document.getElementById("canvas");
+ var img = canvas.toDataURL("image/png");
+ window.frames["print_frame"].document.body.innerHTML= '
';
+ window.frames["print_frame"].window.focus();
+ window.frames["print_frame"].window.print();
+ };
+
+ ApplicationPDFjsWindow.prototype.firstPage = function() {
+ this.page(1);
+ };
+
+ ApplicationPDFjsWindow.prototype.lastPage = function() {
+ this.page(this.pageCount);
+ };
+
+ ApplicationPDFjsWindow.prototype.changePage = function() {
+ var pageNumber = Number(this._scheme.find(this, 'pageNumber').get('value'));
+ if ( Math.floor(pageNumber) == pageNumber && pageNumber > 0 ) {
+ if( pageNumber <= this.pageCount ) {
+ this.page(pageNumber);
+ } else {
+ API.createDialog('Alert', {
+ message: 'The page number \''+ pageNumber +'\' you inputted cannot be found in this document.'
+ }, null, this);
+ var _pageNumber = Utils.format('{0}/{1}', this.pageIndex, this.pageCount);
+ this._scheme.find(this, 'pageNumber').set('value', _pageNumber);
+ }
+ } else {
+ var _pageNumber = Utils.format('{0}/{1}', this.pageIndex, this.pageCount);
+ this._scheme.find(this, 'pageNumber').set('value', _pageNumber);
+ }
+ };
+
+ ApplicationPDFjsWindow.prototype.fullScreenMode = function() {
+ var content = document.getElementById("canvas");
+ screenfull.request(content);
+ };
+
+ ApplicationPDFjsWindow.prototype.pageScroll = function() {
+ var delta = 0;
+ if (!event)
+ event = window.event;
+ if (event.wheelDelta) {
+ delta = event.wheelDelta/120;
+ } else if (event.detail) {
+ delta = -event.detail/3;
+ }
+ console.log(delta);
+ if ( delta > 0 ) this.page(this.pageIndex-1);
+ else this.page(this.pageIndex+1);
+ };
ApplicationPDFjsWindow.prototype.showFile = function(file, result) {
var self = this;
var container = this._scheme.find(this, 'Content').$element;
- Utils.$empty(container);
+ //Utils.$empty(container);
this.pageCount = 0;
this.pageIndex = 0;
diff --git a/PDFjs/metadata.json b/PDFjs/metadata.json
index d9a2c60..526f28f 100644
--- a/PDFjs/metadata.json
+++ b/PDFjs/metadata.json
@@ -16,6 +16,7 @@
},
"preload": [
{"src": "vendor/pdf.js/build/pdf.js", "type": "javascript"},
+ {"src": "vendor/fullscreen.js/screenfull.min.js", "type": "javascript"},
{"src": "main.js", "type": "javascript"},
{"src": "main.css", "type": "stylesheet"}
]
diff --git a/PDFjs/scheme.html b/PDFjs/scheme.html
index ac9cc03..e2caff5 100644
--- a/PDFjs/scheme.html
+++ b/PDFjs/scheme.html
@@ -1,4 +1,4 @@
-
+
@@ -18,11 +18,17 @@
+
+
+
-
+
+
+
+
@@ -30,15 +36,19 @@
+
-
+
+ 0
+
-
+
+
diff --git a/PDFjs/vendor/fullscreen.js/screenfull.min.js b/PDFjs/vendor/fullscreen.js/screenfull.min.js
new file mode 100644
index 0000000..b342d1a
--- /dev/null
+++ b/PDFjs/vendor/fullscreen.js/screenfull.min.js
@@ -0,0 +1,6 @@
+/*!
+* screenfull
+* v3.0.0 - 2015-11-24
+* (c) Sindre Sorhus; MIT License
+*/
+!function(){"use strict";var a="undefined"!=typeof module&&module.exports,b="undefined"!=typeof Element&&"ALLOW_KEYBOARD_INPUT"in Element,c=function(){for(var a,b,c=[["requestFullscreen","exitFullscreen","fullscreenElement","fullscreenEnabled","fullscreenchange","fullscreenerror"],["webkitRequestFullscreen","webkitExitFullscreen","webkitFullscreenElement","webkitFullscreenEnabled","webkitfullscreenchange","webkitfullscreenerror"],["webkitRequestFullScreen","webkitCancelFullScreen","webkitCurrentFullScreenElement","webkitCancelFullScreen","webkitfullscreenchange","webkitfullscreenerror"],["mozRequestFullScreen","mozCancelFullScreen","mozFullScreenElement","mozFullScreenEnabled","mozfullscreenchange","mozfullscreenerror"],["msRequestFullscreen","msExitFullscreen","msFullscreenElement","msFullscreenEnabled","MSFullscreenChange","MSFullscreenError"]],d=0,e=c.length,f={};e>d;d++)if(a=c[d],a&&a[1]in document){for(d=0,b=a.length;b>d;d++)f[c[0][d]]=a[d];return f}return!1}(),d={request:function(a){var d=c.requestFullscreen;a=a||document.documentElement,/5\.1[\.\d]* Safari/.test(navigator.userAgent)?a[d]():a[d](b&&Element.ALLOW_KEYBOARD_INPUT)},exit:function(){document[c.exitFullscreen]()},toggle:function(a){this.isFullscreen?this.exit():this.request(a)},raw:c};return c?(Object.defineProperties(d,{isFullscreen:{get:function(){return Boolean(document[c.fullscreenElement])}},element:{enumerable:!0,get:function(){return document[c.fullscreenElement]}},enabled:{enumerable:!0,get:function(){return Boolean(document[c.fullscreenEnabled])}}}),void(a?module.exports=d:window.screenfull=d)):void(a?module.exports=!1:window.screenfull=!1)}();
\ No newline at end of file
diff --git a/PDFjs/vendor/pdf.js b/PDFjs/vendor/pdf.js
index 8623421..a0a6e6d 160000
--- a/PDFjs/vendor/pdf.js
+++ b/PDFjs/vendor/pdf.js
@@ -1 +1 @@
-Subproject commit 862342189fb1911395d0cc43db083726203c4a88
+Subproject commit a0a6e6d688bd43c0ba680025702d1b7228f4c89c