Address more of brendan's comments
This commit is contained in:
parent
27fe18e8c6
commit
2ce00279be
@ -14,7 +14,7 @@
|
|||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
/* globals assert, MissingDataException, isInt, NetworkManager, PDFJS,
|
/* globals assert, MissingDataException, isInt, NetworkManager, Promise,
|
||||||
isEmptyObj */
|
isEmptyObj */
|
||||||
|
|
||||||
'use strict';
|
'use strict';
|
||||||
@ -233,7 +233,7 @@ var ChunkedStreamManager = (function ChunkedStreamManagerClosure() {
|
|||||||
this.requestsByChunk = {};
|
this.requestsByChunk = {};
|
||||||
this.callbacksByRequest = {};
|
this.callbacksByRequest = {};
|
||||||
|
|
||||||
this.loadedStream = new PDFJS.Promise();
|
this.loadedStream = new Promise();
|
||||||
}
|
}
|
||||||
|
|
||||||
ChunkedStreamManager.prototype = {
|
ChunkedStreamManager.prototype = {
|
||||||
|
24
src/core.js
24
src/core.js
@ -18,7 +18,7 @@
|
|||||||
isArrayBuffer, isDict, isName, isStream, isString, Lexer,
|
isArrayBuffer, isDict, isName, isStream, isString, Lexer,
|
||||||
Linearization, NullStream, PartialEvaluator, shadow, Stream,
|
Linearization, NullStream, PartialEvaluator, shadow, Stream,
|
||||||
StreamsSequenceStream, stringToPDFString, TODO, Util, warn, XRef,
|
StreamsSequenceStream, stringToPDFString, TODO, Util, warn, XRef,
|
||||||
MissingDataException, PDFJS */
|
MissingDataException, Promise */
|
||||||
|
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
@ -149,21 +149,22 @@ var Page = (function PageClosure() {
|
|||||||
},
|
},
|
||||||
getOperatorList: function Page_getOperatorList(handler) {
|
getOperatorList: function Page_getOperatorList(handler) {
|
||||||
var self = this;
|
var self = this;
|
||||||
var promise = new PDFJS.Promise();
|
var promise = new Promise();
|
||||||
|
|
||||||
var pageListPromise = new PDFJS.Promise();
|
var pageListPromise = new Promise();
|
||||||
var annotationListPromise = new PDFJS.Promise();
|
var annotationListPromise = new Promise();
|
||||||
|
|
||||||
var pdfManager = this.pdfManager;
|
var pdfManager = this.pdfManager;
|
||||||
var contentStreamPromise = pdfManager.ensure(this, 'getContentStream',
|
var contentStreamPromise = pdfManager.ensure(this, 'getContentStream',
|
||||||
[]);
|
[]);
|
||||||
var resourcesPromise = pdfManager.ensure(this, 'resources');
|
var resourcesPromise = pdfManager.ensure(this, 'resources');
|
||||||
var dataPromises = PDFJS.Promise.all(
|
var dataPromises = Promise.all(
|
||||||
[contentStreamPromise, resourcesPromise]);
|
[contentStreamPromise, resourcesPromise]);
|
||||||
dataPromises.then(function(data) {
|
dataPromises.then(function(data) {
|
||||||
var contentStream = data[0];
|
var contentStream = data[0];
|
||||||
var resources = data[1];
|
var resources = data[1];
|
||||||
var pe = self.pe = new PartialEvaluator(
|
var pe = self.pe = new PartialEvaluator(
|
||||||
|
pdfManager,
|
||||||
self.xref, handler, self.pageIndex,
|
self.xref, handler, self.pageIndex,
|
||||||
'p' + self.pageIndex + '_');
|
'p' + self.pageIndex + '_');
|
||||||
|
|
||||||
@ -180,7 +181,7 @@ var Page = (function PageClosure() {
|
|||||||
pdfManager.ensure(this, 'getAnnotationsForDraw', []).then(
|
pdfManager.ensure(this, 'getAnnotationsForDraw', []).then(
|
||||||
function(annotations) {
|
function(annotations) {
|
||||||
var annotationEvaluator = new PartialEvaluator(
|
var annotationEvaluator = new PartialEvaluator(
|
||||||
self.xref, handler, self.pageIndex,
|
pdfManager, self.xref, handler, self.pageIndex,
|
||||||
'p' + self.pageIndex + '_annotation');
|
'p' + self.pageIndex + '_annotation');
|
||||||
|
|
||||||
pdfManager.ensure(annotationEvaluator, 'getAnnotationsOperatorList',
|
pdfManager.ensure(annotationEvaluator, 'getAnnotationsOperatorList',
|
||||||
@ -194,7 +195,7 @@ var Page = (function PageClosure() {
|
|||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
PDFJS.Promise.all([pageListPromise, annotationListPromise]).then(
|
Promise.all([pageListPromise, annotationListPromise]).then(
|
||||||
function(datas) {
|
function(datas) {
|
||||||
var pageData = datas[0];
|
var pageData = datas[0];
|
||||||
var pageQueue = pageData.queue;
|
var pageQueue = pageData.queue;
|
||||||
@ -221,12 +222,12 @@ var Page = (function PageClosure() {
|
|||||||
|
|
||||||
var self = this;
|
var self = this;
|
||||||
|
|
||||||
var textContentPromise = new PDFJS.Promise();
|
var textContentPromise = new Promise();
|
||||||
|
|
||||||
var pdfManager = this.pdfManager;
|
var pdfManager = this.pdfManager;
|
||||||
var contentStreamPromise = pdfManager.ensure(this, 'getContentStream',
|
var contentStreamPromise = pdfManager.ensure(this, 'getContentStream',
|
||||||
[]);
|
[]);
|
||||||
var resourcesPromise = new PDFJS.Promise();
|
var resourcesPromise = new Promise();
|
||||||
pdfManager.ensure(this, 'resources').then(function(resources) {
|
pdfManager.ensure(this, 'resources').then(function(resources) {
|
||||||
pdfManager.ensure(self.xref, 'fetchIfRef', [resources]).then(
|
pdfManager.ensure(self.xref, 'fetchIfRef', [resources]).then(
|
||||||
function(resources) {
|
function(resources) {
|
||||||
@ -235,12 +236,13 @@ var Page = (function PageClosure() {
|
|||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
var dataPromises = PDFJS.Promise.all([contentStreamPromise,
|
var dataPromises = Promise.all([contentStreamPromise,
|
||||||
resourcesPromise]);
|
resourcesPromise]);
|
||||||
dataPromises.then(function(data) {
|
dataPromises.then(function(data) {
|
||||||
var contentStream = data[0];
|
var contentStream = data[0];
|
||||||
var resources = data[1];
|
var resources = data[1];
|
||||||
var pe = new PartialEvaluator(
|
var pe = new PartialEvaluator(
|
||||||
|
pdfManager,
|
||||||
self.xref, handler, self.pageIndex,
|
self.xref, handler, self.pageIndex,
|
||||||
'p' + self.pageIndex + '_');
|
'p' + self.pageIndex + '_');
|
||||||
|
|
||||||
|
@ -19,15 +19,17 @@
|
|||||||
IDENTITY_MATRIX, info, isArray, isCmd, isDict, isEOF, isName, isNum,
|
IDENTITY_MATRIX, info, isArray, isCmd, isDict, isEOF, isName, isNum,
|
||||||
isStream, isString, JpegStream, Lexer, Metrics, Name, Parser,
|
isStream, isString, JpegStream, Lexer, Metrics, Name, Parser,
|
||||||
Pattern, PDFImage, PDFJS, serifFonts, stdFontMap, symbolsFonts,
|
Pattern, PDFImage, PDFJS, serifFonts, stdFontMap, symbolsFonts,
|
||||||
TilingPattern, TODO, warn, Util, MissingDataException, globalScope */
|
TilingPattern, TODO, warn, Util, MissingDataException, Promise */
|
||||||
|
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
var PartialEvaluator = (function PartialEvaluatorClosure() {
|
var PartialEvaluator = (function PartialEvaluatorClosure() {
|
||||||
function PartialEvaluator(xref, handler, pageIndex, uniquePrefix) {
|
function PartialEvaluator(pdfManager, xref, handler, pageIndex,
|
||||||
|
uniquePrefix) {
|
||||||
this.state = new EvalState();
|
this.state = new EvalState();
|
||||||
this.stateStack = [];
|
this.stateStack = [];
|
||||||
|
|
||||||
|
this.pdfManager = pdfManager;
|
||||||
this.xref = xref;
|
this.xref = xref;
|
||||||
this.handler = handler;
|
this.handler = handler;
|
||||||
this.pageIndex = pageIndex;
|
this.pageIndex = pageIndex;
|
||||||
@ -165,7 +167,7 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
|
|||||||
buildFormXObject: function PartialEvaluator_buildFormXObject(resources,
|
buildFormXObject: function PartialEvaluator_buildFormXObject(resources,
|
||||||
xobj, smask) {
|
xobj, smask) {
|
||||||
var self = this;
|
var self = this;
|
||||||
var promise = new PDFJS.Promise();
|
var promise = new Promise();
|
||||||
var fnArray = [];
|
var fnArray = [];
|
||||||
var argsArray = [];
|
var argsArray = [];
|
||||||
|
|
||||||
@ -302,7 +304,7 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
|
|||||||
fn, args, resources, pattern, patternDict) {
|
fn, args, resources, pattern, patternDict) {
|
||||||
var self = this;
|
var self = this;
|
||||||
// Create an IR of the pattern code.
|
// Create an IR of the pattern code.
|
||||||
var promise = new PDFJS.Promise();
|
var promise = new Promise();
|
||||||
var opListPromise = this.getOperatorList(pattern,
|
var opListPromise = this.getOperatorList(pattern,
|
||||||
patternDict.get('Resources') || resources);
|
patternDict.get('Resources') || resources);
|
||||||
opListPromise.then(function(data) {
|
opListPromise.then(function(data) {
|
||||||
@ -324,7 +326,7 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
|
|||||||
handleSetFont: function PartialEvaluator_handleSetFont(
|
handleSetFont: function PartialEvaluator_handleSetFont(
|
||||||
resources, fontArgs, font) {
|
resources, fontArgs, font) {
|
||||||
|
|
||||||
var promise = new PDFJS.Promise();
|
var promise = new Promise();
|
||||||
// TODO(mack): Not needed?
|
// TODO(mack): Not needed?
|
||||||
var fontName;
|
var fontName;
|
||||||
if (fontArgs) {
|
if (fontArgs) {
|
||||||
@ -413,7 +415,7 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
|
|||||||
gStateObj.push([key, value]);
|
gStateObj.push([key, value]);
|
||||||
break;
|
break;
|
||||||
case 'Font':
|
case 'Font':
|
||||||
var promise = new PDFJS.Promise();
|
var promise = new Promise();
|
||||||
self.handleSetFont(resources, null, value[0]).then(function(data) {
|
self.handleSetFont(resources, null, value[0]).then(function(data) {
|
||||||
var gState = ['Font', data.loadedName, value[1]];
|
var gState = ['Font', data.loadedName, value[1]];
|
||||||
promise.resolve({
|
promise.resolve({
|
||||||
@ -478,8 +480,8 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var promise = new PDFJS.Promise();
|
var promise = new Promise();
|
||||||
PDFJS.Promise.all(promises).then(function(datas) {
|
Promise.all(promises).then(function(datas) {
|
||||||
for (var i = 0, n = datas.length; i < n; ++i) {
|
for (var i = 0, n = datas.length; i < n; ++i) {
|
||||||
var data = datas[i];
|
var data = datas[i];
|
||||||
var index = indices[i];
|
var index = indices[i];
|
||||||
@ -500,7 +502,7 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
|
|||||||
|
|
||||||
loadFont: function PartialEvaluator_loadFont(fontName, font, xref,
|
loadFont: function PartialEvaluator_loadFont(fontName, font, xref,
|
||||||
resources) {
|
resources) {
|
||||||
var promise = new PDFJS.Promise();
|
var promise = new Promise();
|
||||||
|
|
||||||
var fontRes = resources.get('Font');
|
var fontRes = resources.get('Font');
|
||||||
|
|
||||||
@ -551,7 +553,7 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
|
|||||||
opListPromises.push(
|
opListPromises.push(
|
||||||
this.getOperatorList(glyphStream, fontResources));
|
this.getOperatorList(glyphStream, fontResources));
|
||||||
}
|
}
|
||||||
PDFJS.Promise.all(opListPromises).then(function(datas) {
|
Promise.all(opListPromises).then(function(datas) {
|
||||||
var charProcOperatorList = {};
|
var charProcOperatorList = {};
|
||||||
var dependencies = {};
|
var dependencies = {};
|
||||||
for (var i = 0, n = charProcKeys.length; i < n; ++i) {
|
for (var i = 0, n = charProcKeys.length; i < n; ++i) {
|
||||||
@ -606,7 +608,7 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
|
|||||||
// dictionary
|
// dictionary
|
||||||
var parser = new Parser(new Lexer(stream, OP_MAP), false, xref);
|
var parser = new Parser(new Lexer(stream, OP_MAP), false, xref);
|
||||||
|
|
||||||
var promise = new PDFJS.Promise();
|
var promise = new Promise();
|
||||||
function parseCommands() {
|
function parseCommands() {
|
||||||
try {
|
try {
|
||||||
parser.restoreState();
|
parser.restoreState();
|
||||||
@ -770,7 +772,7 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
|
|||||||
subQueuePromises.push(argsArray[i][0]);
|
subQueuePromises.push(argsArray[i][0]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
PDFJS.Promise.all(subQueuePromises).then(function(datas) {
|
Promise.all(subQueuePromises).then(function(datas) {
|
||||||
// TODO(mack): Optimize by using repositioning elements
|
// TODO(mack): Optimize by using repositioning elements
|
||||||
// in original queue rather than creating new queue
|
// in original queue rather than creating new queue
|
||||||
|
|
||||||
@ -817,10 +819,7 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
|
|||||||
throw e;
|
throw e;
|
||||||
}
|
}
|
||||||
|
|
||||||
var streamManager = globalScope.pdfManager.streamManager;
|
self.pdfManager.requestRange(e.begin, e.end).then(parseCommands);
|
||||||
streamManager.requestRange(e.begin, e.end, function() {
|
|
||||||
parseCommands();
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
parser.saveState();
|
parser.saveState();
|
||||||
@ -832,7 +831,7 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
|
|||||||
getAnnotationsOperatorList:
|
getAnnotationsOperatorList:
|
||||||
function PartialEvaluator_getAnnotationsOperatorList(annotations,
|
function PartialEvaluator_getAnnotationsOperatorList(annotations,
|
||||||
dependency) {
|
dependency) {
|
||||||
var promise = new PDFJS.Promise();
|
var promise = new Promise();
|
||||||
|
|
||||||
// 12.5.5: Algorithm: Appearance streams
|
// 12.5.5: Algorithm: Appearance streams
|
||||||
function getTransformMatrix(rect, bbox, matrix) {
|
function getTransformMatrix(rect, bbox, matrix) {
|
||||||
@ -878,13 +877,13 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
|
|||||||
annotation.resources);
|
annotation.resources);
|
||||||
opListPromises.push(opListPromise);
|
opListPromises.push(opListPromise);
|
||||||
} else {
|
} else {
|
||||||
var opListPromise = new PDFJS.Promise();
|
var opListPromise = new Promise();
|
||||||
opListPromise.resolve(createOperatorList());
|
opListPromise.resolve(createOperatorList());
|
||||||
opListPromises.push(opListPromise);
|
opListPromises.push(opListPromise);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
PDFJS.Promise.all(opListPromises).then(function(datas) {
|
Promise.all(opListPromises).then(function(datas) {
|
||||||
var fnArray = [];
|
var fnArray = [];
|
||||||
var argsArray = [];
|
var argsArray = [];
|
||||||
var dependencies = {};
|
var dependencies = {};
|
||||||
@ -923,10 +922,10 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
|
|||||||
var MULTI_SPACE_FACTOR = 1.5;
|
var MULTI_SPACE_FACTOR = 1.5;
|
||||||
var self = this;
|
var self = this;
|
||||||
|
|
||||||
var statePromise = new PDFJS.Promise();
|
var statePromise = new Promise();
|
||||||
|
|
||||||
function handleSetFont(fontName, fontRef, resources) {
|
function handleSetFont(fontName, fontRef, resources) {
|
||||||
var promise = new PDFJS.Promise();
|
var promise = new Promise();
|
||||||
self.loadFont(fontName, fontRef, self.xref, resources).then(
|
self.loadFont(fontName, fontRef, self.xref, resources).then(
|
||||||
function(data) {
|
function(data) {
|
||||||
promise.resolve(data.font.translated);
|
promise.resolve(data.font.translated);
|
||||||
@ -969,7 +968,7 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
|
|||||||
//.translated;
|
//.translated;
|
||||||
break;
|
break;
|
||||||
case 'TJ':
|
case 'TJ':
|
||||||
var chunkPromise = new PDFJS.Promise();
|
var chunkPromise = new Promise();
|
||||||
chunkPromises.push(chunkPromise);
|
chunkPromises.push(chunkPromise);
|
||||||
fontPromise.then(function(items, font) {
|
fontPromise.then(function(items, font) {
|
||||||
var chunk = '';
|
var chunk = '';
|
||||||
@ -994,7 +993,7 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
|
|||||||
}.bind(null, args[0]));
|
}.bind(null, args[0]));
|
||||||
break;
|
break;
|
||||||
case 'Tj':
|
case 'Tj':
|
||||||
var chunkPromise = new PDFJS.Promise();
|
var chunkPromise = new Promise();
|
||||||
chunkPromises.push(chunkPromise);
|
chunkPromises.push(chunkPromise);
|
||||||
fontPromise.then(function(charCodes, font) {
|
fontPromise.then(function(charCodes, font) {
|
||||||
var chunk = fontCharsToUnicode(charCodes, font);
|
var chunk = fontCharsToUnicode(charCodes, font);
|
||||||
@ -1006,7 +1005,7 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
|
|||||||
// For search, adding a extra white space for line breaks
|
// For search, adding a extra white space for line breaks
|
||||||
// would be better here, but that causes too much spaces in
|
// would be better here, but that causes too much spaces in
|
||||||
// the text-selection divs.
|
// the text-selection divs.
|
||||||
var chunkPromise = new PDFJS.Promise();
|
var chunkPromise = new Promise();
|
||||||
chunkPromises.push(chunkPromise);
|
chunkPromises.push(chunkPromise);
|
||||||
fontPromise.then(function(charCodes, font) {
|
fontPromise.then(function(charCodes, font) {
|
||||||
var chunk = fontCharsToUnicode(charCodes, font);
|
var chunk = fontCharsToUnicode(charCodes, font);
|
||||||
@ -1016,7 +1015,7 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
|
|||||||
break;
|
break;
|
||||||
case '"':
|
case '"':
|
||||||
// Note comment in "'"
|
// Note comment in "'"
|
||||||
var chunkPromise = new PDFJS.Promise();
|
var chunkPromise = new Promise();
|
||||||
chunkPromises.push(chunkPromise);
|
chunkPromises.push(chunkPromise);
|
||||||
fontPromise.then(function(charCodes, font) {
|
fontPromise.then(function(charCodes, font) {
|
||||||
var chunk = fontCharsToUnicode(charCodes, font);
|
var chunk = fontCharsToUnicode(charCodes, font);
|
||||||
@ -1081,7 +1080,7 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
|
|||||||
}
|
}
|
||||||
} // while
|
} // while
|
||||||
|
|
||||||
PDFJS.Promise.all(chunkPromises).then(function(datas) {
|
Promise.all(chunkPromises).then(function(datas) {
|
||||||
var bidiTexts = [];
|
var bidiTexts = [];
|
||||||
for (var i = 0, n = datas.length; i < n; ++i) {
|
for (var i = 0, n = datas.length; i < n; ++i) {
|
||||||
var bidiText = datas[i];
|
var bidiText = datas[i];
|
||||||
@ -1100,10 +1099,7 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
|
|||||||
throw e;
|
throw e;
|
||||||
}
|
}
|
||||||
|
|
||||||
var streamManager = globalScope.pdfManager.streamManager;
|
self.pdfManager.requestRange(e.begin, e.end).then(parseCommands);
|
||||||
streamManager.requestRange(e.begin, e.end, function() {
|
|
||||||
parseCommands();
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
parser.saveState();
|
parser.saveState();
|
||||||
|
@ -17,8 +17,8 @@
|
|||||||
/* globals assertWellFormed, bytesToString, CipherTransformFactory, error, info,
|
/* globals assertWellFormed, bytesToString, CipherTransformFactory, error, info,
|
||||||
InvalidPDFException, isArray, isCmd, isDict, isInt, isName, isRef,
|
InvalidPDFException, isArray, isCmd, isDict, isInt, isName, isRef,
|
||||||
isStream, JpegStream, Lexer, log, Page, Parser, Promise, shadow,
|
isStream, JpegStream, Lexer, log, Page, Parser, Promise, shadow,
|
||||||
stringToPDFString, stringToUTF8String, warn, isString, assert, PDFJS,
|
stringToPDFString, stringToUTF8String, warn, isString, assert,
|
||||||
MissingDataException, XRefParseException, Stream */
|
Promise, MissingDataException, XRefParseException, Stream */
|
||||||
|
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
@ -339,7 +339,7 @@ var Catalog = (function CatalogClosure() {
|
|||||||
|
|
||||||
getPage: function Catalog_getPage(pageIndex) {
|
getPage: function Catalog_getPage(pageIndex) {
|
||||||
if (!(pageIndex in this.pagePromises)) {
|
if (!(pageIndex in this.pagePromises)) {
|
||||||
this.pagePromises[pageIndex] = new PDFJS.Promise();
|
this.pagePromises[pageIndex] = new Promise();
|
||||||
}
|
}
|
||||||
return this.pagePromises[pageIndex];
|
return this.pagePromises[pageIndex];
|
||||||
},
|
},
|
||||||
@ -367,7 +367,7 @@ var Catalog = (function CatalogClosure() {
|
|||||||
var page = new Page(this.pdfManager, this.xref, pageIndex, kid,
|
var page = new Page(this.pdfManager, this.xref, pageIndex, kid,
|
||||||
kidRef);
|
kidRef);
|
||||||
if (!(pageIndex in this.pagePromises)) {
|
if (!(pageIndex in this.pagePromises)) {
|
||||||
this.pagePromises[pageIndex] = new PDFJS.Promise();
|
this.pagePromises[pageIndex] = new Promise();
|
||||||
}
|
}
|
||||||
this.pagePromises[pageIndex].resolve(page);
|
this.pagePromises[pageIndex].resolve(page);
|
||||||
|
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
/* globals NotImplementedException, MissingDataException, PDFJS, Stream,
|
/* globals NotImplementedException, MissingDataException, Promise, Stream,
|
||||||
PDFDocument, ChunkedStream, ChunkedStreamManager */
|
PDFDocument, ChunkedStream, ChunkedStreamManager */
|
||||||
|
|
||||||
'use strict';
|
'use strict';
|
||||||
@ -50,6 +50,10 @@ var BasePdfManager = (function BasePdfManagerClosure() {
|
|||||||
return new NotImplementedException();
|
return new NotImplementedException();
|
||||||
},
|
},
|
||||||
|
|
||||||
|
requestRange: function BasePdfManager_ensure(begin, end) {
|
||||||
|
return new NotImplementedException();
|
||||||
|
},
|
||||||
|
|
||||||
requestLoadedStream: function BasePdfManager_requestLoadedStream() {
|
requestLoadedStream: function BasePdfManager_requestLoadedStream() {
|
||||||
return new NotImplementedException();
|
return new NotImplementedException();
|
||||||
}
|
}
|
||||||
@ -62,7 +66,7 @@ var LocalPdfManager = (function LocalPdfManagerClosure() {
|
|||||||
function LocalPdfManager(data, password) {
|
function LocalPdfManager(data, password) {
|
||||||
var stream = new Stream(data);
|
var stream = new Stream(data);
|
||||||
this.pdfModel = new PDFDocument(this, stream, password);
|
this.pdfModel = new PDFDocument(this, stream, password);
|
||||||
this.loadedStream = new PDFJS.Promise();
|
this.loadedStream = new Promise();
|
||||||
this.loadedStream.resolve(stream);
|
this.loadedStream.resolve(stream);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -71,7 +75,7 @@ var LocalPdfManager = (function LocalPdfManagerClosure() {
|
|||||||
|
|
||||||
LocalPdfManager.prototype.ensure =
|
LocalPdfManager.prototype.ensure =
|
||||||
function LocalPdfManager_ensure(obj, prop, args) {
|
function LocalPdfManager_ensure(obj, prop, args) {
|
||||||
var promise = new PDFJS.Promise();
|
var promise = new Promise();
|
||||||
try {
|
try {
|
||||||
var value = obj[prop];
|
var value = obj[prop];
|
||||||
var result;
|
var result;
|
||||||
@ -88,6 +92,13 @@ var LocalPdfManager = (function LocalPdfManagerClosure() {
|
|||||||
return promise;
|
return promise;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
LocalPdfManager.prototype.requestRange =
|
||||||
|
function LocalPdfManager_requestRange(begin, end) {
|
||||||
|
var promise = new Promise();
|
||||||
|
promise.resolve();
|
||||||
|
return promise;
|
||||||
|
};
|
||||||
|
|
||||||
LocalPdfManager.prototype.requestLoadedStream =
|
LocalPdfManager.prototype.requestLoadedStream =
|
||||||
function LocalPdfManager_requestLoadedStream() {
|
function LocalPdfManager_requestLoadedStream() {
|
||||||
};
|
};
|
||||||
@ -126,7 +137,7 @@ var NetworkPdfManager = (function NetworkPdfManagerClosure() {
|
|||||||
|
|
||||||
NetworkPdfManager.prototype.ensure =
|
NetworkPdfManager.prototype.ensure =
|
||||||
function NetworkPdfManager_ensure(obj, prop, args) {
|
function NetworkPdfManager_ensure(obj, prop, args) {
|
||||||
var promise = new PDFJS.Promise();
|
var promise = new Promise();
|
||||||
this.ensureHelper(promise, obj, prop, args);
|
this.ensureHelper(promise, obj, prop, args);
|
||||||
return promise;
|
return promise;
|
||||||
};
|
};
|
||||||
@ -155,6 +166,15 @@ var NetworkPdfManager = (function NetworkPdfManagerClosure() {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
NetworkPdfManager.prototype.requestRange =
|
||||||
|
function NetworkPdfManager_requestRange(begin, end) {
|
||||||
|
var promise = new Promise();
|
||||||
|
this.streamManager.requestRange(begin, end, function() {
|
||||||
|
promise.resolve();
|
||||||
|
});
|
||||||
|
return promise;
|
||||||
|
};
|
||||||
|
|
||||||
NetworkPdfManager.prototype.requestLoadedStream =
|
NetworkPdfManager.prototype.requestLoadedStream =
|
||||||
function NetworkPdfManager_requestLoadedStream() {
|
function NetworkPdfManager_requestLoadedStream() {
|
||||||
this.streamManager.requestAllChunks();
|
this.streamManager.requestAllChunks();
|
||||||
|
@ -112,7 +112,7 @@ var WorkerMessageHandler = {
|
|||||||
var pdfManager;
|
var pdfManager;
|
||||||
|
|
||||||
function loadDocument(recoveryMode) {
|
function loadDocument(recoveryMode) {
|
||||||
var loadDocumentPromise = new PDFJS.Promise();
|
var loadDocumentPromise = new Promise();
|
||||||
|
|
||||||
var parseSuccess = function parseSuccess() {
|
var parseSuccess = function parseSuccess() {
|
||||||
var numPagesPromise = pdfManager.ensureModel('numPages');
|
var numPagesPromise = pdfManager.ensureModel('numPages');
|
||||||
@ -122,7 +122,7 @@ var WorkerMessageHandler = {
|
|||||||
var metadataPromise = pdfManager.ensureCatalog('metadata');
|
var metadataPromise = pdfManager.ensureCatalog('metadata');
|
||||||
var encryptedPromise = pdfManager.ensureXRef('encrypt');
|
var encryptedPromise = pdfManager.ensureXRef('encrypt');
|
||||||
var javaScriptPromise = pdfManager.ensureCatalog('javaScript');
|
var javaScriptPromise = pdfManager.ensureCatalog('javaScript');
|
||||||
PDFJS.Promise.all([numPagesPromise, fingerprintPromise, outlinePromise,
|
Promise.all([numPagesPromise, fingerprintPromise, outlinePromise,
|
||||||
infoPromise, metadataPromise, encryptedPromise,
|
infoPromise, metadataPromise, encryptedPromise,
|
||||||
javaScriptPromise]).then(
|
javaScriptPromise]).then(
|
||||||
function onDocReady(results) {
|
function onDocReady(results) {
|
||||||
@ -155,7 +155,7 @@ var WorkerMessageHandler = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function getPdfManager(data) {
|
function getPdfManager(data) {
|
||||||
var pdfManagerPromise = new PDFJS.Promise();
|
var pdfManagerPromise = new Promise();
|
||||||
|
|
||||||
var source = data.source;
|
var source = data.source;
|
||||||
var disableRange = data.disableRange;
|
var disableRange = data.disableRange;
|
||||||
@ -285,7 +285,6 @@ var WorkerMessageHandler = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
getPdfManager(data).then(function() {
|
getPdfManager(data).then(function() {
|
||||||
globalScope.pdfManager = pdfManager;
|
|
||||||
loadDocument(false).then(onSuccess, function(ex) {
|
loadDocument(false).then(onSuccess, function(ex) {
|
||||||
// Try again with recoveryMode == true
|
// Try again with recoveryMode == true
|
||||||
if (!(ex instanceof XRefParseException)) {
|
if (!(ex instanceof XRefParseException)) {
|
||||||
@ -308,7 +307,7 @@ var WorkerMessageHandler = {
|
|||||||
var refPromise = pdfManager.ensure(page, 'ref');
|
var refPromise = pdfManager.ensure(page, 'ref');
|
||||||
var viewPromise = pdfManager.ensure(page, 'view');
|
var viewPromise = pdfManager.ensure(page, 'view');
|
||||||
|
|
||||||
PDFJS.Promise.all([rotatePromise, refPromise, viewPromise]).then(
|
Promise.all([rotatePromise, refPromise, viewPromise]).then(
|
||||||
function(results) {
|
function(results) {
|
||||||
var page = {
|
var page = {
|
||||||
pageIndex: data.pageIndex,
|
pageIndex: data.pageIndex,
|
||||||
|
@ -28,9 +28,12 @@ describe('evaluator', function() {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
function PdfManagerMock() { }
|
||||||
|
|
||||||
describe('splitCombinedOperations', function() {
|
describe('splitCombinedOperations', function() {
|
||||||
it('should reject unknown operations', function() {
|
it('should reject unknown operations', function() {
|
||||||
var evaluator = new PartialEvaluator(new XrefMock(), new HandlerMock(),
|
var evaluator = new PartialEvaluator(new PdfManagerMock(),
|
||||||
|
new XrefMock(), new HandlerMock(),
|
||||||
'prefix');
|
'prefix');
|
||||||
var stream = new StringStream('qTT');
|
var stream = new StringStream('qTT');
|
||||||
var promise = evaluator.getOperatorList(stream, new ResourcesMock());
|
var promise = evaluator.getOperatorList(stream, new ResourcesMock());
|
||||||
@ -44,7 +47,8 @@ describe('evaluator', function() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('should handle one operations', function() {
|
it('should handle one operations', function() {
|
||||||
var evaluator = new PartialEvaluator(new XrefMock(), new HandlerMock(),
|
var evaluator = new PartialEvaluator(new PdfManagerMock(),
|
||||||
|
new XrefMock(), new HandlerMock(),
|
||||||
'prefix');
|
'prefix');
|
||||||
var stream = new StringStream('Q');
|
var stream = new StringStream('Q');
|
||||||
var promise = evaluator.getOperatorList(stream, new ResourcesMock());
|
var promise = evaluator.getOperatorList(stream, new ResourcesMock());
|
||||||
@ -57,7 +61,8 @@ describe('evaluator', function() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('should handle two glued operations', function() {
|
it('should handle two glued operations', function() {
|
||||||
var evaluator = new PartialEvaluator(new XrefMock(), new HandlerMock(),
|
var evaluator = new PartialEvaluator(new PdfManagerMock(),
|
||||||
|
new XrefMock(), new HandlerMock(),
|
||||||
'prefix');
|
'prefix');
|
||||||
var resources = new ResourcesMock();
|
var resources = new ResourcesMock();
|
||||||
resources.Res1 = {};
|
resources.Res1 = {};
|
||||||
@ -73,7 +78,8 @@ describe('evaluator', function() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('should handle tree glued operations', function() {
|
it('should handle tree glued operations', function() {
|
||||||
var evaluator = new PartialEvaluator(new XrefMock(), new HandlerMock(),
|
var evaluator = new PartialEvaluator(new PdfManagerMock(),
|
||||||
|
new XrefMock(), new HandlerMock(),
|
||||||
'prefix');
|
'prefix');
|
||||||
var stream = new StringStream('qqq');
|
var stream = new StringStream('qqq');
|
||||||
var promise = evaluator.getOperatorList(stream, new ResourcesMock());
|
var promise = evaluator.getOperatorList(stream, new ResourcesMock());
|
||||||
@ -88,7 +94,8 @@ describe('evaluator', function() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('should handle three glued operations #2', function() {
|
it('should handle three glued operations #2', function() {
|
||||||
var evaluator = new PartialEvaluator(new XrefMock(), new HandlerMock(),
|
var evaluator = new PartialEvaluator(new PdfManagerMock(),
|
||||||
|
new XrefMock(), new HandlerMock(),
|
||||||
'prefix');
|
'prefix');
|
||||||
var resources = new ResourcesMock();
|
var resources = new ResourcesMock();
|
||||||
resources.Res1 = {};
|
resources.Res1 = {};
|
||||||
@ -105,7 +112,8 @@ describe('evaluator', function() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('should handle glued operations and operands', function() {
|
it('should handle glued operations and operands', function() {
|
||||||
var evaluator = new PartialEvaluator(new XrefMock(), new HandlerMock(),
|
var evaluator = new PartialEvaluator(new PdfManagerMock(),
|
||||||
|
new XrefMock(), new HandlerMock(),
|
||||||
'prefix');
|
'prefix');
|
||||||
var stream = new StringStream('q5 Ts');
|
var stream = new StringStream('q5 Ts');
|
||||||
var promise = evaluator.getOperatorList(stream, new ResourcesMock());
|
var promise = evaluator.getOperatorList(stream, new ResourcesMock());
|
||||||
@ -122,7 +130,8 @@ describe('evaluator', function() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('should handle glued operations and literals', function() {
|
it('should handle glued operations and literals', function() {
|
||||||
var evaluator = new PartialEvaluator(new XrefMock(), new HandlerMock(),
|
var evaluator = new PartialEvaluator(new PdfManagerMock(),
|
||||||
|
new XrefMock(), new HandlerMock(),
|
||||||
'prefix');
|
'prefix');
|
||||||
var stream = new StringStream('trueifalserinullq');
|
var stream = new StringStream('trueifalserinullq');
|
||||||
var promise = evaluator.getOperatorList(stream, new ResourcesMock());
|
var promise = evaluator.getOperatorList(stream, new ResourcesMock());
|
||||||
@ -145,7 +154,8 @@ describe('evaluator', function() {
|
|||||||
|
|
||||||
describe('validateNumberOfArgs', function() {
|
describe('validateNumberOfArgs', function() {
|
||||||
it('should execute if correct number of arguments', function() {
|
it('should execute if correct number of arguments', function() {
|
||||||
var evaluator = new PartialEvaluator(new XrefMock(), new HandlerMock(),
|
var evaluator = new PartialEvaluator(new PdfManagerMock(),
|
||||||
|
new XrefMock(), new HandlerMock(),
|
||||||
'prefix');
|
'prefix');
|
||||||
var stream = new StringStream('5 1 d0');
|
var stream = new StringStream('5 1 d0');
|
||||||
console.log('here!');
|
console.log('here!');
|
||||||
@ -158,7 +168,8 @@ describe('evaluator', function() {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
it('should execute if too many arguments', function() {
|
it('should execute if too many arguments', function() {
|
||||||
var evaluator = new PartialEvaluator(new XrefMock(), new HandlerMock(),
|
var evaluator = new PartialEvaluator(new PdfManagerMock(),
|
||||||
|
new XrefMock(), new HandlerMock(),
|
||||||
'prefix');
|
'prefix');
|
||||||
var stream = new StringStream('5 1 4 d0');
|
var stream = new StringStream('5 1 4 d0');
|
||||||
var promise = evaluator.getOperatorList(stream, new ResourcesMock());
|
var promise = evaluator.getOperatorList(stream, new ResourcesMock());
|
||||||
@ -171,7 +182,8 @@ describe('evaluator', function() {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
it('should skip if too few arguments', function() {
|
it('should skip if too few arguments', function() {
|
||||||
var evaluator = new PartialEvaluator(new XrefMock(), new HandlerMock(),
|
var evaluator = new PartialEvaluator(new PdfManagerMock(),
|
||||||
|
new XrefMock(), new HandlerMock(),
|
||||||
'prefix');
|
'prefix');
|
||||||
var stream = new StringStream('5 d0');
|
var stream = new StringStream('5 d0');
|
||||||
var promise = evaluator.getOperatorList(stream, new ResourcesMock());
|
var promise = evaluator.getOperatorList(stream, new ResourcesMock());
|
||||||
|
Loading…
x
Reference in New Issue
Block a user