From 04975acceb9e640889c4a5e6c7436ad6241cacf4 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Fri, 27 Jun 2014 00:41:44 +0200 Subject: [PATCH] Prevent CMapFactory.create from failing by passing the necessary parameters from PartialEvaluator_readToUnicode (issue 5010) --- src/core/cmap.js | 2 +- src/core/evaluator.js | 8 +++++--- test/pdfs/.gitignore | 1 + test/pdfs/issue5010.pdf | Bin 0 -> 4443 bytes test/test_manifest.json | 9 +++++++++ 5 files changed, 16 insertions(+), 4 deletions(-) create mode 100644 test/pdfs/issue5010.pdf diff --git a/src/core/cmap.js b/src/core/cmap.js index 792c679df..1ea5f9344 100644 --- a/src/core/cmap.js +++ b/src/core/cmap.js @@ -815,7 +815,7 @@ var CMapFactory = (function CMapFactoryClosure() { if (BUILT_IN_CMAPS.indexOf(name) === -1) { error('Unknown cMap name: ' + name); } - assert (builtInCMapParams, 'buildin cmap parameters are not provided'); + assert(builtInCMapParams, 'built-in cMap parameters are not provided'); if (builtInCMapParams.packed) { return parseBinaryCMap(name, builtInCMapParams); diff --git a/src/core/evaluator.js b/src/core/evaluator.js index 41945e561..2579ddfdb 100644 --- a/src/core/evaluator.js +++ b/src/core/evaluator.js @@ -1224,7 +1224,7 @@ var PartialEvaluator = (function PartialEvaluatorClosure() { // 9.10.2 var toUnicode = (dict.get('ToUnicode') || baseDict.get('ToUnicode')); if (toUnicode) { - properties.toUnicode = this.readToUnicode(toUnicode, xref, properties); + properties.toUnicode = this.readToUnicode(toUnicode); } if (properties.composite) { // CIDSystemInfo helps to match CID to glyphs @@ -1308,9 +1308,11 @@ var PartialEvaluator = (function PartialEvaluatorClosure() { readToUnicode: function PartialEvaluator_readToUnicode(toUnicode) { var cmapObj = toUnicode; if (isName(cmapObj)) { - return CMapFactory.create(cmapObj).map; + return CMapFactory.create(cmapObj, + { url: PDFJS.cMapUrl, packed: PDFJS.cMapPacked }, null).map; } else if (isStream(cmapObj)) { - var cmap = CMapFactory.create(cmapObj).map; + var cmap = CMapFactory.create(cmapObj, + { url: PDFJS.cMapUrl, packed: PDFJS.cMapPacked }, null).map; // Convert UTF-16BE // NOTE: cmap can be a sparse array, so use forEach instead of for(;;) // to iterate over all keys. diff --git a/test/pdfs/.gitignore b/test/pdfs/.gitignore index debc332f6..463a4758f 100644 --- a/test/pdfs/.gitignore +++ b/test/pdfs/.gitignore @@ -66,6 +66,7 @@ !noembed-sjis.pdf !vertical.pdf !bug878026.pdf +!issue5010.pdf !issue4934.pdf !issue4650.pdf !issue3025.pdf diff --git a/test/pdfs/issue5010.pdf b/test/pdfs/issue5010.pdf new file mode 100644 index 0000000000000000000000000000000000000000..cfee1c896ed9edd7e483590fc1512747cf2d89e4 GIT binary patch literal 4443 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 literal 0 HcmV?d00001 diff --git a/test/test_manifest.json b/test/test_manifest.json index 57eb4c9c0..17eea7a2d 100644 --- a/test/test_manifest.json +++ b/test/test_manifest.json @@ -436,6 +436,15 @@ "lastPage": 1, "type": "eq" }, + { "id": "issue5010", + "file": "pdfs/issue5010.pdf", + "md5": "419f4b13403a0871c463ec69d96e342c", + "rounds": 1, + "link": false, + "firstPage": 1, + "lastPage": 1, + "type": "eq" + }, { "id": "issue4934", "file": "pdfs/issue4934.pdf", "md5": "6099da44f677702ae65a648b51a2226d",