Refactor and fix style of core.js
This commit is contained in:
parent
1ddb019449
commit
8edebc797b
@ -14,7 +14,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
/* globals assertWellFormed, calculateMD5, Catalog, error, info, isArray,
|
||||
/* globals assertWellFormed, calculateMD5, Catalog, Dict, error, info, isArray,
|
||||
isArrayBuffer, isName, isStream, isString, LegacyPromise,
|
||||
Linearization, NullStream, PartialEvaluator, shadow, Stream, Lexer,
|
||||
StreamsSequenceStream, stringToPDFString, stringToBytes, Util, XRef,
|
||||
@ -25,6 +25,8 @@
|
||||
|
||||
var Page = (function PageClosure() {
|
||||
|
||||
var LETTER_SIZE_MEDIABOX = [0, 0, 612, 792];
|
||||
|
||||
function Page(pdfManager, xref, pageIndex, pageDict, ref, fontCache) {
|
||||
this.pdfManager = pdfManager;
|
||||
this.pageIndex = pageIndex;
|
||||
@ -42,20 +44,24 @@ var Page = (function PageClosure() {
|
||||
getPageProp: function Page_getPageProp(key) {
|
||||
return this.pageDict.get(key);
|
||||
},
|
||||
inheritPageProp: function Page_inheritPageProp(key) {
|
||||
|
||||
getInheritedPageProp: function Page_inheritPageProp(key) {
|
||||
var dict = this.pageDict;
|
||||
var obj = dict.get(key);
|
||||
while (obj === undefined) {
|
||||
var value = dict.get(key);
|
||||
while (value === undefined) {
|
||||
dict = dict.get('Parent');
|
||||
if (!dict)
|
||||
if (!dict) {
|
||||
break;
|
||||
obj = dict.get(key);
|
||||
}
|
||||
value = dict.get(key);
|
||||
}
|
||||
return obj;
|
||||
return value;
|
||||
},
|
||||
|
||||
get content() {
|
||||
return this.getPageProp('Contents');
|
||||
},
|
||||
|
||||
get resources() {
|
||||
var value = this.getInheritedPageProp('Resources');
|
||||
// For robustness: The spec states that a \Resources entry has to be
|
||||
@ -66,34 +72,41 @@ var Page = (function PageClosure() {
|
||||
}
|
||||
return shadow(this, 'resources', value);
|
||||
},
|
||||
|
||||
get mediaBox() {
|
||||
var obj = this.inheritPageProp('MediaBox');
|
||||
var obj = this.getInheritedPageProp('MediaBox');
|
||||
// Reset invalid media box to letter size.
|
||||
if (!isArray(obj) || obj.length !== 4)
|
||||
obj = [0, 0, 612, 792];
|
||||
if (!isArray(obj) || obj.length !== 4) {
|
||||
obj = LETTER_SIZE_MEDIABOX;
|
||||
}
|
||||
return shadow(this, 'mediaBox', obj);
|
||||
},
|
||||
|
||||
get view() {
|
||||
var mediaBox = this.mediaBox;
|
||||
var cropBox = this.inheritPageProp('CropBox');
|
||||
if (!isArray(cropBox) || cropBox.length !== 4)
|
||||
var cropBox = this.getInheritedPageProp('CropBox');
|
||||
if (!isArray(cropBox) || cropBox.length !== 4) {
|
||||
return shadow(this, 'view', mediaBox);
|
||||
}
|
||||
|
||||
// From the spec, 6th ed., p.963:
|
||||
// "The crop, bleed, trim, and art boxes should not ordinarily
|
||||
// extend beyond the boundaries of the media box. If they do, they are
|
||||
// effectively reduced to their intersection with the media box."
|
||||
cropBox = Util.intersect(cropBox, mediaBox);
|
||||
if (!cropBox)
|
||||
if (!cropBox) {
|
||||
return shadow(this, 'view', mediaBox);
|
||||
|
||||
}
|
||||
return shadow(this, 'view', cropBox);
|
||||
},
|
||||
|
||||
get annotationRefs() {
|
||||
return shadow(this, 'annotationRefs', this.inheritPageProp('Annots'));
|
||||
return shadow(this, 'annotationRefs',
|
||||
this.getInheritedPageProp('Annots'));
|
||||
},
|
||||
|
||||
get rotate() {
|
||||
var rotate = this.inheritPageProp('Rotate') || 0;
|
||||
var rotate = this.getInheritedPageProp('Rotate') || 0;
|
||||
// Normalize rotation so it's a multiple of 90 and between 0 and 270
|
||||
if (rotate % 90 !== 0) {
|
||||
rotate = 0;
|
||||
@ -106,6 +119,7 @@ var Page = (function PageClosure() {
|
||||
}
|
||||
return shadow(this, 'rotate', rotate);
|
||||
},
|
||||
|
||||
getContentStream: function Page_getContentStream() {
|
||||
var content = this.content;
|
||||
var stream;
|
||||
@ -125,9 +139,10 @@ var Page = (function PageClosure() {
|
||||
}
|
||||
return stream;
|
||||
},
|
||||
|
||||
loadResources: function(keys) {
|
||||
if (!this.resourcesPromise) {
|
||||
// TODO: add async inheritPageProp and remove this.
|
||||
// TODO: add async getInheritedPageProp and remove this.
|
||||
this.resourcesPromise = this.pdfManager.ensure(this, 'resources');
|
||||
}
|
||||
var promise = new LegacyPromise();
|
||||
@ -141,6 +156,7 @@ var Page = (function PageClosure() {
|
||||
}.bind(this));
|
||||
return promise;
|
||||
},
|
||||
|
||||
getOperatorList: function Page_getOperatorList(handler, intent) {
|
||||
var self = this;
|
||||
var promise = new LegacyPromise();
|
||||
@ -160,7 +176,7 @@ var Page = (function PageClosure() {
|
||||
'Pattern',
|
||||
'Shading',
|
||||
'XObject',
|
||||
'Font',
|
||||
'Font'
|
||||
// ProcSet
|
||||
// Properties
|
||||
]);
|
||||
@ -208,6 +224,7 @@ var Page = (function PageClosure() {
|
||||
|
||||
return promise;
|
||||
},
|
||||
|
||||
extractTextContent: function Page_extractTextContent() {
|
||||
var handler = {
|
||||
on: function nullHandlerOn() {},
|
||||
|
Loading…
x
Reference in New Issue
Block a user