diff --git a/pdf.js b/pdf.js
index f4cbcbfec..c5c217b93 100644
--- a/pdf.js
+++ b/pdf.js
@@ -3188,7 +3188,7 @@ var XRef = (function() {
         return obj;
       return this.fetch(obj);
     },
-    fetch: function(ref) {
+    fetch: function(ref, suppressEncryption) {
       var num = ref.num;
       var e = this.cache[num];
       if (e)
@@ -3219,7 +3219,7 @@ var XRef = (function() {
           }
           error('bad XRef entry');
         }
-        if (this.encrypt) {
+        if (this.encrypt && !suppressEncryption) {
           e = parser.getObj(this.encrypt.createCipherTransform(num, gen));
         } else {
           e = parser.getObj();
@@ -4375,7 +4375,10 @@ var PartialEvaluator = (function() {
       }
 
       if (type == 'TrueType' && dict.has('ToUnicode') && differences) {
-        var cmapObj = xref.fetchIfRef(dict.get('ToUnicode'));
+        var cmapObj = dict.get('ToUnicode');
+        if (IsRef(cmapObj)) {
+          cmapObj = xref.fetch(cmapObj, true);
+        }
         if (IsName(cmapObj)) {
           error('ToUnicode file cmap translation not implemented');
         } else if (IsStream(cmapObj)) {
diff --git a/test/pdfs/artofwar.pdf.link b/test/pdfs/artofwar.pdf.link
new file mode 100644
index 000000000..f70b9e235
--- /dev/null
+++ b/test/pdfs/artofwar.pdf.link
@@ -0,0 +1 @@
+http://www.puppetpress.com/classics/ArtofWarbySunTzu.pdf
diff --git a/test/test_manifest.json b/test/test_manifest.json
index 1155195cb..3734ee9e4 100644
--- a/test/test_manifest.json
+++ b/test/test_manifest.json
@@ -109,5 +109,11 @@
        "link": true,
        "rounds": 1,
        "type": "eq"
+    },
+    {  "id": "artofwar",
+       "file": "pdfs/artofwar.pdf",
+       "link": true,
+       "rounds": 1,
+       "type": "eq"
     }
 ]