Browse Source

Expose the optional UserUnit entry as a page property

Sean Burke 9 years ago
parent
commit
f76cd2ce43
  1. 10
      src/core/document.js
  2. 9
      src/core/worker.js
  3. 6
      src/display/api.js
  4. 3
      test/unit/api_spec.js

10
src/core/document.js

@ -42,6 +42,7 @@ var error = sharedUtil.error;
var info = sharedUtil.info; var info = sharedUtil.info;
var isArray = sharedUtil.isArray; var isArray = sharedUtil.isArray;
var isArrayBuffer = sharedUtil.isArrayBuffer; var isArrayBuffer = sharedUtil.isArrayBuffer;
var isNum = sharedUtil.isNum;
var isString = sharedUtil.isString; var isString = sharedUtil.isString;
var shadow = sharedUtil.shadow; var shadow = sharedUtil.shadow;
var stringToBytes = sharedUtil.stringToBytes; var stringToBytes = sharedUtil.stringToBytes;
@ -67,6 +68,7 @@ var AnnotationFactory = coreAnnotation.AnnotationFactory;
var Page = (function PageClosure() { var Page = (function PageClosure() {
var DEFAULT_USER_UNIT = 1.0;
var LETTER_SIZE_MEDIABOX = [0, 0, 612, 792]; var LETTER_SIZE_MEDIABOX = [0, 0, 612, 792];
function Page(pdfManager, xref, pageIndex, pageDict, ref, fontCache) { function Page(pdfManager, xref, pageIndex, pageDict, ref, fontCache) {
@ -138,6 +140,14 @@ var Page = (function PageClosure() {
return shadow(this, 'mediaBox', obj); return shadow(this, 'mediaBox', obj);
}, },
get userUnit() {
var obj = this.getPageProp('UserUnit');
if (!isNum(obj) || obj <= 0) {
obj = DEFAULT_USER_UNIT;
}
return shadow(this, 'userUnit', obj);
},
get view() { get view() {
var mediaBox = this.mediaBox; var mediaBox = this.mediaBox;
var cropBox = this.getInheritedPageProp('CropBox'); var cropBox = this.getInheritedPageProp('CropBox');

9
src/core/worker.js

@ -747,14 +747,17 @@ var WorkerMessageHandler = {
return pdfManager.getPage(data.pageIndex).then(function(page) { return pdfManager.getPage(data.pageIndex).then(function(page) {
var rotatePromise = pdfManager.ensure(page, 'rotate'); var rotatePromise = pdfManager.ensure(page, 'rotate');
var refPromise = pdfManager.ensure(page, 'ref'); var refPromise = pdfManager.ensure(page, 'ref');
var userUnitPromise = pdfManager.ensure(page, 'userUnit');
var viewPromise = pdfManager.ensure(page, 'view'); var viewPromise = pdfManager.ensure(page, 'view');
return Promise.all([rotatePromise, refPromise, viewPromise]).then( return Promise.all([
function(results) { rotatePromise, refPromise, userUnitPromise, viewPromise
]).then(function(results) {
return { return {
rotate: results[0], rotate: results[0],
ref: results[1], ref: results[1],
view: results[2] userUnit: results[2],
view: results[3]
}; };
}); });
}); });

6
src/display/api.js

@ -747,6 +747,12 @@ var PDFPageProxy = (function PDFPageProxyClosure() {
get ref() { get ref() {
return this.pageInfo.ref; return this.pageInfo.ref;
}, },
/**
* @return {number} The default size of units in 1/72nds of an inch.
*/
get userUnit() {
return this.pageInfo.userUnit;
},
/** /**
* @return {Array} An array of the visible portion of the PDF page in the * @return {Array} An array of the visible portion of the PDF page in the
* user space units - [x1, y1, x2, y2]. * user space units - [x1, y1, x2, y2].

3
test/unit/api_spec.js

@ -769,6 +769,9 @@ describe('api', function() {
it('gets ref', function () { it('gets ref', function () {
expect(page.ref).toEqual({ num: 15, gen: 0 }); expect(page.ref).toEqual({ num: 15, gen: 0 });
}); });
it('gets userUnit', function () {
expect(page.userUnit).toEqual(1.0);
});
it('gets view', function () { it('gets view', function () {
expect(page.view).toEqual([0, 0, 595.28, 841.89]); expect(page.view).toEqual([0, 0, 595.28, 841.89]);
}); });

Loading…
Cancel
Save