Browse Source

Fixes test driver and examples

Yury Delendik 13 years ago
parent
commit
b312719d7e
  1. 149
      examples/acroforms/forms.js
  2. 1
      examples/acroforms/index.html
  3. 42
      examples/helloworld/hello.js
  4. 1
      examples/helloworld/index.html
  5. 1
      src/util.js
  6. 8
      test/driver.js

149
examples/acroforms/forms.js

@ -9,7 +9,7 @@
var formFields = {}; var formFields = {};
function setupForm(div, content, scale) { function setupForm(div, content, viewport) {
function bindInputItem(input, item) { function bindInputItem(input, item) {
if (input.name in formFields) { if (input.name in formFields) {
var value = formFields[input.name]; var value = formFields[input.name];
@ -27,16 +27,20 @@ function setupForm(div, content, scale) {
} }
function createElementWithStyle(tagName, item) { function createElementWithStyle(tagName, item) {
var element = document.createElement(tagName); var element = document.createElement(tagName);
element.style.left = (item.x * scale) + 'px'; var rect = Util.normalizeRect(
element.style.top = (item.y * scale) + 'px'; viewport.convertToViewportRectangle(item.rect));
element.style.width = Math.ceil(item.width * scale) + 'px'; element.style.left = Math.floor(rect[0]) + 'px';
element.style.height = Math.ceil(item.height * scale) + '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; return element;
} }
function assignFontStyle(element, item) { function assignFontStyle(element, item) {
var fontStyles = ''; var fontStyles = '';
if ('fontSize' in item) if ('fontSize' in item) {
fontStyles += 'font-size: ' + Math.round(item.fontSize * scale) + 'px;'; fontStyles += 'font-size: ' + Math.round(item.fontSize *
viewport.fontScale) + 'px;';
}
switch (item.textAlignment) { switch (item.textAlignment) {
case 0: case 0:
fontStyles += 'text-align: left;'; fontStyles += 'text-align: left;';
@ -51,83 +55,88 @@ function setupForm(div, content, scale) {
element.setAttribute('style', element.getAttribute('style') + fontStyles); element.setAttribute('style', element.getAttribute('style') + fontStyles);
} }
var items = content.getAnnotations(); content.getAnnotations().then(function(items) {
for (var i = 0; i < items.length; i++) { for (var i = 0; i < items.length; i++) {
var item = items[i]; var item = items[i];
switch (item.type) { switch (item.type) {
case 'Widget': case 'Widget':
if (item.fieldType != 'Tx' && item.fieldType != 'Btn' && if (item.fieldType != 'Tx' && item.fieldType != 'Btn' &&
item.fieldType != 'Ch') item.fieldType != 'Ch')
break; break;
var inputDiv = createElementWithStyle('div', item); var inputDiv = createElementWithStyle('div', item);
inputDiv.className = 'inputHint'; inputDiv.className = 'inputHint';
div.appendChild(inputDiv); div.appendChild(inputDiv);
var input; var input;
if (item.fieldType == 'Tx') { if (item.fieldType == 'Tx') {
input = createElementWithStyle('input', item); 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';
} }
} if (item.fieldType == 'Btn') {
if (item.fieldType == 'Ch') { input = createElementWithStyle('input', item);
input = createElementWithStyle('select', item); if (item.flags & 32768) {
// select box is not supported input.type = 'radio';
} // radio button is not supported
input.className = 'inputControl'; } else if (item.flags & 65536) {
input.name = item.fullName; input.type = 'button';
input.title = item.alternativeText; // pushbutton is not supported
assignFontStyle(input, item); } else {
bindInputItem(input, item); input.type = 'checkbox';
div.appendChild(input); }
break; }
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) { function renderPage(div, pdf, pageNumber, callback) {
var page = pdf.getPage(pageNumber); pdf.getPage(pageNumber).then(function(page) {
var scale = 1.5; var scale = 1.5;
var viewport = page.getViewport(scale);
var pageDisplayWidth = page.width * scale; var pageDisplayWidth = viewport.width;
var pageDisplayHeight = page.height * scale; var pageDisplayHeight = viewport.height;
var pageDivHolder = document.createElement('div'); var pageDivHolder = document.createElement('div');
pageDivHolder.className = 'pdfpage'; pageDivHolder.className = 'pdfpage';
pageDivHolder.style.width = pageDisplayWidth + 'px'; pageDivHolder.style.width = pageDisplayWidth + 'px';
pageDivHolder.style.height = pageDisplayHeight + 'px'; pageDivHolder.style.height = pageDisplayHeight + 'px';
div.appendChild(pageDivHolder); div.appendChild(pageDivHolder);
// Prepare canvas using PDF page dimensions // Prepare canvas using PDF page dimensions
var canvas = document.createElement('canvas'); var canvas = document.createElement('canvas');
var context = canvas.getContext('2d'); var context = canvas.getContext('2d');
canvas.width = pageDisplayWidth; canvas.width = pageDisplayWidth;
canvas.height = pageDisplayHeight; canvas.height = pageDisplayHeight;
pageDivHolder.appendChild(canvas); pageDivHolder.appendChild(canvas);
// Render PDF page into canvas context // Render PDF page into canvas context
page.startRendering(context, callback); var renderContext = {
canvasContext: context,
viewport: viewport
};
page.render(renderContext).then(callback);
// Prepare and populate form elements layer // Prepare and populate form elements layer
var formDiv = document.createElement('div'); var formDiv = document.createElement('div');
pageDivHolder.appendChild(formDiv); pageDivHolder.appendChild(formDiv);
setupForm(formDiv, page, scale); setupForm(formDiv, page, viewport);
});
} }
PDFJS.getPdf(pdfWithFormsPath, function getPdfForm(data) { // Fetch the PDF document from the URL using promices
// Instantiate PDFDoc with PDF data PDFJS.getDocument(pdfWithFormsPath).then(function getPdfForm(pdf) {
var pdf = new PDFJS.PDFDoc(data);
// Rendering all pages starting from first // Rendering all pages starting from first
var viewer = document.getElementById('viewer'); var viewer = document.getElementById('viewer');
var pageNumber = 1; var pageNumber = 1;

1
examples/acroforms/index.html

@ -6,6 +6,7 @@
<!-- In production, change the content of PDFJS.workerSrc below --> <!-- In production, change the content of PDFJS.workerSrc below -->
<script type="text/javascript" src="../../src/core.js"></script> <script type="text/javascript" src="../../src/core.js"></script>
<script type="text/javascript" src="../../src/util.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/canvas.js"></script>
<script type="text/javascript" src="../../src/obj.js"></script> <script type="text/javascript" src="../../src/obj.js"></script>
<script type="text/javascript" src="../../src/function.js"></script> <script type="text/javascript" src="../../src/function.js"></script>

42
examples/helloworld/hello.js

@ -7,25 +7,31 @@
'use strict'; 'use strict';
PDFJS.getPdf('helloworld.pdf', function getPdfHelloWorld(data) { //
// // Fetch the PDF document from the URL using promices
// Instantiate PDFDoc with PDF data //
// PDFJS.getDocument('helloworld.pdf').then(function(pdf) {
var pdf = new PDFJS.PDFDoc(data); // Using promise to fetch the page
var page = pdf.getPage(1); pdf.getPage(1).then(function(page) {
var scale = 1.5; var scale = 1.5;
var viewport = page.getViewport(scale);
// //
// Prepare canvas using PDF page dimensions // Prepare canvas using PDF page dimensions
// //
var canvas = document.getElementById('the-canvas'); var canvas = document.getElementById('the-canvas');
var context = canvas.getContext('2d'); var context = canvas.getContext('2d');
canvas.height = page.height * scale; canvas.height = viewport.height;
canvas.width = page.width * scale; canvas.width = viewport.width;
// //
// Render PDF page into canvas context // Render PDF page into canvas context
// //
page.startRendering(context); var renderContext = {
canvasContext: context,
viewport: viewport
};
page.render(renderContext);
});
}); });

1
examples/helloworld/index.html

@ -6,6 +6,7 @@
<!-- In production, change the content of PDFJS.workerSrc below --> <!-- In production, change the content of PDFJS.workerSrc below -->
<script type="text/javascript" src="../../src/core.js"></script> <script type="text/javascript" src="../../src/core.js"></script>
<script type="text/javascript" src="../../src/util.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/canvas.js"></script>
<script type="text/javascript" src="../../src/obj.js"></script> <script type="text/javascript" src="../../src/obj.js"></script>
<script type="text/javascript" src="../../src/function.js"></script> <script type="text/javascript" src="../../src/function.js"></script>

1
src/util.js

@ -242,6 +242,7 @@ var PageViewport = PDFJS.PageViewport = (function PageViewportClosure() {
this.offsetY = offsetY; this.offsetY = offsetY;
this.width = width; this.width = width;
this.height = height; this.height = height;
this.fontScale = scale;
} }
PageViewport.prototype = { PageViewport.prototype = {
convertToViewportPoint: function PageViewport_convertToViewportPoint(x, y) { convertToViewportPoint: function PageViewport_convertToViewportPoint(x, y) {

8
test/driver.js

@ -176,11 +176,9 @@ function nextPage(task, loadError) {
var ctx = canvas.getContext('2d'); var ctx = canvas.getContext('2d');
task.pdfDoc.getPage(task.pageNum).then(function(page) { task.pdfDoc.getPage(task.pageNum).then(function(page) {
var pdfToCssUnitsCoef = 96.0 / 72.0; var pdfToCssUnitsCoef = 96.0 / 72.0;
// using mediaBox for the canvas size var viewport = page.getViewport(pdfToCssUnitsCoef);
var pageWidth = page.width; canvas.width = viewport.width;
var pageHeight = page.height; canvas.height = viewport.height;
canvas.width = pageWidth * pdfToCssUnitsCoef;
canvas.height = pageHeight * pdfToCssUnitsCoef;
clear(ctx); clear(ctx);
// using the text layer builder that does nothing to test // using the text layer builder that does nothing to test

Loading…
Cancel
Save