]> git.parisson.com Git - pdf.js.git/commitdiff
If readXRefStream or readXRefTable fails, fallback to object indexing (#828)
authornotmasteryet <async.processingjs@yahoo.com>
Fri, 2 Dec 2011 21:31:29 +0000 (15:31 -0600)
committernotmasteryet <async.processingjs@yahoo.com>
Fri, 2 Dec 2011 21:31:29 +0000 (15:31 -0600)
src/obj.js

index 7aebb732ad2af81010471addd1efeaa4cba991c6..9544bea60ea4f2856d21f3a2969dd7b7d8fabf59 100644 (file)
@@ -518,20 +518,25 @@ var XRef = (function xRefXRef() {
     readXRef: function readXref(startXRef) {
       var stream = this.stream;
       stream.pos = startXRef;
-      var parser = new Parser(new Lexer(stream), true);
-      var obj = parser.getObj();
-      // parse an old-style xref table
-      if (isCmd(obj, 'xref'))
-        return this.readXRefTable(parser);
-      // parse an xref stream
-      if (isInt(obj)) {
-        if (!isInt(parser.getObj()) ||
-            !isCmd(parser.getObj(), 'obj') ||
-            !isStream(obj = parser.getObj())) {
-          error('Invalid XRef stream');
+      try {
+        var parser = new Parser(new Lexer(stream), true);
+        var obj = parser.getObj();
+        // parse an old-style xref table
+        if (isCmd(obj, 'xref'))
+          return this.readXRefTable(parser);
+        // parse an xref stream
+        if (isInt(obj)) {
+          if (!isInt(parser.getObj()) ||
+              !isCmd(parser.getObj(), 'obj') ||
+              !isStream(obj = parser.getObj())) {
+            error('Invalid XRef stream');
+          }
+          return this.readXRefStream(obj);
         }
-        return this.readXRefStream(obj);
+      } catch(e) {
+        log('Reading of the xref table/stream failed: ' + e);
       }
+      warn('Indexing all PDF objects');
       return this.indexObjects();
     },
     getEntry: function xRefGetEntry(i) {