fix reading linearized documents
This commit is contained in:
parent
e655900785
commit
d971dfa01b
18
pdf.js
18
pdf.js
@ -417,7 +417,7 @@ var Lexer = (function() {
|
|||||||
if (ch == '<') {
|
if (ch == '<') {
|
||||||
// dict punctuation
|
// dict punctuation
|
||||||
stream.getChar();
|
stream.getChar();
|
||||||
return new Cmd(ch);
|
return new Cmd("<<");
|
||||||
}
|
}
|
||||||
return this.getHexString(ch);
|
return this.getHexString(ch);
|
||||||
// dict punctuation
|
// dict punctuation
|
||||||
@ -425,7 +425,7 @@ var Lexer = (function() {
|
|||||||
ch = stream.lookChar();
|
ch = stream.lookChar();
|
||||||
if (ch == '>') {
|
if (ch == '>') {
|
||||||
stream.getChar();
|
stream.getChar();
|
||||||
return new Cmd(ch);
|
return new Cmd(">>");
|
||||||
}
|
}
|
||||||
// fall through
|
// fall through
|
||||||
case ')':
|
case ')':
|
||||||
@ -494,6 +494,7 @@ var Parser = (function() {
|
|||||||
this.refill();
|
this.refill();
|
||||||
|
|
||||||
if (IsCmd(this.buf1, "[")) { // array
|
if (IsCmd(this.buf1, "[")) { // array
|
||||||
|
this.shift();
|
||||||
var array = [];
|
var array = [];
|
||||||
while (!IsCmd(this.buf1, "]") && !IsEOF(this.buf1))
|
while (!IsCmd(this.buf1, "]") && !IsEOF(this.buf1))
|
||||||
array.push(this.getObj());
|
array.push(this.getObj());
|
||||||
@ -509,7 +510,7 @@ var Parser = (function() {
|
|||||||
error("Dictionary key must be a name object");
|
error("Dictionary key must be a name object");
|
||||||
shift();
|
shift();
|
||||||
} else {
|
} else {
|
||||||
var key = buf1;
|
var key = this.buf1.name;
|
||||||
this.shift();
|
this.shift();
|
||||||
if (IsEOF(this.buf1) || IsError(this.buf1))
|
if (IsEOF(this.buf1) || IsError(this.buf1))
|
||||||
break;
|
break;
|
||||||
@ -570,7 +571,7 @@ var Linearization = (function () {
|
|||||||
var obj3 = this.parser.getObj();
|
var obj3 = this.parser.getObj();
|
||||||
this.linDict = this.parser.getObj();
|
this.linDict = this.parser.getObj();
|
||||||
if (IsInt(obj1) && IsInt(obj2) && IsCmd(obj3, "obj") && IsDict(this.linDict)) {
|
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))
|
if (!(IsNum(obj) && obj > 0))
|
||||||
this.linDict = null;
|
this.linDict = null;
|
||||||
}
|
}
|
||||||
@ -581,9 +582,9 @@ var Linearization = (function () {
|
|||||||
var linDict = this.linDict;
|
var linDict = this.linDict;
|
||||||
var obj;
|
var obj;
|
||||||
if (IsDict(linDict) &&
|
if (IsDict(linDict) &&
|
||||||
IsInt(obj = linDict.lookup(name)) &&
|
IsInt(obj = linDict.get(name)) &&
|
||||||
obj > 0) {
|
obj > 0) {
|
||||||
return length;
|
return obj;
|
||||||
}
|
}
|
||||||
error("'" + name + "' field in linearization table is invalid");
|
error("'" + name + "' field in linearization table is invalid");
|
||||||
return 0;
|
return 0;
|
||||||
@ -592,7 +593,7 @@ var Linearization = (function () {
|
|||||||
var linDict = this.linDict;
|
var linDict = this.linDict;
|
||||||
var obj1, obj2;
|
var obj1, obj2;
|
||||||
if (IsDict(linDict) &&
|
if (IsDict(linDict) &&
|
||||||
IsArray(obj1 = linDict.lookup("H")) &&
|
IsArray(obj1 = linDict.get("H")) &&
|
||||||
obj1.length >= 2 &&
|
obj1.length >= 2 &&
|
||||||
IsInt(obj2 = obj1[index]) &&
|
IsInt(obj2 = obj1[index]) &&
|
||||||
obj2 > 0) {
|
obj2 > 0) {
|
||||||
@ -1282,7 +1283,8 @@ function runEchoTests() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function runParseTests() {
|
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));
|
var pdf = new PDFDoc(new Stream(data));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user