hand in xref to the parser if needed so we can resolve 'Length' for sub-streams
This commit is contained in:
parent
ed51d65409
commit
92aa46cf81
12
pdf.js
12
pdf.js
@ -1402,9 +1402,10 @@ var Lexer = (function() {
|
|||||||
})();
|
})();
|
||||||
|
|
||||||
var Parser = (function() {
|
var Parser = (function() {
|
||||||
function constructor(lexer, allowStreams) {
|
function constructor(lexer, allowStreams, xref) {
|
||||||
this.lexer = lexer;
|
this.lexer = lexer;
|
||||||
this.allowStreams = allowStreams;
|
this.allowStreams = allowStreams;
|
||||||
|
this.xref = xref;
|
||||||
this.inlineImg = 0;
|
this.inlineImg = 0;
|
||||||
this.refill();
|
this.refill();
|
||||||
}
|
}
|
||||||
@ -1513,8 +1514,11 @@ var Parser = (function() {
|
|||||||
var pos = stream.pos;
|
var pos = stream.pos;
|
||||||
|
|
||||||
// get length
|
// get length
|
||||||
var length;
|
var length = dict.get("Length");
|
||||||
if (!IsInt(length = dict.get("Length"))) {
|
var xref = this.xref;
|
||||||
|
if (xref)
|
||||||
|
length = xref.fetchIfRef(length);
|
||||||
|
if (!IsInt(length)) {
|
||||||
error("Bad 'Length' attribute in stream");
|
error("Bad 'Length' attribute in stream");
|
||||||
lenght = 0;
|
lenght = 0;
|
||||||
}
|
}
|
||||||
@ -1783,7 +1787,7 @@ var XRef = (function() {
|
|||||||
if (e.gen != gen)
|
if (e.gen != gen)
|
||||||
throw("inconsistent generation in XRef");
|
throw("inconsistent generation in XRef");
|
||||||
var stream = this.stream.makeSubStream(e.offset);
|
var stream = this.stream.makeSubStream(e.offset);
|
||||||
var parser = new Parser(new Lexer(stream), true);
|
var parser = new Parser(new Lexer(stream), true, this);
|
||||||
var obj1 = parser.getObj();
|
var obj1 = parser.getObj();
|
||||||
var obj2 = parser.getObj();
|
var obj2 = parser.getObj();
|
||||||
var obj3 = parser.getObj();
|
var obj3 = parser.getObj();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user