Merge pull request #6485 from Snuffleupagus/Dict-getArray-getAsyncArray

Prevent `PartialEvaluator_buildFormXObject` from failing if the `Matrix` or `BBox` contains indirect objects
This commit is contained in:
Tim van der Meij 2015-09-30 00:02:41 +02:00
commit a6761a52cc
5 changed files with 27 additions and 2 deletions

View File

@ -126,8 +126,8 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
xobj, smask,
operatorList,
initialState) {
var matrix = xobj.dict.get('Matrix');
var bbox = xobj.dict.get('BBox');
var matrix = xobj.dict.getArray('Matrix');
var bbox = xobj.dict.getArray('BBox');
var group = xobj.dict.get('Group');
if (group) {
var groupOptions = {

View File

@ -135,6 +135,22 @@ var Dict = (function DictClosure() {
return Promise.resolve(value);
},
// Same as get(), but dereferences all elements if the result is an Array.
getArray: function Dict_getArray(key1, key2, key3) {
var value = this.get(key1, key2, key3);
if (!isArray(value)) {
return value;
}
value = value.slice(); // Ensure that we don't modify the Dict data.
for (var i = 0, ii = value.length; i < ii; i++) {
if (!isRef(value[i])) {
continue;
}
value[i] = this.xref.fetch(value[i]);
}
return value;
},
// no dereferencing
getRaw: function Dict_getRaw(key) {
return this.map[key];

View File

@ -3,6 +3,7 @@
!tracemonkey.pdf
!franz.pdf
!franz_2.pdf
!issue2391-1.pdf
!issue2391-2.pdf
!issue5801.pdf

BIN
test/pdfs/franz_2.pdf Normal file

Binary file not shown.

View File

@ -527,6 +527,14 @@
"type": "eq",
"about": "Type1 font with |Ref|s in the Differences array of the Encoding dictionary."
},
{ "id": "franz_2",
"file": "pdfs/franz_2.pdf",
"md5": "9d301ed8816e879891115b5cc3c39559",
"link": false,
"rounds": 1,
"type": "eq",
"about": "XObject with BBox array containing indirect object."
},
{ "id": "issue4934",
"file": "pdfs/issue4934.pdf",
"md5": "6099da44f677702ae65a648b51a2226d",