From 92aa46cf81c5c365e4d98cd4d96165c9f6b360cf Mon Sep 17 00:00:00 2001 From: Andreas Gal Date: Fri, 3 Jun 2011 14:38:54 -0700 Subject: [PATCH] hand in xref to the parser if needed so we can resolve 'Length' for sub-streams --- pdf.js | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/pdf.js b/pdf.js index 3fc418211..6d1e50748 100644 --- a/pdf.js +++ b/pdf.js @@ -1402,9 +1402,10 @@ var Lexer = (function() { })(); var Parser = (function() { - function constructor(lexer, allowStreams) { + function constructor(lexer, allowStreams, xref) { this.lexer = lexer; this.allowStreams = allowStreams; + this.xref = xref; this.inlineImg = 0; this.refill(); } @@ -1513,8 +1514,11 @@ var Parser = (function() { var pos = stream.pos; // get length - var length; - if (!IsInt(length = dict.get("Length"))) { + var length = dict.get("Length"); + var xref = this.xref; + if (xref) + length = xref.fetchIfRef(length); + if (!IsInt(length)) { error("Bad 'Length' attribute in stream"); lenght = 0; } @@ -1783,7 +1787,7 @@ var XRef = (function() { if (e.gen != gen) throw("inconsistent generation in XRef"); 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 obj2 = parser.getObj(); var obj3 = parser.getObj();