summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2019-01-16 13:08:01 +0100
committerChristian Grothoff <christian@grothoff.org>2019-01-16 13:08:01 +0100
commit7adab6e80ed0a641f30634ef735bfcc10aa1685d (patch)
treee6e346870cf29f60dff236f87add038268bbb187
parent6451f976822f787b9724cc6a419fcf5ad316562d (diff)
downloadwww-7adab6e80ed0a641f30634ef735bfcc10aa1685d.tar.gz
www-7adab6e80ed0a641f30634ef735bfcc10aa1685d.tar.bz2
www-7adab6e80ed0a641f30634ef735bfcc10aa1685d.zip
fix link for tech.pdf
-rw-r--r--dist/js/pdf-view-tech.js108
1 files changed, 108 insertions, 0 deletions
diff --git a/dist/js/pdf-view-tech.js b/dist/js/pdf-view-tech.js
new file mode 100644
index 00000000..9565ed8c
--- /dev/null
+++ b/dist/js/pdf-view-tech.js
@@ -0,0 +1,108 @@
+/** This code is under the Apache License Version 2.0, January 2004
+ * http://www.apache.org/licenses/, as it is heavily based on
+ * documentation of pdf.js (which is under Apache License v2.0)
+ */
+
+PDFJS.workerSrc = '/dist/js/pdf.worker.min.js';
+
+var url = '/presentations/tech.pdf';
+
+var pdfDoc = null,
+ pageNum = 1,
+ pageRendering = false,
+ pageNumPending = null,
+ scale = 1,
+ canvasLeft = document.getElementById('the-canvas-left'),
+ canvasRight = document.getElementById('the-canvas-right');
+
+/**
+ * Get page info from document, resize canvas accordingly, and render page.
+ * @param num Page number.
+ */
+function renderPage(canvas,num) {
+ pageRendering = true;
+ // Using promise to fetch the page
+ pdfDoc.getPage(num).then(function(page) {
+ var viewport = page.getViewport(scale);
+ canvas.height = viewport.height;
+ canvas.width = viewport.width;
+
+ // Render PDF page into canvas context
+ var renderContext = {
+ canvasContext: canvas.getContext('2d'),
+ viewport: viewport
+ };
+ var renderTask = page.render(renderContext);
+
+ // Wait for rendering to finish
+ renderTask.promise.then(function() {
+ pageRendering = false;
+ if (pageNumPending !== null) {
+ // New page rendering is pending
+ renderPage(pageNumPending);
+ pageNumPending = null;
+ }
+ });
+ });
+}
+
+/**
+ * If another page rendering in progress, waits until the rendering is
+ * finised. Otherwise, executes rendering immediately.
+ */
+function queueRenderPage(num) {
+ if (pageRendering) {
+ pageNumPending = num;
+ } else {
+ renderPage(canvasLeft,num);
+ renderPage(canvasRight,num+1);
+ }
+}
+
+/**
+ * Displays previous page.
+ */
+function onPrevPage(event) {
+ event.preventDefault();
+ if (pageNum <= 1) {
+ return;
+ }
+ pageNum--;
+ queueRenderPage(pageNum);
+}
+document.getElementById('canvas-left').addEventListener('click', onPrevPage);
+
+/**
+ * Displays next page.
+ */
+function onNextPage(event) {
+ event.preventDefault();
+ if (pageNum >= pdfDoc.numPages - 1) {
+ return;
+ }
+ pageNum++;
+ queueRenderPage(pageNum);
+}
+document.getElementById('canvas-right').addEventListener('click', onNextPage);
+
+document.getElementById('canvas-left').style.display = 'block';
+document.getElementById('canvas-right').style.display = 'block';
+
+
+function onMouseDown(event) {
+ event.preventDefault();
+}
+
+document.getElementById('canvas-left').addEventListener('mousedown', onMouseDown);
+document.getElementById('canvas-right').addEventListener('mousedown', onMouseDown);
+
+/**
+ * Asynchronously downloads PDF.
+ */
+PDFJS.getDocument(url).then(function(pdfDoc_) {
+ pdfDoc = pdfDoc_;
+
+ // Initial/first page rendering
+ renderPage(canvasLeft,pageNum);
+ renderPage(canvasRight,pageNum + 1);
+});