]> git.parisson.com Git - pdf.js.git/commitdiff
Fixes test driver and examples
authorYury Delendik <ydelendik@mozilla.com>
Thu, 12 Apr 2012 15:23:38 +0000 (08:23 -0700)
committerYury Delendik <ydelendik@mozilla.com>
Thu, 12 Apr 2012 15:23:38 +0000 (08:23 -0700)
examples/acroforms/forms.js
examples/acroforms/index.html
examples/helloworld/hello.js
examples/helloworld/index.html
src/util.js
test/driver.js

index 6ec92766d989fb8c7142c2696cdbd12ea0c6c087..868825fc7f0997c240a1001cd46238cb5371bff9 100644 (file)
@@ -9,7 +9,7 @@
 
 var formFields = {};
 
-function setupForm(div, content, scale) {
+function setupForm(div, content, viewport) {
   function bindInputItem(input, item) {
     if (input.name in formFields) {
       var value = formFields[input.name];
@@ -27,16 +27,20 @@ function setupForm(div, content, scale) {
   }
   function createElementWithStyle(tagName, item) {
     var element = document.createElement(tagName);
-    element.style.left = (item.x * scale) + 'px';
-    element.style.top = (item.y * scale) + 'px';
-    element.style.width = Math.ceil(item.width * scale) + 'px';
-    element.style.height = Math.ceil(item.height * scale) + 'px';
+    var rect = Util.normalizeRect(
+      viewport.convertToViewportRectangle(item.rect));
+    element.style.left = Math.floor(rect[0]) + 'px';
+    element.style.top = Math.floor(rect[1]) + 'px';
+    element.style.width = Math.ceil(rect[2] - rect[0]) + 'px';
+    element.style.height = Math.ceil(rect[3] - rect[1]) + 'px';
     return element;
   }
   function assignFontStyle(element, item) {
     var fontStyles = '';
-    if ('fontSize' in item)
-      fontStyles += 'font-size: ' + Math.round(item.fontSize * scale) + 'px;';
+    if ('fontSize' in item) {
+      fontStyles += 'font-size: ' + Math.round(item.fontSize *
+        viewport.fontScale) + 'px;';
+    }
     switch (item.textAlignment) {
       case 0:
         fontStyles += 'text-align: left;';
@@ -51,83 +55,88 @@ function setupForm(div, content, scale) {
     element.setAttribute('style', element.getAttribute('style') + fontStyles);
   }
 
-  var items = content.getAnnotations();
-  for (var i = 0; i < items.length; i++) {
-    var item = items[i];
-    switch (item.type) {
-      case 'Widget':
-        if (item.fieldType != 'Tx' && item.fieldType != 'Btn' &&
-            item.fieldType != 'Ch')
-          break;
-        var inputDiv = createElementWithStyle('div', item);
-        inputDiv.className = 'inputHint';
-        div.appendChild(inputDiv);
-        var input;
-        if (item.fieldType == 'Tx') {
-          input = createElementWithStyle('input', item);
-        }
-        if (item.fieldType == 'Btn') {
-          input = createElementWithStyle('input', item);
-          if (item.flags & 32768) {
-            input.type = 'radio';
-             // radio button is not supported
-          } else if (item.flags & 65536) {
-            input.type = 'button';
-            // pushbutton is not supported
-          } else {
-            input.type = 'checkbox';
+  content.getAnnotations().then(function(items) {
+    for (var i = 0; i < items.length; i++) {
+      var item = items[i];
+      switch (item.type) {
+        case 'Widget':
+          if (item.fieldType != 'Tx' && item.fieldType != 'Btn' &&
+              item.fieldType != 'Ch')
+            break;
+          var inputDiv = createElementWithStyle('div', item);
+          inputDiv.className = 'inputHint';
+          div.appendChild(inputDiv);
+          var input;
+          if (item.fieldType == 'Tx') {
+            input = createElementWithStyle('input', item);
           }
-        }
-        if (item.fieldType == 'Ch') {
-          input = createElementWithStyle('select', item);
-          // select box is not supported
-        }
-        input.className = 'inputControl';
-        input.name = item.fullName;
-        input.title = item.alternativeText;
-        assignFontStyle(input, item);
-        bindInputItem(input, item);
-        div.appendChild(input);
-        break;
+          if (item.fieldType == 'Btn') {
+            input = createElementWithStyle('input', item);
+            if (item.flags & 32768) {
+              input.type = 'radio';
+               // radio button is not supported
+            } else if (item.flags & 65536) {
+              input.type = 'button';
+              // pushbutton is not supported
+            } else {
+              input.type = 'checkbox';
+            }
+          }
+          if (item.fieldType == 'Ch') {
+            input = createElementWithStyle('select', item);
+            // select box is not supported
+          }
+          input.className = 'inputControl';
+          input.name = item.fullName;
+          input.title = item.alternativeText;
+          assignFontStyle(input, item);
+          bindInputItem(input, item);
+          div.appendChild(input);
+          break;
+      }
     }
-  }
+  });
 }
 
 function renderPage(div, pdf, pageNumber, callback) {
-  var page = pdf.getPage(pageNumber);
-  var scale = 1.5;
+  pdf.getPage(pageNumber).then(function(page) {
+    var scale = 1.5;
+    var viewport = page.getViewport(scale);
 
-  var pageDisplayWidth = page.width * scale;
-  var pageDisplayHeight = page.height * scale;
+    var pageDisplayWidth = viewport.width;
+    var pageDisplayHeight = viewport.height;
 
-  var pageDivHolder = document.createElement('div');
-  pageDivHolder.className = 'pdfpage';
-  pageDivHolder.style.width = pageDisplayWidth + 'px';
-  pageDivHolder.style.height = pageDisplayHeight + 'px';
-  div.appendChild(pageDivHolder);
+    var pageDivHolder = document.createElement('div');
+    pageDivHolder.className = 'pdfpage';
+    pageDivHolder.style.width = pageDisplayWidth + 'px';
+    pageDivHolder.style.height = pageDisplayHeight + 'px';
+    div.appendChild(pageDivHolder);
 
-  // Prepare canvas using PDF page dimensions
-  var canvas = document.createElement('canvas');
-  var context = canvas.getContext('2d');
-  canvas.width = pageDisplayWidth;
-  canvas.height = pageDisplayHeight;
-  pageDivHolder.appendChild(canvas);
+    // Prepare canvas using PDF page dimensions
+    var canvas = document.createElement('canvas');
+    var context = canvas.getContext('2d');
+    canvas.width = pageDisplayWidth;
+    canvas.height = pageDisplayHeight;
+    pageDivHolder.appendChild(canvas);
 
 
-  // Render PDF page into canvas context
-  page.startRendering(context, callback);
+    // Render PDF page into canvas context
+    var renderContext = {
+      canvasContext: context,
+      viewport: viewport
+    };
+    page.render(renderContext).then(callback);
 
-  // Prepare and populate form elements layer
-  var formDiv = document.createElement('div');
-  pageDivHolder.appendChild(formDiv);
+    // Prepare and populate form elements layer
+    var formDiv = document.createElement('div');
+    pageDivHolder.appendChild(formDiv);
 
-  setupForm(formDiv, page, scale);
+    setupForm(formDiv, page, viewport);
+  });
 }
 
-PDFJS.getPdf(pdfWithFormsPath, function getPdfForm(data) {
-  // Instantiate PDFDoc with PDF data
-  var pdf = new PDFJS.PDFDoc(data);
-  
+// Fetch the PDF document from the URL using promices
+PDFJS.getDocument(pdfWithFormsPath).then(function getPdfForm(pdf) {
   // Rendering all pages starting from first
   var viewer = document.getElementById('viewer');
   var pageNumber = 1;
index 8a9053f783f82888adc83bd5418b782a2d40ecf2..858ad649f29dd95e9c42f287180ddc746fbaffa0 100644 (file)
@@ -6,6 +6,7 @@
   <!-- In production, change the content of PDFJS.workerSrc below -->
   <script type="text/javascript" src="../../src/core.js"></script>
   <script type="text/javascript" src="../../src/util.js"></script>
+  <script type="text/javascript" src="../../src/api.js"></script>
   <script type="text/javascript" src="../../src/canvas.js"></script>
   <script type="text/javascript" src="../../src/obj.js"></script>
   <script type="text/javascript" src="../../src/function.js"></script>
index 45e61eb6fad91721f305f47dd6efb16aba6143d6..7bf18d65b63139cb651c4c391fbac3bbe80d38eb 100644 (file)
@@ -7,25 +7,31 @@
 
 'use strict';
 
-PDFJS.getPdf('helloworld.pdf', function getPdfHelloWorld(data) {
-  //
-  // Instantiate PDFDoc with PDF data
-  //
-  var pdf = new PDFJS.PDFDoc(data);
-  var page = pdf.getPage(1);
-  var scale = 1.5;
+//
+// Fetch the PDF document from the URL using promices
+//
+PDFJS.getDocument('helloworld.pdf').then(function(pdf) {
+  // Using promise to fetch the page
+  pdf.getPage(1).then(function(page) {
+    var scale = 1.5;
+    var viewport = page.getViewport(scale);
 
-  //
-  // Prepare canvas using PDF page dimensions
-  //
-  var canvas = document.getElementById('the-canvas');
-  var context = canvas.getContext('2d');
-  canvas.height = page.height * scale;
-  canvas.width = page.width * scale;
+    //
+    // Prepare canvas using PDF page dimensions
+    //
+    var canvas = document.getElementById('the-canvas');
+    var context = canvas.getContext('2d');
+    canvas.height = viewport.height;
+    canvas.width = viewport.width;
 
-  //
-  // Render PDF page into canvas context
-  //
-  page.startRendering(context);
+    //
+    // Render PDF page into canvas context
+    //
+    var renderContext = {
+      canvasContext: context,
+      viewport: viewport
+    };
+    page.render(renderContext);
+  });
 });
 
index c6af616e6df98065226038796dd40a562c0daf72..c9df98809bf8b8e8dffb6e0f6e2cdda0ec65c6f7 100644 (file)
@@ -6,6 +6,7 @@
   <!-- In production, change the content of PDFJS.workerSrc below -->
   <script type="text/javascript" src="../../src/core.js"></script>
   <script type="text/javascript" src="../../src/util.js"></script>
+  <script type="text/javascript" src="../../src/api.js"></script>
   <script type="text/javascript" src="../../src/canvas.js"></script>
   <script type="text/javascript" src="../../src/obj.js"></script>
   <script type="text/javascript" src="../../src/function.js"></script>
index 390b0842799fb794452d77b7576706b61a72317c..6ec4bc9cba75d6a0b830e10f81c0ee5c31e299e2 100644 (file)
@@ -242,6 +242,7 @@ var PageViewport = PDFJS.PageViewport = (function PageViewportClosure() {
     this.offsetY = offsetY;
     this.width = width;
     this.height = height;
+    this.fontScale = scale;
   }
   PageViewport.prototype = {
     convertToViewportPoint: function PageViewport_convertToViewportPoint(x, y) {
index 600f53c9cf50534442845358fb4c7318a83bf7bb..993a31349864adbb3341b886c8fa0adcb164d574 100644 (file)
@@ -176,11 +176,9 @@ function nextPage(task, loadError) {
       var ctx = canvas.getContext('2d');
       task.pdfDoc.getPage(task.pageNum).then(function(page) {
         var pdfToCssUnitsCoef = 96.0 / 72.0;
-        // using mediaBox for the canvas size
-        var pageWidth = page.width;
-        var pageHeight = page.height;
-        canvas.width = pageWidth * pdfToCssUnitsCoef;
-        canvas.height = pageHeight * pdfToCssUnitsCoef;
+        var viewport = page.getViewport(pdfToCssUnitsCoef);
+        canvas.width = viewport.width;
+        canvas.height = viewport.height;
         clear(ctx);
 
         // using the text layer builder that does nothing to test