diff --git a/src/core/jbig2.js b/src/core/jbig2.js index e360ce015..402e30b7e 100644 --- a/src/core/jbig2.js +++ b/src/core/jbig2.js @@ -865,6 +865,20 @@ function decodeTextRegion( decodingContext ); } + + let increment = 0; + if (!transposed) { + if (referenceCorner > 1) { + currentS += symbolWidth - 1; + } else { + increment = symbolWidth - 1; + } + } else if (!(referenceCorner & 1)) { + currentS += symbolHeight - 1; + } else { + increment = symbolHeight - 1; + } + const offsetT = t - (referenceCorner & 1 ? 0 : symbolHeight - 1); const offsetS = currentS - (referenceCorner & 2 ? symbolWidth - 1 : 0); let s2, t2, symbolRow; @@ -896,7 +910,6 @@ function decodeTextRegion( ); } } - currentS += symbolHeight - 1; } else { for (t2 = 0; t2 < symbolHeight; t2++) { row = bitmap[offsetT + t2]; @@ -921,7 +934,6 @@ function decodeTextRegion( ); } } - currentS += symbolWidth - 1; } i++; const deltaS = huffman @@ -930,7 +942,7 @@ function decodeTextRegion( if (deltaS === null) { break; // OOB } - currentS += deltaS + dsOffset; + currentS += increment + deltaS + dsOffset; } while (true); } return bitmap; diff --git a/test/pdfs/.gitignore b/test/pdfs/.gitignore index 87a32129f..b3649ac87 100644 --- a/test/pdfs/.gitignore +++ b/test/pdfs/.gitignore @@ -637,3 +637,5 @@ !issue17730.pdf !bug1883609.pdf !issue17808.pdf +!issue17871_bottom_right.pdf +!issue17871_top_right.pdf diff --git a/test/pdfs/issue17871_bottom_right.pdf b/test/pdfs/issue17871_bottom_right.pdf new file mode 100755 index 000000000..89f216be2 Binary files /dev/null and b/test/pdfs/issue17871_bottom_right.pdf differ diff --git a/test/pdfs/issue17871_top_right.pdf b/test/pdfs/issue17871_top_right.pdf new file mode 100755 index 000000000..22ef5a9d4 Binary files /dev/null and b/test/pdfs/issue17871_top_right.pdf differ diff --git a/test/test_manifest.json b/test/test_manifest.json index 8927ba30e..e2adb07e9 100644 --- a/test/test_manifest.json +++ b/test/test_manifest.json @@ -9801,5 +9801,19 @@ "md5": "dd66194bdaa0f62bc96c760384f2e098", "rounds": 1, "type": "eq" + }, + { + "id": "issue17871_bottom_right", + "file": "pdfs/issue17871_bottom_right.pdf", + "md5": "664807166c5279224abfbf259f701958", + "rounds": 1, + "type": "eq" + }, + { + "id": "issue17871_top_right", + "file": "pdfs/issue17871_top_right.pdf", + "md5": "07d95eabf18aee0cf38f09eb7b1390ec", + "rounds": 1, + "type": "eq" } ]