59 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			59 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
 | 
						|
/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */
 | 
						|
 | 
						|
//
 | 
						|
// See README for overview
 | 
						|
//
 | 
						|
 | 
						|
'use strict';
 | 
						|
 | 
						|
// Parse query string to extract some parameters (it can fail for some input)
 | 
						|
var query = document.location.href.replace(/^[^?]*(\?([^#]*))?(#.*)?/, '$2');
 | 
						|
var queryParams = query ? JSON.parse('{' + query.split('&').map(function (a) {
 | 
						|
  return a.split('=').map(decodeURIComponent).map(JSON.stringify).join(': ');
 | 
						|
}).join(',') + '}') : {};
 | 
						|
 | 
						|
var url = queryParams.file || '../../test/pdfs/liveprogramming.pdf';
 | 
						|
var scale = +queryParams.scale || 1.5;
 | 
						|
 | 
						|
//
 | 
						|
// Fetch the PDF document from the URL using promises
 | 
						|
//
 | 
						|
PDFJS.getDocument(url).then(function(pdf) {
 | 
						|
  var numPages = pdf.numPages;
 | 
						|
  // Using promise to fetch the page
 | 
						|
 | 
						|
  // For testing only.
 | 
						|
  var MAX_NUM_PAGES = 50;
 | 
						|
  var ii = Math.min(MAX_NUM_PAGES, numPages);
 | 
						|
 | 
						|
  var promise = Promise.resolve();
 | 
						|
  for (var i = 1; i <= ii; i++) {
 | 
						|
    var anchor = document.createElement('a');
 | 
						|
    anchor.setAttribute('name', 'page=' + i);
 | 
						|
    anchor.setAttribute('title', 'Page ' + i);
 | 
						|
    document.body.appendChild(anchor);
 | 
						|
 | 
						|
    // Using promise to fetch and render the next page
 | 
						|
    promise = promise.then(function (pageNum, anchor) {
 | 
						|
      return pdf.getPage(pageNum).then(function (page) {
 | 
						|
        var viewport = page.getViewport(scale);
 | 
						|
 | 
						|
        var container = document.createElement('div');
 | 
						|
        container.id = 'pageContainer' + pageNum;
 | 
						|
        container.className = 'pageContainer';
 | 
						|
        container.style.width = viewport.width + 'px';
 | 
						|
        container.style.height = viewport.height + 'px';
 | 
						|
        anchor.appendChild(container);
 | 
						|
 | 
						|
        return page.getOperatorList().then(function (opList) {
 | 
						|
          var svgGfx = new PDFJS.SVGGraphics(page.commonObjs, page.objs);
 | 
						|
          return svgGfx.getSVG(opList, viewport).then(function (svg) {
 | 
						|
            container.appendChild(svg);
 | 
						|
          });
 | 
						|
        });
 | 
						|
      });
 | 
						|
    }.bind(null, i, anchor));
 | 
						|
  }
 | 
						|
});
 |