From 7adab6e80ed0a641f30634ef735bfcc10aa1685d Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Wed, 16 Jan 2019 13:08:01 +0100 Subject: fix link for tech.pdf --- dist/js/pdf-view-tech.js | 108 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 108 insertions(+) create mode 100644 dist/js/pdf-view-tech.js (limited to 'dist') 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); +}); -- cgit v1.2.3