From 31d64af855f48162ef23d015eae24795426b5995 Mon Sep 17 00:00:00 2001 From: = <=> Date: Tue, 20 Sep 2011 15:42:52 -0700 Subject: [PATCH 1/7] Handle missing encoding differences array --- pdf.js | 18 ++++++++++-------- test/pdfs/txt2pdf.pdf.link | 1 + test/test_manifest.json | 6 ++++++ 3 files changed, 17 insertions(+), 8 deletions(-) create mode 100644 test/pdfs/txt2pdf.pdf.link diff --git a/pdf.js b/pdf.js index 0b810a3ee..84c173f23 100644 --- a/pdf.js +++ b/pdf.js @@ -4324,14 +4324,16 @@ var PartialEvaluator = (function() { baseEncoding = Encodings[baseName.name].slice(); // Load the differences between the base and original - var diffEncoding = encoding.get('Differences'); - var index = 0; - for (var j = 0; j < diffEncoding.length; j++) { - var data = diffEncoding[j]; - if (IsNum(data)) - index = data; - else - differences[index++] = data.name; + if (encoding.has('Differences')) { + var diffEncoding = encoding.get('Differences'); + var index = 0; + for (var j = 0; j < diffEncoding.length; j++) { + var data = diffEncoding[j]; + if (IsNum(data)) + index = data; + else + differences[index++] = data.name; + } } } else if (IsName(encoding)) { baseEncoding = Encodings[encoding.name].slice(); diff --git a/test/pdfs/txt2pdf.pdf.link b/test/pdfs/txt2pdf.pdf.link new file mode 100644 index 000000000..09653f39c --- /dev/null +++ b/test/pdfs/txt2pdf.pdf.link @@ -0,0 +1 @@ +http://www.sanface.com/pdf/test.pdf diff --git a/test/test_manifest.json b/test/test_manifest.json index 44955eefa..a3115764a 100644 --- a/test/test_manifest.json +++ b/test/test_manifest.json @@ -133,5 +133,11 @@ "link": true, "rounds": 1, "type": "load" + }, + { "id": "txt2pdf", + "file": "pdfs/txt2pdf.pdf", + "link": true, + "rounds": 1, + "type": "load" } ] From dcd4f2ea61c80d89fba318c588f18cfb22311f9f Mon Sep 17 00:00:00 2001 From: notmasteryet Date: Tue, 20 Sep 2011 19:04:12 -0500 Subject: [PATCH 2/7] Add LF to isSpace; pass ImageLoader when a pattern is processed --- pdf.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pdf.js b/pdf.js index 0b810a3ee..79b5904b4 100644 --- a/pdf.js +++ b/pdf.js @@ -2415,7 +2415,7 @@ var Lexer = (function() { } constructor.isSpace = function(ch) { - return ch == ' ' || ch == '\t' || ch == '\x0d'; + return ch == ' ' || ch == '\t' || ch == '\x0d' || ch == '\x0a'; }; // A '1' in this array means the character is white space. A '1' or @@ -4184,7 +4184,7 @@ var PartialEvaluator = (function() { if (typeNum == 1) { patternName.code = this.evaluate(pattern, xref, dict.get('Resources'), - fonts); + fonts, images); } } } From f08aafa72acf138421a8e5061fd78e240576181b Mon Sep 17 00:00:00 2001 From: Muhammad Fikri Date: Wed, 21 Sep 2011 11:49:09 +0700 Subject: [PATCH 3/7] add loading status --- web/viewer.css | 5 +++++ web/viewer.html | 3 ++- web/viewer.js | 11 +++++++++-- 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/web/viewer.css b/web/viewer.css index d1f725a02..5b83c142a 100644 --- a/web/viewer.css +++ b/web/viewer.css @@ -271,3 +271,8 @@ canvas { page-break-after: always; } } + +#loading { + margin:100px 0; + text-align:center; +} diff --git a/web/viewer.html b/web/viewer.html index a53593df3..13d19fb6c 100644 --- a/web/viewer.html +++ b/web/viewer.html @@ -89,7 +89,8 @@ - + +
Loading... 0%
diff --git a/web/viewer.js b/web/viewer.js index 520cf4efa..87ed2b54f 100644 --- a/web/viewer.js +++ b/web/viewer.js @@ -110,13 +110,15 @@ var PDFView = { var xhr = new XMLHttpRequest(); xhr.open('GET', url); xhr.mozResponseType = xhr.responseType = 'arraybuffer'; - xhr.expected = (document.URL.indexOf('file:') === 0) ? 0 : 200; + xhr.expected = (document.URL.indexOf('file:') === 0) ? 0 : 200; + xhr.onprogress=PDFView.progressLevel; xhr.onreadystatechange = function() { if (xhr.readyState === 4 && xhr.status === xhr.expected) { var data = (xhr.mozResponseArrayBuffer || xhr.mozResponse || xhr.responseArrayBuffer || xhr.response); - + + document.getElementById('loading').style.display="none"; PDFView.load(data, scale); } }; @@ -124,6 +126,11 @@ var PDFView = { xhr.send(null); }, + progressLevel: function(evt) { + var p=Math.round((evt.loaded / evt.total)*100); + document.getElementById('loading').innerHTML = 'Loading... '+p+'%'; + }, + navigateTo: function(dest) { if (typeof dest === 'string') dest = this.destinations[dest]; From 34b64160175b80f68e125b7d83759b0c036cbbe8 Mon Sep 17 00:00:00 2001 From: Muhammad Fikri Date: Wed, 21 Sep 2011 19:25:29 +0700 Subject: [PATCH 4/7] fix indentations and style nits --- web/viewer.css | 4 ++-- web/viewer.html | 2 +- web/viewer.js | 8 ++++---- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/web/viewer.css b/web/viewer.css index 5b83c142a..cda191a76 100644 --- a/web/viewer.css +++ b/web/viewer.css @@ -273,6 +273,6 @@ canvas { } #loading { - margin:100px 0; - text-align:center; + margin: 100px 0; + text-align: center; } diff --git a/web/viewer.html b/web/viewer.html index 13d19fb6c..ecb869668 100644 --- a/web/viewer.html +++ b/web/viewer.html @@ -90,7 +90,7 @@ -
Loading... 0%
+
Loading... 0%
diff --git a/web/viewer.js b/web/viewer.js index 87ed2b54f..1a218c6dc 100644 --- a/web/viewer.js +++ b/web/viewer.js @@ -111,14 +111,14 @@ var PDFView = { xhr.open('GET', url); xhr.mozResponseType = xhr.responseType = 'arraybuffer'; xhr.expected = (document.URL.indexOf('file:') === 0) ? 0 : 200; - xhr.onprogress=PDFView.progressLevel; + xhr.onprogress = PDFView.progressLevel; xhr.onreadystatechange = function() { if (xhr.readyState === 4 && xhr.status === xhr.expected) { var data = (xhr.mozResponseArrayBuffer || xhr.mozResponse || xhr.responseArrayBuffer || xhr.response); - document.getElementById('loading').style.display="none"; + document.getElementById('loading').style.display = "none"; PDFView.load(data, scale); } }; @@ -127,8 +127,8 @@ var PDFView = { }, progressLevel: function(evt) { - var p=Math.round((evt.loaded / evt.total)*100); - document.getElementById('loading').innerHTML = 'Loading... '+p+'%'; + var p = Math.round((evt.loaded / evt.total) * 100); + document.getElementById('loading').innerHTML = 'Loading... ' + p + '%'; }, navigateTo: function(dest) { From 14bbd82ce53e861333a107c82fe5f8145f6fd284 Mon Sep 17 00:00:00 2001 From: Muhammad Fikri Date: Wed, 21 Sep 2011 21:05:40 +0700 Subject: [PATCH 5/7] fix indentation again --- web/viewer.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/viewer.js b/web/viewer.js index 1a218c6dc..72b540664 100644 --- a/web/viewer.js +++ b/web/viewer.js @@ -118,7 +118,7 @@ var PDFView = { var data = (xhr.mozResponseArrayBuffer || xhr.mozResponse || xhr.responseArrayBuffer || xhr.response); - document.getElementById('loading').style.display = "none"; + document.getElementById('loading').style.display = "none"; PDFView.load(data, scale); } }; From e318820a39eee9ae0b112772e5e33d0e668641a5 Mon Sep 17 00:00:00 2001 From: = <=> Date: Wed, 21 Sep 2011 10:04:21 -0700 Subject: [PATCH 6/7] Ignore previously parsed xref streams --- pdf.js | 9 +++++---- test/pdfs/f1040.pdf.link | 1 + test/test_manifest.json | 6 ++++++ 3 files changed, 12 insertions(+), 4 deletions(-) create mode 100644 test/pdfs/f1040.pdf.link diff --git a/pdf.js b/pdf.js index 224becdf1..9a0b0977a 100644 --- a/pdf.js +++ b/pdf.js @@ -3094,10 +3094,11 @@ var XRef = (function() { // check for 'XRefStm' key if (IsInt(obj = dict.get('XRefStm'))) { var pos = obj; - if (pos in this.xrefstms) - error('Invalid XRef table'); - this.xrefstms[pos] = 1; // avoid infinite recursion - this.readXRef(pos); + // ignore previously loaded xref streams (possible infinite recursion) + if (!(pos in this.xrefstms)) { + this.xrefstms[pos] = 1; + this.readXRef(pos); + } } return dict; diff --git a/test/pdfs/f1040.pdf.link b/test/pdfs/f1040.pdf.link new file mode 100644 index 000000000..a3299fc54 --- /dev/null +++ b/test/pdfs/f1040.pdf.link @@ -0,0 +1 @@ +http://www.irs.gov/pub/irs-pdf/f1040.pdf diff --git a/test/test_manifest.json b/test/test_manifest.json index a3115764a..edf13b7c5 100644 --- a/test/test_manifest.json +++ b/test/test_manifest.json @@ -139,5 +139,11 @@ "link": true, "rounds": 1, "type": "load" + }, + { "id": "f1040", + "file": "pdfs/f1040.pdf", + "link": true, + "rounds": 1, + "type": "load" } ] From 7dc887ace3643c72b926eff91cec75e6e04f9c83 Mon Sep 17 00:00:00 2001 From: notmasteryet Date: Wed, 21 Sep 2011 17:28:48 -0500 Subject: [PATCH 7/7] Fixing lint errors introduced by #505 --- web/viewer.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/web/viewer.js b/web/viewer.js index 72b540664..19f088c59 100644 --- a/web/viewer.js +++ b/web/viewer.js @@ -110,15 +110,15 @@ var PDFView = { var xhr = new XMLHttpRequest(); xhr.open('GET', url); xhr.mozResponseType = xhr.responseType = 'arraybuffer'; - xhr.expected = (document.URL.indexOf('file:') === 0) ? 0 : 200; + xhr.expected = (document.URL.indexOf('file:') === 0) ? 0 : 200; xhr.onprogress = PDFView.progressLevel; xhr.onreadystatechange = function() { if (xhr.readyState === 4 && xhr.status === xhr.expected) { var data = (xhr.mozResponseArrayBuffer || xhr.mozResponse || xhr.responseArrayBuffer || xhr.response); - - document.getElementById('loading').style.display = "none"; + + document.getElementById('loading').style.display = 'none'; PDFView.load(data, scale); } };