From d971dfa01bde5d2dbc3517ab444158a4d958f06e Mon Sep 17 00:00:00 2001 From: Andreas Gal Date: Fri, 6 May 2011 22:44:01 -0700 Subject: [PATCH] fix reading linearized documents --- pdf.js | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/pdf.js b/pdf.js index a8cb73db8..41b34b310 100644 --- a/pdf.js +++ b/pdf.js @@ -417,7 +417,7 @@ var Lexer = (function() { if (ch == '<') { // dict punctuation stream.getChar(); - return new Cmd(ch); + return new Cmd("<<"); } return this.getHexString(ch); // dict punctuation @@ -425,7 +425,7 @@ var Lexer = (function() { ch = stream.lookChar(); if (ch == '>') { stream.getChar(); - return new Cmd(ch); + return new Cmd(">>"); } // fall through case ')': @@ -494,6 +494,7 @@ var Parser = (function() { this.refill(); if (IsCmd(this.buf1, "[")) { // array + this.shift(); var array = []; while (!IsCmd(this.buf1, "]") && !IsEOF(this.buf1)) array.push(this.getObj()); @@ -509,7 +510,7 @@ var Parser = (function() { error("Dictionary key must be a name object"); shift(); } else { - var key = buf1; + var key = this.buf1.name; this.shift(); if (IsEOF(this.buf1) || IsError(this.buf1)) break; @@ -570,7 +571,7 @@ var Linearization = (function () { var obj3 = this.parser.getObj(); this.linDict = this.parser.getObj(); if (IsInt(obj1) && IsInt(obj2) && IsCmd(obj3, "obj") && IsDict(this.linDict)) { - var obj = this.linDict.lookup("Linearized"); + var obj = this.linDict.get("Linearized"); if (!(IsNum(obj) && obj > 0)) this.linDict = null; } @@ -581,9 +582,9 @@ var Linearization = (function () { var linDict = this.linDict; var obj; if (IsDict(linDict) && - IsInt(obj = linDict.lookup(name)) && + IsInt(obj = linDict.get(name)) && obj > 0) { - return length; + return obj; } error("'" + name + "' field in linearization table is invalid"); return 0; @@ -592,7 +593,7 @@ var Linearization = (function () { var linDict = this.linDict; var obj1, obj2; if (IsDict(linDict) && - IsArray(obj1 = linDict.lookup("H")) && + IsArray(obj1 = linDict.get("H")) && obj1.length >= 2 && IsInt(obj2 = obj1[index]) && obj2 > 0) { @@ -1282,7 +1283,8 @@ function runEchoTests() { } function runParseTests() { - var data = snarf("simple_graphics.pdf", "binary"); + //var data = snarf("simple_graphics.pdf", "binary"); + var data = snarf("/tmp/pdf_reference_1-7.pdf", "binary"); var pdf = new PDFDoc(new Stream(data)); }