aboutsummaryrefslogtreecommitdiff
path: root/ps/in/europe/pdf.viewer.js
diff options
context:
space:
mode:
Diffstat (limited to 'ps/in/europe/pdf.viewer.js')
-rw-r--r--ps/in/europe/pdf.viewer.js93
1 files changed, 93 insertions, 0 deletions
diff --git a/ps/in/europe/pdf.viewer.js b/ps/in/europe/pdf.viewer.js
new file mode 100644
index 0000000..b0cf96e
--- /dev/null
+++ b/ps/in/europe/pdf.viewer.js
@@ -0,0 +1,93 @@
+var url="PUBLIC.v3.pdf"
+
+//PDFJS.workerSrc = '//mozilla.github.io/pdf.js/build/pdf.worker.js';
+PDFJS.workerSrc = 'pdf.worker.js';
+
+var pdfDoc = null,
+ pageNum = 1,
+ pageRendering = false,
+ pageNumPending = null,
+ scale = 1,
+ canvas = document.getElementById('the-canvas'),
+ ctx = canvas.getContext('2d');
+
+/**
+ * Get page info from document, resize canvas accordingly, and render page.
+ * @param num Page number.
+ */
+function renderPage(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: ctx,
+ 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;
+ }
+ });
+ });
+
+ // Update page counters
+ document.getElementById('page_num').textContent = pageNum;
+}
+
+/**
+ * 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(num);
+ }
+}
+
+/**
+ * Displays previous page.
+ */
+function onPrevPage() {
+ if (pageNum <= 1) {
+ return;
+ }
+ pageNum--;
+ queueRenderPage(pageNum);
+}
+document.getElementById('prev').addEventListener('click', onPrevPage);
+
+/**
+ * Displays next page.
+ */
+function onNextPage() {
+ if (pageNum >= pdfDoc.numPages) {
+ return;
+ }
+ pageNum++;
+ queueRenderPage(pageNum);
+}
+document.getElementById('next').addEventListener('click', onNextPage);
+
+/**
+ * Asynchronously downloads PDF.
+ */
+PDFJS.getDocument(url).then(function(pdfDoc_) {
+ pdfDoc = pdfDoc_;
+ document.getElementById('page_count').textContent = pdfDoc.numPages;
+
+ // Initial/first page rendering
+ renderPage(pageNum);
+});