pdf.js/test/test_manifest.json

7688 lines
203 KiB
JSON
Raw Normal View History

Initial import of first test harness The harness (test.py) operates as follows. First it locates executable browsers (or symlinks or scripts) named "[browser][version]", e.g. "firefox4". It then launches the located browsers and asks them to load the file test_slave.html. At the same time, test.py sets up an HTTP server on localhost:8080 (there's a race condition here currently ;). After test_slave loads in the browser(s), it fetches the task manifest (test_manifest.json). The entries in the manifest specify which PDF to load and how many times to cycle through page rendering. This will probably evolve over time. test_slave then performs the requested tasks and POSTs the results back to test.py, which saves them. When all the results of for a task are in, test.py checks them. There are three types of tests currently. "==" tests compare the rendering of a PDF against a master copy. This is not yet implemented because setting up a master copy is complicated. "fbf" tests render all a PDF's pages, then go back to page 1 and render all pages a second time. The renderings from the first round must match the ones from the second round. "load" tests just check that a PDF's pages load without errors. Currently the test harness will only launch a "firefox4" target. This can be a bash script in your pdf.js checkout, pdf.js/firefox4, something like the following #!/bin/bash dist="/path/to/firefox4/installation" profile=`mktemp -dt 'pdf.js-test-ff-profile-XXXXXXXXXX'` $dist/firefox -no-remote -profile $profile $* rm -rf $profile (Yes, this script doesn't clean up properly on early termination.) It's possible to run the tests in a normal browsing session, but that might be annoying. With that set up, run the harness like so python test.py If all goes well, you'll see all "TEST-PASS" messages printed to stdout. If something goes wrong, you'll see "TEST-UNEXPECTED-FAIL" printed to stdout.
2011-06-19 10:09:21 +09:00
[
{ "id": "bug1755201",
"file": "pdfs/bug1755201.pdf",
"md5": "cece14097812d8a1f69e86a51e4a3804",
"rounds": 1,
"link": true,
"type": "other"
},
{ "id": "issue14864",
"file": "pdfs/issue14864.pdf",
"md5": "cfe5e68267d1e84ec909a915911974cf",
"rounds": 1,
"link": true,
"type": "other"
},
2013-02-07 08:19:29 +09:00
{ "id": "filled-background-range",
"file": "pdfs/filled-background.pdf",
"md5": "2e3120255d9c3e79b96d2543b12d2589",
"rounds": 1,
"type": "eq"
},
2011-06-22 06:53:57 +09:00
{ "id": "tracemonkey-eq",
"file": "pdfs/tracemonkey.pdf",
"md5": "9a192d8b1a7dc652a19835f6f08098bd",
Initial import of first test harness The harness (test.py) operates as follows. First it locates executable browsers (or symlinks or scripts) named "[browser][version]", e.g. "firefox4". It then launches the located browsers and asks them to load the file test_slave.html. At the same time, test.py sets up an HTTP server on localhost:8080 (there's a race condition here currently ;). After test_slave loads in the browser(s), it fetches the task manifest (test_manifest.json). The entries in the manifest specify which PDF to load and how many times to cycle through page rendering. This will probably evolve over time. test_slave then performs the requested tasks and POSTs the results back to test.py, which saves them. When all the results of for a task are in, test.py checks them. There are three types of tests currently. "==" tests compare the rendering of a PDF against a master copy. This is not yet implemented because setting up a master copy is complicated. "fbf" tests render all a PDF's pages, then go back to page 1 and render all pages a second time. The renderings from the first round must match the ones from the second round. "load" tests just check that a PDF's pages load without errors. Currently the test harness will only launch a "firefox4" target. This can be a bash script in your pdf.js checkout, pdf.js/firefox4, something like the following #!/bin/bash dist="/path/to/firefox4/installation" profile=`mktemp -dt 'pdf.js-test-ff-profile-XXXXXXXXXX'` $dist/firefox -no-remote -profile $profile $* rm -rf $profile (Yes, this script doesn't clean up properly on early termination.) It's possible to run the tests in a normal browsing session, but that might be annoying. With that set up, run the harness like so python test.py If all goes well, you'll see all "TEST-PASS" messages printed to stdout. If something goes wrong, you'll see "TEST-UNEXPECTED-FAIL" printed to stdout.
2011-06-19 10:09:21 +09:00
"rounds": 1,
2011-06-22 06:53:57 +09:00
"type": "eq"
Initial import of first test harness The harness (test.py) operates as follows. First it locates executable browsers (or symlinks or scripts) named "[browser][version]", e.g. "firefox4". It then launches the located browsers and asks them to load the file test_slave.html. At the same time, test.py sets up an HTTP server on localhost:8080 (there's a race condition here currently ;). After test_slave loads in the browser(s), it fetches the task manifest (test_manifest.json). The entries in the manifest specify which PDF to load and how many times to cycle through page rendering. This will probably evolve over time. test_slave then performs the requested tasks and POSTs the results back to test.py, which saves them. When all the results of for a task are in, test.py checks them. There are three types of tests currently. "==" tests compare the rendering of a PDF against a master copy. This is not yet implemented because setting up a master copy is complicated. "fbf" tests render all a PDF's pages, then go back to page 1 and render all pages a second time. The renderings from the first round must match the ones from the second round. "load" tests just check that a PDF's pages load without errors. Currently the test harness will only launch a "firefox4" target. This can be a bash script in your pdf.js checkout, pdf.js/firefox4, something like the following #!/bin/bash dist="/path/to/firefox4/installation" profile=`mktemp -dt 'pdf.js-test-ff-profile-XXXXXXXXXX'` $dist/firefox -no-remote -profile $profile $* rm -rf $profile (Yes, this script doesn't clean up properly on early termination.) It's possible to run the tests in a normal browsing session, but that might be annoying. With that set up, run the harness like so python test.py If all goes well, you'll see all "TEST-PASS" messages printed to stdout. If something goes wrong, you'll see "TEST-UNEXPECTED-FAIL" printed to stdout.
2011-06-19 10:09:21 +09:00
},
{ "id": "tracemonkey-renderTaskOnContinue",
"file": "pdfs/tracemonkey.pdf",
"md5": "9a192d8b1a7dc652a19835f6f08098bd",
"rounds": 1,
"type": "eq",
"renderTaskOnContinue": true
},
{ "id": "issue13130",
"file": "pdfs/issue13130.pdf",
"md5": "318518299132fe3b52252ca43a69a23e",
"rounds": 1,
"link": true,
"firstPage": 2,
"lastPage": 2,
"type": "eq"
},
{ "id": "issue16395",
"file": "pdfs/issue16395.pdf",
"md5": "a5de985711ec27cd2a2ed97d5f1c536c",
"rounds": 1,
"link": true,
"firstPage": 3,
"lastPage": 3,
"type": "eq"
},
{ "id": "issue16432",
"file": "pdfs/issue16432.pdf",
"md5": "b67b0324c307d8af43d11b0edec88e3e",
"rounds": 1,
"link": true,
"lastPage": 1,
"type": "eq"
},
{ "id": "issue16464",
"file": "pdfs/issue16464.pdf",
"md5": "2bd97ff909e2185605788daa70de38ee",
"rounds": 1,
"link": true,
"lastPage": 1,
"type": "eq"
},
Initial import of first test harness The harness (test.py) operates as follows. First it locates executable browsers (or symlinks or scripts) named "[browser][version]", e.g. "firefox4". It then launches the located browsers and asks them to load the file test_slave.html. At the same time, test.py sets up an HTTP server on localhost:8080 (there's a race condition here currently ;). After test_slave loads in the browser(s), it fetches the task manifest (test_manifest.json). The entries in the manifest specify which PDF to load and how many times to cycle through page rendering. This will probably evolve over time. test_slave then performs the requested tasks and POSTs the results back to test.py, which saves them. When all the results of for a task are in, test.py checks them. There are three types of tests currently. "==" tests compare the rendering of a PDF against a master copy. This is not yet implemented because setting up a master copy is complicated. "fbf" tests render all a PDF's pages, then go back to page 1 and render all pages a second time. The renderings from the first round must match the ones from the second round. "load" tests just check that a PDF's pages load without errors. Currently the test harness will only launch a "firefox4" target. This can be a bash script in your pdf.js checkout, pdf.js/firefox4, something like the following #!/bin/bash dist="/path/to/firefox4/installation" profile=`mktemp -dt 'pdf.js-test-ff-profile-XXXXXXXXXX'` $dist/firefox -no-remote -profile $profile $* rm -rf $profile (Yes, this script doesn't clean up properly on early termination.) It's possible to run the tests in a normal browsing session, but that might be annoying. With that set up, run the harness like so python test.py If all goes well, you'll see all "TEST-PASS" messages printed to stdout. If something goes wrong, you'll see "TEST-UNEXPECTED-FAIL" printed to stdout.
2011-06-19 10:09:21 +09:00
{ "id": "tracemonkey-fbf",
"file": "pdfs/tracemonkey.pdf",
"md5": "9a192d8b1a7dc652a19835f6f08098bd",
Initial import of first test harness The harness (test.py) operates as follows. First it locates executable browsers (or symlinks or scripts) named "[browser][version]", e.g. "firefox4". It then launches the located browsers and asks them to load the file test_slave.html. At the same time, test.py sets up an HTTP server on localhost:8080 (there's a race condition here currently ;). After test_slave loads in the browser(s), it fetches the task manifest (test_manifest.json). The entries in the manifest specify which PDF to load and how many times to cycle through page rendering. This will probably evolve over time. test_slave then performs the requested tasks and POSTs the results back to test.py, which saves them. When all the results of for a task are in, test.py checks them. There are three types of tests currently. "==" tests compare the rendering of a PDF against a master copy. This is not yet implemented because setting up a master copy is complicated. "fbf" tests render all a PDF's pages, then go back to page 1 and render all pages a second time. The renderings from the first round must match the ones from the second round. "load" tests just check that a PDF's pages load without errors. Currently the test harness will only launch a "firefox4" target. This can be a bash script in your pdf.js checkout, pdf.js/firefox4, something like the following #!/bin/bash dist="/path/to/firefox4/installation" profile=`mktemp -dt 'pdf.js-test-ff-profile-XXXXXXXXXX'` $dist/firefox -no-remote -profile $profile $* rm -rf $profile (Yes, this script doesn't clean up properly on early termination.) It's possible to run the tests in a normal browsing session, but that might be annoying. With that set up, run the harness like so python test.py If all goes well, you'll see all "TEST-PASS" messages printed to stdout. If something goes wrong, you'll see "TEST-UNEXPECTED-FAIL" printed to stdout.
2011-06-19 10:09:21 +09:00
"rounds": 2,
"type": "fbf"
},
2012-09-12 08:04:01 +09:00
{ "id": "tracemonkey-text",
"file": "pdfs/tracemonkey.pdf",
"md5": "9a192d8b1a7dc652a19835f6f08098bd",
"rounds": 1,
"type": "text"
},
{ "id": "tracemonkey-forced-colors-eq",
"file": "pdfs/tracemonkey.pdf",
"md5": "9a192d8b1a7dc652a19835f6f08098bd",
"rounds": 1,
"pageColors": {
"background": "black",
"foreground": "#00FF00"
},
"type": "eq"
},
{ "id": "tracemonkey-viewer-colors-eq",
"file": "pdfs/tracemonkey.pdf",
"md5": "9a192d8b1a7dc652a19835f6f08098bd",
"rounds": 1,
"pageColors": {
"background": "Canvas",
"foreground": "CanvasText"
},
"type": "eq",
"about": "Uses the same pageColors as the viewer."
},
{ "id": "tracemonkey-default-colors-eq",
"file": "pdfs/tracemonkey.pdf",
"md5": "9a192d8b1a7dc652a19835f6f08098bd",
"rounds": 1,
"pageColors": {
"background": "white",
"foreground": "black"
},
"type": "eq",
"about": "Uses the default colors."
},
{ "id": "issue3925",
"file": "pdfs/issue3925.pdf",
"md5": "c5c895deecf7a7565393587e0d61be2b",
"rounds": 1,
"link": true,
"firstPage": 1,
"lastPage": 1,
"type": "text"
},
{ "id": "boundingBox_invalid",
"file": "pdfs/boundingBox_invalid.pdf",
"md5": "f6dfc471bf43abac00cdcf05d81cb070",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "issue11016",
"file": "pdfs/issue11016_reduced.pdf",
"md5": "b75578bd052d2e6acdcc85b615eab6b1",
"rounds": 1,
"link": false,
"type": "text"
},
{ "id": "issue11150",
"file": "pdfs/issue11150_reduced.pdf",
"md5": "8b86381089a9ec28723791245a9adfa6",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "issue11532",
"file": "pdfs/issue11532.pdf",
"md5": "9216481d259ae2b8d747236e745cbc80",
"rounds": 1,
"link": true,
"firstPage": 2,
"lastPage": 2,
"type": "eq"
},
{ "id": "issue14256",
"file": "pdfs/issue14256.pdf",
"md5": "15938b7562146dbea7ed8aa15b172fe6",
"rounds": 1,
"type": "eq"
},
{ "id": "issue14814",
"file": "pdfs/issue14814.pdf",
"md5": "a1c8b677335ff5ea0d07e35e7dffb6e8",
"rounds": 1,
"firstPage": 2,
"type": "eq"
},
{ "id": "issue14269",
"file": "pdfs/issue14269.pdf",
"md5": "f34abf77a418f54e13fbcd03b063432e",
"rounds": 1,
"link": true,
"lastPage": 1,
"type": "eq"
},
{ "id": "issue15220",
"file": "pdfs/issue15220.pdf",
"md5": "0864a9e3860c0cb5e98b5eb23287fba4",
"rounds": 1,
"link": true,
"lastPage": 1,
"type": "eq"
},
{ "id": "issue15292",
"file": "pdfs/issue15292.pdf",
"md5": "24297e183bf16cdd684dac8902e9fbe6",
"rounds": 1,
"link": true,
"lastPage": 1,
"type": "eq"
},
{ "id": "issue11549",
"file": "pdfs/issue11549_reduced.pdf",
"md5": "a1ea636f413e02e10dbdf379ab4a99ae",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "issue11651-eq",
"file": "pdfs/issue11651.pdf",
"md5": "375233ad8dc4181a06148f8412f35b91",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "issue11651-text",
"file": "pdfs/issue11651.pdf",
"md5": "375233ad8dc4181a06148f8412f35b91",
"rounds": 1,
"link": false,
"type": "text"
},
{ "id": "issue1293",
"file": "pdfs/issue1293r.pdf",
"md5": "4a098f5051f34fab036f5bbe88f8deef",
"rounds": 1,
"link": false,
"type": "load",
"about": "PDF with undefined stream length."
},
{ "id": "issue5564_reduced",
"file": "pdfs/issue5564_reduced.pdf",
"md5": "097853614b56fc10bfbf7e56daa0c66b",
"rounds": 1,
"link": false,
"firstPage": 1,
"lastPage": 1,
"type": "eq",
"about": "Causes cmap to be created with invalid glyph ids."
},
{ "id": "issue13447-eq",
"file": "pdfs/issue13447.pdf",
"md5": "a729709950d69ec1cfc516bf559e995d",
"rounds": 1,
"type": "eq"
},
{ "id": "issue13447-annotations",
"file": "pdfs/issue13447.pdf",
"md5": "a729709950d69ec1cfc516bf559e995d",
"rounds": 1,
"type": "eq",
"annotations": true
},
{ "id": "issue2966",
"file": "pdfs/rc_annotation.pdf",
"md5": "7b978a8c2871b8902656adb67f7bd117",
"rounds": 1,
"lastPage": 1,
"type": "eq",
"annotations": true
},
{ "id": "issue13915",
"file": "pdfs/issue13915.pdf",
"md5": "fef3108733bbf80ea8551feedb427b1c",
"rounds": 1,
"firstPage": 51,
"lastPage": 51,
"link": true,
"type": "eq",
"annotations": true
},
{ "id": "issue15516",
"file": "pdfs/issue15516_reduced.pdf",
"md5": "a30be78c73d13aa6ff890834ce69adc1",
"rounds": 1,
"link": false,
"type": "text"
},
{ "id": "bug946506",
"file": "pdfs/bug946506.pdf",
"md5": "c28911b5c31bdc337c2ce404c5971cfc",
"rounds": 1,
"link": false,
"firstPage": 1,
"lastPage": 1,
"type": "eq",
"about": "Fonts referenced only by name and not by an object identifier."
},
{ "id": "bug946506-text",
"file": "pdfs/bug946506.pdf",
"md5": "c28911b5c31bdc337c2ce404c5971cfc",
"rounds": 1,
"link": false,
"firstPage": 1,
"lastPage": 1,
"type": "text"
},
{ "id": "bug931481",
"file": "pdfs/bug931481.pdf",
"md5": "547de872cbb2ecc653ae83d5be7e5be9",
"rounds": 1,
"link": true,
"type": "text"
},
{ "id": "bug911034",
"file": "pdfs/bug911034.pdf",
"md5": "54ee432a4e16b26b242fbf549cdad177",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "bug920426",
"file": "pdfs/bug920426.pdf",
"md5": "2fd118b44513afb22509c3584388cc29",
"rounds": 1,
"type": "eq"
},
{ "id": "issue8111",
"file": "pdfs/issue8111.pdf",
"md5": "14a2b3c19ed3d6cd7e138cdc141aa4a8",
"rounds": 1,
"type": "eq"
},
{ "id": "issue13343",
"file": "pdfs/issue13343.pdf",
"md5": "f8bf1888839e15254555092c504e1900",
"rounds": 1,
"type": "eq"
},
{ "id": "bug1734802",
"file": "pdfs/bug1734802.pdf",
"md5": "a23ad8af95ffca3876e110a5f4dec9bc",
"rounds": 1,
"link": true,
"lastPage": 3,
"type": "eq"
},
{ "id": "bug1753983",
"file": "pdfs/bug1753983.pdf",
"md5": "432be86262e5071176c49713ce458031",
"rounds": 1,
"link": true,
"type": "eq"
},
{ "id": "issue15604",
"file": "pdfs/issue15604.pdf",
"md5": "505040e5634434ae97118a4c39bf27e5",
"rounds": 1,
"link": true,
"type": "eq"
},
2014-01-04 05:17:50 +09:00
{ "id": "bug921760",
"file": "pdfs/bug921760.pdf",
"md5": "1aa136d786a65b0d7cce7bdb3c58c6c3",
"rounds": 1,
"link": true,
"firstPage": 1,
"lastPage": 1,
"type": "eq"
},
2013-11-05 02:16:33 +09:00
{ "id": "issue3879",
"file": "pdfs/issue3879r.pdf",
"md5": "756cdaf5eb54c7d78b0aa737236b9a4f",
2013-11-05 02:16:33 +09:00
"rounds": 1,
"link": false,
2013-11-05 02:16:33 +09:00
"type": "eq"
},
{ "id": "issue3885",
"file": "pdfs/issue3885.pdf",
"md5": "319c998910453bc44d40c7748cd2cb79",
"rounds": 1,
"firstPage": 1,
"lastPage": 1,
"type": "eq"
},
{ "id": "issue2833",
"file": "pdfs/issue2833.pdf",
"md5": "7bc6e17c41586155c188d7408bcb9ab5",
"rounds": 1,
"lastPage": 1,
"type": "eq"
},
2013-05-10 11:57:00 +09:00
{ "id": "issue2881",
"file": "pdfs/issue2881.pdf",
"md5": "ea6ade27d2cb146676d23dcd6605d5ee",
"link": "true",
"rounds": 1,
"lastPage": 1,
"type": "eq"
},
{ "id": "issue3903",
"file": "pdfs/issue3903.pdf",
"md5": "c9a4a8012e15cf3b10d671982ce35a92",
"rounds": 1,
"link": true,
"firstPage": 1,
"lastPage": 1,
"type": "eq"
},
Map all glyphs to the private use area and duplicate the first glyph. There have been lots of problems with trying to map glyphs to their unicode values. It's more reliable to just use the private use areas so the browser's font renderer doesn't mess with the glyphs. Using the private use area for all glyphs did highlight other issues that this patch also had to fix: * small private use area - Previously, only the BMP private use area was used which can't map many glyphs. Now, the (much bigger) PUP 16 area can also be used. * glyph zero not shown - Browsers will not use the glyph from a font if it is glyph id = 0. This issue was less prevalent when we mapped to unicode values since the fallback font would be used. However, when using the private use area, the glyph would not be drawn at all. This is illustrated in one of the current test cases (issue #8234) where there's an "ä" glyph at position zero. The PDF looked like it rendered correctly, but it was actually not using the glyph from the font. To properly show the first glyph it is always duplicated and appended to the glyphs and the maps are adjusted. * supplementary characters - The private use area PUP 16 is 4 bytes, so String.fromCodePoint must be used where we previously used String.fromCharCode. This is actually an issue that should have been fixed regardless of this patch. * charset - Freetype fails to load fonts when the charset size doesn't match number of glyphs in the font. We now write out a fake charset with the correct length. This also brought up the issue that glyphs with seac/endchar should only ever write a standard charset, but we now write a custom one. To get around this the seac analysis is permanently enabled so those glyphs are instead always drawn as two glyphs.
2018-01-05 07:43:07 +09:00
{ "id": "issue8795_reduced",
"file": "pdfs/issue8795_reduced.pdf",
"md5": "3ce58fa4aff351d46c42e0677d582099",
"rounds": 1,
"type": "eq"
},
{ "id": "issue2391-1",
"file": "pdfs/issue2391-1.pdf",
"md5": "25ae9cb959612e7b343b55da63af2716",
"rounds": 1,
"type": "eq"
},
{ "id": "issue2391-2",
"file": "pdfs/issue2391-2.pdf",
"md5": "7e68756d11021a087383eaac95ba45dd",
"rounds": 1,
"type": "eq"
},
{ "id": "bug1443140",
"file": "pdfs/bug1443140.pdf",
"md5": "8f9347b0d5620537850b24b8385b0982",
"rounds": 1,
"link": true,
"firstPage": 4,
"lastPage": 4,
"type": "eq"
},
{ "id": "bug1473809",
"file": "pdfs/bug1473809.pdf",
"md5": "4b1ca51cf8cad58a1ce0618667341c76",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "issue2531",
"file": "pdfs/issue2531.pdf",
"md5": "c58e6642d8a6e2ddd5e07a543ef8f30d",
"link": true,
"rounds": 1,
"firstPage": 4,
"lastPage": 4,
"type": "eq"
},
{ "id": "issue15893_reduced",
"file": "pdfs/issue15893_reduced.pdf",
"md5": "cf889b927f9f53d164622a99378bf39d",
"rounds": 1,
"type": "eq",
"password": "test"
},
{ "id": "bug1727053",
"file": "pdfs/bug1727053.pdf",
"md5": "8ed1e52da64000f9fdcb8b732f5a58f8",
"rounds": 1,
"type": "eq"
},
{ "id": "issue3999",
"file": "pdfs/issue3999.pdf",
"md5": "0a59cd612e93758aa9f104470f45574b",
"link": true,
"rounds": 1,
"firstPage": 1,
"lastPage": 1,
"type": "eq"
},
{ "id": "issue2537",
"file": "pdfs/issue2537r.pdf",
"md5": "0f47a8bda08eebd986c254e65dcc2a76",
"rounds": 1,
"type": "eq"
},
Initial import of first test harness The harness (test.py) operates as follows. First it locates executable browsers (or symlinks or scripts) named "[browser][version]", e.g. "firefox4". It then launches the located browsers and asks them to load the file test_slave.html. At the same time, test.py sets up an HTTP server on localhost:8080 (there's a race condition here currently ;). After test_slave loads in the browser(s), it fetches the task manifest (test_manifest.json). The entries in the manifest specify which PDF to load and how many times to cycle through page rendering. This will probably evolve over time. test_slave then performs the requested tasks and POSTs the results back to test.py, which saves them. When all the results of for a task are in, test.py checks them. There are three types of tests currently. "==" tests compare the rendering of a PDF against a master copy. This is not yet implemented because setting up a master copy is complicated. "fbf" tests render all a PDF's pages, then go back to page 1 and render all pages a second time. The renderings from the first round must match the ones from the second round. "load" tests just check that a PDF's pages load without errors. Currently the test harness will only launch a "firefox4" target. This can be a bash script in your pdf.js checkout, pdf.js/firefox4, something like the following #!/bin/bash dist="/path/to/firefox4/installation" profile=`mktemp -dt 'pdf.js-test-ff-profile-XXXXXXXXXX'` $dist/firefox -no-remote -profile $profile $* rm -rf $profile (Yes, this script doesn't clean up properly on early termination.) It's possible to run the tests in a normal browsing session, but that might be annoying. With that set up, run the harness like so python test.py If all goes well, you'll see all "TEST-PASS" messages printed to stdout. If something goes wrong, you'll see "TEST-UNEXPECTED-FAIL" printed to stdout.
2011-06-19 10:09:21 +09:00
{ "id": "html5-canvas-cheat-sheet-load",
"file": "pdfs/canvas.pdf",
"md5": "59510028561daf62e00bf9f6f066b033",
Initial import of first test harness The harness (test.py) operates as follows. First it locates executable browsers (or symlinks or scripts) named "[browser][version]", e.g. "firefox4". It then launches the located browsers and asks them to load the file test_slave.html. At the same time, test.py sets up an HTTP server on localhost:8080 (there's a race condition here currently ;). After test_slave loads in the browser(s), it fetches the task manifest (test_manifest.json). The entries in the manifest specify which PDF to load and how many times to cycle through page rendering. This will probably evolve over time. test_slave then performs the requested tasks and POSTs the results back to test.py, which saves them. When all the results of for a task are in, test.py checks them. There are three types of tests currently. "==" tests compare the rendering of a PDF against a master copy. This is not yet implemented because setting up a master copy is complicated. "fbf" tests render all a PDF's pages, then go back to page 1 and render all pages a second time. The renderings from the first round must match the ones from the second round. "load" tests just check that a PDF's pages load without errors. Currently the test harness will only launch a "firefox4" target. This can be a bash script in your pdf.js checkout, pdf.js/firefox4, something like the following #!/bin/bash dist="/path/to/firefox4/installation" profile=`mktemp -dt 'pdf.js-test-ff-profile-XXXXXXXXXX'` $dist/firefox -no-remote -profile $profile $* rm -rf $profile (Yes, this script doesn't clean up properly on early termination.) It's possible to run the tests in a normal browsing session, but that might be annoying. With that set up, run the harness like so python test.py If all goes well, you'll see all "TEST-PASS" messages printed to stdout. If something goes wrong, you'll see "TEST-UNEXPECTED-FAIL" printed to stdout.
2011-06-19 10:09:21 +09:00
"rounds": 1,
"type": "load"
},
{ "id": "issue14618",
"file": "pdfs/issue14618.pdf",
"md5": "8a4a5aac59519228019aaffdfbd56f17",
"rounds": 1,
"type": "eq"
},
{ "id": "intelisa-eq",
"file": "pdfs/intelisa.pdf",
2013-12-17 09:37:10 +09:00
"md5": "24643ebe348a568cfe6a532055c71493",
"link": true,
"lastPage": 100,
"rounds": 1,
"type": "eq"
},
{ "id": "issue2128",
"file": "pdfs/issue2128r.pdf",
"md5": "64118f4e74590b88bd476b4178a516d5",
"link": false,
"rounds": 1,
"type": "eq"
},
{ "id": "german-umlaut",
"file": "pdfs/german-umlaut-r.pdf",
"md5": "baa2cd74c76473cf7b914a17403a7f9a",
"link": false,
"rounds": 1,
"type": "eq"
},
{ "id": "bug859204",
"file": "pdfs/bug859204.pdf",
"md5": "ac1ea1dbfa6ac9d5b13167483049af0b",
"link": false,
"rounds": 1,
"type": "eq"
},
{ "id": "issue15441",
"file": "pdfs/issue15441.pdf",
"md5": "4a30ea4c8d32fc7dee2a26f78b24966e",
"rounds": 1,
"type": "eq"
},
{ "id": "bug1027533",
"file": "pdfs/bug1027533.pdf",
"md5": "07235b2bb0e03f8d727072d48fae3b0a",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "bug1028735",
"file": "pdfs/bug1028735.pdf",
"md5": "5d1a2a87d176ff3b24e66af3cb2365be",
"rounds": 1,
"link": false,
"firstPage": 1,
"lastPage": 1,
"type": "eq"
},
{ "id": "bug1068432",
"file": "pdfs/bug1068432.pdf",
"md5": "b76ac8d7d0ef471f28535c881f421e33",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "bug1146106",
"file": "pdfs/bug1146106.pdf",
"md5": "a323d3766da49ee40f7d5dff0aeb0cc1",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "issue1512",
"file": "pdfs/issue1512r.pdf",
"md5": "af48ede2658d99cca423147085c6609b",
"link": false,
"rounds": 1,
"type": "eq"
},
{ "id": "pdfspec-load",
"file": "pdfs/pdf.pdf",
"md5": "dbdb23c939d2be09b43126c3c56060c7",
"link": true,
"lastPage": 500,
"rounds": 1,
"type": "load"
2011-06-26 23:15:33 +09:00
},
{ "id": "issue2129",
"file": "pdfs/issue2129.pdf",
"md5": "b082dd2cb3648f979fd668f498af14d6",
"link": true,
"lastPage": 1,
"rounds": 1,
"type": "load"
},
2011-07-06 02:21:28 +09:00
{ "id": "shavian-load",
"file": "pdfs/shavian.pdf",
2013-12-17 09:37:10 +09:00
"md5": "4fabf0a03e82693007435020bc446f9b",
2011-07-06 02:21:28 +09:00
"link": true,
"rounds": 1,
"type": "load"
},
2011-06-26 23:15:33 +09:00
{ "id": "sizes",
"file": "pdfs/sizes.pdf",
"md5": "c101ba7b44aee36048e1ac7b98f302ea",
2011-06-26 23:15:33 +09:00
"rounds": 1,
"type": "eq"
2011-06-28 10:13:11 +09:00
},
{ "id": "plusminus",
"file": "pdfs/Test-plusminus.pdf",
"md5": "1ec7ade5b95ac9aaba3a618af28d34c7",
"rounds": 1,
"type": "eq"
},
{ "id": "mmtype1",
"file": "pdfs/mmtype1.pdf",
"md5": "7d632263d28bc2ff05ee0cc426966a5a",
"link": false,
"rounds": 1,
"type": "eq"
},
2011-07-06 08:43:47 +09:00
{ "id": "openoffice-pdf",
"file": "pdfs/openoffice.pdf",
"md5": "ecb0225c7ce2df2cd9a5323a349f8f84",
"link": false,
2011-07-06 08:43:47 +09:00
"rounds": 1,
"type": "load"
2011-07-13 17:55:13 +09:00
},
{ "id": "openofficecidtruetype-pdf",
"file": "pdfs/arial_unicode_en_cidfont.pdf",
"md5": "03591cdf20214fb0b2dd5e5c3dd32d8c",
2011-07-13 17:55:13 +09:00
"rounds": 1,
"type": "load"
},
{ "id": "openofficearabiccidtruetype-pdf",
"file": "pdfs/arial_unicode_ab_cidfont.pdf",
"md5": "35090fa7d29e7196ae3421812e554988",
2011-07-13 17:55:13 +09:00
"rounds": 1,
"type": "load"
},
{ "id": "arabiccidtruetype-pdf",
"file": "pdfs/ArabicCIDTrueType.pdf",
"md5": "d66dbd18bdb572d3ac8b88b32de2ece6",
2011-07-13 17:55:13 +09:00
"rounds": 1,
"type": "load"
2011-07-21 13:17:31 +09:00
},
{ "id": "issue8565",
"file": "pdfs/issue8565.pdf",
"md5": "84e0e2fc2775bc489beac475503dd67b",
"rounds": 1,
"type": "eq"
},
{ "id": "arabiccidtruetype-text",
"file": "pdfs/ArabicCIDTrueType.pdf",
"md5": "d66dbd18bdb572d3ac8b88b32de2ece6",
"rounds": 1,
"type": "text"
},
{ "id": "complexttffont-pdf",
"file": "pdfs/complex_ttf_font.pdf",
"md5": "76de93f9116b01b693bf8583b3e76d91",
"rounds": 1,
"type": "load"
},
{ "id": "bug854315",
"file": "pdfs/bug854315.pdf",
"md5": "675754c07f71c068d2997905a5456f05",
"rounds": 1,
"type": "eq"
},
2013-11-03 08:56:48 +09:00
{ "id": "bug868745",
"file": "pdfs/bug868745.pdf",
"md5": "86111ea5097dd7daffcdea891ad1b348",
"rounds": 1,
"type": "load"
},
2011-10-03 21:57:01 +09:00
{ "id": "thuluthfont-pdf",
"file": "pdfs/ThuluthFeatures.pdf",
"md5": "b7e18bf7a3d6a9c82aefa12d721072fc",
2011-10-03 21:57:01 +09:00
"rounds": 1,
2011-10-06 11:22:52 +09:00
"type": "eq"
2011-10-03 21:57:01 +09:00
},
{ "id": "taro",
"file": "pdfs/TaroUTR50SortedList112.pdf",
"md5": "ce63eab622ff473a43f8a8de85ef8a46",
"link": true,
"rounds": 1,
"lastPage": 4,
"type": "eq"
},
2013-06-21 07:03:30 +09:00
{ "id": "taro-text",
"file": "pdfs/TaroUTR50SortedList112.pdf",
"md5": "ce63eab622ff473a43f8a8de85ef8a46",
"link":true,
"rounds": 1,
"lastPage": 4,
"type": "text"
},
{ "id": "issue15594",
"file": "pdfs/issue15594_reduced.pdf",
"md5": "6820808944a2a84c72d00a0e1476227b",
"rounds": 1,
"type": "eq"
},
2013-06-21 07:03:30 +09:00
{ "id": "rotated-text",
"file": "pdfs/rotated.pdf",
"md5": "aed187f53e969ccdcbab0bb4c59f9e46",
"rounds": 1,
"type": "text"
},
2013-04-20 05:07:08 +09:00
{
"id": "issue3115",
"file": "pdfs/issue3115r.pdf",
2013-04-20 05:07:08 +09:00
"md5": "ea10f4131202b9b8f2a6cb7770d3f185",
"rounds": 1,
"type": "eq",
"link": true,
"lastPage": 1,
"about": "The same file as issue2337."
2013-04-20 05:07:08 +09:00
},
{ "id": "freeculture",
"file": "pdfs/freeculture.pdf",
"md5": "dcdf3a8268e6a18938a42d5149efcfca",
"rounds": 1,
"lastPage": 5,
"type": "eq"
},
{ "id": "wnv_chinese-pdf",
"file": "pdfs/wnv_chinese.pdf",
"md5": "db682638e68391125e8982d3c984841e",
"link": true,
"rounds": 1,
"type": "eq"
},
2011-07-21 13:17:31 +09:00
{ "id": "i9-pdf",
"file": "pdfs/i9.pdf",
"md5": "ba7cd54fdff083bb389295bc0415f6c5",
2011-07-21 13:17:31 +09:00
"link": true,
"rounds": 1,
"type": "eq"
2011-08-04 14:22:24 +09:00
},
{ "id": "issue12798_page1_reduced",
"file": "pdfs/issue12798_page1_reduced.pdf",
"md5": "f4c3e91c181b510929ade67c1e34c5c5",
"rounds": 1,
"type": "eq"
},
{ "id": "issue15557",
"file": "pdfs/issue15557.pdf",
"md5": "5f024a42acf27f3eadc4c7418e8f4e42",
"rounds": 1,
"type": "eq",
"annotations": true
},
{ "id": "issue15559",
"file": "pdfs/issue15559.pdf",
"md5": "b937f2e32925aef8c1740f357f2a6282",
"link": true,
"rounds": 1,
"lastPage": 1,
"type": "eq"
},
{ "id": "issue15577",
"file": "pdfs/issue15577.pdf",
"md5": "6939244cf44b7b31ff960b58ed7e4004",
"link": true,
"rounds": 1,
"lastPage": 1,
"type": "eq"
},
2011-08-04 14:22:24 +09:00
{ "id": "hmm-pdf",
"file": "pdfs/hmm.pdf",
"md5": "e08467e60101ee5f4a59716e86db6dc9",
2011-08-04 14:22:24 +09:00
"link": true,
"rounds": 1,
2013-03-05 12:33:50 +09:00
"firstPage": 1,
"lastPage": 2,
2011-08-04 14:22:24 +09:00
"type": "load"
2011-08-07 06:41:18 +09:00
},
{ "id": "issue7847_radial",
"file": "pdfs/issue7847_radial.pdf",
"md5": "59dc206ec5dd6e6f701943e4694e4147",
"rounds": 1,
"type": "eq"
},
2011-08-07 06:41:18 +09:00
{ "id": "rotation",
"file": "pdfs/rotation.pdf",
"md5": "4fb25ada00ce7528569d9791c14decf5",
2011-08-07 06:41:18 +09:00
"rounds": 1,
"type": "eq"
2011-08-14 22:40:22 +09:00
},
{ "id": "ecma262-pdf",
"file": "pdfs/ecma262.pdf",
"md5": "763ead98f535578842891e5574e0af0f",
2011-08-14 22:40:22 +09:00
"link": true,
"rounds": 1,
"type": "load"
},
{ "id": "issue6286",
"file": "pdfs/issue6286.pdf",
"md5": "d13fd1b98fb1c9980356314fd1d3a91b",
"rounds": 1,
"type": "eq"
},
{ "id": "PDFJS-7562-reduced",
"file": "pdfs/PDFJS-7562-reduced.pdf",
"md5": "ddfb96fd492599fe54adbc685493ba3a",
"rounds": 1,
"type": "eq"
},
{ "id": "issue3694_reduced",
"file": "pdfs/issue3694_reduced.pdf",
"md5": "c1438c7bad12d70c4cd684f8ce04448f",
"rounds": 1,
"type": "eq"
},
2014-10-13 05:36:50 +09:00
{ "id": "bug847420",
"file": "pdfs/bug847420.pdf",
"md5": "0decd96fec4ef858c2c663a6de24e887",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "bug878026",
"file": "pdfs/bug878026.pdf",
"md5": "13072db0586f2b4e96de189e23fc7395",
"rounds": 1,
"link": false,
"firstPage": 1,
"lastPage": 1,
"type": "eq"
},
2014-04-11 04:36:37 +09:00
{ "id": "issue4550-text",
"file": "pdfs/issue4550.pdf",
"md5": "d64cfc4b50e225f596130d9938e8d5cc",
"rounds": 1,
"type": "text"
},
{ "id": "issue9655-text",
"file": "pdfs/issue9655_reduced.pdf",
"md5": "87259a82cf3cda18e240517ca53c312a",
"rounds": 1,
"link": false,
"type": "text"
},
{ "id": "jai-pdf",
"file": "pdfs/jai.pdf",
"md5": "1f5dd128c3757420a881a155f2f8ace3",
"link": true,
"rounds": 1,
"type": "load"
2011-08-29 06:36:58 +09:00
},
{ "id": "cable",
"file": "pdfs/cable.pdf",
"md5": "09a41b9a759d60c698228224ab85b46d",
2011-08-29 06:36:58 +09:00
"link": true,
"rounds": 1,
"type": "eq"
2011-08-31 12:32:56 +09:00
},
{ "id": "pdkids",
"file": "pdfs/pdkids.pdf",
"md5": "278982bf016dbe46d2066f9245d9b3e6",
2011-08-31 12:32:56 +09:00
"link": true,
"rounds": 1,
"type": "eq"
},
{ "id": "checkbox-bad-appearance",
"file": "pdfs/checkbox-bad-appearance.pdf",
"md5": "acdac655911cb3d33c3fb1462cf2ad56",
"rounds": 1,
"type": "eq",
"forms": true
},
{ "id": "artofwar",
"file": "pdfs/artofwar.pdf",
"md5": "7bdd51c327b74f1f7abdd90eedb2f912",
"link": true,
"rounds": 1,
"type": "eq"
},
{ "id": "issue3371",
"file": "pdfs/issue3371.pdf",
"password": "ELXRTQWS",
"md5": "db2fedbd36d6fa27d4e52f9bd2d96b8c",
"rounds": 1,
"type": "load"
},
{ "id": "issue5334",
"file": "pdfs/issue5334.pdf",
"md5": "5575020f37f6e5b3c43b8183bf7f96ae",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "issue7769",
"file": "pdfs/issue7769.pdf",
"md5": "814f167b8437eb8e4e4b6e89743011d5",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "issue5044",
"file": "pdfs/issue5044.pdf",
"md5": "44788cd31dcb4a2495ded34a84c4a765",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "issue13107",
"file": "pdfs/issue13107_reduced.pdf",
"md5": "13c8d12223dec2752d3c90d250db32b7",
"rounds": 1,
"type": "eq"
},
{ "id": "bug1186827",
"file": "pdfs/bug1186827.pdf",
"md5": "6c5526ae1a9d66cb517153001afc196e",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "colorspace_sin",
"file": "pdfs/colorspace_sin.pdf",
"md5": "4e341c346f4f37cd94b82c532badb8fd",
"rounds": 1,
"type": "eq"
},
{ "id": "issue215",
"file": "pdfs/issue215.pdf",
"md5": "31f3dc60ecf008987d970edfd2b1df61",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "bug850854",
"file": "pdfs/bug850854.pdf",
"md5": "346a034a80120d123b9fefc42bcb11da",
"rounds": 1,
"link": false,
"firstPage": 1,
"lastPage": 1,
"type": "eq"
},
{ "id": "wdsg_fitc",
"file": "pdfs/wdsg_fitc.pdf",
"md5": "5bb1c2b83705d4cdfc43197ee74f07f9",
"link": true,
"rounds": 1,
"type": "eq"
},
{ "id": "issue6769_no_matrix",
"file": "pdfs/issue6769_no_matrix.pdf",
"md5": "f88806137fb4592975052ff3508d7b1e",
"rounds": 1,
"type": "eq"
},
2011-10-02 11:24:11 +09:00
{ "id": "unix01",
"file": "pdfs/unix01.pdf",
"md5": "2742999f0bf9b9c035dbb0736096e220",
2011-10-02 11:24:11 +09:00
"link": true,
"rounds": 1,
"type": "eq"
},
{ "id": "issue4909",
"file": "pdfs/issue4909.pdf",
"md5": "ecd62637532aa8383837ef11d72a96b9",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "issue4914",
"file": "pdfs/issue4914.pdf",
"md5": "6e1da9c5283d9acef0314d87ce953659",
"rounds": 1,
"link": true,
"lastPage": 1,
"type": "eq",
"annotations": true,
"about": "PDF with annotations, some of which have the Hidden flag set."
},
{ "id": "issue9949",
"file": "pdfs/issue9949.pdf",
"md5": "55d24d7fc71b849818ea91d3b9eaf302",
"rounds": 1,
"type": "eq"
},
{ "id": "issue4665-text",
"file": "pdfs/issue4665.pdf",
"md5": "0de1308432819c101881df7ca4424575",
"rounds": 1,
"link": false,
"type": "text"
},
{ "id": "issue13147",
"file": "pdfs/issue13147.pdf",
"md5": "83db23f29b5e1a80d31d5069299e29cc",
"rounds": 1,
"type": "eq"
},
2011-10-12 08:26:25 +09:00
{ "id": "fit11-talk",
"file": "pdfs/fit11-talk.pdf",
"md5": "eb7b224107205db4fea9f7df0185f77d",
2011-10-12 08:26:25 +09:00
"link": true,
"rounds": 1,
"type": "eq"
},
{ "id": "fips197",
"file": "pdfs/fips197.pdf",
"md5": "4742c3f470cd8c4686a0dbb3da808b71",
"link": true,
"rounds": 1,
2011-10-13 07:52:11 +09:00
"type": "eq"
},
{ "id": "issue4650",
"file": "pdfs/issue4650.pdf",
"md5": "ad736804f57f9f96f5ac108e514e1686",
"rounds": 1,
"link": false,
"firstPage": 1,
"lastPage": 1,
"type": "eq"
},
{ "id": "bug1703683_page2_reduced",
"file": "pdfs/bug1703683_page2_reduced.pdf",
"md5": "2b6d5d617438cf72c76c25f46ec6ad75",
"rounds": 1,
"type": "eq"
},
{ "id": "issue6707",
"file": "pdfs/issue6707.pdf",
"md5": "068ceaec23d265b1d38dfa6ab279f017",
"rounds": 1,
"link": true,
"lastPage": 1,
"type": "eq"
},
{ "id": "issue6721_reduced",
"file": "pdfs/issue6721_reduced.pdf",
"md5": "719aa66d8081a15e3ba6032ed4279237",
"rounds": 1,
"link": false,
"firstPage": 1,
"lastPage": 1,
"type": "eq"
},
{ "id": "issue6737",
"file": "pdfs/issue6737.pdf",
"md5": "6f091967ad15ba63855c56049e86c68b",
"rounds": 1,
"link": true,
"lastPage": 1,
"type": "eq"
},
{ "id": "issue5010",
"file": "pdfs/issue5010.pdf",
"md5": "419f4b13403a0871c463ec69d96e342c",
"rounds": 1,
"link": false,
"firstPage": 1,
"lastPage": 1,
"type": "eq"
},
{ "id": "franz",
"file": "pdfs/franz.pdf",
"md5": "12f0bbdec09900cbdd86e1737ed5f992",
"link": false,
"rounds": 1,
"type": "eq",
"about": "Type1 font with |Ref|s in the Differences array of the Encoding dictionary."
},
{ "id": "issue8019",
"file": "pdfs/issue8019.pdf",
"md5": "5263ea3e295ee004c9fe770146bc34ef",
"link": true,
"rounds": 1,
"type": "eq"
},
{ "id": "issue8022",
"file": "pdfs/issue8022.pdf",
"md5": "a1a028a5d44433a965dd1e778f321c14",
"link": true,
"rounds": 1,
"lastPage": 1,
"type": "eq"
},
Tweak the `QueueOptimizer` to recognize `OPS.paintImageMaskXObject` operators as *repeated* when the "skew" transformation matrix elements are non-zero (issue 8078) *First of all, I should mention that my understanding of the finer details of the `QueueOptimizer` (and its related `CanvasGraphics` methods) is somewhat limited.* Hence I'm not sure if there's actually a very good reason for *only* considering ImageMasks where the "skew" transformation matrix elements are zero as *repeated*, however simply looking at the code I just don't see why these elements cannot be non-zero as long as they are *all identical* for the ImageMasks. Furthermore, looking at the *group* case (which is what we're currently falling back to), there's no particular limitation placed upon the transformation matrix elements. While this patch obviously isn't enough to *completely* fix the issue, since there should be a visible Pattern rendered as well[1], it seem (at least to me) like enough of an improvement that submitting this is justified. With these changes the referenced PDF document will no longer hang the *entire* browser, and rendering also finishes in a *reasonable* time (< 10 seconds for me) which seem fine given the *huge* number of identical inline images present.[2] --- [1] Temporarily changing the Pattern to a solid color *does* render the correct/expected area, which suggests that the remaining problem is a pre-existing issue related to the Pattern-handling itself rather than the `QueueOptimizer` functionality. [2] The document isn't exactly rendered immediately in e.g. Adobe Reader either.
2020-06-20 18:34:41 +09:00
{ "id": "issue8078",
"file": "pdfs/issue8078.pdf",
"md5": "8b7d74bc24b4157393e4e88a511c05f1",
"link": true,
"rounds": 1,
"lastPage": 1,
"type": "eq"
},
{ "id": "bug1811668",
"file": "pdfs/bug1811668_reduced.pdf",
"md5": "87aa65d89aa0682cbe7b87152b884495",
"rounds": 1,
"type": "text"
},
{ "id": "issue8092",
"file": "pdfs/issue8092.pdf",
"md5": "e4f3376b35fd132580246c3db1fbd738",
"rounds": 1,
"type": "eq"
},
{ "id": "franz_2",
"file": "pdfs/franz_2.pdf",
"md5": "9d301ed8816e879891115b5cc3c39559",
"link": false,
"rounds": 1,
"type": "eq",
"about": "XObject with BBox array containing indirect object."
},
{ "id": "issue7115",
"file": "pdfs/issue7115.pdf",
"md5": "63c78e25a0433dd5a01ddff6ec720f29",
"link": false,
"rounds": 1,
"type": "eq",
"annotations": true,
"about": "Annotation with Rect array containing indirect objects."
},
{ "id": "issue11922",
"file": "pdfs/issue11922_reduced.pdf",
"md5": "711bb4b4bf92d967644b4f88d11a93db",
"rounds": 1,
"type": "load"
},
{ "id": "file_url_link",
"file": "pdfs/file_url_link.pdf",
"md5": "b0253c96c38d43bc49259bbf36db938a",
"link": false,
"rounds": 1,
"type": "eq",
"annotations": true,
"about": "Annotation with (unsupported) file:// URL."
},
{ "id": "bug1538111",
"file": "pdfs/bug1538111.pdf",
"md5": "3f3635cfc25d132fb1054042e520e297",
"rounds": 1,
"annotations": true,
"type": "eq"
},
{ "id": "bug1552113",
"file": "pdfs/bug1552113.pdf",
"md5": "dafb7ba1328e8deaab2e3619c94bf974",
"link": false,
"rounds": 1,
"type": "eq",
"annotations": true,
"about": "Annotation with (ridiculously) large border width."
},
{ "id": "bug1627030",
"file": "pdfs/bug1627030.pdf",
"md5": "4cde6134daa80449c43defd02c1393e2",
"rounds": 1,
"link": true,
"firstPage": 3,
"lastPage": 3,
"type": "eq",
"annotations": true
},
{ "id": "issue9017_reduced",
"file": "pdfs/issue9017_reduced.pdf",
"md5": "8b45b3ea91778d6d98f407620d645f48",
"rounds": 1,
"type": "eq"
},
{ "id": "issue4934",
"file": "pdfs/issue4934.pdf",
"md5": "6099da44f677702ae65a648b51a2226d",
"rounds": 1,
"link": false,
"firstPage": 1,
"lastPage": 1,
"type": "eq"
},
{ "id": "issue4061",
"file": "pdfs/issue4061.pdf",
"md5": "236aaa8840a47c3c061f8e3034549764",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "issue4090",
"file": "pdfs/issue4090.pdf",
"md5": "8cec73e090985acf6094c683d7944425",
"rounds": 1,
"link": true,
"lastPage": 1,
"type": "eq"
},
{ "id": "issue13561_reduced",
"file": "pdfs/issue13561_reduced.pdf",
"md5": "e68c315d6349530180dd90f93027147e",
"rounds": 1,
"type": "eq"
},
{ "id": "issue5202",
"file": "pdfs/issue5202.pdf",
"md5": "bb9cc69211112e66aab40828086a4e5a",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "issue5238",
"file": "pdfs/issue5238.pdf",
"md5": "6ddecda00893be1793de20a70c83a3c2",
"rounds": 1,
"link": false,
"type": "eq"
},
2014-11-05 00:16:48 +09:00
{ "id": "issue5470",
"file": "pdfs/issue5470.pdf",
"md5": "4805fdcd7e142e8df3c04c6ba06025af",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "xref_command_missing",
"file": "pdfs/xref_command_missing.pdf",
"md5": "06cdb0f13cfeff41d6bfb24b7bbe1268",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "issue12402",
"file": "pdfs/issue12402.pdf",
"md5": "70031cf610e24cc7164fb6ecd6980c8e",
"rounds": 1,
"link": true,
"firstPage": 8,
"lastPage": 8,
"type": "eq"
},
{ "id": "bug1292316",
"file": "pdfs/bug1292316.pdf",
"md5": "f0a815ada0276059242f264653cfd2bc",
"rounds": 1,
"link": true,
"lastPage": 1,
"type": "eq"
},
{ "id": "issue10004",
"file": "pdfs/issue10004.pdf",
"md5": "64d1853060cefe3be50e5c4617dd0505",
"rounds": 1,
"link": true,
"type": "load"
},
{ "id": "xfa_issue14150",
"file": "pdfs/xfa_issue14150.pdf",
"md5": "295b3e513b62945fbba73bce6908344c",
"link": true,
"rounds": 1,
"enableXfa": true,
"lastPage": 1,
"type": "eq"
},
{ "id": "xfa_issue14315",
"file": "pdfs/xfa_issue14315.pdf",
"md5": "e239710875f9dea72fd94c20672a29e1",
"rounds": 1,
"enableXfa": true,
"type": "eq"
},
{ "id": "xfa_issue14071",
"file": "pdfs/xfa_issue14071.pdf",
"md5": "7ef09705091602668ce22086c83a90f3",
"link": true,
"rounds": 1,
"enableXfa": true,
"type": "eq"
},
{ "id": "issue14164",
"file": "pdfs/issue14164.pdf",
"md5": "feb444c716b0337efff8094b156def32",
"rounds": 1,
"link": true,
"lastPage": 1,
"type": "eq"
},
{ "id": "xfa_filled_imm1344e",
"file": "pdfs/xfa_filled_imm1344e.pdf",
"md5": "0576d16692fcd8ef2366cb48bf296e81",
"rounds": 1,
"enableXfa": true,
"lastPage": 2,
"type": "eq"
},
{ "id": "xfa_bug1718725",
"file": "pdfs/xfa_bug1718725.pdf",
"md5": "09c7a599338ff75491f29a8f1f94454b",
"link": true,
"rounds": 1,
"enableXfa": true,
"type": "eq"
},
{ "id": "xfa_bug1739502",
"file": "pdfs/xfa_bug1739502.pdf",
"md5": "a760a950cb225c3cbf25a55b5d95e264",
"link": true,
"rounds": 1,
"enableXfa": true,
"type": "eq"
},
{ "id": "xfa_bug1729877",
"file": "pdfs/xfa_bug1729877.pdf",
"md5": "1bf5429ea13a090f52edcd49cb0c4a47",
"link": true,
"rounds": 1,
"enableXfa": true,
"type": "eq",
"lastPage": 1,
"print": true,
"annotationStorage": {
"jobReq13847": {
"value": "0"
}
}
},
{ "id": "xfa_bug1722038",
"file": "pdfs/xfa_bug1722038.pdf",
"md5": "95170baaade2ab6e1d0372f35db01747",
"link": true,
"rounds": 1,
"enableXfa": true,
"type": "eq"
},
{ "id": "xfa_bug1720888",
"file": "pdfs/xfa_bug1720888.pdf",
"md5": "3a9486b851b7d069c3cb31b0be2bc2ff",
"link": true,
"rounds": 1,
"enableXfa": true,
"type": "eq"
},
{ "id": "xfa_bug1722030_1",
"file": "pdfs/xfa_bug1722030_1.pdf",
"md5": "0baf149f21536ebb2bfc636a95e1d62d",
"link": true,
"rounds": 1,
"lastPage": 3,
"enableXfa": true,
"type": "eq"
},
{ "id": "xfa_bug1722029",
"file": "pdfs/xfa_bug1722029.pdf",
"md5": "d8dd6bb20599fc777b4c7ff7b74dd5e3",
"link": true,
"rounds": 1,
"enableXfa": true,
"type": "eq"
},
{ "id": "xfa_bug1721600",
"file": "pdfs/xfa_bug1721600.pdf",
"md5": "5f514f476169eeb7254da380a8db495a",
"link": true,
"rounds": 1,
"lastPage": 1,
"enableXfa": true,
"type": "eq"
},
{ "id": "xfa_bug1720182",
"file": "pdfs/xfa_bug1716380.pdf",
"md5": "1351f816f0509fe750ca61ef2bd40872",
"link": true,
"rounds": 1,
"enableXfa": true,
"type": "eq",
"print": true,
"annotationStorage": {
"RadioButtonList2707": {
"value": "1"
},
"ComplainantFirstname2710": {
"value": "Foo"
},
"ComplainantLastname2711": {
"value": "Bar"
}
},
"about": "This *intentionally* uses the same file as test-case xfa_bug1716380."
},
{ "id": "bug1720411",
"file": "pdfs/bug1720411.pdf",
"md5": "a3a3616d89d475b000373025fbd24735",
"rounds": 1,
"link": true,
"type": "eq",
"forms": true
},
{ "id": "xfa_bug1718740",
"file": "pdfs/xfa_bug1718740.pdf",
"md5": "fab4277f2c70fd1edb35f597f5fe6819",
"link": true,
"rounds": 1,
"enableXfa": true,
"type": "eq"
},
{ "id": "xfa_bug1718741",
"file": "pdfs/xfa_bug1718741.pdf",
"md5": "1b80f8287cdbf9a67e4bff8be20b1bbd",
"link": true,
"rounds": 1,
"enableXfa": true,
"type": "eq"
},
{ "id": "xfa_bug1718670_1",
"file": "pdfs/xfa_bug1718670_1.pdf",
"md5": "06745be56a89acd80e5bdeddabb7cb7b",
"link": true,
"rounds": 1,
"enableXfa": true,
"type": "eq"
},
{ "id": "issue13823",
"file": "pdfs/issue13823.pdf",
"md5": "8ca53bba9b2c68f5cd87f13a963e6b6a",
"rounds": 1,
"link": true,
"type": "eq",
"forms": true
},
{ "id": "issue13845",
"file": "pdfs/issue13845.pdf",
"md5": "7c6b675f61ae68a2e416f4aa26da567c",
"link": true,
"rounds": 1,
"lastPage": 1,
"type": "text"
},
{ "id": "xfa_bug1718521_1",
"file": "pdfs/xfa_bug1718521_1.pdf",
"md5": "9b89dd9e6a4c6c3258ca24debd806863",
"link": true,
"rounds": 1,
"enableXfa": true,
"type": "eq"
},
{ "id": "xfa_bug1718521_2",
"file": "pdfs/xfa_bug1718521_2.pdf",
"md5": "c23beb39e1c91a780da9d4b60cbd157f",
"link": true,
"rounds": 1,
"enableXfa": true,
"type": "eq"
},
{ "id": "xfa_bug1718521_3",
"file": "pdfs/xfa_bug1718521_3.pdf",
"md5": "5cc6fb1a65515518e3e64baa81e7a21e",
"link": true,
"rounds": 1,
"enableXfa": true,
"type": "eq"
},
{ "id": "xfa_bug1718735",
"file": "pdfs/xfa_bug1718735.pdf",
"md5": "1001f5c02c026943cbd37f646725d82f",
"link": true,
"rounds": 1,
"enableXfa": true,
"type": "eq"
},
{ "id": "xfa_bug1718053",
"file": "pdfs/xfa_bug1718053.pdf",
"md5": "252d728d2c456dcb81699342a71c42ea",
"link": true,
"rounds": 1,
"enableXfa": true,
"type": "eq"
},
{ "id": "xfa_bug1717805",
"file": "pdfs/xfa_bug1717805.pdf",
"md5": "c68ccebd0d92b8fd70c465660458507f",
"link": true,
"rounds": 1,
"enableXfa": true,
"type": "eq"
},
{ "id": "xfa_bug1717668_1",
"file": "pdfs/xfa_bug1717668_1.pdf",
"md5": "564ecff67be690b43c2a144ae5967034",
"link": true,
"rounds": 1,
"enableXfa": true,
"type": "eq",
"about": "Also tests bug 1716838."
},
{ "id": "xfa_bug1717668_2",
"file": "pdfs/xfa_bug1717668_2.pdf",
"md5": "08aa8bf9fec5aa7b8ff13d9ba72ca8ac",
"link": true,
"rounds": 1,
"enableXfa": true,
"type": "eq"
},
{ "id": "xfa_bug1717668_3",
"file": "pdfs/xfa_bug1717668_3.pdf",
"md5": "4ff2531dbefebabc3f128d4ae20552a4",
"link": true,
"rounds": 1,
"enableXfa": true,
"type": "eq"
},
{ "id": "xfa_bug1717668_4",
"file": "pdfs/xfa_bug1717668_4.pdf",
"md5": "1c3dc4873ad6b84adb164ed69ed202f5",
"link": true,
"rounds": 1,
"enableXfa": true,
"type": "eq"
},
{ "id": "xfa_bug1718037",
"file": "pdfs/xfa_bug1718037.pdf",
"md5": "a0b53d50e9faed9d57950a5159d5da12",
"link": true,
"rounds": 1,
"enableXfa": true,
"type": "eq"
},
{ "id": "xfa_bug1717681",
"file": "pdfs/xfa_bug1717681.pdf",
"md5": "435b1eae7e017b1a932fe204d1ba8be5",
"link": true,
"rounds": 1,
"enableXfa": true,
"type": "eq"
},
2021-06-23 19:58:26 +09:00
{ "id": "xfa_imm5257e",
"file": "pdfs/xfa_imm5257e.pdf",
"md5": "5b8dcc12d7461100f48b4b427c0f976e",
"rounds": 1,
"link": true,
"enableXfa": true,
"type": "eq"
},
{ "id": "xfa_bug1716380",
"file": "pdfs/xfa_bug1716380.pdf",
"md5": "1351f816f0509fe750ca61ef2bd40872",
"link": true,
"rounds": 1,
"enableXfa": true,
"type": "eq"
},
{ "id": "xfa_dhl_shipment",
"file": "pdfs/xfa_dhl_shipment.pdf",
"md5": "503ece429d69e7d626d6932a475fbe63",
"link": true,
"rounds": 1,
"enableXfa": true,
"type": "eq"
},
{ "id": "xfa_bug1716047",
"file": "pdfs/xfa_bug1716047.pdf",
"md5": "2f524163bd8397f43d195090978c3b56",
"link": true,
"rounds": 1,
"enableXfa": true,
"type": "eq"
},
{ "id": "xfa_bug1716980",
"file": "pdfs/xfa_bug1716980.pdf",
"md5": "3d7598b9548d78f209d013c485162e9a",
"link": true,
"rounds": 1,
"enableXfa": true,
"type": "eq"
},
{ "id": "xfa_bug1716816",
"file": "pdfs/xfa_bug1716816.pdf",
"md5": "3051cd18db7839bc4953df35b52cf3e0",
"link": true,
"rounds": 1,
"enableXfa": true,
"type": "eq"
},
{ "id": "xfa_bug1716809",
"file": "pdfs/xfa_bug1716809.pdf",
"md5": "7192f9e27e8b84776d107f57cbe353d5",
"link": true,
"rounds": 1,
"enableXfa": true,
"type": "eq"
},
{ "id": "xfa_candidate_petitions",
"file": "pdfs/xfa_candidate_petitions.pdf",
"md5": "0db96a00667f8f58f94cf81022e69341",
"link": true,
"rounds": 1,
"enableXfa": true,
"type": "eq"
},
{ "id": "xfa_annual_expense_report",
"file": "pdfs/xfa_annual_expense_report.pdf",
"md5": "06866e7a6bbc0346789208ef5f6e885c",
"link": true,
"rounds": 1,
"enableXfa": true,
"type": "eq"
},
{ "id": "xfa_annual_voting_survey",
"file": "pdfs/xfa_annual_voting_survey.pdf",
"md5": "92239648ea1bf189435c927e498c4ec9",
"link": true,
"rounds": 1,
"enableXfa": true,
"type": "eq"
},
2021-06-05 03:10:35 +09:00
{ "id": "xfa_fish_licence",
"file": "pdfs/xfa_fish_licence.pdf",
"md5": "9b993128bbd7f4217098fd44116ebec2",
"link": true,
"rounds": 1,
"enableXfa": true,
"type": "eq"
},
{ "id": "xfa_issue13679",
"file": "pdfs/xfa_issue13679.pdf",
"md5": "b7231495f0c063435e7cfb92b4f281a3",
"link": true,
"rounds": 1,
"enableXfa": true,
"type": "eq"
},
{ "id": "xfa_issue13994",
"file": "pdfs/xfa_issue13994.pdf",
"md5": "787ad7cfbb822bb4f80e2243305c9f0c",
"link": true,
"rounds": 1,
"lastPage": 1,
"enableXfa": true,
"type": "eq"
},
{ "id": "xfa_issue13855",
"file": "pdfs/xfa_issue13855.pdf",
"md5": "0aaaf62ff979c7837c2c63df44456238",
"link": true,
"rounds": 1,
"firstPage": 3,
"lastPage": 3,
"enableXfa": true,
"type": "eq"
},
{ "id": "xfa_issue13584",
"file": "pdfs/xfa_issue13584.pdf",
"md5": "c41af0754dabd81996a0d54db1900beb",
"link": true,
"rounds": 1,
"enableXfa": true,
"type": "eq"
},
{ "id": "xfa_issue13597",
"file": "pdfs/xfa_issue13597.pdf",
"md5": "1ed9338f7e797789c0b41182f51b9002",
"link": true,
"rounds": 1,
"enableXfa": true,
"type": "eq"
},
{ "id": "issue13433",
"file": "pdfs/issue13433.pdf",
"md5": "4038cd87ff48fd54b3c4a36593d2ba03",
"link": true,
"rounds": 1,
"lastPage": 1,
"type": "eq"
},
{ "id": "xfa_issue13668",
"file": "pdfs/xfa_issue13668.pdf",
"md5": "8a5ed3c8a58b425b1ec53329334a0f5b",
"link": true,
"rounds": 1,
"enableXfa": true,
"type": "eq"
},
{ "id": "xfa_issue13633",
"file": "pdfs/xfa_issue13633.pdf",
"md5": "e5b0d09285ca6a140eba08d740be0ea0",
"link": true,
"rounds": 1,
"enableXfa": true,
"type": "eq"
},
{ "id": "xfa_issue13631",
"file": "pdfs/xfa_issue13631.pdf",
"md5": "bf24397950dc8b8fcb7e91299af1315a",
"link": true,
"rounds": 1,
"enableXfa": true,
"type": "eq"
},
{ "id": "xfa_issue13611",
"file": "pdfs/xfa_issue13611.pdf",
"md5": "e713fb46a6b4637660010f1850559ff6",
"link": true,
"rounds": 1,
"enableXfa": true,
"type": "eq"
},
{ "id": "xfa_issue13634",
"file": "pdfs/xfa_issue13634.pdf",
"md5": "459a04045470811cbab6671772929d3d",
"link": true,
"rounds": 1,
"enableXfa": true,
"type": "eq"
},
{ "id": "xfa_issue13556",
"file": "pdfs/xfa_issue13556.pdf",
"md5": "197e93a010763c3b6f9845595ee66c70",
"link": true,
"rounds": 1,
"enableXfa": true,
"type": "eq"
},
{ "id": "xfa_issue13213",
"file": "pdfs/xfa_issue13213.pdf",
"md5": "8a0e3179bffbac721589d1b1df863b49",
"link": true,
"rounds": 1,
"enableXfa": true,
"type": "eq"
},
{ "id": "issue10272",
"file": "pdfs/issue10272.pdf",
"md5": "bf3b2f74c6878d38a70dc0825f1b9a02",
"link": true,
"type": "other"
},
{ "id": "issue10388",
"file": "pdfs/issue10388_reduced.pdf",
"md5": "62a6b2adbea1535432bd94a3516e2d4c",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "issue7507",
"file": "pdfs/issue7507.pdf",
"md5": "f7aeaafe0c89b94436e94eaa63307303",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "issue9458",
"file": "pdfs/issue9458.pdf",
"md5": "ee54358d8b2fdc75dc8da5220cf8e8da",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "issue5501",
"file": "pdfs/issue5501.pdf",
"md5": "55a60699728fc92f491a2d7d490474e4",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "issue9084",
"file": "pdfs/issue9084.pdf",
"md5": "5570ec01cc869d299fec1b2f68926a08",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "issue9195",
"file": "pdfs/issue9195.pdf",
"md5": "90e78a11abdc6c5ae79b8b95cfbb1895",
"rounds": 1,
"link": true,
"lastPage": 1,
"type": "eq"
},
{ "id": "issue9252",
"file": "pdfs/issue9252.pdf",
"md5": "c7d039d808d9344a95d2c9cfa7586ca3",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "issue9418",
"file": "pdfs/issue9418.pdf",
"md5": "32ecad8098acb1938539d47944ecb54b",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "issue13748",
"file": "pdfs/issue13748.pdf",
"md5": "de0e4dde2890b9ff145a3184831bae02",
"link": true,
"rounds": 1,
"lastPage": 1,
"enableXfa": true,
"type": "eq"
},
{ "id": "issue13751",
"file": "pdfs/issue13751.pdf",
"md5": "b9960bfa99be3573d9c32a9d55e5b7da",
"link": true,
"rounds": 1,
"lastPage": 1,
"enableXfa": true,
"type": "eq"
},
{ "id": "issue13756",
"file": "pdfs/issue13756.pdf",
"md5": "67040c6df3b5039fcbc81bf63b7c7f98",
"link": true,
"rounds": 1,
"enableXfa": true,
"type": "eq"
},
{ "id": "issue13783",
"file": "pdfs/issue13783.pdf",
"md5": "6958d827afa566efbd82f53271ea5cd6",
"link": true,
"rounds": 1,
"firstPage": 7,
"lastPage": 7,
"type": "eq"
},
{ "id": "issue13794",
"file": "pdfs/issue13794.pdf",
"md5": "6b4c099e04c9df145198740f2bf75c48",
"link": true,
"rounds": 1,
"firstPage": 3,
"type": "eq"
},
{ "id": "issue9262",
"file": "pdfs/issue9262_reduced.pdf",
"md5": "5347ce2d7b3866625c22e115fd90e0de",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "issue9285",
"file": "pdfs/issue9285.pdf",
"md5": "aa53ad98a72fd76c414101927951448b",
"rounds": 1,
"link": true,
"lastPage": 1,
"type": "eq"
},
{ "id": "issue8707",
"file": "pdfs/issue8707.pdf",
"md5": "d3dc670adde9ec9fb82c974027033029",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "issue8895",
"file": "pdfs/issue8895.pdf",
"md5": "098658008fc2bf7d433fd0d6d468a9e1",
"rounds": 1,
"link": true,
"lastPage": 1,
"type": "eq"
},
{ "id": "issue9105",
"file": "pdfs/issue9105_reduced.pdf",
"md5": "f3889f7c7b60e1ab998aac430cc7e08e",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "issue15803",
"file": "pdfs/issue15803.pdf",
"md5": "e501a4418d4ece5be7ce4e8acf029100",
"rounds": 1,
"link": true,
"lastPage": 1,
"type": "eq",
"annotations": true
},
{ "id": "issue9105_other",
"file": "pdfs/issue9105_other.pdf",
"md5": "4c8b9c2cceb9c5d621e1d50b3dc38efc",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "issue269_1",
"file": "pdfs/issue269_1.pdf",
"md5": "ab932f697b4d2e2bf700de15a8efea9c",
"rounds": 1,
"type": "eq",
"about": "Optional marked content."
},
{ "id": "issue269_2",
"file": "pdfs/issue269_2.pdf",
"md5": "0f553510850ee17c87fbab3fac564165",
"rounds": 1,
"type": "eq",
"about": "Optional marked content."
},
{ "id": "issue11144_reduced",
"file": "pdfs/issue11144_reduced.pdf",
"md5": "09e3e771ebd6867558074e900adb54b9",
"rounds": 1,
"type": "eq",
"about": "Optional marked content."
},
{ "id": "issue12007_reduced",
"file": "pdfs/issue12007_reduced.pdf",
"md5": "3aa9d8a0c5ff8594245149f9c7379613",
"rounds": 1,
"type": "eq",
"about": "Optional marked content."
},
{ "id": "issue10438",
"file": "pdfs/issue10438_reduced.pdf",
"md5": "bb26f68493e33af17b256a6ffe777a24",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "issue11740",
"file": "pdfs/issue11740_reduced.pdf",
"md5": "f3f2957f171af52229c6e749e8a5572b",
"rounds": 1,
"type": "eq"
},
{ "id": "issue10491",
"file": "pdfs/issue10491.pdf",
"md5": "0759ec46739b13bb0b66170a18d33d4f",
"rounds": 1,
"link": true,
"firstPage": 2,
"type": "eq"
},
{ "id": "issue10542",
"file": "pdfs/issue10542_reduced.pdf",
"md5": "92406cb903be6c7a63221ba61fcb8eaf",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "issue6289",
"file": "pdfs/issue6289.pdf",
"md5": "0869f3d147c734ec484ffd492104095d",
"rounds": 1,
"link": true,
"lastPage": 1,
"type": "eq"
},
{ "id": "issue5509",
"file": "pdfs/issue5509.pdf",
"md5": "1975ef8db7355b1d691bc79d0749574b",
"rounds": 1,
"link": true,
"firstPage": 1,
"lastPage": 1,
"type": "load"
},
{ "id": "pr8808",
"file": "pdfs/pr8808.pdf",
"md5": "bdac6051a98fd8dcfc5344b05fed06f4",
"rounds": 1,
"link": true,
"lastPage": 1,
"type": "eq"
},
{ "id": "issue5599",
"file": "pdfs/issue5599.pdf",
"md5": "529a4a9409ac024aeb57a047210280fe",
"rounds": 1,
"link": false,
"type": "load"
},
2015-11-06 23:54:50 +09:00
{ "id": "issue1045",
"file": "pdfs/issue1045.pdf",
"md5": "61d7e9bfbc03cd457dcefeab3e78a687",
"rounds": 1,
"link": false,
"type": "text"
},
{ "id": "issue5677",
"file": "pdfs/issue5677.pdf",
"md5": "c9101578fcb806269145132724d24ac1",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "issue15443",
"file": "pdfs/issue15443.pdf",
"md5": "95a9e28b3f2754aa310f3379e01d781d",
"rounds": 1,
"type": "eq"
},
{ "id": "issue5946",
"file": "pdfs/issue5946.pdf",
"md5": "1217a3c8e2ee4ceb96d85a2f27e437b4",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "issue8960_reduced",
"file": "pdfs/issue8960_reduced.pdf",
"md5": "12ccf71307f4b5bd4148d5f985ffde07",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "issue5954",
"file": "pdfs/issue5954.pdf",
"md5": "4f60ec0d9bbeec845b681242b8982361",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "issue8125",
"file": "pdfs/issue8125.pdf",
"md5": "2073d699ea82156682542f811300b3e8",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "issue8169",
"file": "pdfs/issue8169.pdf",
"md5": "62fd6479f9e1c8c5ce8cba6b1781d0a5",
"rounds": 1,
"link": true,
"type": "eq"
},
{ "id": "issue8182",
"file": "pdfs/issue8182.pdf",
"md5": "e295ae13dcbefd449f9a4957aed5e582",
"rounds": 1,
"link": true,
"lastPage": 1,
"type": "eq"
},
{ "id": "issue9425",
"file": "pdfs/issue9425.pdf",
"md5": "cb5e99c9ada308304ca2dfcb7f72e3a0",
"rounds": 1,
"link": true,
"lastPage": 1,
"type": "eq"
},
{ "id": "issue9540",
"file": "pdfs/issue9540.pdf",
"md5": "7de7979270c9136bdd737428185fbbed",
"rounds": 1,
"link": true,
"type": "eq"
},
{ "id": "txt2pdf",
"file": "pdfs/txt2pdf.pdf",
"md5": "02cefa0f5e8d96313bb05163b2f88c8c",
"link": true,
"rounds": 1,
"type": "load"
2011-09-22 02:04:21 +09:00
},
{ "id": "issue9462",
"file": "pdfs/issue9462.pdf",
"md5": "0a2895b0aa8a8ef730a20b4116cd996c",
"rounds": 1,
"link": true,
"firstPage": 3,
"lastPage": 3,
"type": "eq"
},
2011-09-22 02:04:21 +09:00
{ "id": "f1040",
"file": "pdfs/f1040.pdf",
2013-12-17 09:37:10 +09:00
"md5": "7323b50c6d28d959b8b4b92c469b2469",
2011-09-22 02:04:21 +09:00
"link": true,
"rounds": 1,
"type": "load"
},
{ "id": "f1040-annotations",
"file": "pdfs/f1040.pdf",
"md5": "7323b50c6d28d959b8b4b92c469b2469",
"link": true,
"rounds": 1,
"type": "eq",
"annotations": true
},
{ "id": "f1040-forms",
"file": "pdfs/f1040.pdf",
"md5": "7323b50c6d28d959b8b4b92c469b2469",
"link": true,
"rounds": 1,
"type": "eq",
"forms": true
},
{ "id": "jbig2_symbol_offset",
"file": "pdfs/jbig2_symbol_offset.pdf",
"md5": "6b22a0f838008fa4d8cb5b40ba095c48",
"rounds": 1,
"type": "eq"
},
{ "id": "issue15942",
"file": "pdfs/issue15942.pdf",
"md5": "d690e16e6a3a8486ebf7289a9c43ba39",
"rounds": 1,
"link": true,
"lastPage": 1,
"type": "eq"
},
{ "id": "bug1046314",
"file": "pdfs/bug1046314.pdf",
"md5": "fc658439f44cd2dd27c8bee7e7a8344e",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "issue12823",
"file": "pdfs/issue12823.pdf",
"md5": "8391c63006ccc4b41c95de5e8c38deeb",
"rounds": 1,
"type": "eq"
},
{ "id": "bug1050040",
"file": "pdfs/bug1050040.pdf",
"md5": "9076b29bd157e2646b457f29a4472a07",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "bug1200096",
"file": "pdfs/bug1200096.pdf",
"md5": "b6bd8df094b5d511c13ed095d2a07515",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "bug1219400",
"file": "pdfs/bug1219400.pdf",
"md5": "a1554914cc9653d5ee0b9220657b334f",
"rounds": 1,
"link": true,
"lastPage": 1,
"type": "eq",
"annotations": true
},
{ "id": "bug1245391",
"file": "pdfs/bug1245391_reduced.pdf",
"md5": "6c946045ee0f2f663f269717c0f1614a",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "issue12295",
"file": "pdfs/issue12295.pdf",
"md5": "c534f74866ba8ada56010d19b57231ec",
"rounds": 1,
"type": "eq"
},
{ "id": "bug1245391-text",
"file": "pdfs/bug1245391_reduced.pdf",
"md5": "6c946045ee0f2f663f269717c0f1614a",
"rounds": 1,
"link": false,
"type": "text"
},
{ "id": "bug1513120-text",
"file": "pdfs/bug1513120_reduced.pdf",
"md5": "e88ad8b5bb385296f475ca51ce0d216d",
"rounds": 1,
"link": false,
"type": "text"
},
{ "id": "issue11713",
"file": "pdfs/issue11713.pdf",
"md5": "bafe5801234feeb95969da106f2ce6d8",
"rounds": 1,
"type": "text"
},
{ "id": "bug1250079",
"file": "pdfs/bug1250079.pdf",
"md5": "a1dd21a70ae7097d96273e85a80b26ef",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "bug1308536",
"file": "pdfs/bug1308536.pdf",
"md5": "cc2258981e33ad8d96acbf87318716d5",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "bug1393476",
"file": "pdfs/bug1393476.pdf",
"md5": "163ee8727c77f27ee651eec777bb20a9",
"rounds": 1,
"link": true,
"type": "eq"
},
{ "id": "issue11871",
"file": "pdfs/issue11871.pdf",
"md5": "9c533eacd0ca892df4191360848668a2",
"rounds": 1,
"link": true,
"firstPage": 2,
"lastPage": 2,
"type": "eq"
},
{ "id": "bug1252420",
"file": "pdfs/bug1252420.pdf",
"md5": "f21c911b9b655972b06ef782a1fa6a17",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "bug1392647",
"file": "pdfs/bug1392647.pdf",
"md5": "9770ea476630ca7d560b7c39430f8850",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "hudsonsurvey",
"file": "pdfs/hudsonsurvey.pdf",
"md5": "bf0e6576a7b6c2fe7485bce1b78e006f",
"link": true,
"rounds": 1,
"type": "load"
},
{ "id": "extgstate",
"file": "pdfs/extgstate.pdf",
"md5": "001bb4ec04463a01d93aad748361f049",
"link": false,
"rounds": 1,
"type": "eq"
},
{ "id": "issue14953",
"file": "pdfs/issue14953.pdf",
"md5": "dd7d6cb92e58d75a0eb8c0476a3bc64a",
"rounds": 1,
"type": "eq"
},
{ "id": "issue14990",
"file": "pdfs/issue14990.pdf",
"md5": "0fb397e1506acc4ab8e68c18212a1362",
"link": true,
"rounds": 1,
"firstPage": 25,
"lastPage": 25,
"type": "eq"
},
{ "id": "extgstate-text",
"file": "pdfs/extgstate.pdf",
"md5": "001bb4ec04463a01d93aad748361f049",
"link": false,
"rounds": 1,
"type": "text"
},
{ "id": "usmanm-bad",
"file": "pdfs/usmanm-bad.pdf",
"md5": "38afb822433aaf07fc8f54807cd4f61a",
"link": true,
"rounds": 1,
"type": "eq"
},
{ "id": "bug1132849",
"file": "pdfs/bug1132849.pdf",
"md5": "aedfbead1f8feb35cf2e38b279133b47",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "issue6894",
"file": "pdfs/issue6894.pdf",
"md5": "bb84f2025c11f23cf436170049f81215",
"rounds": 1,
"link": false,
"type": "eq"
},
2014-01-27 22:17:14 +09:00
{ "id": "personwithdog",
"file": "pdfs/personwithdog.pdf",
"md5": "cd68fb2ce00dab97801b3e51495b99e3",
"rounds": 1,
"type": "eq"
},
{ "id": "issue2948",
"file": "pdfs/issue2948.pdf",
"md5": "26210bed6a57d5466042aff22f0249f0",
"link": false,
"rounds": 1,
"type": "eq"
},
{ "id": "issue6541",
"file": "pdfs/issue6541.pdf",
"md5": "81bc5b146404207ea40f2c55301b2bb6",
"link": false,
"rounds": 1,
"type": "eq"
},
{ "id": "issue6231_1",
"file": "pdfs/issue6231_1.pdf",
"md5": "eb13a9366a5142833a858472c68b4749",
"link": false,
"rounds": 1,
"type": "eq"
},
{ "id": "usmanm-bad-auto-fetch",
"file": "pdfs/usmanm-bad.pdf",
"md5": "38afb822433aaf07fc8f54807cd4f61a",
"link": true,
"rounds": 1,
"type": "eq",
"enableAutoFetch": true
},
{ "id": "vesta-bad",
"file": "pdfs/vesta.pdf",
"md5": "0afebc109b7c17b95619ea3fab5eafe6",
"link": true,
"rounds": 1,
"type": "load"
},
{ "id": "issue6621",
"file": "pdfs/issue6621.pdf",
"md5": "8079ce514fb2cdded4251eade6380ba9",
"link": false,
"rounds": 1,
"type": "eq"
},
{ "id": "issue15977",
"file": "pdfs/issue15977_reduced.pdf",
"md5": "cd06accb3da81597ad11acffeb0b68fc",
"rounds": 1,
"type": "eq"
},
{ "id": "issue5084",
"file": "pdfs/issue5084.pdf",
"md5": "a42a076ba90e20e3aae9af869eb4de45",
"link": false,
"rounds": 1,
"type": "eq"
},
{ "id": "scan-bad",
"file": "pdfs/scan-bad.pdf",
"md5": "4cf988f01ab83f61aca57f406dfd6584",
"rounds": 1,
"type": "load"
},
{ "id": "issue6549",
"file": "pdfs/issue6549.pdf",
"md5": "699aeea73a6f45375022ffc6cc80f12a",
"link": true,
"rounds": 1,
"firstPage": 2,
"lastPage": 3,
"type": "load"
},
{ "id": "ibwa-bad",
"file": "pdfs/ibwa-bad.pdf",
"md5": "6ca059d32b74ac2688ae06f727fee755",
"link": true,
"rounds": 1,
"type": "load"
2011-09-29 09:54:40 +09:00
},
{ "id": "mixedfonts",
"file": "pdfs/mixedfonts.pdf",
"md5": "a582b83fa1b3a25a6f13803a367c71ec",
"link": false,
2011-09-29 09:54:40 +09:00
"rounds": 1,
"type": "eq"
2011-10-05 00:52:15 +09:00
},
{ "id": "pal-o47",
"file": "pdfs/pal-o47.pdf",
"md5": "81ae15e539e89f0f0b41169d923b611b",
"link": true,
"rounds": 1,
"type": "eq"
},
2014-07-31 05:15:06 +09:00
{ "id": "issue4800",
"file": "pdfs/issue4800.pdf",
"md5": "80d285dfdb8e8e0dd66a2353f0c78b05",
"link": false,
"rounds": 1,
"type": "eq",
"about": "TrueType font with (0, 1) cmap."
},
{ "id": "issue4801",
"file": "pdfs/issue4801.pdf",
"md5": "7f32764717447a8b5c8eac08c9ab8380",
"link": false,
"rounds": 1,
"type": "eq"
},
{ "id": "bug1365930",
"file": "pdfs/bug1365930.pdf",
"md5": "0db06efce060d82da16a79e8bd762a1c",
"rounds": 1,
"type": "eq"
},
{ "id": "bug1337429",
"file": "pdfs/bug1337429.pdf",
"md5": "4e6e4dfdab884e9465bdce657b590028",
"link": false,
"rounds": 1,
"type": "eq"
},
{ "id": "issue15629",
"file": "pdfs/issue15629.pdf",
"md5": "689771b7f5c86c783c56aa8dedab0057",
"rounds": 1,
"type": "text"
},
{ "id": "glyph_accent",
"file": "pdfs/glyph_accent.pdf",
"md5": "1526e4edaa3ec439ebf156d0a0b385aa",
"link": false,
"rounds": 1,
"type": "eq",
"about": "Glyph accent drawn as curves."
},
{ "id": "issue5138",
"file": "pdfs/issue5138.pdf",
"md5": "9931686d7dee0df62640fbf58bed3323",
"link": false,
"rounds": 1,
"type": "eq",
"about": "Glyph that gets mapped to unicode non-breaking-space."
},
{ "id": "issue14297",
"file": "pdfs/issue14297.pdf",
"md5": "46eb3d4d4bc47c8009fc4c699d213a18",
"rounds": 1,
"type": "eq"
},
2011-10-04 08:36:01 +09:00
{ "id": "simpletype3font",
"file": "pdfs/simpletype3font.pdf",
"md5": "b374c7543920840c61999e9e86939f99",
2011-10-04 08:36:01 +09:00
"link": false,
"rounds": 1,
2011-10-05 01:06:51 +09:00
"type": "eq"
2011-10-29 06:11:14 +09:00
},
{ "id": "issue13372",
"file": "pdfs/issue13372.pdf",
"md5": "0bc5329623fd554174c5e7653f904e28",
"rounds": 1,
"type": "eq"
},
{ "id": "issue13610",
"file": "pdfs/issue13610.pdf",
"md5": "5b894c0b1b2279a245c23abd76648ca9",
"link": true,
"rounds": 1,
"type": "eq"
},
{ "id": "issue13626",
"file": "pdfs/issue13626.pdf",
"md5": "68bc1c2459d56e8c33f5a12a88c9df7d",
"link": true,
"rounds": 1,
"type": "eq"
},
{ "id": "simpletype3font-text",
"file": "pdfs/simpletype3font.pdf",
"md5": "b374c7543920840c61999e9e86939f99",
"link": false,
"rounds": 1,
"type": "text"
},
Support (rare) Type3 fonts which contains image resources (issue 10717) The Type3 font type is not commonly used in PDF documents, as can be seen from telemetry data such as: https://telemetry.mozilla.org/new-pipeline/dist.html#!cumulative=0&end_date=2019-04-09&include_spill=0&keys=__none__!__none__!__none__&max_channel_version=nightly%252F68&measure=PDF_VIEWER_FONT_TYPES&min_channel_version=nightly%252F57&processType=*&product=Firefox&sanitize=1&sort_by_value=0&sort_keys=submissions&start_date=2019-03-18&table=0&trim=1&use_submission_date=0 (see also https://github.com/mozilla/pdf.js/wiki/Enumeration-Assignments-for-the-Telemetry-Histograms#pdf_viewer_font_types). Type3 fonts containing image resources are *very* rare in practice, usually they only contain path rendering operators, but as the issue shows they unfortunately do exist. Currently these Type3-related image resources are not handled in any special way, and given that fonts are document rather than page specific rendering breaks since the image resources are thus not available to the *entire* document. Fortunately fixing this isn't too difficult, but it does require adding a couple of Type3-specific code-paths to the `PartialEvaluator`. In order to keep the implementation simple, particularily on the main-thread, these Type3 image resources are completely decoded on the worker-thread to avoid adding too many special cases. This should not cause any issues, only marginally less efficient code, but given how rare this kind of Type3 font is adding premature optimizations didn't seem at all warranted at this point.
2019-04-11 19:26:15 +09:00
{ "id": "issue10717",
"file": "pdfs/issue10717.pdf",
"md5": "6d2ed03db798cc6beb3c7bdf103f5c1a",
"link": true,
"rounds": 1,
"firstPage": 1,
"lastPage": 2,
"type": "eq",
"about": "Type3 fonts with image resources; both pages need to be tested, otherwise the bug won't manifest."
},
{ "id": "issue16127",
"file": "pdfs/issue16127.pdf",
"md5": "42714567a818876f51ef960df21600f5",
"link": true,
"rounds": 1,
"firstPage": 1,
"lastPage": 2,
"type": "eq",
"about": "Type3 fonts with pattern resources; both pages need to be tested, otherwise the bug won't manifest."
},
{ "id": "doc_actions",
"file": "pdfs/doc_actions.pdf",
"md5": "ceae4eb405a0b40394f4d63d7525a870",
"rounds": 1,
"type": "eq"
},
{ "id": "issue12504",
"file": "pdfs/issue12504.pdf",
"md5": "04fcc87f3e7e9e925e3ef83cf0bf49f4",
"rounds": 1,
"type": "eq",
"annotations": true
},
{ "id": "close-path-bug",
"file": "pdfs/close-path-bug.pdf",
"md5": "48dd17ef58393857d2d038d33699cac5",
"rounds": 1,
"type": "eq"
2011-11-01 00:51:45 +09:00
},
2011-10-29 06:11:14 +09:00
{ "id": "alphatrans",
"file": "pdfs/alphatrans.pdf",
"md5": "5ca2d3da0c5f20b3a5a14e895ad24b65",
2011-10-29 06:11:14 +09:00
"link": false,
"rounds": 1,
"type": "eq"
2011-11-10 02:39:55 +09:00
},
{ "id": "issue12418",
"file": "pdfs/issue12418_reduced.pdf",
"md5": "596b70f00a5f88ff58f4f4d06fcf75f1",
"rounds": 1,
"type": "eq"
},
{ "id": "colorspace_cos",
"file": "pdfs/colorspace_cos.pdf",
"md5": "d3703784c2558f33e03b91dccb745b6c",
"rounds": 1,
"type": "eq"
},
{ "id": "issue6692",
"file": "pdfs/issue6692.pdf",
"md5": "ba078e0ddd59cda4b6c51ea10599f49a",
"link": true,
"rounds": 1,
"firstPage": 11,
"lastPage": 11,
"type": "eq"
},
{ "id": "devicen",
"file": "pdfs/devicen.pdf",
2011-11-23 02:06:53 +09:00
"md5": "aac6a91725435d1376c6ff492dc5cb75",
"link": false,
"rounds": 1,
"type": "eq"
},
{ "id": "issue5939",
"file": "pdfs/issue5939.pdf",
"md5": "43c61e06ad407c158763f0860c99bb04",
"rounds": 1,
"link": true,
"firstPage": 1,
"lastPage": 1,
"type": "eq"
},
2011-11-10 02:39:55 +09:00
{ "id": "cmykjpeg",
"file": "pdfs/cmykjpeg.pdf",
"md5": "85d162b48ce98503a382d96f574f70a2",
2011-11-10 02:39:55 +09:00
"link": false,
"rounds": 1,
"type": "eq"
2011-11-30 08:47:53 +09:00
},
{ "id": "issue4402_reduced",
"file": "pdfs/issue4402_reduced.pdf",
"md5": "6cc7e61a581889eec3ed7402d87161c4",
"link": false,
"rounds": 1,
"type": "eq"
},
2016-06-13 21:22:15 +09:00
{ "id": "issue7403",
"file": "pdfs/issue7403.pdf",
"md5": "0f7bb6b3c58e33bbf76ce5161cd665c3",
"link": false,
"rounds": 1,
"type": "eq"
},
{ "id": "issue7406",
"file": "pdfs/issue7406.pdf",
"md5": "7a3d322d7c595a36b4470cfb6a54a2b7",
"link": false,
"rounds": 1,
"type": "eq"
},
{ "id": "issue7303",
"file": "pdfs/issue7303.pdf",
"md5": "3a5a4ab6755d6c3b0c490996b83d69d2",
"link": true,
"rounds": 1,
"lastPage": 2,
"type": "eq"
},
Check that the first page can be successfully loaded, to try and ascertain the validity of the XRef table (issue 7496, issue 10326) For PDF documents with sufficiently broken XRef tables, it's usually quite obvious when you need to fallback to indexing the entire file. However, for certain kinds of corrupted PDF documents the XRef table will, for all intents and purposes, appear to be valid. It's not until you actually try to fetch various objects that things will start to break, which is the case in the referenced issues[1]. Since there's generally a real effort being in made PDF.js to load even corrupt PDF documents, this patch contains a suggested approach to attempt to do a bit more validation of the XRef table during the initial document loading phase. Here the choice is made to attempt to load the *first* page, as a basic sanity check of the validity of the XRef table. Please note that attempting to load a more-or-less arbitrarily chosen object without any context of what it's supposed to be isn't a very useful, which is why this particular choice was made. Obviously, just because the first page can be loaded successfully that doesn't guarantee that the *entire* XRef table is valid, however if even the first page fails to load you can be reasonably sure that the document is *not* valid[2]. Even though this patch won't cause any significant increase in the amount of parsing required during initial loading of the document[3], it will require loading of more data upfront which thus delays the initial `getDocument` call. Whether or not this is a problem depends very much on what you actually measure, please consider the following examples: ```javascript console.time('first'); getDocument(...).promise.then((pdfDocument) => { console.timeEnd('first'); }); console.time('second'); getDocument(...).promise.then((pdfDocument) => { pdfDocument.getPage(1).then((pdfPage) => { // Note: the API uses `pageNumber >= 1`, the Worker uses `pageIndex >= 0`. console.timeEnd('second'); }); }); ``` The first case is pretty much guaranteed to show a small regression, however the second case won't be affected at all since the Worker caches the result of `getPage` calls. Again, please remember that the second case is what matters for the standard PDF.js use-case which is why I'm hoping that this patch is deemed acceptable. --- [1] In issue 7496, the problem is that the document is edited without the XRef table being correctly updated. In issue 10326, the generator was sorting the XRef table according to the offsets rather than the objects. [2] The idea of checking the first page in particular came from the "standard" use-case for the PDF.js library, i.e. the default viewer, where a failure to load the first page basically means that nothing will work; note how `{BaseViewer, PDFThumbnailViewer}.setDocument` depends completely on being able to fetch the *first* page. [3] The only extra parsing is caused by, potentially, having to traverse *part* of the `Pages` tree to find the first page.
2018-12-05 05:51:27 +09:00
{ "id": "issue7496",
"file": "pdfs/issue7496.pdf",
"md5": "b422981ae781166e75c0fb4c3634ed96",
"link": true,
"rounds": 1,
"lastPage": 2,
"type": "eq",
"annotations": true
},
{ "id": "issue9129",
"file": "pdfs/issue9129.pdf",
"md5": "939ffc8d6d29b1d74e9d0f98b227b97f",
"link": true,
"rounds": 1,
"lastPage": 1,
"type": "eq"
Check that the first page can be successfully loaded, to try and ascertain the validity of the XRef table (issue 7496, issue 10326) For PDF documents with sufficiently broken XRef tables, it's usually quite obvious when you need to fallback to indexing the entire file. However, for certain kinds of corrupted PDF documents the XRef table will, for all intents and purposes, appear to be valid. It's not until you actually try to fetch various objects that things will start to break, which is the case in the referenced issues[1]. Since there's generally a real effort being in made PDF.js to load even corrupt PDF documents, this patch contains a suggested approach to attempt to do a bit more validation of the XRef table during the initial document loading phase. Here the choice is made to attempt to load the *first* page, as a basic sanity check of the validity of the XRef table. Please note that attempting to load a more-or-less arbitrarily chosen object without any context of what it's supposed to be isn't a very useful, which is why this particular choice was made. Obviously, just because the first page can be loaded successfully that doesn't guarantee that the *entire* XRef table is valid, however if even the first page fails to load you can be reasonably sure that the document is *not* valid[2]. Even though this patch won't cause any significant increase in the amount of parsing required during initial loading of the document[3], it will require loading of more data upfront which thus delays the initial `getDocument` call. Whether or not this is a problem depends very much on what you actually measure, please consider the following examples: ```javascript console.time('first'); getDocument(...).promise.then((pdfDocument) => { console.timeEnd('first'); }); console.time('second'); getDocument(...).promise.then((pdfDocument) => { pdfDocument.getPage(1).then((pdfPage) => { // Note: the API uses `pageNumber >= 1`, the Worker uses `pageIndex >= 0`. console.timeEnd('second'); }); }); ``` The first case is pretty much guaranteed to show a small regression, however the second case won't be affected at all since the Worker caches the result of `getPage` calls. Again, please remember that the second case is what matters for the standard PDF.js use-case which is why I'm hoping that this patch is deemed acceptable. --- [1] In issue 7496, the problem is that the document is edited without the XRef table being correctly updated. In issue 10326, the generator was sorting the XRef table according to the offsets rather than the objects. [2] The idea of checking the first page in particular came from the "standard" use-case for the PDF.js library, i.e. the default viewer, where a failure to load the first page basically means that nothing will work; note how `{BaseViewer, PDFThumbnailViewer}.setDocument` depends completely on being able to fetch the *first* page. [3] The only extra parsing is caused by, potentially, having to traverse *part* of the `Pages` tree to find the first page.
2018-12-05 05:51:27 +09:00
},
{ "id": "issue9552",
"file": "pdfs/issue9552.pdf",
"md5": "7f80fd5b426926f88fd2a9fdc02cd3bd",
"link": true,
"rounds": 1,
"lastPage": 1,
"type": "eq",
"annotations": true
},
Check that the first page can be successfully loaded, to try and ascertain the validity of the XRef table (issue 7496, issue 10326) For PDF documents with sufficiently broken XRef tables, it's usually quite obvious when you need to fallback to indexing the entire file. However, for certain kinds of corrupted PDF documents the XRef table will, for all intents and purposes, appear to be valid. It's not until you actually try to fetch various objects that things will start to break, which is the case in the referenced issues[1]. Since there's generally a real effort being in made PDF.js to load even corrupt PDF documents, this patch contains a suggested approach to attempt to do a bit more validation of the XRef table during the initial document loading phase. Here the choice is made to attempt to load the *first* page, as a basic sanity check of the validity of the XRef table. Please note that attempting to load a more-or-less arbitrarily chosen object without any context of what it's supposed to be isn't a very useful, which is why this particular choice was made. Obviously, just because the first page can be loaded successfully that doesn't guarantee that the *entire* XRef table is valid, however if even the first page fails to load you can be reasonably sure that the document is *not* valid[2]. Even though this patch won't cause any significant increase in the amount of parsing required during initial loading of the document[3], it will require loading of more data upfront which thus delays the initial `getDocument` call. Whether or not this is a problem depends very much on what you actually measure, please consider the following examples: ```javascript console.time('first'); getDocument(...).promise.then((pdfDocument) => { console.timeEnd('first'); }); console.time('second'); getDocument(...).promise.then((pdfDocument) => { pdfDocument.getPage(1).then((pdfPage) => { // Note: the API uses `pageNumber >= 1`, the Worker uses `pageIndex >= 0`. console.timeEnd('second'); }); }); ``` The first case is pretty much guaranteed to show a small regression, however the second case won't be affected at all since the Worker caches the result of `getPage` calls. Again, please remember that the second case is what matters for the standard PDF.js use-case which is why I'm hoping that this patch is deemed acceptable. --- [1] In issue 7496, the problem is that the document is edited without the XRef table being correctly updated. In issue 10326, the generator was sorting the XRef table according to the offsets rather than the objects. [2] The idea of checking the first page in particular came from the "standard" use-case for the PDF.js library, i.e. the default viewer, where a failure to load the first page basically means that nothing will work; note how `{BaseViewer, PDFThumbnailViewer}.setDocument` depends completely on being able to fetch the *first* page. [3] The only extra parsing is caused by, potentially, having to traverse *part* of the `Pages` tree to find the first page.
2018-12-05 05:51:27 +09:00
{ "id": "issue10326",
"file": "pdfs/issue10326.pdf",
"md5": "015c13b09ef735ea1204f38992c60487",
"link": true,
"rounds": 1,
"lastPage": 1,
"type": "eq"
Check that the first page can be successfully loaded, to try and ascertain the validity of the XRef table (issue 7496, issue 10326) For PDF documents with sufficiently broken XRef tables, it's usually quite obvious when you need to fallback to indexing the entire file. However, for certain kinds of corrupted PDF documents the XRef table will, for all intents and purposes, appear to be valid. It's not until you actually try to fetch various objects that things will start to break, which is the case in the referenced issues[1]. Since there's generally a real effort being in made PDF.js to load even corrupt PDF documents, this patch contains a suggested approach to attempt to do a bit more validation of the XRef table during the initial document loading phase. Here the choice is made to attempt to load the *first* page, as a basic sanity check of the validity of the XRef table. Please note that attempting to load a more-or-less arbitrarily chosen object without any context of what it's supposed to be isn't a very useful, which is why this particular choice was made. Obviously, just because the first page can be loaded successfully that doesn't guarantee that the *entire* XRef table is valid, however if even the first page fails to load you can be reasonably sure that the document is *not* valid[2]. Even though this patch won't cause any significant increase in the amount of parsing required during initial loading of the document[3], it will require loading of more data upfront which thus delays the initial `getDocument` call. Whether or not this is a problem depends very much on what you actually measure, please consider the following examples: ```javascript console.time('first'); getDocument(...).promise.then((pdfDocument) => { console.timeEnd('first'); }); console.time('second'); getDocument(...).promise.then((pdfDocument) => { pdfDocument.getPage(1).then((pdfPage) => { // Note: the API uses `pageNumber >= 1`, the Worker uses `pageIndex >= 0`. console.timeEnd('second'); }); }); ``` The first case is pretty much guaranteed to show a small regression, however the second case won't be affected at all since the Worker caches the result of `getPage` calls. Again, please remember that the second case is what matters for the standard PDF.js use-case which is why I'm hoping that this patch is deemed acceptable. --- [1] In issue 7496, the problem is that the document is edited without the XRef table being correctly updated. In issue 10326, the generator was sorting the XRef table according to the offsets rather than the objects. [2] The idea of checking the first page in particular came from the "standard" use-case for the PDF.js library, i.e. the default viewer, where a failure to load the first page basically means that nothing will work; note how `{BaseViewer, PDFThumbnailViewer}.setDocument` depends completely on being able to fetch the *first* page. [3] The only extra parsing is caused by, potentially, having to traverse *part* of the `Pages` tree to find the first page.
2018-12-05 05:51:27 +09:00
},
{ "id": "issue11403",
"file": "pdfs/issue11403_reduced.pdf",
"md5": "08287b64f442cb7c329b97c4774aa1cd",
"rounds": 1,
"type": "eq"
},
{ "id": "issue11139",
"file": "pdfs/issue11139.pdf",
"md5": "006dd4f4bb1878bc14a12072d81a4524",
"link": true,
"rounds": 1,
"lastPage": 1,
"type": "eq"
},
{ "id": "issue11230",
"file": "pdfs/issue11230.pdf",
"md5": "db0a1464d8f9f3ce079b52e0cacdccd3",
"link": true,
"rounds": 1,
"firstPage": 100,
"lastPage": 100,
"type": "eq"
},
{ "id": "issue10301",
"file": "pdfs/issue10301.pdf",
"md5": "c7ee7ba727969ab3bba12a4d13739303",
"rounds": 1,
"type": "text"
},
{ "id": "issue7544",
"file": "pdfs/issue7544.pdf",
"md5": "87e3a9fc7d6a6c1bd5b53af6926ce48e",
"link": false,
"rounds": 1,
"type": "eq"
},
{ "id": "issue11477",
"file": "pdfs/issue11477_reduced.pdf",
"md5": "f4e5735569afce79e52b3fd56d10ae13",
"rounds": 1,
"type": "eq"
},
{ "id": "issue7665",
"file": "pdfs/issue7665.pdf",
"md5": "f1199d16195a61e8232e2d1e742ed46b",
"link": false,
"rounds": 1,
"type": "load",
"about": "Encrypted file with indirect objects in the /Encrypt dictionary."
},
2011-11-30 08:47:53 +09:00
{ "id": "protectip",
"file": "pdfs/protectip.pdf",
"md5": "676e7a7b8f96d04825361832b1838a93",
"link": true,
"rounds": 1,
"type": "eq"
2011-11-30 13:22:30 +09:00
},
2013-07-30 05:24:32 +09:00
{ "id": "issue3427",
"file": "pdfs/issue3427.pdf",
"md5": "61979ede77f4557c65d4eb3c1a6dceeb",
"link": true,
"lastPage": 1,
"rounds": 1,
"type": "eq"
},
2011-11-30 13:22:30 +09:00
{ "id": "piperine",
"file": "pdfs/piperine.pdf",
"md5": "603ca43dc5732dbba1579f122958c0c2",
"link": true,
"rounds": 1,
"type": "eq"
},
{ "id": "issue840",
"file": "pdfs/issue840.pdf",
"md5": "20d88011dd7e3c4fb5274979094dab93",
"rounds": 1,
"type": "eq"
},
{ "id": "issue1536",
"file": "pdfs/issue1536.pdf",
"md5": "bcaa52e6216399592ad5aa9fc49f1436",
"rounds": 1,
"link": true,
"firstPage": 6,
"lastPage": 6,
"type": "eq"
},
{ "id": "issue2098",
"file": "pdfs/issue2098.pdf",
"md5": "e9fa2b7cb935ffb95b510322d1e047e1",
"rounds": 1,
"link": true,
"firstPage": 1,
"lastPage": 1,
"type": "eq"
},
{ "id": "bpl13210",
"file": "pdfs/bpl13210.pdf",
"md5": "8a08512baa9fa95378d9ad4b995947c7",
"link": true,
"lastPage": 5,
"rounds": 1,
"type": "eq"
},
{ "id": "issue7901",
"file": "pdfs/issue7901.pdf",
"md5": "16059a3af6e81ae9272daa57ea03e6e9",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "issue11279",
"file": "pdfs/issue11279.pdf",
"md5": "03361d24f3ed63b93f77abf731f8fc73",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "issue8480",
"file": "pdfs/issue8480.pdf",
"md5": "769bc07bf8041d95667f2d32aaf75665",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "issue9915",
"file": "pdfs/issue9915_reduced.pdf",
"md5": "c56dabe5066a6c821901920e09dffe00",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "issue8570",
"file": "pdfs/issue8570.pdf",
"md5": "0355731adb72df233eaa10464dcc8c51",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "issue7696",
"file": "pdfs/issue7696.pdf",
"md5": "0593f52d03251164caa219d704a15e4c",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "tutorial",
"file": "pdfs/tutorial.pdf",
"md5": "6e122f618c27f3aa9a689423e3be6b8d",
"link": true,
"rounds": 1,
"type": "eq"
2011-12-07 13:33:59 +09:00
},
{ "id": "geothermal.pdf",
"file": "pdfs/geothermal.pdf",
"md5": "ecffc0ce38ffdf1e90dc952f186e9a91",
"rounds": 1,
"link": true,
"lastPage": 5,
2011-12-07 13:33:59 +09:00
"type": "eq"
},
{ "id": "issue919",
"file": "pdfs/issue919.pdf",
"md5": "3a1716a512aca4d7a8d6106bd4885d14",
"rounds": 1,
"link": true,
"lastPage": 3,
"type": "eq"
2011-12-13 08:34:11 +09:00
},
{ "id": "issue6066",
"file": "pdfs/issue6066.pdf",
"md5": "b26eb08fc5ab2518ba8fde603bdfc46b",
"rounds": 1,
"link": true,
"firstPage": 2,
"lastPage": 2,
[api-minor] Decode all JPEG images with the built-in PDF.js decoder in `src/core/jpg.js` Currently some JPEG images are decoded by the built-in PDF.js decoder in `src/core/jpg.js`, while others attempt to use the browser JPEG decoder. This inconsistency seem unfortunate for a number of reasons: - It adds, compared to the other image formats supported in the PDF specification, a fair amount of code/complexity to the image handling in the PDF.js library. - The PDF specification support JPEG images with features, e.g. certain ColorSpaces, that browsers are unable to decode natively. Hence, determining if a JPEG image is possible to decode natively in the browser require a non-trivial amount of parsing. In particular, we're parsing (part of) the raw JPEG data to extract certain marker data and we also need to parse the ColorSpace for the JPEG image. - While some JPEG images may, for all intents and purposes, appear to be natively supported there's still cases where the browser may fail to decode some JPEG images. In order to support those cases, we've had to implement a fallback to the PDF.js JPEG decoder if there's any issues during the native decoding. This also means that it's no longer possible to simply send the JPEG image to the main-thread and continue parsing, but you now need to actually wait for the main-thread to indicate success/failure first. In practice this means that there's a code-path where the worker-thread is forced to wait for the main-thread, while the reverse should *always* be the case. - The native decoding, for anything except the *simplest* of JPEG images, result in increased peak memory usage because there's a handful of short-lived copies of the JPEG data (see PR 11707). Furthermore this also leads to data being *parsed* on the main-thread, rather than the worker-thread, which you usually want to avoid for e.g. performance and UI-reponsiveness reasons. - Not all environments, e.g. Node.js, fully support native JPEG decoding. This has, historically, lead to some issues and support requests. - Different browsers may use different JPEG decoders, possibly leading to images being rendered slightly differently depending on the platform/browser where the PDF.js library is used. Originally the implementation in `src/core/jpg.js` were unable to handle all of the JPEG images in the test-suite, but over the last couple of years I've fixed (hopefully) all of those issues. At this point in time, there's two kinds of failure with this patch: - Changes which are basically imperceivable to the naked eye, where some pixels in the images are essentially off-by-one (in all components), which could probably be attributed to things such as different rounding behaviour in the browser/PDF.js JPEG decoder. This type of "failure" accounts for the *vast* majority of the total number of changes in the reference tests. - Changes where the JPEG images now looks *ever so slightly* blurrier than with the native browser decoder. For quite some time I've just assumed that this pointed to a general deficiency in the `src/core/jpg.js` implementation, however I've discovered when comparing two viewers side-by-side that the differences vanish at higher zoom levels (usually around 200% is enough). Basically if you disable [this downscaling in canvas.js](https://github.com/mozilla/pdf.js/blob/8fb82e939cf0c8618a4e775ff17fc96f726872b5/src/display/canvas.js#L2356-L2395), which is what happens when zooming in, the differences simply vanish! Hence I'm pretty satisfied that there's no significant problems with the `src/core/jpg.js` implementation, and the problems are rather tied to the general quality of the downscaling algorithm used. It could even be seen as a positive that *all* images now share the same downscaling behaviour, since this actually fixes one old bug; see issue 7041.
2020-01-20 20:10:16 +09:00
"type": "eq"
},
{ "id": "bug1755507",
"file": "pdfs/bug1755507.pdf",
"md5": "319d73b8fd680cdc583d69b7f7ab29e9",
"rounds": 1,
"type": "eq"
},
{ "id": "issue9367",
"file": "pdfs/issue9367.pdf",
"md5": "81a2c6f1fe5d1bb00ff0479aa6547155",
"rounds": 1,
"link": true,
"lastPage": 1,
"type": "eq"
},
{ "id": "issue10529",
"file": "pdfs/issue10529.pdf",
"md5": "1a4d404a137c610ff0c747cbea3b8666",
"rounds": 1,
"link": false,
"type": "text"
},
{ "id": "issue11915",
"file": "pdfs/issue11915.pdf",
"md5": "c4f890b4a5b6f21653421856335181d5",
"rounds": 1,
"type": "eq"
},
{ "id": "issue10614",
"file": "pdfs/issue10614.pdf",
"md5": "c41da60ce9af100cb78e1c2a6ba18232",
"rounds": 1,
"link": true,
"lastPage": 1,
"type": "eq"
},
{ "id": "issue11362",
"file": "pdfs/issue11362.pdf",
"md5": "bcb08162d4bff1d32ead8b563e866c93",
"rounds": 1,
"link": false,
"type": "eq",
"annotations": true
},
{ "id": "issue11385",
"file": "pdfs/issue11385.pdf",
"md5": "cc04b23b845366857426a5aa6acf227b",
"rounds": 1,
"link": true,
"lastPage": 1,
"type": "eq"
},
{ "id": "issue4398",
"file": "pdfs/issue4398.pdf",
"md5": "f3c1f967e99a1f5659e0e196f4293706",
"rounds": 1,
"type": "eq"
},
{ "id": "issue6071",
"file": "pdfs/issue6071.pdf",
"md5": "2e08526d8e7c9ba4269fc12ef488d3eb",
"rounds": 1,
"link": true,
"type": "eq"
},
{ "id": "issue1905",
"file": "pdfs/issue1905.pdf",
"md5": "b1bbd72ca6522ae1502aa26320f81994",
"rounds": 1,
"type": "eq"
},
2011-12-13 12:42:39 +09:00
{ "id": "issue918",
"file": "pdfs/issue918.pdf",
"md5": "d582cc0f2592ae82936589ced2a47e55",
"rounds": 1,
"type": "eq"
2011-12-15 06:41:36 +09:00
},
2013-05-04 03:13:45 +09:00
{ "id": "issue3188",
"file": "pdfs/issue3188.pdf",
"md5": "161b72604d86f40ab2f765ddd3b61227",
"rounds": 1,
"lastPage": 1,
"type": "eq"
},
{ "id": "issue1586",
2012-04-25 08:53:11 +09:00
"file": "pdfs/pdfjsbad1586.pdf",
"md5": "793d0870f0b0c613799b0677d64daca4",
"rounds": 1,
"type": "load"
},
{ "id": "aboutstacks",
"file": "pdfs/aboutstacks.pdf",
"md5": "6e7c8416a293ba2d83bc8dd20c6ccf51",
"rounds": 1,
"link": true,
"lastPage": 1,
"type": "eq"
},
{ "id": "issue2884_reduced",
"file": "pdfs/issue2884_reduced.pdf",
"md5": "18386542fc82affa2a5d3722549f8211",
"rounds": 1,
"link": false,
"lastPage": 1,
"type": "eq"
},
{ "id": "bug956965",
"file": "pdfs/bug956965.pdf",
"md5": "9b2f1176c797ee84e989a507e745f89d",
"rounds": 1,
"link": true,
"firstPage": 33,
"lastPage": 33,
"type": "eq"
},
{ "id": "issue15262",
"file": "pdfs/issue15262.pdf",
"md5": "f33f73848cea3c7034457653d5cfb9be",
"rounds": 1,
"type": "eq",
"forms": true
},
2011-12-17 03:54:31 +09:00
{ "id": "smaskdim",
"file": "pdfs/smaskdim.pdf",
2011-12-19 10:28:25 +09:00
"md5": "de80aeca7cbf79940189fd34d59671ee",
2011-12-17 03:54:31 +09:00
"rounds": 1,
"type": "eq"
},
2013-03-05 05:28:04 +09:00
{ "id": "endchar",
"file": "pdfs/endchar.pdf",
"md5": "90a59acdd62252fdb4fefa482e12d6b3",
"rounds": 1,
"type": "eq"
},
2017-04-06 07:16:48 +09:00
{ "id": "issue8234",
"file": "pdfs/issue8234.pdf",
"md5": "32650fc60c51a9813b98bc9876dc15af",
"rounds": 1,
"type": "eq"
},
Cache JPEG images, just as we do for other image formats, in `evaluator.js` (issue 8380) For some reason, we're putting all kind of images *except* JPEG into the `imageCache` in `evaluator.js`.[1] This means that in the PDF file in issue 8380, we'll keep sending the *same* two small images[2] to the main-thread and decoding them over and over. This is obviously hugely inefficient! As can be seen from the discussion in the issue, the performance becomes *extremely* bad if the user has the addon "Adblock Plus" installed. However, even in a clean Firefox profile, the performance isn't that great. This patch not only addresses the performance implications of the "Adblock Plus" addon together with that particular PDF file, but it *also* improves the rendering times considerably for *all* users. Locally, with a clean profile, the rendering times are reduced from `~2000 ms` to `~500 ms` for my setup! Obviously, the general structure of the PDF file and its operator sequence is still hugely inefficient, however I'd say that the performance with this patch is good enough to consider the issue (as it stands) resolved.[3] Fixes 8380. --- [1] Not technically true, since inline images are cached from `parser.js`, but whatever :-) [2] The two JPEG images have dimensions 1x2, respectively 4x2. [3] To make this even more efficient, a new state would have to be added to the `QueueOptimizer`. Given that PDF files this stupid fortunately aren't too common, I'm not convinced that it's worth doing.
2017-05-07 19:34:47 +09:00
{ "id": "issue8380",
"file": "pdfs/issue8380.pdf",
"md5": "2782af6a4d0540fcea3897560f842094",
"rounds": 1,
"link": true,
"type": "eq"
},
{ "id": "issue9243",
"file": "pdfs/issue9243.pdf",
"md5": "f6b8c5c62b8875f7d9dfcd2b25d3aab8",
"rounds": 1,
"type": "eq"
},
{ "id": "issue8424",
"file": "pdfs/issue8424.pdf",
"md5": "3de1ea4c085e8fe8e156153418058955",
"rounds": 1,
"link": false,
"type": "eq"
},
2011-12-31 02:24:13 +09:00
{ "id": "type4psfunc",
"file": "pdfs/type4psfunc.pdf",
"md5": "7e6027a02ff78577f74dccdf84e37189",
"rounds": 1,
"type": "eq"
2012-01-05 10:55:04 +09:00
},
{ "id": "issue8330",
"file": "pdfs/issue8330.pdf",
"md5": "9010093d07dd62d3b49378fd48cf45f9",
"rounds": 1,
"lastPage": 1,
"link": true,
"type": "eq"
},
{ "id": "standard_fonts_system_fonts",
"file": "pdfs/standard_fonts.pdf",
"md5": "bb3a9ab3322328be983e8b4e8089843a",
"rounds": 1,
"type": "eq",
"useSystemFonts": true
},
{ "id": "standard_fonts_no_system_fonts",
"file": "pdfs/standard_fonts.pdf",
"md5": "bb3a9ab3322328be983e8b4e8089843a",
"rounds": 1,
"type": "eq",
"useSystemFonts": false
},
{ "id": "standard_fonts_main_thread_fetch",
"file": "pdfs/standard_fonts.pdf",
"md5": "bb3a9ab3322328be983e8b4e8089843a",
"rounds": 1,
"type": "eq",
"useSystemFonts": false,
"useWorkerFetch": false
},
2014-04-12 01:55:39 +09:00
{ "id": "issue4573",
"file": "pdfs/issue4573.pdf",
"md5": "34b0c4fdee19e57033275b766c5f57a3",
"rounds": 1,
"link": false,
"firstPage": 1,
"lastPage": 1,
"type": "eq",
"about": "Seac with differences array that messes up mapping."
},
{ "id": "issue2840",
"file": "pdfs/issue2840.pdf",
"md5": "d9df49f6d62668d099e0fb7e74f8f337",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "issue5804",
"file": "pdfs/issue5804.pdf",
"md5": "442f27939edb6aaf173ceff38d69bb14",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "issue7446",
"file": "pdfs/issue7446.pdf",
"md5": "1b5bdd8a806e6ab9eda7c1c707b75fc6",
"rounds": 1,
"link": false,
"type": "load",
"about": "Annotation without the required /Subtype."
},
{ "id": "issue7492-eq",
"file": "pdfs/issue7492.pdf",
"md5": "7b0b28919c1088a2a5a0aeedbaa4c3ca",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "issue7492-text",
"file": "pdfs/issue7492.pdf",
"md5": "7b0b28919c1088a2a5a0aeedbaa4c3ca",
"rounds": 1,
"link": false,
"type": "text"
},
{ "id": "issue8229",
"file": "pdfs/issue8229.pdf",
"md5": "a729f663782e87ebc1efad0755ebf6a5",
"rounds": 1,
"link": false,
"type": "text"
},
{ "id": "ShowText-ShadingPattern",
"file": "pdfs/ShowText-ShadingPattern.pdf",
"md5": "fe683725db037ffe19d390969610a652",
"rounds": 1,
"link": false,
"type": "eq",
"about": "Please note that this file currently renders incorrectly."
},
{ "id": "issue12399",
"file": "pdfs/issue12399_reduced.pdf",
"md5": "01bdd258be93e10f8399708eecedbfd6",
"rounds": 1,
"type": "eq"
},
{ "id": "issue5808-text",
"file": "pdfs/issue5808.pdf",
"md5": "e0584dd540d7859d6c191aa53379692e",
"rounds": 1,
"link": false,
"type": "text"
},
{ "id": "issue14999",
"file": "pdfs/issue14999_reduced.pdf",
"md5": "a4e664e734f6869aa66245e72d448874",
"rounds": 1,
"type": "text"
},
{ "id": "issue6901-eq",
"file": "pdfs/issue6901.pdf",
"md5": "1a0604b1a7a3aaf2162b425a9a84230b",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "issue6901-text",
"file": "pdfs/issue6901.pdf",
"md5": "1a0604b1a7a3aaf2162b425a9a84230b",
"rounds": 1,
"link": false,
"type": "text"
},
{ "id": "issue15352",
"file": "pdfs/issue15352.pdf",
"md5": "d0edf452a85821acf41cbfa0a6f2f2ac",
"rounds": 1,
"link": true,
"lastPage": 1,
"type": "text"
},
{ "id": "issue6962",
"file": "pdfs/issue6962.pdf",
"md5": "d40e871ecca68baf93114bd28c782148",
"rounds": 1,
"link": false,
"type": "text"
},
{ "id": "issue5644",
"file": "pdfs/issue5644.pdf",
"md5": "6f9313c5043b3ecb0ab2df321d3e1847",
"rounds": 1,
"link": true,
"firstPage": 1,
"lastPage": 6,
"type": "eq"
},
{ "id": "issue8088",
"file": "pdfs/issue8088.pdf",
"md5": "5bbc33c7433799487518eb0d8094348c",
"rounds": 1,
"link": false,
"firstPage": 1,
"lastPage": 3,
"type": "eq"
},
{ "id": "bug866395",
"file": "pdfs/bug866395.pdf",
"md5": "f03bc77e84637241980b09a0a220f575",
"link": false,
"rounds": 1,
"type": "eq",
"about": "Font with an empty font file."
},
{ "id": "bug1037816",
"file": "pdfs/bug1037816.pdf",
"md5": "8a45299d7b102a9c1cadb8883b8debc9",
"rounds": 1,
"link": true,
"lastPage": 1,
"type": "eq",
"about": "ObjStm stream containing 'endobj' commands."
},
2012-01-05 10:55:04 +09:00
{ "id": "ocs",
"file": "pdfs/ocs.pdf",
"md5": "2ade57e954ae7632749cf328daeaa7a8",
"rounds": 1,
"link": true,
"type": "load"
},
{ "id": "issue2139",
"file": "pdfs/issue2139.pdf",
"md5": "ee4072992e7c5ffd5063181916a2fcae",
"rounds": 1,
"link": true,
"type": "eq"
},
2012-01-12 13:19:21 +09:00
{ "id": "issue1010",
"file": "pdfs/issue1010.pdf",
"md5": "f991ef093484a107fe9f59dff18fc155",
"rounds": 1,
"link": true,
"type": "eq"
},
{ "id": "issue1709",
"file": "pdfs/issue1709.pdf",
"md5": "84497bd23b7c82d03d2681a1cb1d9ed0",
"rounds": 1,
"lastPage": 10,
"link": true,
"type": "eq"
},
{ "id": "issue12714",
"file": "pdfs/issue12714.pdf",
"md5": "f9ee31c74f9e342e95122b0b3bc84fa0",
"rounds": 1,
"firstPage": 2,
"lastPage": 2,
"link": true,
"type": "eq"
},
{ "id": "issue11004",
"file": "pdfs/issue11004.pdf",
"md5": "25d79508f2c9ef0e2327564966138fc1",
"rounds": 1,
"lastPage": 1,
"link": true,
"type": "eq"
},
{ "id": "issue12752",
"file": "pdfs/issue12752.pdf",
"md5": "9f8ada17a613d18919714baf684e165f",
"rounds": 1,
"lastPage": 1,
"link": true,
"type": "eq"
},
{ "id": "issue15910",
"file": "pdfs/issue15910.pdf",
"md5": "6429d8490e11e226b1cbdf2033c04237",
"rounds": 1,
"type": "text"
},
{ "id": "issue7872",
"file": "pdfs/issue7872.pdf",
"md5": "81781dfecfcb7e9cd9cc7e60f8b747b7",
"rounds": 1,
"link": false,
"type": "eq",
"about": "MediaBox and CropBox with indirect objects."
},
{ "id": "bug1057544",
"file": "pdfs/bug1057544.pdf",
"md5": "49ad71b82ead1ee0fe4ddb41aa9e30b4",
"rounds": 1,
"type": "eq"
},
{ "id": "issue2618",
"file": "pdfs/issue2618.pdf",
"md5": "2c554a99a52288ca1a44a422eeafb8fb",
"rounds": 1,
"lastPage": 1,
"link": true,
"type": "eq"
},
2013-02-23 13:08:46 +09:00
{ "id": "issue2642",
"file": "pdfs/issue2642.pdf",
"md5": "b6679861fdce3bbab0c1fa51bb7f5077",
"rounds": 1,
"lastPage": 1,
"link": true,
"type": "eq"
},
{ "id": "issue3848",
"file": "pdfs/issue3848.pdf",
"md5": "2498cf0650cc97ceca3e24dfa0425a73",
"rounds": 1,
"lastPage": 1,
"link": true,
"type": "load",
"about": "Document tree with pages and page nodes on the same level."
},
2012-01-05 04:49:37 +09:00
{ "id": "issue1015",
"file": "pdfs/issue1015.pdf",
"md5": "b61503d1b445742b665212866afb60e2",
"rounds": 1,
"link": true,
"type": "eq"
2012-01-10 11:37:39 +09:00
},
{ "id": "issue1096",
"file": "pdfs/issue1096.pdf",
"md5": "7f75d2b4b93c78d401ff39e8c1b00612",
"rounds": 1,
"lastPage": 9,
"link": true,
"type": "eq"
},
2012-01-27 09:51:58 +09:00
{ "id": "issue1127",
"file": "pdfs/issue1127.pdf",
"md5": "4fb2be5ffefeafda4ba977de2a1bb4d8",
"rounds": 1,
"link": true,
"type": "eq"
},
{ "id": "issue14802",
"file": "pdfs/issue14802.pdf",
"md5": "c1e774945fee539c7fcfec00b36dd4e6",
"rounds": 1,
"type": "eq",
"annotations": true,
"about": "LinkAnnotation with a relative link, and a /Catalog Base-URI."
},
{ "id": "issue14824",
"file": "pdfs/issue14824.pdf",
"md5": "7b8d061ab0a342e3606a3b3ba1925d5b",
"rounds": 1,
"link": true,
"lastPage": 4,
"type": "eq",
"optionalContent": {
"7R": false
},
"about": "Need to test *at least* three pages, since the `GlobalImageCache` is involved."
},
{ "id": "issue14917",
"file": "pdfs/issue14917.pdf",
"md5": "12201b35853f78a501ac46b91608f8b6",
"rounds": 1,
"link": true,
"lastPage": 1,
"type": "eq"
},
{ "id": "issue1127-text",
"file": "pdfs/issue1127.pdf",
"md5": "4fb2be5ffefeafda4ba977de2a1bb4d8",
"rounds": 1,
"link": true,
"lastPage": 1,
"type": "text"
},
2014-03-18 22:07:54 +09:00
{ "id": "issue4461-load",
"file": "pdfs/issue4461.pdf",
"md5": "9df4ecaae429adb5dc93d9342a53159d",
"rounds": 1,
"type": "load",
"about": "Document without /Resources entry in page dictionary"
},
{ "id": "issue1249-load",
"file": "pdfs/issue1249.pdf",
"md5": "4f81339fa09422a7db980f34ea963609",
"rounds": 1,
"type": "load"
},
2012-01-10 11:37:39 +09:00
{ "id": "liveprogramming",
"file": "pdfs/liveprogramming.pdf",
"md5": "7bd4dad1188232ef597d36fd72c33e52",
"rounds": 1,
"lastPage": 3,
2012-01-10 11:37:39 +09:00
"link": true,
"type": "load"
2012-01-12 11:14:49 +09:00
},
{ "id": "issue7339",
"file": "pdfs/issue7339_reduced.pdf",
"md5": "7092ab6a1acc31db9d1caaa0447334a0",
"rounds": 1,
"type": "eq"
},
{ "id": "bug1142033",
"file": "pdfs/bug1142033.pdf",
"md5": "1d9afd397e89a0f52c056f449ec93daa",
"rounds": 1,
"lastPage": 1,
"link": true,
"type": "eq"
},
{ "id": "bug1354114",
"file": "pdfs/bug1354114.pdf",
"md5": "ad718d04702d29a37792c7f222fe1fa6",
"rounds": 1,
"firstPage": 30,
"link": true,
"type": "eq"
},
{ "id": "issue5874",
"file": "pdfs/issue5874.pdf",
"md5": "25922edf223aa91bc259663d0a34a6ab",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "pr4731",
"file": "pdfs/pr4731.pdf",
"md5": "0121642027e525c4b95357f1b5669e64",
"rounds": 1,
"link": true,
"lastPage": 1,
"type": "load"
},
2018-09-30 23:29:16 +09:00
{ "id": "annotation-caret-ink",
"file": "pdfs/annotation-caret-ink.pdf",
"md5": "6218ca235580d1975474c979e0128c2d",
"rounds": 1,
"type": "eq",
"annotations": true
},
{ "id": "issue6179_reduced",
"file": "pdfs/issue6179_reduced.pdf",
"md5": "457ff3561b83346ae3caf91acd252040",
"rounds": 1,
"type": "eq",
"annotations": true
},
{ "id": "bug1130815-eq",
"file": "pdfs/bug1130815.pdf",
"md5": "3ff3b550c3af766991b2a1b11d00de85",
"rounds": 1,
"link": true,
"type": "eq"
},
{ "id": "bug1130815-text",
"file": "pdfs/bug1130815.pdf",
"md5": "3ff3b550c3af766991b2a1b11d00de85",
"rounds": 1,
"link": true,
"type": "text"
},
{ "id": "issue3248",
"file": "pdfs/issue3248.pdf",
"md5": "970767ed68de46c316d74de67965999b",
"rounds": 1,
"link": true,
"lastPage": 1,
"type": "load"
},
{ "id": "issue8702-eq",
"file": "pdfs/issue8702.pdf",
"md5": "59d501ed1518d78ef6ee442cf824b0f6",
"rounds": 1,
"link": false,
"lastPage": 1,
"type": "eq"
},
{ "id": "issue8702-text",
"file": "pdfs/issue8702.pdf",
"md5": "59d501ed1518d78ef6ee442cf824b0f6",
"rounds": 1,
"link": false,
"lastPage": 1,
"type": "text"
},
{ "id": "pr4897",
"file": "pdfs/pr4897.pdf",
"md5": "26897633eea5e6d10345a130b1c1777c",
"rounds": 1,
"link": true,
"lastPage": 1,
"type": "eq"
},
{ "id": "issue13242",
"file": "pdfs/issue13242.pdf",
"md5": "ceb2da908c972087eb90e6bae240bce9",
"rounds": 1,
"type": "eq",
"annotations": true
},
{ "id": "issue7229",
"file": "pdfs/issue7229.pdf",
"md5": "480e51aae0ac271780e4603d1561d15e",
"rounds": 1,
"link": false,
"lastPage": 1,
"type": "load"
},
{ "id": "issue1940",
"file": "pdfs/issue1940.pdf",
"md5": "4f0a0b92c1b5e6e86e1a82490087e6e5",
"rounds": 1,
"link": true,
"lastPage": 1,
"type": "load"
},
{ "id": "160F-2019",
"file": "pdfs/160F-2019.pdf",
"md5": "71591f11ee717e12887f529c84d5ae89",
"rounds": 1,
"type": "eq",
"print": true,
"annotationStorage": {
"427R": {
"hidden": false,
"value": "hello world"
}
}
},
{ "id": "issue6342-eq",
"file": "pdfs/issue6342.pdf",
"md5": "2ea85ca8d17117798f105be88bdb2bfd",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "issue6342-text",
"file": "pdfs/issue6342.pdf",
"md5": "2ea85ca8d17117798f105be88bdb2bfd",
"rounds": 1,
"link": false,
"type": "text"
},
{ "id": "bug1671312_reduced",
"file": "pdfs/bug1671312_reduced.pdf",
"md5": "db13fe3f03a7d0bd0e248f5c2bcb2a5d",
"rounds": 1,
"type": "eq"
},
{ "id": "bug1671312_ArialNarrow",
"file": "pdfs/bug1671312_ArialNarrow.pdf",
"md5": "f4f0a0d1dc9276bd6e3402165ecdc3d7",
"rounds": 1,
"type": "eq"
},
{ "id": "issue7020",
"file": "pdfs/issue7020.pdf",
"md5": "93b464e21c649e64ae92eeafe99fc31b",
"link": false,
"rounds": 1,
"type": "eq"
},
{ "id": "bug1627427",
"file": "pdfs/bug1627427_reduced.pdf",
"md5": "3ff75fcf455af49803f0f04eb071bdc3",
"link": false,
"rounds": 1,
"type": "text"
},
{ "id": "issue11451",
"file": "pdfs/issue11451.pdf",
"md5": "a2fd3c4596ad75562df83a2494263802",
"rounds": 1,
"link": true,
"lastPage": 1,
"type": "eq"
},
{ "id": "bug1652224",
"file": "pdfs/bug1652224.pdf",
"md5": "0e1bb427f32e83dc8f091842f7a11ac4",
"rounds": 1,
"link": true,
"firstPage": 5,
"lastPage": 5,
"type": "eq"
},
2017-06-30 03:52:49 +09:00
{ "id": "issue8586",
"file": "pdfs/issue8586.pdf",
"md5": "16b5230364017d3b0d2d65978eb35816",
"link": false,
"rounds": 1,
"type": "eq"
},
{ "id": "issue7101",
"file": "pdfs/issue7101.pdf",
"md5": "cc9cabe12ac9ad49e5372ef33d10aeb4",
"link": false,
"rounds": 1,
"type": "eq"
},
{ "id": "issue7200",
"file": "pdfs/issue7200.pdf",
"md5": "ddae17424ea23930eecf8b612a66ed0f",
"link": false,
"rounds": 1,
"type": "eq"
},
{ "id": "issue12810",
"file": "pdfs/issue12810.pdf",
"md5": "585e19781308603dd706f941b1ace774",
"rounds": 1,
"type": "eq"
},
{ "id": "pr4606",
"file": "pdfs/pr4606.pdf",
"md5": "6574fde2314648600056bd0e229df98c",
"rounds": 1,
"link": true,
"lastPage": 1,
"type": "load"
},
2012-01-12 11:14:49 +09:00
{ "id": "S2-eq",
"file": "pdfs/S2.pdf",
"md5": "d0b6137846df6e0fe058f234a87fb588",
"rounds": 1,
"type": "eq"
},
{ "id": "issue1055",
"file": "pdfs/issue1055r.pdf",
"md5": "4aa72bb4779e3f301c45492f2a590459",
"rounds": 1,
"link": false,
"type": "eq"
2012-01-18 13:50:49 +09:00
},
2012-05-18 08:34:31 +09:00
{ "id": "issue1629",
"file": "pdfs/issue1629.pdf",
"md5": "0f2cbbf268383a377e95e6bbe36c6a9a",
"rounds": 1,
"link": true,
"type": "eq"
},
{ "id": "issue6410",
"file": "pdfs/issue6410.pdf",
"md5": "fd5c5898d5b9754bb546724b7d31bf59",
"rounds": 1,
"link": false,
"type": "eq"
},
2015-09-04 05:29:12 +09:00
{ "id": "issue6413",
"file": "pdfs/issue6413.pdf",
"md5": "08926ac7a46e27a4abbb31256b3a7b29",
"rounds": 1,
"link": false,
"type": "eq"
},
2012-08-12 13:05:41 +09:00
{ "id": "issue1685",
"file": "pdfs/issue1685.pdf",
"md5": "b22c3741e6bd0e613d3eb3325ad31f7d",
"rounds": 1,
"lastPage": 2,
2012-08-12 13:05:41 +09:00
"link": true,
2012-05-18 08:34:31 +09:00
"type": "eq"
},
2012-02-05 03:45:18 +09:00
{ "id": "issue1169",
"file": "pdfs/issue1169.pdf",
"md5": "3df3ed21fd43ac7fdb21e2015c8a7809",
"rounds": 1,
"link": true,
"type": "eq"
},
{ "id": "issue2017-eq",
"file": "pdfs/issue2017r.pdf",
"md5": "5d2bc43b386496cfb8841ca677db7046",
"rounds": 1,
"link": false,
"lastPage": 1,
"type": "eq"
},
{ "id": "issue2017-text",
"file": "pdfs/issue2017r.pdf",
"md5": "5d2bc43b386496cfb8841ca677db7046",
"rounds": 1,
"link": false,
"lastPage": 1,
"type": "text"
},
{ "id": "issue5256",
"file": "pdfs/issue5256.pdf",
"md5": "9383e17ced31f9afc940fb7898df8e68",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "issue6360",
"file": "pdfs/issue6360.pdf",
"md5": "58c5455ffd84b1c07ad2d0fa90cd5e26",
"rounds": 1,
"link": true,
"firstPage": 1,
"lastPage": 1,
"type": "eq"
},
{ "id": "issue12963",
"file": "pdfs/issue12963.pdf",
"md5": "2590047a2ef0113e698d888c29918008",
"rounds": 1,
"firstPage": 1,
"lastPage": 1,
"type": "eq",
"annotations": true
},
{ "id": "multiple-filters-length-zero",
"file": "pdfs/multiple-filters-length-zero.pdf",
"md5": "c273c3a6fb79cbf3034fe1b62b204728",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "issue5752",
"file": "pdfs/issue5752.pdf",
"md5": "aa20ad7cff71e9481c0cd623ddbff3b7",
"rounds": 1,
"link": true,
"firstPage": 1,
"lastPage": 1,
"type": "eq"
},
{ "id": "issue2931",
"file": "pdfs/issue2931.pdf",
"md5": "ea40940eaf3541b312bda9329167da11",
"link": false,
"rounds": 1,
"type": "eq"
},
{ "id": "issue4260",
"file": "pdfs/issue4260_reduced.pdf",
"md5": "6b39ebc8c4dddc41f1b031c070c212ad",
"rounds": 1,
"type": "eq"
},
2014-09-04 04:57:57 +09:00
{ "id": "ZapfDingbats",
"file": "pdfs/ZapfDingbats.pdf",
"md5": "980df9b1c86715a3d8aa2d3c807a2b2c",
"link": false,
"rounds": 1,
"type": "eq"
},
{ "id": "TrueType_without_cmap",
"file": "pdfs/TrueType_without_cmap.pdf",
"md5": "afca8bb11f2e1f7298b4e5dd85785fb0",
"link": false,
"rounds": 1,
"type": "eq"
},
{ "id": "issue8697",
"file": "pdfs/issue8697.pdf",
"md5": "65c6f0d861d49fa685051a64c3f78694",
"link": false,
"rounds": 1,
"type": "eq"
},
{ "id": "non-embedded-NuptialScript",
"file": "pdfs/non-embedded-NuptialScript.pdf",
"md5": "94225085d3fbf5d2d12b8be1c52bb3c1",
"link": false,
"rounds": 1,
"type": "eq"
},
{ "id": "issue4706",
"file": "pdfs/issue4706.pdf",
"md5": "f3e90a3cf52550583fa2a07a138b8660",
"rounds": 1,
"type": "eq"
},
{ "id": "issue15719",
"file": "pdfs/issue15719.pdf",
"md5": "4a58dbe725897e787a93e26abc621191",
"link": true,
"rounds": 1,
"type": "eq",
"optionalContent": {
"37R": false
}
},
{ "id": "issue15833",
"file": "pdfs/issue15833.pdf",
"md5": "9562d027b980ea2779dcfb1669f9cf7e",
"link": true,
"rounds": 1,
"lastPage": 1,
"type": "eq"
},
{ "id": "issue11242",
"file": "pdfs/issue11242_reduced.pdf",
"md5": "ba50b6ee537f3e815ccfe0c99e598e05",
"link": false,
"rounds": 1,
"type": "eq"
},
{ "id": "issue3323",
"file": "pdfs/issue3323.pdf",
"md5": "1a14ff574013caeafa9d598269988764",
"link": false,
"rounds": 1,
"type": "eq"
},
{ "id": "issue6769",
"file": "pdfs/issue6769.pdf",
"md5": "724b94d6bd1e8010403328446d0ab061",
"rounds": 1,
"type": "eq"
},
{ "id": "issue4304",
"file": "pdfs/issue4304.pdf",
"md5": "1b1205bf0d7c1ad22a154b60da8e694d",
"link": false,
"rounds": 1,
"type": "eq"
},
{ "id": "issue4379",
"file": "pdfs/issue4379.pdf",
"md5": "09715ec1a7b0f3a7ae02b3046f627b9f",
"link": false,
"rounds": 1,
"type": "eq"
},
{ "id": "issue4387",
"file": "pdfs/issue4387.pdf",
"md5": "e06da177b5b9e36016fa2442510d62da",
"rounds": 1,
"link": true,
"type": "load"
},
{ "id": "issue13132",
"file": "pdfs/issue13132.pdf",
"md5": "1b28964b9188047bc6c786302c95029f",
"link": true,
"type": "other"
},
{ "id": "issue4722",
"file": "pdfs/issue4722.pdf",
"md5": "a42ca858af7d179358f92f47e57c0fed",
"link": false,
"rounds": 1,
"type": "eq"
},
{ "id": "issue6132",
"file": "pdfs/issue6132.pdf",
"md5": "bd1e6252ca642acf2cd05db1748a073c",
"rounds": 1,
"type": "eq"
},
{ "id": "issue4875",
"file": "pdfs/issue4875.pdf",
"md5": "9a558e18029a42c0ef4e9a8755e24733",
"link": false,
"rounds": 1,
"type": "eq"
},
{ "id": "issue4881",
"file": "pdfs/issue4881.pdf",
"md5": "e1f06be05eda4ddf734e9764f3f067f1",
"link": false,
"rounds": 1,
"type": "eq"
},
2014-10-25 18:35:13 +09:00
{ "id": "issue5291",
"file": "pdfs/issue5291.pdf",
"md5": "edae085495c702069ffdbf785a826556",
"link": false,
"rounds": 1,
"type": "eq"
},
{ "id": "issue5244",
"file": "pdfs/issue5244.pdf",
"md5": "a50cd364c3976c744627b4b9bb90c761",
"link": false,
"rounds": 1,
"type": "eq"
},
{ "id": "issue5994",
"file": "pdfs/issue5994.pdf",
"md5": "6799733a39d29b3828d6628bf2c5c382",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "issue8061",
"file": "pdfs/issue8061.pdf",
"md5": "d61fe1dcdcd55bca00b351b2fc2c6dc7",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "issue7580-eq",
"file": "pdfs/issue7580.pdf",
"md5": "44dd5a9b4373fcab9890cf567722a766",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "visibility_expressions",
"file": "pdfs/visibility_expressions.pdf",
"md5": "bc530d90984ddaa2cc7e0cd53fc2cf34",
"rounds": 1,
"type": "eq"
},
2021-06-07 22:20:29 +09:00
{ "id": "hsbc",
"file": "pdfs/hsbc.pdf",
"md5": "34a63a9ed9cdf3790562a3dfd1703e48",
"rounds": 1,
"link": true,
"enableXfa": true,
"type": "eq"
},
{ "id": "hsbc_closure",
"file": "pdfs/xfa_hsbc_closure.pdf",
"md5": "7d101861d6232fe5f658e8aeca5c9891",
"rounds": 1,
"link": true,
"enableXfa": true,
"type": "eq"
},
{ "id": "xfa_imm1344e",
"file": "pdfs/xfa_imm1344e.pdf",
"md5": "f9b8b6e7d385691efdea2544576f5eb2",
"rounds": 1,
"link": true,
"enableXfa": true,
"type": "eq"
},
{ "id": "issue7580-text",
"file": "pdfs/issue7580.pdf",
"md5": "44dd5a9b4373fcab9890cf567722a766",
"rounds": 1,
"link": false,
"type": "text"
},
{ "id": "issue6612-text",
"file": "pdfs/issue6612.pdf",
"md5": "657f33236496916597cd70ef1222509a",
"rounds": 1,
"link": false,
"type": "text"
},
2012-01-18 13:50:49 +09:00
{ "id": "zerowidthline",
"file": "pdfs/zerowidthline.pdf",
"md5": "295d26e61a85635433f8e4b768953f60",
"rounds": 1,
"link": false,
"type": "eq"
2012-02-02 07:48:44 +09:00
},
{ "id": "issue8187",
"file": "pdfs/issue8187.pdf",
"md5": "1724dcada47b90c9217ee0139d8352a8",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "issue5686",
"file": "pdfs/issue5686.pdf",
"md5": "78d16b9df07a355ad00d70504a9194f8",
"rounds": 1,
"link": false,
"type": "eq",
"about": "Type1 font where Length1/Length2 are slightly incorrect."
},
{ "id": "issue3928",
"file": "pdfs/issue3928.pdf",
"md5": "1963493f843e981cbe768b707ef7f08a",
"rounds": 1,
"link": false,
"type": "eq",
"about": "Type1 font where Length1/Length2 are several orders of magnitude too large."
},
{ "id": "images_1bit_grayscale",
"file": "pdfs/images_1bit_grayscale.pdf",
"md5": "e1c36a19563944891bd30cfc0199d07f",
"rounds": 1,
"type": "eq"
},
{ "id": "html5checker",
"file": "pdfs/html5checker.pdf",
"md5": "74bbd80d1e7eb5f2951582233ef9ebab",
"rounds": 1,
"lastPage": 7,
"link": true,
"type": "eq"
},
{ "id": "issue5704",
"file": "pdfs/issue5704.pdf",
"md5": "6e0b62585feef24dff2d7e7687cd8128",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "issue5747",
"file": "pdfs/issue5747.pdf",
"md5": "5c36afc931dd1a3321ffa2e88952d174",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "issue6099",
"file": "pdfs/issue6099.pdf",
"md5": "f8e9a26637c1b0d35f2bc653122a9c73",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "issue7180-text",
"file": "pdfs/issue7180.pdf",
"md5": "73ed92d7ca55475f1f31d1d75fee3283",
"rounds": 1,
"link": false,
"type": "text"
},
{
"id": "bug1123803",
"file": "pdfs/bug1123803.pdf",
"md5": "0f3870ac5ad8899aec34d734e045a514",
"rounds": 1,
"link": true,
"type": "eq"
},
{ "id": "issue11794",
"file": "pdfs/issue11794.pdf",
"md5": "00d17b10a5fd7c06cddd7a0d2066ecdd",
"rounds": 1,
"link": true,
"lastPage": 1,
"type": "eq"
},
2016-04-11 06:39:15 +09:00
{
"id": "bug852992",
"file": "pdfs/bug852992_reduced.pdf",
"md5": "c11439fe3b7f8bc39d89dcff58c50a0c",
"rounds": 1,
"type": "eq"
},
{ "id": "colorspace_atan",
"file": "pdfs/colorspace_atan.pdf",
"md5": "ec310d65a1849a39ae57d0d16b17261d",
"rounds": 1,
"type": "eq"
},
2016-04-11 06:39:15 +09:00
{
"id": "bug1199237",
"file": "pdfs/bug1199237.pdf",
"md5": "e9a63d3207ccc65a4955d5723546e962",
"rounds": 1,
"firstPage": 1,
"lastPage": 1,
"link": true,
"type": "eq"
},
{ "id": "issue7891_bc0",
"file": "pdfs/issue7891_bc0.pdf",
"md5": "744a22244a4e4708b7f1691eec155fc8",
"rounds": 1,
"type": "eq"
},
{ "id": "issue14821",
"file": "pdfs/issue14821.pdf",
"md5": "ae77afb0f98c62e6b7fe7f912c84a75c",
"rounds": 1,
"type": "eq"
},
2016-04-11 06:39:15 +09:00
{
"id": "issue6165",
"file": "pdfs/issue6165.pdf",
"md5": "84ebde43b9121aa2ef8026388a4f4244",
"rounds": 1,
"firstPage": 1,
"lastPage": 1,
"link": true,
"type": "eq"
},
2015-11-04 00:03:08 +09:00
{
"id": "issue6019-text",
"file": "pdfs/issue6019.pdf",
"md5": "7a2e5dda3b0fc5c2e9060e378a8cdc4e",
"rounds": 1,
"type": "text"
},
{ "id": "bug893730",
"file": "pdfs/bug893730.pdf",
"md5": "2587379fb1b3bbff89c14f0863e78383",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "issue6336",
"file": "pdfs/issue6336.pdf",
"md5": "1c457c12b3606e1de610235d6768bd78",
"rounds": 1,
"link": false,
"type": "eq"
},
2017-04-11 03:58:02 +09:00
{ "id": "issue6652",
"file": "pdfs/issue6652.pdf",
"md5": "1c8e2953f84623bc773eb720c87a9331",
"rounds": 1,
"link": false,
"type": "eq"
},
2015-03-07 19:39:10 +09:00
{ "id": "issue5801",
"file": "pdfs/issue5801.pdf",
"md5": "e9548650ad40e13e00d2a486bbc2bb1b",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "issue7835",
"file": "pdfs/issue7835.pdf",
"md5": "afb3206a83ee3fd19f3dea0480f942ec",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "issue5972",
"file": "pdfs/issue5972.pdf",
"md5": "51f03e1d38410b04c9dda7e75fe8a0a3",
"rounds": 1,
"link": false,
"type": "text"
},
2012-03-02 12:23:36 +09:00
{ "id": "pdfkit_compressed",
"file": "pdfs/pdfkit_compressed.pdf",
"md5": "ffe9c571d0a1572e234253e6c7cdee6c",
"rounds": 1,
"type": "eq"
},
{ "id": "issue8117",
"file": "pdfs/issue8117.pdf",
"md5": "0c805ae480dd523148a16fe7ed0fc867",
"rounds": 1,
"link": true,
"type": "eq"
},
{ "id": "issue7855",
"file": "pdfs/issue7855.pdf",
"md5": "290d4d5da041ffbcb1ea5d3b0ed8ee91",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "issue6068",
"file": "pdfs/issue6068.pdf",
"md5": "bbcedb94776b40352729c16940a5b2bd",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "issue6889",
"file": "pdfs/issue6889.pdf",
"md5": "397fa92da1a8bfa83dc8c20287854d15",
"rounds": 1,
"link": false,
"type": "eq"
},
2012-03-18 07:35:04 +09:00
{ "id": "tamreview",
"file": "pdfs/TAMReview.pdf",
"md5": "8039aba56790d3597d2bc8c794a51301",
"rounds": 1,
"lastPage": 5,
2012-03-18 07:35:04 +09:00
"type": "eq"
},
{ "id": "text_clip_cff_cid",
"file": "pdfs/text_clip_cff_cid.pdf",
"md5": "92d4920586f177cc0e83326e5b5d2ee1",
"rounds": 1,
"type": "eq"
},
{ "id": "issue4244",
"file": "pdfs/issue4244.pdf",
"md5": "26845274a32a537182ced1fd693a38b2",
"rounds": 1,
"link": true,
"type": "eq"
},
{ "id": "issue14462",
"file": "pdfs/issue14462_reduced.pdf",
"md5": "afe38169322f8e124eaeae00f94ea596",
"rounds": 1,
"type": "eq"
},
{ "id": "preistabelle",
"file": "pdfs/preistabelle.pdf",
"md5": "d2f0b2086160d4f3d325c79a5dc1fb4d",
"rounds": 1,
"lastPage": 2,
"link": true,
"type": "eq"
},
{ "id": "issue12750",
"file": "pdfs/issue12750.pdf",
"md5": "47a39ef5d6ae2e4f52887c477cfdfc9e",
"rounds": 1,
"type": "eq",
"print": true,
"annotationStorage": {
"12R": {
"value": "foobar"
}
}
},
{ "id": "preistabelle-text",
"file": "pdfs/preistabelle.pdf",
"md5": "d2f0b2086160d4f3d325c79a5dc1fb4d",
"rounds": 1,
"lastPage": 1,
"link": true,
"type": "text"
},
{ "id": "ichiji",
"file": "pdfs/ichiji.pdf",
"md5": "66b645802d33513cd598886e017392b8",
"rounds": 1,
"link": true,
"type": "eq"
},
2012-03-20 01:09:42 +09:00
{ "id": "issue1350",
"file": "pdfs/issue1350.pdf",
"md5": "92f72a04a4d9d05b2dd433b51f32ab1f",
"rounds": 1,
"type": "eq"
},
{ "id": "bug864847",
"file": "pdfs/bug864847.pdf",
"md5": "2b62cbba5d40a769be8e611eb5b61bfe",
"rounds": 1,
"type": "eq"
},
{ "id": "bug864847-text",
"file": "pdfs/bug864847.pdf",
"md5": "2b62cbba5d40a769be8e611eb5b61bfe",
"rounds": 1,
"lastPage": 1,
"type": "text"
},
2012-02-20 15:12:22 +09:00
{ "id": "issue925",
"file": "pdfs/issue925.pdf",
"md5": "f58fe943090aff89dcc8e771bc0db4c2",
"rounds": 1,
"type": "eq"
},
{ "id": "issue9291",
"file": "pdfs/issue9291.pdf",
"md5": "8c3f4edff54c1ca0b67700a05ea0ccee",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "issue5751",
"file": "pdfs/issue5751.pdf",
"md5": "9334a52dc85747f1e3422767e0cd3ee9",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "issue7426",
"file": "pdfs/issue7426.pdf",
"md5": "304e6cae18fdc07f66bd621fbe16b6cb",
"link": false,
"rounds": 1,
"type": "eq"
},
{ "id": "issue6782",
"file": "pdfs/issue6782.pdf",
"md5": "b423f709600daa5745cc6d8234f7c608",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "issue12010",
"file": "pdfs/issue12010_reduced.pdf",
"md5": "8894ec63069dcf92c9f56baec05c0425",
"rounds": 1,
"type": "eq"
},
Ensure that all necessary /Font resources are included when saving a `WidgetAnnotation`-instance (issue 12294) This patch contains a possible approach for fixing issue 12294, which compared to other PRs is purposely limited to the affected `WidgetAnnotation` code. As mentioned elsewhere, considering that we're (at least for now) trying to fix *one specific* case, I think that we should avoid modifying the `Dict` primitive[1] and/or avoid a solution that (indirectly) modifies an existing `Dict`-instance[2]. This patch simply fixes the issue at hand, since that seems easiest for now, and I'd suggest that we worry about a more general approach if/when that actually becomes necessary. Hence the solution implemented here, for `WidgetAnnotation`, is to simply use a combination of the local *and* AcroForm /DR resources during OperatorList-parsing to ensure that things work correctly regardless of where a particular /Font resource is found. For saving of form-data, on the other hand, we want to avoid increasing the file-size unnecessarily and need to be smarter than just merging all of the available resources. To achive this, a new `WidgetAnnotation._getSaveFieldResources` method will when necessary produce a combined resources `Dict` with only the minimum amount of data from the AcroForm /DR resources included. --- [1] You want to avoid anything that could cause the general `Dict` implementation to become slower, or more complex, just for handling an edge-case in my opinion. [2] If an existing `Dict`-instance is modified unexpectedly, that could very easily lead to problems elsewhere since e.g. `Dict`-instances created during parsing are not expected to be changed.
2020-09-10 17:21:34 +09:00
{ "id": "issue12294-print",
"file": "pdfs/issue12294.pdf",
"md5": "a0ac5e03be38b5fb7a7a615e30024b28",
"rounds": 1,
"lastPage": 1,
"link": true,
"type": "eq",
"print": true,
"annotationStorage": {
"2795R": {
"value": "氏 名 又 は 名 称 Full name"
}
Ensure that all necessary /Font resources are included when saving a `WidgetAnnotation`-instance (issue 12294) This patch contains a possible approach for fixing issue 12294, which compared to other PRs is purposely limited to the affected `WidgetAnnotation` code. As mentioned elsewhere, considering that we're (at least for now) trying to fix *one specific* case, I think that we should avoid modifying the `Dict` primitive[1] and/or avoid a solution that (indirectly) modifies an existing `Dict`-instance[2]. This patch simply fixes the issue at hand, since that seems easiest for now, and I'd suggest that we worry about a more general approach if/when that actually becomes necessary. Hence the solution implemented here, for `WidgetAnnotation`, is to simply use a combination of the local *and* AcroForm /DR resources during OperatorList-parsing to ensure that things work correctly regardless of where a particular /Font resource is found. For saving of form-data, on the other hand, we want to avoid increasing the file-size unnecessarily and need to be smarter than just merging all of the available resources. To achive this, a new `WidgetAnnotation._getSaveFieldResources` method will when necessary produce a combined resources `Dict` with only the minimum amount of data from the AcroForm /DR resources included. --- [1] You want to avoid anything that could cause the general `Dict` implementation to become slower, or more complex, just for handling an edge-case in my opinion. [2] If an existing `Dict`-instance is modified unexpectedly, that could very easily lead to problems elsewhere since e.g. `Dict`-instances created during parsing are not expected to be changed.
2020-09-10 17:21:34 +09:00
}
},
{ "id": "issue7598",
"file": "pdfs/issue7598.pdf",
"md5": "c5bc5a779bfcb4b234f853231b56cf60",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "issue7439",
"file": "pdfs/issue7439.pdf",
"md5": "56682657990a894c66db26560d3039d7",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "bug867484",
"file": "pdfs/bug867484.pdf",
"md5": "347af7b0ef7279b1a7f43b03bfda4548",
"rounds": 1,
"lastPage": 1,
"link": true,
"type": "load"
},
2013-10-31 23:10:08 +09:00
{ "id": "bug860632",
"file": "pdfs/bug860632.pdf",
"md5": "b3cabf9249c8fee76f61f6b3b7fdd5fd",
"rounds": 1,
"lastPage": 1,
"type": "eq"
},
{ "id": "IdentityToUnicodeMap_charCodeOf",
"file": "pdfs/IdentityToUnicodeMap_charCodeOf.pdf",
"md5": "da030686418c5e37d889127a05dafb83",
"rounds": 1,
"link": false,
"type": "text"
},
{ "id": "issue8372-text",
"file": "pdfs/issue8372.pdf",
"md5": "b02fb07364dd00ad5044bd259860da97",
"rounds": 1,
"link": false,
"type": "text"
},
Map all glyphs to the private use area and duplicate the first glyph. There have been lots of problems with trying to map glyphs to their unicode values. It's more reliable to just use the private use areas so the browser's font renderer doesn't mess with the glyphs. Using the private use area for all glyphs did highlight other issues that this patch also had to fix: * small private use area - Previously, only the BMP private use area was used which can't map many glyphs. Now, the (much bigger) PUP 16 area can also be used. * glyph zero not shown - Browsers will not use the glyph from a font if it is glyph id = 0. This issue was less prevalent when we mapped to unicode values since the fallback font would be used. However, when using the private use area, the glyph would not be drawn at all. This is illustrated in one of the current test cases (issue #8234) where there's an "ä" glyph at position zero. The PDF looked like it rendered correctly, but it was actually not using the glyph from the font. To properly show the first glyph it is always duplicated and appended to the glyphs and the maps are adjusted. * supplementary characters - The private use area PUP 16 is 4 bytes, so String.fromCodePoint must be used where we previously used String.fromCharCode. This is actually an issue that should have been fixed regardless of this patch. * charset - Freetype fails to load fonts when the charset size doesn't match number of glyphs in the font. We now write out a fake charset with the correct length. This also brought up the issue that glyphs with seac/endchar should only ever write a standard charset, but we now write a custom one. To get around this the seac analysis is permanently enabled so those glyphs are instead always drawn as two glyphs.
2018-01-05 07:43:07 +09:00
{ "id": "issue9278",
"file": "pdfs/issue9278.pdf",
"md5": "9819c3a5715c1a46ea5a6740f9ead3da",
"rounds": 1,
"type": "eq"
},
{ "id": "bug894572",
"file": "pdfs/bug894572.pdf",
"md5": "e54a6b0451939f685ed37e3d46e16158",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "bug1108301",
"file": "pdfs/bug1108301.pdf",
"md5": "cc94cc7e5f5e281dfa7e21020dd90cc7",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "bug1020858",
"file": "pdfs/bug1020858.pdf",
"md5": "cde53bcf75df14ff59c8a5a96fe437b9",
"rounds": 1,
"link": false,
"type": "load"
},
{ "id": "bug1157493",
"file": "pdfs/bug1157493.pdf",
"md5": "df96eddacf186c28a91e699800180c4f",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "issue10665",
"file": "pdfs/issue10665_reduced.pdf",
"md5": "4c8938c808153f6b3840e8a5eb68b804",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "issue12533",
"file": "pdfs/issue12533.pdf",
"md5": "9824904320f884eee20d4e4573008e6f",
"rounds": 1,
"link": true,
"firstPage": 17,
"lastPage": 18,
"type": "eq"
},
{ "id": "issue1466",
"file": "pdfs/issue1466.pdf",
"md5": "8a8877432e5bb10cfd50d60488d947bb",
"rounds": 1,
"link": true,
"type": "eq"
},
{ "id": "bug1064894",
"file": "pdfs/bug1064894.pdf",
"md5": "22971b6a24912bca9c773379c10ef18a",
"rounds": 1,
"link": true,
"firstPage": 1,
"lastPage": 1,
"type": "eq"
},
2014-10-09 04:11:41 +09:00
{ "id": "bug1065245",
"file": "pdfs/bug1065245.pdf",
"md5": "844b3af0a1d338a2e1bbe742f474bbb7",
"rounds": 1,
"link": false,
"type": "eq",
"about": "Inline JPEG images."
},
2017-03-16 00:36:28 +09:00
{ "id": "issue7828",
"file": "pdfs/issue7828.pdf",
"md5": "462f96c877f5761fc3176156e3526184",
"rounds": 1,
"link": true,
"type": "eq"
},
{ "id": "issue13193",
"file": "pdfs/issue13193.pdf",
"md5": "38cf058f58b7dc5dc54e1602580936a7",
"rounds": 1,
"type": "eq"
},
{ "id": "issue13851",
"file": "pdfs/issue13851.pdf",
"md5": "d933d397c4efc80faba856bf8deafc1a",
"rounds": 1,
"link": true,
"type": "eq"
},
{ "id": "issue13971",
"file": "pdfs/issue13971.pdf",
"md5": "50fbf6b9f26ea0e4427f33bae62a4d77",
"rounds": 1,
"link": true,
"type": "eq"
},
2012-08-12 10:10:31 +09:00
{ "id": "issue1655",
"file": "pdfs/issue1655r.pdf",
"md5": "569f48449ba57c15c4f9ade151a651c5",
"rounds": 1,
"link": false,
"type": "eq"
2012-08-12 10:10:31 +09:00
},
2012-10-13 12:33:56 +09:00
{ "id": "issue1687",
"file": "pdfs/issue1687.pdf",
"md5": "ea79d83821d1dd0663414b037080add5",
"rounds": 1,
"link": true,
"type": "eq"
},
2012-02-02 07:48:44 +09:00
{ "id": "issue1133",
"file": "pdfs/issue1133.pdf",
"md5": "d1b61580cb100e3df93d33703af1773a",
"rounds": 1,
"link": true,
"type": "eq"
},
{ "id": "issue1658",
"file": "pdfs/issue1658.pdf",
"md5": "b71a0f641e83ad427b8bcfc180899a05",
"rounds": 1,
"firstPage": 10,
"lastPage": 10,
"link": true,
"type": "eq"
},
{ "id": "issue1049",
"file": "pdfs/issue1049.pdf",
"md5": "15473fffcdde9fb8f3756a4cf1aab347",
"rounds": 1,
"link": true,
"type": "eq"
2012-02-15 04:55:39 +09:00
},
{ "id": "issue6117",
"file": "pdfs/issue6117.pdf",
"md5": "691f5f8268e07f3831e8293258a68da7",
"rounds": 1,
"link": true,
"firstPage": 6,
"lastPage": 6,
"type": "eq"
},
{ "id": "issue6238",
"file": "pdfs/issue6238.pdf",
"md5": "6d7731ee22fbbdf746c8da01b8922d50",
"rounds": 1,
"link": true,
"firstPage": 3,
"lastPage": 3,
"type": "eq"
},
2013-03-14 04:06:09 +09:00
{ "id": "cid_cff",
"file": "pdfs/cid_cff.pdf",
"md5": "a19a18eaa626262cc45e0760004d6de9",
"rounds": 1,
"type": "eq"
},
2012-02-15 04:55:39 +09:00
{ "id": "issue1155",
"file": "pdfs/issue1155r.pdf",
"md5": "8d772a3c6109bda860b8d80d42d4c08c",
2012-02-15 04:55:39 +09:00
"rounds": 1,
"link": false,
2012-02-15 04:55:39 +09:00
"type": "eq"
},
2013-03-26 18:41:56 +09:00
{ "id": "link-annotation-border",
"file": "pdfs/link-annotation-border.pdf",
"md5": "a0550889b010df9fabe4e2107662c8c4",
2013-03-26 18:41:56 +09:00
"rounds": 1,
"lastPage": 1,
"link": true,
"type": "eq",
"annotations": true
2013-03-26 18:41:56 +09:00
},
{ "id": "pr7352",
"file": "pdfs/pr7352.pdf",
"md5": "336abca4b313cb215b0569883f1f683d",
"link": false,
"rounds": 1,
"type": "eq",
"annotations": true
},
{ "id": "bug1743245",
"file": "pdfs/bug1743245.pdf",
"md5": "01eadf118ec05fe02e91db63536d50f6",
"rounds": 1,
"type": "eq"
},
2012-03-11 12:12:33 +09:00
{ "id": "issue1002",
"file": "pdfs/issue1002.pdf",
"md5": "af62d6cd95079322d4af18edd960d15c",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "issue10339",
"file": "pdfs/issue10339_reduced.pdf",
"md5": "e34ef74f188080f8194c7d8e8b68c562",
"rounds": 1,
"type": "eq"
},
{ "id": "issue1721",
"file": "pdfs/issue1721.pdf",
"md5": "b47177f9e5197a76ec498733ecab60e6",
"rounds": 1,
"lastPage": 2,
"link": true,
"type": "eq"
},
2018-01-24 00:04:07 +09:00
{ "id": "jbig2_huffman_1",
"file": "pdfs/jbig2_huffman_1.pdf",
"md5": "93ccd85c5686bea27d3e6c3b41921b21",
"lastPage": 1,
"rounds": 1,
"link": true,
"type": "eq"
},
{ "id": "jbig2_huffman_2",
"file": "pdfs/jbig2_huffman_2.pdf",
"md5": "f019e2722bd64684e2093a0933e390f4",
"firstPage": 7,
"lastPage": 7,
"rounds": 1,
"link": true,
"type": "eq"
},
{ "id": "issue9534_reduced",
"file": "pdfs/issue9534_reduced.pdf",
"md5": "f9a47805555de5bc0f9f5f5188df6bad",
"rounds": 1,
"type": "eq"
},
{ "id": "issue1233",
"file": "pdfs/issue1233.pdf",
"md5": "2d3565b0a286e29955796c37c66326c1",
"rounds": 1,
"lastPage": 1,
"link": true,
"type": "eq"
},
{ "id": "issue1243",
"file": "pdfs/issue1243.pdf",
"md5": "130c849b83513d5ac5e03c6421fc7489",
"rounds": 1,
"lastPage": 2,
"link": true,
"type": "eq"
},
{ "id": "issue5039",
"file": "pdfs/issue5039.pdf",
"md5": "5c131f458ee6b65cc096ccaf0474ee3a",
"link": false,
"rounds": 1,
"type": "eq"
},
{ "id": "issue5070",
"file": "pdfs/issue5070.pdf",
"md5": "ec2ca0b4954c8390a5b3b0ffd79a8e92",
"link": false,
"rounds": 1,
"type": "eq"
},
{ "id": "issue1257",
"file": "pdfs/issue1257.pdf",
"md5": "9111533826bc21ed774e8e01603a2f54",
"rounds": 1,
"lastPage": 2,
"link": true,
"type": "eq"
2012-03-18 13:13:54 +09:00
},
{ "id": "issue1309",
"file": "pdfs/issue1309.pdf",
"md5": "e835fb7f3dab3073ad37d0bd3c6399fa",
"rounds": 1,
"link": true,
"type": "eq"
},
{
"id": "issue6006",
"file": "pdfs/issue6006.pdf",
"md5": "65558dcdd2f20d4372458419c10bfa72",
"rounds": 1,
"type": "eq"
},
2012-06-22 19:59:53 +09:00
{ "id": "issue1810",
"file": "pdfs/issue1810.pdf",
"md5": "b173a9dfb7bf00e1a298c6e8cb95c03e",
"rounds": 1,
"lastPage": 3,
2012-06-22 19:59:53 +09:00
"link": true,
"type": "eq"
},
{ "id": "issue1877",
"file": "pdfs/issue1877.pdf",
"md5": "feac01f414f2e6792e4d3174944622f5",
"rounds": 1,
"link": true,
"lastPage": 1,
"type": "eq"
},
{ "id": "issue7308",
"file": "pdfs/issue7308.pdf",
"md5": "ba2e23d3af93ac2c634d77ccbe2e79d5",
"rounds": 1,
"link": true,
"type": "eq"
},
{ "id": "issue12841",
"file": "pdfs/issue12841_reduced.pdf",
"md5": "5c645897c652853ad86b59df5fc6cce0",
"rounds": 1,
"type": "eq"
},
2012-04-24 07:50:02 +09:00
{ "id": "issue1597",
"file": "pdfs/issue1597.pdf",
"md5": "a5ebef467fd6e2fc0aeb56c9eb725ae3",
"rounds": 1,
"link": true,
"type": "eq"
},
2012-07-20 02:58:07 +09:00
{ "id": "issue1419.pdf",
"file": "pdfs/issue1419.pdf",
"md5": "b5b6c6405d7b48418bccf97277957664",
"rounds": 1,
"link": true,
"firstPage": 2,
"lastPage": 2,
2012-07-20 02:58:07 +09:00
"type": "eq"
},
2012-03-18 13:13:54 +09:00
{ "id": "issue1317",
"file": "pdfs/issue1317.pdf",
"md5": "6fb46275b30c48c8985617d4f86199e3",
"rounds": 1,
"link": true,
"type": "eq"
2012-03-30 00:53:51 +09:00
},
{ "id": "issue6364",
"file": "pdfs/issue6364.pdf",
"md5": "b290328531ecdddf6b4c794b4b2fec28",
"rounds": 1,
"link": true,
"firstPage": 1,
"lastPage": 1,
"type": "eq"
},
{ "id": "issue6387-canvas",
"file": "pdfs/issue6387.pdf",
"md5": "08c39ac6d0aab1596e6e59793eaf3ee4",
"rounds": 1,
"type": "eq"
},
{ "id": "issue6387-text",
"file": "pdfs/issue6387.pdf",
"md5": "08c39ac6d0aab1596e6e59793eaf3ee4",
"rounds": 1,
"type": "text",
"about": "Note that the text layer seems to be off to the right."
},
{ "id": "issue10084",
"file": "pdfs/issue10084_reduced.pdf",
"md5": "ae37cf36f2e319688c608e4086836824",
"rounds": 1,
"type": "eq"
},
{ "id": "issue14203",
"file": "pdfs/issue14203.pdf",
"md5": "26c1c1e7341bc23fb28d805fa516dbbe",
"link": true,
"rounds": 1,
"firstPage": 11,
"lastPage": 11,
"type": "eq"
},
{ "id": "issue11045",
"file": "pdfs/issue11045.pdf",
"md5": "101d4cb649cc006e0f2b14923e8d97d6",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "issue11088",
"file": "pdfs/issue11088.pdf",
"md5": "c46e7d81197fae61a52e00efb30dd7ce",
"rounds": 1,
"link": true,
"lastPage": 1,
"type": "eq"
},
{ "id": "issue11287",
"file": "pdfs/issue11287.pdf",
"md5": "d7d6a7c124fad7b00f79112b71ee09d6",
"rounds": 1,
"link": true,
"lastPage": 1,
"type": "eq"
},
{ "id": "issue12579",
"file": "pdfs/issue12579.pdf",
"md5": "a56f6c7b6ebe0008bd6215b9a4dc3cca",
"link": true,
"firstPage": 3,
"lastPage": 3,
"rounds": 1,
"type": "eq"
},
{ "id": "issue11330",
"file": "pdfs/issue11330.pdf",
"md5": "03a8a53d4b0dc825e08554f5c0178308",
"rounds": 1,
"link": true,
"lastPage": 1,
"type": "eq"
},
{ "id": "issue11578",
"file": "pdfs/issue11578_reduced.pdf",
"md5": "6cefb4bdfae2fa25e5585374735e321f",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "issue11678",
"file": "pdfs/issue11678.pdf",
"md5": "e2efadeb91932f4c21e4fc682cce7de9",
"rounds": 1,
"link": true,
"firstPage": 2,
"lastPage": 2,
"type": "eq"
},
2015-08-19 05:33:09 +09:00
{ "id": "issue4890",
"file": "pdfs/issue4890.pdf",
"md5": "1666feb4cd26318c2bdbea6a175dce87",
"rounds": 1,
"link": true,
"firstPage": 1,
"lastPage": 1,
"type": "eq"
},
{ "id": "bug898853.pdf",
"file": "pdfs/bug898853.pdf",
"md5": "37c37702bf98d33f9f74e2380c4d1a3f",
"rounds": 1,
"type": "eq",
"about": "Has a multi-byte char codes."
},
{ "id": "issue4684-text",
"file": "pdfs/issue4684.pdf",
"md5": "af5056fcdfb08bd7adc1710d36e4b5b5",
"link": false,
"rounds": 1,
"type": "text",
"about": "Invisible (and broken) TrueType font used for text-selection."
},
{ "id": "issue11124",
"file": "pdfs/issue11124.pdf",
"md5": "9bde831515dc6b8bb2c7c00c8189aca9",
"rounds": 1,
"type": "eq"
},
{ "id": "issue11768",
"file": "pdfs/issue11768_reduced.pdf",
"md5": "0cafde97d78bb6883531a325a996a5ef",
"rounds": 1,
"type": "eq"
},
{ "id": "issue1912",
"file": "pdfs/issue1912.pdf",
"md5": "15305b7c2cba971e7423de3f6ad38fef",
"rounds": 1,
"link": true,
"type": "eq"
},
2012-03-30 00:53:51 +09:00
{ "id": "gradientfill",
"file": "pdfs/gradientfill.pdf",
"md5": "cbc1988e4803f647fa83467a85f0e231",
"rounds": 1,
"type": "eq"
2012-06-14 02:29:02 +09:00
},
{ "id": "issue1796",
"file": "pdfs/issue1796.pdf",
"md5": "9b9b60dc2a4cc3ea05932785d71304fe",
"rounds": 1,
"lastPage": 2,
2012-06-14 02:29:02 +09:00
"link": true,
"type": "eq"
},
2014-04-17 21:52:33 +09:00
{ "id": "issue4630",
"file": "pdfs/issue4630.pdf",
"md5": "46690a12b953c9ad660f3f6453f8785c",
"rounds": 1,
"type": "eq"
},
2015-02-14 19:59:10 +09:00
{ "id": "issue5734-text",
"file": "pdfs/issue5734.pdf",
"md5": "2cf88f1786b039ba080623085c87beb9",
"link": false,
"rounds": 1,
"type": "text"
},
{ "id": "issue5896-text",
"file": "pdfs/issue5896.pdf",
"md5": "08f69084d72dabc5dfdcf5c1ff2a719f",
"link": false,
"rounds": 1,
"type": "text"
},
{ "id": "issue15716",
"file": "pdfs/issue15716.pdf",
"md5": "4d89aabeb97fcb181662406f092bbeb0",
"rounds": 1,
"type": "eq"
},
{ "id": "issue15716-no-red-oc",
"file": "pdfs/issue15716.pdf",
"md5": "4d89aabeb97fcb181662406f092bbeb0",
"rounds": 1,
"type": "eq",
"optionalContent": {
"1001R": false
}
},
2012-08-12 01:57:42 +09:00
{ "id": "issue845",
"file": "pdfs/issue845r.pdf",
"md5": "b5f8fe4005cf3fb685fdb4a4c44ee4a2",
"rounds": 1,
"link": false,
"type": "eq"
2012-08-12 01:57:42 +09:00
},
2013-08-24 02:57:11 +09:00
{ "id": "helloworld-bad",
"file": "pdfs/helloworld-bad.pdf",
"md5": "bf5ab1cf7fe3a502c3754f55e6ceeabd",
"rounds": 1,
"type": "eq"
2013-08-24 02:57:11 +09:00
},
{ "id": "issue8047",
"file": "pdfs/issue8047.pdf",
"md5": "83f1b9f7e95caa8e2625390afd7c7276",
"rounds": 1,
"lastPage": 1,
"link": true,
"type": "eq"
},
{ "id": "issue11131_reduced",
"file": "pdfs/issue11131_reduced.pdf",
"md5": "004b7e7d2b133a8dc4fe64aaf3dc9533",
"rounds": 1,
"type": "eq"
},
{ "id": "issue818",
"file": "pdfs/issue818.pdf",
"md5": "dd2f8a5bd65164ad74da2b45a6ca90cc",
"rounds": 1,
"lastPage": 1,
"link": true,
"type": "eq"
2012-08-04 08:11:43 +09:00
},
2013-10-31 00:54:19 +09:00
{ "id": "issue3405",
"file": "pdfs/issue3405r.pdf",
"md5": "12e8c6b3437e659f9138d892d10c7d3d",
"rounds": 1,
"link": false,
"type": "eq"
2013-10-31 00:54:19 +09:00
},
{ "id": "issue16263",
"file": "pdfs/issue16263.pdf",
"md5": "93c3e7884f1f2d072442898127e0a6fd",
"rounds": 1,
"type": "eq"
},
{ "id": "issue2006",
"file": "pdfs/issue2006.pdf",
"md5": "71ec73831ece9b508ad20efa6ff28642",
"rounds": 1,
"lastPage": 1,
"link": true,
"type": "eq"
},
2012-08-04 08:11:43 +09:00
{ "id": "issue1729",
"file": "pdfs/issue1729.pdf",
"md5": "29b0eddc3e1dcb23a44384037032d470",
"rounds": 1,
"lastPage": 1,
2012-08-04 08:11:43 +09:00
"link": true,
"type": "load"
},
{ "id": "issue1985",
"file": "pdfs/issue1985.pdf",
"md5": "2ac7c68e26a8ef797aead15e4875cc6d",
"rounds": 1,
"type": "load"
2012-08-29 09:19:31 +09:00
},
{ "id": "issue7074_reduced",
"file": "pdfs/issue7074_reduced.pdf",
"md5": "46893f8aa33620a05acdc27e3b79469d",
"rounds": 1,
"type": "eq"
},
2015-07-03 06:47:47 +09:00
{ "id": "issue5540",
"file": "pdfs/issue5540.pdf",
"md5": "12b69b19e366232422812ad8b2534f37",
"rounds": 1,
"type": "eq"
},
2012-12-15 05:44:39 +09:00
{ "id": "issue2176",
"file": "pdfs/issue2176.pdf",
"md5": "ca5cbbc7e2b717997f0b24ffa485eac6",
"rounds": 1,
"type": "eq"
},
{ "id": "issue1453",
"file": "pdfs/issue1453.pdf",
"md5": "cee0ee8ea3a0643cbd716d57fd44f628",
"rounds": 1,
"type": "eq"
},
2017-11-29 02:40:22 +09:00
{ "id": "pattern_text_embedded_font",
"file": "pdfs/pattern_text_embedded_font.pdf",
"md5": "763b1b9efaecb2b5aefea71c39233f56",
"rounds": 1,
"type": "eq"
},
{ "id": "issue6113",
"file": "pdfs/issue6113.pdf",
"md5": "365fa2d369c51ee3ff195dae907b6e25",
"rounds": 1,
"link": false,
"type": "eq"
},
{
"id": "tiling-pattern-box",
"file": "pdfs/tiling-pattern-box.pdf",
"md5": "09100872824fc14012bd8f9bf4dbc632",
"rounds": 1,
"link": false,
"type": "eq"
},
{
"id": "tiling-pattern-large-steps",
"file": "pdfs/tiling-pattern-large-steps.pdf",
"md5": "569aac1303c97004aab6a720d9b259b4",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "issue14130",
"file": "pdfs/issue14130.pdf",
"md5": "82e7efb0a10122e793fc64348d93dc4e",
"enableXfa": true,
"rounds": 1,
"type": "eq"
},
{ "id": "issue6151",
"file": "pdfs/issue6151.pdf",
"md5": "926f8c6b25e6f0978759f7947d70e079",
"rounds": 1,
"link": false,
"type": "load"
},
{ "id": "bug1650302_reduced",
"file": "pdfs/bug1650302_reduced.pdf",
"md5": "d918c9ec936486e8b6656e10dd909014",
"rounds": 1,
"type": "eq"
},
{ "id": "issue14048",
"file": "pdfs/issue14048.pdf",
"md5": "770026875a93dc44a187905f4dcd3de2",
"rounds": 1,
"type": "text"
},
2013-03-12 02:23:47 +09:00
{ "id": "blendmode",
"file": "pdfs/blendmode.pdf",
2013-04-03 00:23:25 +09:00
"md5": "5a86e7e9333e93c58abc3f382e1e6ea2",
2013-03-12 02:23:47 +09:00
"rounds": 1,
"type": "eq",
"about": "Every blend mode that PDF supports."
},
{ "id": "transparency_group",
"file": "pdfs/transparency_group.pdf",
"md5": "10391f76434128e5da70cff5fc485ff0",
"rounds": 1,
"type": "eq",
"about": "Rotated transparency group with blend mode."
},
{ "id": "issue6010_1",
"file": "pdfs/issue6010_1.pdf",
"md5": "b58adce5dbb08936ddb0d904f0da8716",
"rounds": 1,
"link": false,
"type": "load",
"password": "abc"
},
{ "id": "issue6010_2",
"file": "pdfs/issue6010_2.pdf",
"md5": "73a8091d0ab2a47af5ca45047f04da99",
"rounds": 1,
"link": false,
"type": "load",
"password": "\u00E6\u00F8\u00E5",
"about": "The password (æøå) is UTF8 encoded."
},
{ "id": "issue14881",
"file": "pdfs/issue14881.pdf",
"md5": "1aa3f2c7929eaf4502fcf6488ff31b5f",
"rounds": 1,
"type": "eq"
},
{ "id": "High-Pressure-Measurement-WP-001287",
"file": "pdfs/High-Pressure-Measurement-WP-001287.pdf",
"md5": "aeba7e47bbe50cbf08bb8bdff78fec8c",
"rounds": 1,
"link": true,
"firstPage": 3,
"lastPage": 3,
"type": "eq"
},
{ "id": "ContentStreamNoCycleType3insideType3",
"file": "pdfs/ContentStreamNoCycleType3insideType3.pdf",
"md5": "fbf258be0fed9756cbc714f4be6626ff",
"rounds": 1,
"type": "eq"
},
{ "id": "ContentStreamCycleType3insideType3",
"file": "pdfs/ContentStreamCycleType3insideType3.pdf",
"md5": "64840fc5dd8ca06afbc86477d9121b59",
"rounds": 1,
"type": "eq"
},
{ "id": "issue3458.pdf",
"file": "pdfs/issue3458.pdf",
"md5": "dab8bd3ad1acfc8dc82a8381a3c8ff94",
"rounds": 1,
"type": "eq",
"about": "Pattern with current transform different than base transform."
},
{ "id": "issue6081",
"file": "pdfs/issue6081.pdf",
"md5": "854326ce9178d10ff4a0ff2aedf67e45",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "issue2462",
"file": "pdfs/issue2462.pdf",
"md5": "d4e3dddfdd35464c71cf0310bff29b42",
"rounds": 1,
"type": "eq"
},
{ "id": "issue1998",
"file": "pdfs/issue1998.pdf",
"md5": "586e0213be2f461360ec26770b5a4e48",
"rounds": 1,
"lastPage": 2,
"link": true,
"type": "eq"
},
2013-01-31 09:20:04 +09:00
{ "id": "issue2627",
"file": "pdfs/issue2627.pdf",
"md5": "1b6b2f19f4e1e1b926afb353b41fe6b2",
"rounds": 1,
"link": true,
"firstPage": 4,
"lastPage": 4,
"type": "load"
},
Fallback to the /ToUnicode map for TrueType fonts with (3, 1) and (1, 0) cmap-tables (issue 13316) In the PDF document some of the glyphs have bogus `differences`-entries[1] that cannot be resolved to valid glyph names, thus causing the glyph mapping to fail. My initial idea was to use a similar approach as in the `PartialEvaluator._simpleFontToUnicode`-method, to extract the charCodes from those entries, however it turned out that that didn't actually help in this case (the mapping was still wrong). To fix this I'm thus proposing that we fallback to the /ToUnicode map when no other useable data exists (e.g. no post-table), since it *hopefully* shouldn't make things any worse than leaving parts of the glyph map empty (which currently happens). --- [1] As can be seem below, some of the entries are completely normal while others are non-standard: ``` Differences (array) 0 = 65 1 = /g5167 2 = /space 3 = /g11927 4 = /g17737 5 = /g11540 6 = /g2180 7 = /K 8 = /P 9 = /two 10 = /zero 11 = /one 12 = /five 13 = /four 14 = /g6932 15 = /g7246 16 = /g1691 17 = /g2343 18 = /g14792 19 = /g3325 20 = /g4280 21 = /g20383 22 = /g18166 23 = /g16988 24 = /g17943 25 = /g19223 26 = /g10830 27 = 97 28 = /g982 29 = /g1226 30 = /g5059 31 = /g2677 32 = /g1042 33 = /g11568 34 = /L 35 = /three 36 = /seven 37 = /g2364 38 = /g12063 39 = /g5356 40 = /g2173 41 = /g17877 42 = /g7273 43 = /g7647 44 = /g7224 45 = /g19327 46 = /g5054 47 = /g2342 48 = /g10136 49 = /g6856 50 = /g13381 51 = /g7257 52 = /g12093 53 = /g2359 ```
2021-09-04 01:10:27 +09:00
{ "id": "issue13316",
"file": "pdfs/issue13316_reduced.pdf",
"md5": "f5821891cee29d8de8b65e1efd6f4ceb",
"rounds": 1,
"type": "eq"
},
{ "id": "issue10519",
"file": "pdfs/issue10519_reduced.pdf",
"md5": "8a2dae43c0ef47b0734bedaaa24f8c09",
"rounds": 1,
"type": "eq"
},
{ "id": "issue11718",
"file": "pdfs/issue11718_reduced.pdf",
"md5": "a0deea064b4171bb8ea9f6e8a523e594",
"rounds": 1,
"type": "eq"
},
{ "id": "issue3061",
"file": "pdfs/issue3061.pdf",
"md5": "696a7cb1b194d095ca3f7861779a606b",
"rounds": 1,
"type": "eq",
"about": "CFF CID font with font matrices in main top dict and sub top dict."
},
{ "id": "issue3566",
"file": "pdfs/issue3566.pdf",
"md5": "e9ab02aa769f4c040a6fa52f00d6e3f0",
"rounds": 1,
"type": "eq",
"lastPage": 1,
"about": "CFF font with multiply-encoded glyph and no pdf encoding dict."
},
{ "id": "bug1151216",
"file": "pdfs/bug1151216.pdf",
"md5": "e66ea6ee0e0cdd5119224eb073055eca",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "bug1175962",
"file": "pdfs/bug1175962.pdf",
"md5": "012a5ea0d2733408ac7f8b88f7352bba",
"rounds": 1,
"link": false,
"type": "eq",
"about": "The same PDF file as in bug1175943."
},
{ "id": "issue11697",
"file": "pdfs/issue11697_reduced.pdf",
"md5": "5b3793a76f92b357bd8ccc02e1c54ba0",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "issue1878",
"file": "pdfs/issue1878.pdf",
"md5": "b4fb0ce7c19368e7104dce3d0d34bcb3",
"rounds": 1,
"link": true,
"type": "load"
},
{ "id": "bigboundingbox",
"file": "pdfs/bigboundingbox.pdf",
"md5": "e5c5e2cb80826d6ebf535413865270cd",
"rounds": 1,
"type": "eq",
"about": "When the bounding box for the xobject is transformed it creates a huge bounding box."
},
2012-12-09 14:04:37 +09:00
{ "id": "issue2386",
"file": "pdfs/issue2386.pdf",
"md5": "7dc787639aa6765214e9ff5494d231ed",
"rounds": 1,
"lastPage": 2,
2012-12-09 14:04:37 +09:00
"link": true,
"type": "eq"
},
{ "id": "issue1936",
"file": "pdfs/issue1936.pdf",
"md5": "7302eb9b6a626308e2a933aaed9e1756",
"rounds": 1,
"lastPage": 1,
"link": true,
"type": "eq"
},
{ "id": "issue9713",
"file": "pdfs/issue9713.pdf",
"md5": "a62bd42d12271105b26a68c8eae5ea5f",
"rounds": 1,
"type": "eq"
},
{ "id": "issue1936-text",
"file": "pdfs/issue1936.pdf",
"md5": "7302eb9b6a626308e2a933aaed9e1756",
"rounds": 1,
"lastPage": 1,
"link": true,
"type": "text"
},
2015-12-30 06:10:38 +09:00
{ "id": "bug951051",
"file": "pdfs/bug951051.pdf",
"md5": "05d325a5112bd3f6022367dab7bc07b9",
"rounds": 1,
"lastPage": 1,
"link": true,
"type": "load"
},
{ "id": "bug1260585",
"file": "pdfs/bug1260585.pdf",
"md5": "9415b1eb00a43c97c15328cd4c8d136a",
"rounds": 1,
"lastPage": 1,
"link": true,
"type": "load"
},
{ "id": "issue7891_bc1",
"file": "pdfs/issue7891_bc1.pdf",
"md5": "86b1796da7dad09f93ce68a8ad495a24",
"rounds": 1,
"type": "eq"
},
2013-07-09 11:03:59 +09:00
{ "id": "issue3062",
"file": "pdfs/issue3062.pdf",
"md5": "206715f1258f0e117df4180d98dd4d68",
"rounds": 1,
"lastPage": 1,
"link": true,
"type": "eq"
},
{ "id": "issue2442",
"file": "pdfs/issue2442.pdf",
"md5": "4656e36c44f44c71a499f02ce6c781d3",
"rounds": 1,
"lastPage": 1,
"link": true,
"type": "eq"
},
{ "id": "issue2074",
"file": "pdfs/issue2074.pdf",
"md5": "5e4ba2241fc35d20e44eb52289a569ab",
"rounds": 1,
"type": "eq"
},
2012-08-29 09:19:31 +09:00
{ "id": "colorkeymask",
"file": "pdfs/colorkeymask.pdf",
"md5": "9f11e815b485f7f0e1fa5c116c636cf9",
"rounds": 1,
"type": "eq"
},
{ "id": "annotation-as",
"file": "pdfs/annotation-as.pdf",
"md5": "e51500c8adc9edcdcc8ebc6a575c90ab",
"rounds": 1,
"link": true,
"type": "eq"
},
2013-07-03 04:27:06 +09:00
{ "id": "bug888437",
"file": "pdfs/bug888437.pdf",
"md5": "93370cd589a08732a05601441c899bcb",
"rounds": 1,
"link": true,
"type": "eq"
},
{ "id": "issue3584",
"file": "pdfs/issue3584.pdf",
"md5": "7a00646865a840eefc76f05c588b60ce",
"rounds": 1,
"type": "eq",
"about": "CFF font that is drawn with clipping."
},
{ "id": "prefilled_f1040",
"file": "pdfs/prefilled_f1040.pdf",
"md5": "2335da66fb7c2c3b84971597f27785e2",
"rounds": 1,
"type": "eq",
"print": true,
"annotationStorage": {
"1605R": {
"value": true
}
}
},
2017-06-19 19:40:48 +09:00
{ "id": "clippath",
"file": "pdfs/clippath.pdf",
"md5": "7ab95c0f106dccd90d6569f241fe8771",
"rounds": 1,
"link": false,
"type": "eq",
"about": "Clipping before a path exists, followed by adding a path and then drawing a rectangle."
},
2013-06-01 06:13:23 +09:00
{ "id": "annotation-tx",
"file": "pdfs/annotation-tx.pdf",
"md5": "56321ea830be9c4f8437ca17ac535b2d",
"rounds": 1,
"type": "eq",
"annotations": true,
"about": "Text widget annotation without appearance streams."
},
{ "id": "annotation-tx-forms",
"file": "pdfs/annotation-tx.pdf",
"md5": "56321ea830be9c4f8437ca17ac535b2d",
"rounds": 1,
"type": "eq",
"forms": true,
"about": "Text widget annotation without appearance streams."
},
{ "id": "annotation-tx2-annotations",
"file": "pdfs/annotation-tx2.pdf",
"md5": "b7a32a751895d394fc07bb6ddb40c420",
"rounds": 1,
"type": "eq",
"annotations": true
},
{ "id": "annotation-tx2-forms",
"file": "pdfs/annotation-tx2.pdf",
"md5": "b7a32a751895d394fc07bb6ddb40c420",
"rounds": 1,
"type": "eq",
"forms": true
},
{ "id": "annotation-tx3-annotations",
"file": "pdfs/annotation-tx3.pdf",
"md5": "3aec45c6465ca4959c25df17c4356a1c",
"rounds": 1,
"type": "eq",
"annotations": true
},
{ "id": "annotation-tx3-forms",
"file": "pdfs/annotation-tx3.pdf",
"md5": "3aec45c6465ca4959c25df17c4356a1c",
"rounds": 1,
"type": "eq",
"forms": true
2013-06-01 06:13:23 +09:00
},
{ "id": "issue15012",
"file": "pdfs/issue15012.pdf",
"md5": "cc5e89507262cb3ec6862f68cb3eefd1",
"rounds": 1,
"type": "eq",
"annotations": true
},
{ "id": "issue15033",
"file": "pdfs/issue15033.pdf",
"md5": "4454c98b88d37d5dad779b60a3f35e6e",
"rounds": 1,
"link": true,
"lastPage": 1,
"type": "eq"
},
{ "id": "issue15044",
"file": "pdfs/issue15044.pdf",
"md5": "a1ef114e432df51f0c6cbe22c66c5c2e",
"rounds": 1,
"link": true,
"lastPage": 1,
"type": "eq"
},
{ "id": "issue15139",
"file": "pdfs/issue15139.pdf",
"md5": "0f2beb6a788d1e47bb9af737f6670493",
"rounds": 1,
"link": true,
"lastPage": 1,
"type": "eq"
},
2013-03-19 21:37:31 +09:00
{ "id": "gesamt",
"file": "pdfs/gesamt.pdf",
2013-12-17 09:37:10 +09:00
"md5": "743aaa6f46ed0a42864f079d632d942e",
2013-03-19 21:37:31 +09:00
"rounds": 1,
"link": true,
"lastPage": 1,
"type": "eq"
},
{ "id": "javauninstall-7",
"file": "pdfs/javauninstall-7r.pdf",
"md5": "c0089082a86826fa0195eeeb73f7f895",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "jst2007-5",
"file": "pdfs/JST2007-5.pdf",
"md5": "9efa6c37fc771b36a60535036d1910bb",
"rounds": 1,
"link": true,
"firstPage": 2,
"lastPage": 2,
"type": "eq"
},
{ "id": "kdchart",
"file": "pdfs/kdchart.pdf",
"md5": "2556a1d197d7cbe1f5edfc5c3557582b",
"rounds": 1,
"link": true,
"firstPage": 1,
"lastPage": 1,
"type": "eq"
},
2013-03-16 19:44:54 +09:00
{ "id": "mao",
"file": "pdfs/mao.pdf",
"md5": "797093d67c4d4d4231ac6e1fb66bf6c3",
"rounds": 1,
"link": true,
"lastPage": 1,
"type": "eq"
},
{ "id": "mao-main_thread_fetch",
"file": "pdfs/mao.pdf",
"md5": "797093d67c4d4d4231ac6e1fb66bf6c3",
"rounds": 1,
"link": true,
"lastPage": 1,
"type": "eq",
"useWorkerFetch": false
},
{ "id": "mao-text",
"file": "pdfs/mao.pdf",
"md5": "797093d67c4d4d4231ac6e1fb66bf6c3",
"rounds": 1,
"link": true,
"lastPage": 1,
"type": "text"
},
{ "id": "noembed-identity",
"file": "pdfs/noembed-identity.pdf",
"md5": "05d3803b6c22451e18cb60d8d8c75c0c",
"rounds": 1,
"type": "eq"
},
{ "id": "bug887152",
"file": "pdfs/bug887152.pdf",
"md5": "783a3e7b1de2cf40a47ffe1f36a41d4f",
"rounds": 1,
"lastPage": 1,
"link": true,
"type": "eq"
},
{ "id": "issue11473",
"file": "pdfs/issue11473.pdf",
"md5": "c530851b0523c81784ab4ea3115a7c67",
"rounds": 1,
"type": "eq"
},
{ "id": "jpx-resetContextProbabilities",
"file": "pdfs/jp2k-resetprob.pdf",
"md5": "fc9fb23e0a08d985b70cfb32fa9e9ca1",
"rounds": 1,
"type": "eq",
"about": "Fixes one part of bug 1731483."
},
{ "id": "bug1140761",
"file": "pdfs/bug1140761.pdf",
"md5": "b74eced7634d4f248dc6265f8225d432",
"rounds": 1,
"link": true,
"firstPage": 1,
"lastPage": 1,
"type": "eq"
},
2014-08-19 07:57:52 +09:00
{ "id": "bug1011159",
"file": "pdfs/bug1011159.pdf",
"md5": "4532e22deb92d4cd2992d0cfe255582a",
"rounds": 1,
"lastPage": 1,
"type": "eq",
"about": "Type3 font with negative HScale and font size"
},
{ "id": "bug1077808",
"file": "pdfs/bug1077808.pdf",
"md5": "4a4bfc27e3fafe2f74e7a4a4cd04b8dc",
"rounds": 1,
"lastPage": 1,
"link": true,
"type": "eq",
"about": "Inline image with ASCII85Decode filter."
},
{ "id": "issue8798",
"file": "pdfs/issue8798r.pdf",
"md5": "3a0e29f013d9edcceb5d852e37738a77",
"link": false,
"rounds": 1,
"type": "eq"
},
{ "id": "issue8823",
"file": "pdfs/issue8823.pdf",
"md5": "ad02d4aa374b315bf1766038d002d57a",
"link": false,
"rounds": 1,
Take the dictionary, and not just the image data, into account when caching inline images (issue 9398) The reason for the bug is that we're only computing a checksum of the image data itself, but completely ignore the inline dictionary. The latter is important, since in practice it's not uncommon for inline images to be identical but use e.g. different ColourSpaces. There's obviously a couple of different ways that we could compute a hash/checksum of the dictionary. Initially I tried using `MurmurHash3_64` to compute a hash of the keys/values in the dictionary. Unfortunately this approach turned out to be *way* too slow in practice, especially for PDF files with a huge number of inline images; in particular issue 2618 would regresses quite badly with this solution. The solution that is instead implemented in this patch, is to compute a checksum of the dictionary contents. While this is a much simpler, not to mention a lot more efficient, solution there's one drawback associated with it: If the contents of inline image dictionaries are ordered differently, they will not be considered equal with this approach which could thus lead to failures to cache repeated inline images. In practice this doesn't seem to be a problem in any of the PDF files I've tested, and generally I'd rather err on the side of *not* caching given that too aggressive caching can easily lead to rendering bugs. One small, but somewhat annoying, complication is that by the time `Parser.makeInlineImage` is called, we no longer know the *exact* stream position where the inline image dictionary starts. Having access to that information is crucial here, and the easiest solution I could come up with is to track this in the current `Lexer` instance.[1] With the patch, we're thus able to fix the referenced issues without incurring large regressions in problematic cases such as issue 2618. Fixes 9398; also improves/fixes the `issue8823` reference test. --- [1] Obviously I'd have preferred if this patch could be limited to `Parser.makeInlineImage`, without the need for this "hack", but I'm not sure what that'd look like here.
2018-01-30 20:26:33 +09:00
"type": "eq",
"about": "Also tests issue9398."
},
{ "id": "issue8613",
"file": "pdfs/issue8613.pdf",
"md5": "bc7ad2db75710aa9916c5769e0c02123",
"rounds": 1,
"link": true,
"type": "eq"
},
{ "id": "issue8614",
"file": "pdfs/issue8614.pdf",
"md5": "7e8b66cf674ac2b79d6b267d0c6f2fa2",
"rounds": 1,
"link": true,
"lastPage": 1,
"type": "eq"
},
{ "id": "issue10880",
"file": "pdfs/issue10880.pdf",
"md5": "244ee5ee3ab88db8d8eb51d4416e2c97",
"rounds": 1,
"link": true,
"firstPage": 7,
"lastPage": 7,
"type": "eq"
},
{ "id": "issue10989",
"file": "pdfs/issue10989.pdf",
"md5": "c16de154d9ae6dbeec0a113911957efe",
"rounds": 1,
"link": true,
"lastPage": 1,
"type": "eq"
},
{ "id": "issue15492",
"file": "pdfs/issue15492.pdf",
"md5": "968d36ef340852a4c0e6fa22ced96798",
"rounds": 1,
"link": true,
"lastPage": 1,
"type": "eq"
},
{ "id": "issue9650",
"file": "pdfs/issue9650.pdf",
"md5": "20d50bda6b1080b6d9088811299c791e",
"rounds": 1,
"link": true,
"lastPage": 1,
"type": "eq"
},
{ "id": "issue9679",
"file": "pdfs/issue9679.pdf",
"md5": "3077d06add3875705aa1021c7b116023",
"rounds": 1,
"link": true,
"type": "eq"
},
{ "id": "issue11052",
"file": "pdfs/issue11052.pdf",
"md5": "67c20e5bec51183c9283baa0cd49593f",
"rounds": 1,
"link": true,
"type": "eq"
},
{ "id": "bug1108753",
"file": "pdfs/bug1108753.pdf",
"md5": "a7aaf92d55b4602afb0ca3d75198b56b",
"rounds": 1,
"link": true,
"firstPage": 1,
"lastPage": 1,
"type": "eq"
},
{ "id": "issue5726",
"file": "pdfs/issue5726.pdf",
"md5": "f52f31ad3da316b599cade875ab049db",
"rounds": 1,
"link": true,
"type": "eq"
},
{ "id": "bug816075",
"file": "pdfs/bug816075.pdf",
"md5": "7ec87c115c1f9ec41234cc7002555e82",
"rounds": 1,
"type": "eq",
"about": "A CIDFontType0 font with a CFF font that isn't actually CID."
},
2021-06-05 03:10:35 +09:00
{ "id": "xfa_imm1295e",
"file": "pdfs/xfa_imm1295e.pdf",
"md5": "b995232fda9bb7fa57856ff7f4cda046",
"rounds": 1,
"link": true,
"enableXfa": true,
"type": "eq"
},
{ "id": "issue14165",
"file": "pdfs/issue14165.pdf",
"md5": "917850af2a387475b34b00010200897d",
"rounds": 1,
"type": "eq"
},
{ "id": "scorecard_reduced",
"file": "pdfs/scorecard_reduced.pdf",
"md5": "aa8ed0827092c963eea64adb718a3806",
"rounds": 1,
"type": "eq"
},
{ "id": "bug921409",
"file": "pdfs/bug921409.pdf",
"md5": "920e88dde0f5436ebe0df0281e1c30ca",
"rounds": 1,
"type": "eq",
"about": "A CIDFontType0 font that actually has a Type1C font file."
},
2013-01-24 01:15:02 +09:00
{ "id": "noembed-identity-2",
"file": "pdfs/noembed-identity-2.pdf",
"md5": "13b7d9ab9579d45c10bc8d499d087f21",
2013-01-24 01:15:02 +09:00
"rounds": 1,
"type": "eq"
},
{ "id": "noembed-jis7",
"file": "pdfs/noembed-jis7.pdf",
"md5": "a0f6cf5a830f23d0c35994a6aaf92b3d",
"rounds": 1,
"type": "eq"
},
{ "id": "noembed-eucjp",
"file": "pdfs/noembed-eucjp.pdf",
"md5": "d270f2d46db99b70235b4d37cbc313ad",
"rounds": 1,
"type": "eq"
},
{ "id": "noembed-sjis",
"file": "pdfs/noembed-sjis.pdf",
"md5": "51f9d150bf4afe498019b3029d451072",
"rounds": 1,
"type": "eq"
},
{ "id": "ohkubo-ss04",
"file": "pdfs/ohkubo-SS04.pdf",
"md5": "b8c334073ff5be74fac1f36130943ea5",
"rounds": 1,
"link": true,
"type": "eq"
},
{ "id": "issue2770",
"file": "pdfs/issue2770.pdf",
"md5": "36070d756d06eaa35c2227efb069fb1b",
"rounds": 1,
"link": true,
"type": "eq",
"about": "Has a 4 bit per component image with mask and decode."
},
2013-06-26 02:33:53 +09:00
{ "id": "issue2984",
"file": "pdfs/issue2984.pdf",
2013-12-17 09:37:10 +09:00
"md5": "a8e81e7b7c6d8b0ec26bbfee9954f110",
2013-06-26 02:33:53 +09:00
"rounds": 1,
"link": true,
"type": "eq",
"lastPage": 1,
"about": "Type3 fonts with lots of switching between them."
},
2013-05-01 07:29:25 +09:00
{ "id": "bug808084",
"file": "pdfs/bug808084.pdf",
"md5": "b1c400de699af29ea3f1983bb26870ab",
"link": true,
"rounds": 1,
"lastPage": 1,
"type": "load"
},
{ "id": "issue3064",
"file": "pdfs/issue3064.pdf",
"md5": "0307415b7d69b13acaf8bd4285d9544b",
"rounds": 1,
"link": true,
"type": "eq",
"about": "True type font with encoding dict with no base encoding but with differences."
},
{ "id": "issue10402",
"file": "pdfs/issue10402.pdf",
"md5": "7936bd34d7c0aebd0a864b5aa98aa1b4",
"rounds": 1,
"type": "eq"
},
{ "id": "issue3064-text",
"file": "pdfs/issue3064.pdf",
"md5": "0307415b7d69b13acaf8bd4285d9544b",
"rounds": 1,
"link": true,
"lastPage": 1,
"type": "text"
},
{ "id": "issue5421",
"file": "pdfs/issue5421.pdf",
"md5": "273f6813758a2349090003c7c8a0d85e",
"link": false,
"rounds": 1,
"type": "eq",
"about": "Invisible Type3 font used for text selection and searching."
},
{ "id": "issue5421-text",
"file": "pdfs/issue5421.pdf",
"md5": "273f6813758a2349090003c7c8a0d85e",
"link": false,
"rounds": 1,
"type": "text"
},
2015-09-05 19:29:16 +09:00
{ "id": "pr4922",
"file": "pdfs/pr4922.pdf",
"md5": "178a55510931bc6ecd2f0f848a8fcacc",
"link": false,
"rounds": 1,
"type": "eq",
"about": "Type3 font with a missing /CharProcs resource."
},
{ "id": "issue5701",
"file": "pdfs/issue5701.pdf",
"md5": "7ec476aee12e8bd6be79140223d329c1",
"rounds": 1,
"link": false,
"type": "eq"
},
2014-09-09 22:29:31 +09:00
{ "id": "issue5280",
"file": "pdfs/issue5280.pdf",
"md5": "0ea1230e2964e74cb6db063a89b78803",
"rounds": 1,
"link": false,
"type": "eq",
"about": "DecodeParams can be an indirect object"
},
{ "id": "bug878194",
"file": "pdfs/bug878194.pdf",
"md5": "c616b21fd2a1a65acc2de0f41e59a8b5",
"link": "true",
"rounds": 1,
"firstPage": 4,
"lastPage": 4,
2014-10-23 21:19:05 +09:00
"type": "eq"
},
2013-03-02 11:02:35 +09:00
{ "id": "p020121130574743273239",
"file": "pdfs/P020121130574743273239.pdf",
"md5": "271b65885d42d174cbc597ca89becb1a",
"rounds": 1,
"link": true,
"firstPage": 1,
"lastPage": 1,
"type": "eq"
},
{ "id": "sfaa_japanese",
"file": "pdfs/SFAA_Japanese.pdf",
"md5": "b961bbc0d05bdd6d91041bca60ec8e8b",
"rounds": 1,
"link": true,
"firstPage": 1,
"lastPage": 1,
"type": "eq"
},
{ "id": "issue11656",
"file": "pdfs/issue11656.pdf",
"md5": "82d5d4f5978a4974707deb1ea98e62f2",
"rounds": 1,
"type": "text"
},
2013-02-08 21:29:22 +09:00
{ "id": "vertical",
"file": "pdfs/vertical.pdf",
"md5": "8a74d33504701edcefeef2afd022765e",
"rounds": 1,
"type": "eq"
},
Map all glyphs to the private use area and duplicate the first glyph. There have been lots of problems with trying to map glyphs to their unicode values. It's more reliable to just use the private use areas so the browser's font renderer doesn't mess with the glyphs. Using the private use area for all glyphs did highlight other issues that this patch also had to fix: * small private use area - Previously, only the BMP private use area was used which can't map many glyphs. Now, the (much bigger) PUP 16 area can also be used. * glyph zero not shown - Browsers will not use the glyph from a font if it is glyph id = 0. This issue was less prevalent when we mapped to unicode values since the fallback font would be used. However, when using the private use area, the glyph would not be drawn at all. This is illustrated in one of the current test cases (issue #8234) where there's an "ä" glyph at position zero. The PDF looked like it rendered correctly, but it was actually not using the glyph from the font. To properly show the first glyph it is always duplicated and appended to the glyphs and the maps are adjusted. * supplementary characters - The private use area PUP 16 is 4 bytes, so String.fromCodePoint must be used where we previously used String.fromCharCode. This is actually an issue that should have been fixed regardless of this patch. * charset - Freetype fails to load fonts when the charset size doesn't match number of glyphs in the font. We now write out a fake charset with the correct length. This also brought up the issue that glyphs with seac/endchar should only ever write a standard charset, but we now write a custom one. To get around this the seac analysis is permanently enabled so those glyphs are instead always drawn as two glyphs.
2018-01-05 07:43:07 +09:00
{ "id": "bug1425312",
"file": "pdfs/bug1425312.pdf",
"md5": "5b1e7d3e4ba7792fab2b69d1836df5a9",
"link": true,
"rounds": 1,
"firstPage": 2,
"lastPage": 2,
"type": "eq"
},
2013-11-03 07:07:13 +09:00
{ "id": "issue3438",
"file": "pdfs/issue3438.pdf",
"md5": "5aa3340b0920b65a377f697587668f89",
"rounds": 1,
"type": "eq"
},
2014-10-16 05:56:29 +09:00
{ "id": "bug1072164",
"file": "pdfs/bug1072164.pdf",
"md5": "cfee3c51e8464aa44218f4eaf27e084b",
"rounds": 1,
"link": true,
"type": "eq",
"about": "CMYK jpeg with mask"
},
2013-06-26 06:22:03 +09:00
{ "id": "bug886717",
"file": "pdfs/bug886717.pdf",
"md5": "8ba614192797a1324765610231a1bc9d",
"rounds": 1,
"type": "load",
"about": "Annotation that has no resources."
},
2013-05-17 01:39:39 +09:00
{ "id": "issue3263",
"file": "pdfs/issue3263r.pdf",
"md5": "0ef82d7a6998c3919cf5595dd47b31a6",
2013-05-17 01:39:39 +09:00
"rounds": 1,
"link": false,
2013-05-17 01:39:39 +09:00
"type": "eq"
},
{ "id": "issue2761",
"file": "pdfs/issue2761.pdf",
"md5": "35df0b8cff4afec0c08f08c6a5bc9857",
"rounds": 1,
"type": "eq",
"about": "Image with indexed colorspace that has a base lab colorspace."
},
2013-03-10 11:21:44 +09:00
{ "id": "20130226130259",
"file": "pdfs/20130226130259.pdf",
"md5": "c33e90a1b369c508573023d2434b950f",
"rounds": 1,
"link": true,
"firstPage": 1,
"lastPage": 1,
"type": "eq"
},
{ "id": "issue2099-1",
"file": "pdfs/issue2099-1.pdf",
"md5": "c7eca682d70a976dfc4b7e64d3e9f1ce",
"rounds": 1,
"type": "eq"
2013-02-28 09:56:12 +09:00
},
2013-05-17 01:21:47 +09:00
{ "id": "issue3207",
"file": "pdfs/issue3207r.pdf",
"md5": "617bcf475c109365a113cf9fb6711b0a",
"link": false,
"rounds": 1,
"type": "eq"
2013-05-17 01:21:47 +09:00
},
2014-06-14 08:22:22 +09:00
{ "id": "issue3591",
"file": "pdfs/issue3591.pdf",
"md5": "f76b3e9d1a44621b73063cf10556c6ff",
"link": true,
"firstPage": 1,
"lastPage": 1,
"rounds": 1,
"type": "eq",
"about": "JPX with 0xFF55 marker"
},
{ "id": "bug865858",
"file": "pdfs/bug865858.pdf",
"md5": "7a81bd987dc1d95e9a0be46b7c3f2e18",
"link": true,
"rounds": 1,
"type": "eq",
"about": "JPX packets"
},
{ "id": "issue13916",
"file": "pdfs/issue13916.pdf",
"md5": "5cfaff104b17f325610936875363541f",
"rounds": 1,
"type": "eq"
},
{ "id": "bug766138",
"file": "pdfs/bug766138.pdf",
"md5": "b171f5cf8d9834348112fba60ee54f8c",
"link": true,
"rounds": 1,
"type": "eq"
},
2013-07-12 03:33:29 +09:00
{ "id": "bug889327",
"file": "pdfs/bug889327.pdf",
"md5": "b45cd63419241c40731f98d0e1dac082",
"link": true,
"lastPage": 1,
"rounds": 1,
"type": "eq"
},
{ "id": "bug1669099",
"file": "pdfs/bug1669099.pdf",
"md5": "34421549d58e2b6eeddc674759381f7d",
"rounds": 1,
"type": "eq",
"print": true,
"annotationStorage": {
"29R": {
"value": true
},
"33R": {
"value": true
},
"37R": {
"value": true
},
"65R": {
"value": true
},
"69R": {
"value": true
}
}
},
2013-11-02 07:13:31 +09:00
{ "id": "issue1171.pdf",
"file": "pdfs/issue1171.pdf",
"md5": "2a6188a42a5874c7874b88eebd4acaf0",
"rounds": 1,
"type": "eq"
},
2013-08-11 17:35:56 +09:00
{ "id": "issue3521.pdf",
"file": "pdfs/issue3521.pdf",
"md5": "df95d31443e20a38efa29c3a635a045b",
"rounds": 1,
"type": "eq",
"about": "Support for CMap GBKp-EUC-H"
},
{ "id": "issue13325_reduced",
"file": "pdfs/issue13325_reduced.pdf",
"md5": "a9311230d2e3388070711be8748a1aa0",
"rounds": 1,
"type": "eq"
},
{ "id": "issue13931-default",
"file": "pdfs/issue13931.pdf",
"md5": "799d5025787115d22863ae23a3042491",
"rounds": 1,
"type": "eq"
},
{ "id": "issue13931-hidden",
"file": "pdfs/issue13931.pdf",
"md5": "799d5025787115d22863ae23a3042491",
"rounds": 1,
"type": "eq",
"optionalContent": {
"7R": false
}
},
2013-02-28 09:56:12 +09:00
{ "id": "issue2829",
"file": "pdfs/issue2829.pdf",
"md5": "f32b28cf8792f6ccc470446bfbb38584",
"link": true,
"rounds": 1,
"type": "eq"
},
{ "id": "js-buttons",
"file": "pdfs/js-buttons.pdf",
"md5": "26f552398b77f8e85b2a8a166ca2ba6a",
"rounds": 1,
"type": "eq"
},
2013-03-18 22:06:59 +09:00
{ "id": "issue2956",
"file": "pdfs/issue2956.pdf",
"md5": "d8f68cbbb4bf54cde9f7f878acb6d7cd",
"rounds": 1,
"type": "eq"
},
{ "id": "issue2799",
"file": "pdfs/issue2799.pdf",
"md5": "3d3224eae54bbae5fc76224a2af49486",
"rounds": 1,
"lastPage": 1,
"link": true,
"type": "eq"
},
{ "id": "issue3025",
"file": "pdfs/issue3025.pdf",
"md5": "8e4e8eacbd7c4c248deeca0ec49d38da",
"rounds": 1,
2013-03-18 22:06:59 +09:00
"type": "eq"
},
{ "id": "issue2177-eq",
"file": "pdfs/issue2177.pdf",
"md5": "48a808278bf31de8414c4e03ecd0900a",
"rounds": 1,
"type": "eq"
2013-06-25 00:21:12 +09:00
},
{ "id": "issue3384",
"file": "pdfs/issue3384.pdf",
"md5": "57e31e83c165f16609528ad5ec5825ba",
"rounds": 1,
"link": true,
"firstPage": 1,
"lastPage": 1,
"type": "eq"
},
{ "id": "calgray",
"file": "pdfs/calgray.pdf",
"md5": "ee784999bfa1ed373f55cdabbb580df1",
"rounds": 1,
"type": "eq"
},
{ "id": "calrgb",
"file": "pdfs/calrgb.pdf",
"md5": "625068e9a7dd80e4f70b24ce97b3ec5c",
"rounds": 1,
"lastPage": 8,
"type": "eq"
},
2013-11-18 22:48:06 +09:00
{ "id": "bug900822",
"file": "pdfs/bug900822.pdf",
"md5": "70e2a3c5922574eeda169c955cf9d084",
"rounds": 1,
"type": "load"
},
{ "id": "issue2853",
"file": "pdfs/issue2853.pdf",
"md5": "9f0ad95ef0b243ee8813c4eca0f7a042",
"rounds": 1,
"link": true,
"firstPage": 1,
"lastPage": 1,
"type": "load"
},
{ "id": "issue4668",
"file": "pdfs/issue4668.pdf",
"md5": "a749d5ca995ad745411406d29156b04e",
"rounds": 1,
"type": "eq"
},
{ "id": "issue3666",
"file": "pdfs/issue3666.pdf",
"md5": "cbcaf533d8a4e825d7f12cb4f137babd",
"rounds": 1,
"link": true,
"firstPage": 1,
"lastPage": 2,
"type": "eq"
},
{ "id": "issue12120_reduced",
"file": "pdfs/issue12120_reduced.pdf",
"md5": "b4570dcee26ac3121ad3322e19ed1a6a",
"rounds": 1,
"type": "eq"
},
{ "id": "issue12392",
"file": "pdfs/issue12392.pdf",
"md5": "76c3a34c6520940c45c66c92f7df2de5",
"rounds": 1,
"link": true,
"lastPage": 1,
"type": "eq"
},
{ "id": "issue12394",
"file": "pdfs/issue12392.pdf",
"md5": "76c3a34c6520940c45c66c92f7df2de5",
"rounds": 1,
"link": true,
"lastPage": 1,
"type": "eq",
"print": "true",
"annotationStorage": {
"35R": {
"value": "收文"
}
}
},
{ "id": "annotation-ink-without-appearance",
"file": "pdfs/annotation-ink-without-appearance.pdf",
"md5": "eb06ad4ac260060082ef86435a2feed5",
"rounds": 1,
"type": "eq"
},
2014-06-03 22:56:16 +09:00
{ "id": "issue4883",
"file": "pdfs/issue4883.pdf",
"md5": "2fac0d9a189ca5fcef8626153d050be8",
"rounds": 1,
"link": true,
"firstPage": 1,
"lastPage": 1,
"type": "eq",
"about": "CMYK JPEG with Decode"
},
2013-11-14 04:45:59 +09:00
{ "id": "bug903856",
"file": "pdfs/bug903856.pdf",
"md5": "286eaa9d06a5809f4f08f2093cef8f3f",
"rounds": 1,
"firstPage": 1,
"lastPage": 1,
"type": "eq"
},
{ "id": "issue3205",
"file": "pdfs/issue3205r.pdf",
"md5": "379cd3f2f0d651215c6df5ac6182d013",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "issue4227",
"file": "pdfs/coons-allflags-withfunction.pdf",
"md5": "c5f79c24bf9eb66698be0e4ecaa1bdf8",
"rounds": 1,
"type": "eq"
},
{ "id": "issue4575",
"file": "pdfs/issue4575.pdf",
"md5": "9ea15032afd330916a4d7475cbdb55f6",
"rounds": 1,
"link": false,
"type": "eq"
},
2015-08-05 06:55:55 +09:00
{ "id": "issue6305-part-1",
"file": "pdfs/tensor-allflags-withfunction.pdf",
"md5": "b47260d50f6a0f26aaccbfa3b7176ae8",
"rounds": 1,
"type": "eq"
},
{ "id": "issue4246",
"file": "pdfs/issue4246.pdf",
"md5": "ed81787b83cc317c9f049643b853bea3",
"rounds": 1,
"type": "eq",
"about": "Image mask in higher resolution than the image itself"
2014-03-19 21:25:46 +09:00
},
Map all glyphs to the private use area and duplicate the first glyph. There have been lots of problems with trying to map glyphs to their unicode values. It's more reliable to just use the private use areas so the browser's font renderer doesn't mess with the glyphs. Using the private use area for all glyphs did highlight other issues that this patch also had to fix: * small private use area - Previously, only the BMP private use area was used which can't map many glyphs. Now, the (much bigger) PUP 16 area can also be used. * glyph zero not shown - Browsers will not use the glyph from a font if it is glyph id = 0. This issue was less prevalent when we mapped to unicode values since the fallback font would be used. However, when using the private use area, the glyph would not be drawn at all. This is illustrated in one of the current test cases (issue #8234) where there's an "ä" glyph at position zero. The PDF looked like it rendered correctly, but it was actually not using the glyph from the font. To properly show the first glyph it is always duplicated and appended to the glyphs and the maps are adjusted. * supplementary characters - The private use area PUP 16 is 4 bytes, so String.fromCodePoint must be used where we previously used String.fromCharCode. This is actually an issue that should have been fixed regardless of this patch. * charset - Freetype fails to load fonts when the charset size doesn't match number of glyphs in the font. We now write out a fake charset with the correct length. This also brought up the issue that glyphs with seac/endchar should only ever write a standard charset, but we now write a custom one. To get around this the seac analysis is permanently enabled so those glyphs are instead always drawn as two glyphs.
2018-01-05 07:43:07 +09:00
{ "id": "PDFJS-9279-reduced",
"file": "pdfs/PDFJS-9279-reduced.pdf",
"md5": "a562a25596e9fe571ac6fb5b9f561974",
"rounds": 1,
"type": "eq"
},
2014-03-19 21:25:46 +09:00
{ "id": "issue4436",
"file": "pdfs/issue4436r.pdf",
"md5": "f5dc60cce342ac8d165069a80d23b92e",
2014-03-19 21:25:46 +09:00
"rounds": 1,
"link": false,
2014-03-19 21:25:46 +09:00
"type": "eq"
},
{ "id": "issue4926",
"file": "pdfs/issue4926.pdf",
"md5": "ed881c8ea2f9bc4be94ecb7f2b2c149b",
"rounds": 1,
"link": true,
"type": "eq"
2014-12-18 06:42:06 +09:00
},
{ "id": "issue16454",
"file": "pdfs/issue16454.pdf",
"md5": "82fe0c54a96667472ce999be7a789199",
"rounds": 1,
"lastPage": 1,
"link": true,
"type": "eq"
},
{ "id": "decodeACSuccessive",
"file": "pdfs/decodeACSuccessive.pdf",
"md5": "7749c032624fe27ab8e8d7d5e9a4a93f",
"rounds": 1,
"link": false,
[api-minor] Decode all JPEG images with the built-in PDF.js decoder in `src/core/jpg.js` Currently some JPEG images are decoded by the built-in PDF.js decoder in `src/core/jpg.js`, while others attempt to use the browser JPEG decoder. This inconsistency seem unfortunate for a number of reasons: - It adds, compared to the other image formats supported in the PDF specification, a fair amount of code/complexity to the image handling in the PDF.js library. - The PDF specification support JPEG images with features, e.g. certain ColorSpaces, that browsers are unable to decode natively. Hence, determining if a JPEG image is possible to decode natively in the browser require a non-trivial amount of parsing. In particular, we're parsing (part of) the raw JPEG data to extract certain marker data and we also need to parse the ColorSpace for the JPEG image. - While some JPEG images may, for all intents and purposes, appear to be natively supported there's still cases where the browser may fail to decode some JPEG images. In order to support those cases, we've had to implement a fallback to the PDF.js JPEG decoder if there's any issues during the native decoding. This also means that it's no longer possible to simply send the JPEG image to the main-thread and continue parsing, but you now need to actually wait for the main-thread to indicate success/failure first. In practice this means that there's a code-path where the worker-thread is forced to wait for the main-thread, while the reverse should *always* be the case. - The native decoding, for anything except the *simplest* of JPEG images, result in increased peak memory usage because there's a handful of short-lived copies of the JPEG data (see PR 11707). Furthermore this also leads to data being *parsed* on the main-thread, rather than the worker-thread, which you usually want to avoid for e.g. performance and UI-reponsiveness reasons. - Not all environments, e.g. Node.js, fully support native JPEG decoding. This has, historically, lead to some issues and support requests. - Different browsers may use different JPEG decoders, possibly leading to images being rendered slightly differently depending on the platform/browser where the PDF.js library is used. Originally the implementation in `src/core/jpg.js` were unable to handle all of the JPEG images in the test-suite, but over the last couple of years I've fixed (hopefully) all of those issues. At this point in time, there's two kinds of failure with this patch: - Changes which are basically imperceivable to the naked eye, where some pixels in the images are essentially off-by-one (in all components), which could probably be attributed to things such as different rounding behaviour in the browser/PDF.js JPEG decoder. This type of "failure" accounts for the *vast* majority of the total number of changes in the reference tests. - Changes where the JPEG images now looks *ever so slightly* blurrier than with the native browser decoder. For quite some time I've just assumed that this pointed to a general deficiency in the `src/core/jpg.js` implementation, however I've discovered when comparing two viewers side-by-side that the differences vanish at higher zoom levels (usually around 200% is enough). Basically if you disable [this downscaling in canvas.js](https://github.com/mozilla/pdf.js/blob/8fb82e939cf0c8618a4e775ff17fc96f726872b5/src/display/canvas.js#L2356-L2395), which is what happens when zooming in, the differences simply vanish! Hence I'm pretty satisfied that there's no significant problems with the `src/core/jpg.js` implementation, and the problems are rather tied to the general quality of the downscaling algorithm used. It could even be seen as a positive that *all* images now share the same downscaling behaviour, since this actually fixes one old bug; see issue 7041.
2020-01-20 20:10:16 +09:00
"type": "eq"
},
{ "id": "issue12909",
"file": "pdfs/issue12909.pdf",
"md5": "0faa1cb029c3323c168595cccbe46ec0",
"link": true,
"rounds": 1,
"lastPage": 1,
"type": "text"
},
{ "id": "issue5592",
"file": "pdfs/issue5592.pdf",
"md5": "a0750f95afa80c880f7966df7062616c",
"rounds": 1,
"link": true,
"type": "eq"
},
{ "id": "issue6296.pdf",
"file": "pdfs/issue6296.pdf",
"md5": "734e191aab1372e6fd7523ca7751fcf0",
"rounds": 1,
"type": "eq"
},
{ "id": "issue6298.pdf",
"file": "pdfs/issue6298.pdf",
"md5": "214340be34f463611fc3127ad0695034",
"rounds": 1,
"type": "eq"
},
2014-12-18 06:42:06 +09:00
{ "id": "issue5549.pdf",
"file": "pdfs/issue5549.pdf",
"md5": "6c36df6ebc583c9e18aad0ad00d257b8",
"rounds": 1,
"type": "eq",
"about": "Free image obtained from www.unsplash.com"
2014-12-18 06:46:47 +09:00
},
{ "id": "issue5475.pdf",
"file": "pdfs/issue5475.pdf",
"md5": "bda962373570ac4dfe0fbd1ad4f0d9ef",
"rounds": 1,
"type": "eq",
"about": "Free image obtained from www.unsplash.com"
2014-12-19 05:26:02 +09:00
},
{ "id": "annotation-border-styles.pdf",
"file": "pdfs/annotation-border-styles.pdf",
"md5": "22930fc09c7386e1131b14d936e554af",
"rounds": 1,
"type": "eq",
"annotations": true
},
2014-12-19 05:26:02 +09:00
{ "id": "issue5481.pdf",
"file": "pdfs/issue5481.pdf",
"md5": "cf00bd25b15b7e23542b48a626585c36",
"rounds": 1,
"type": "eq",
"about": "Free image obtained from www.unsplash.com"
2015-02-10 07:32:16 +09:00
},
{ "id": "issue5567",
"file": "pdfs/issue5567.pdf",
"md5": "d5b37f8bf1b3aafa1b4fcf19ebdc7c74",
"rounds": 1,
"type": "eq"
2015-04-04 15:15:31 +09:00
},
{ "id": "issue5909_original",
"file": "pdfs/issue5909_original.pdf",
"md5": "65c169b6f540b27ac0ff2738a80d1e14",
"link": true,
2015-04-04 15:15:31 +09:00
"rounds": 1,
"lastPage": 2,
"type": "eq"
},
{ "id": "issue6069",
"file": "pdfs/issue6069.pdf",
"md5": "d0ad8871f4116bca8e39513ffa8b7d8e",
"rounds": 1,
"type": "load"
},
{ "id": "issue7014",
"file": "pdfs/issue7014.pdf",
"md5": "b410891d7a01af791364e9c530d61b17",
"rounds": 1,
"type": "eq",
"annotations": true
},
{ "id": "annotation-link-text-popup",
"file": "pdfs/annotation-link-text-popup.pdf",
"md5": "4bbf56e81d47232de5f305124ab0ba27",
"rounds": 1,
"type": "eq",
"annotations": true
},
{ "id": "annotation-text-without-popup",
"file": "pdfs/annotation-text-without-popup.pdf",
"md5": "7c2d241babe00139e34b9f8369a909eb",
"rounds": 1,
"type": "eq",
"annotations": true,
"about": "Text annotation without a separate Popup annotation"
},
{ "id": "annotation-underline",
"file": "pdfs/annotation-underline.pdf",
"md5": "c24b3aba771de52f9bac25e854c39458",
"rounds": 1,
"type": "eq",
"annotations": true
},
{ "id": "annotation-underline-without-appearance",
"file": "pdfs/annotation-underline-without-appearance.pdf",
"md5": "dd5be5e9a8e6bdbf67c175ca170f7cb7",
"rounds": 1,
"annotations": true,
"type": "eq"
},
{ "id": "bug1799927",
"file": "pdfs/bug1799927.pdf",
"md5": "e6ad013c24e58e5b40c3bae50f04c8e8",
"rounds": 1,
"type": "eq"
},
{ "id": "annotation-line-without-appearance-empty-Rect",
"file": "pdfs/annotation-line-without-appearance-empty-Rect.pdf",
"md5": "65f2d3ef80acfea637718c3fc66043b7",
"rounds": 1,
"annotations": true,
"type": "eq"
},
{ "id": "issue12705",
"file": "pdfs/issue12705.pdf",
"md5": "d8725b9dcfef72fd4fa4a39cab711624",
"rounds": 1,
"type": "eq"
},
{ "id": "annotation-strikeout",
"file": "pdfs/annotation-strikeout.pdf",
"md5": "6624e6b5bedd2f2855b6ab12bbf93c57",
"rounds": 1,
"type": "eq",
"annotations": true
},
{ "id": "annotation-strikeout-without-appearance",
"file": "pdfs/annotation-strikeout-without-appearance.pdf",
"md5": "1dc751ab83e8deb3094bfc580289b097",
"rounds": 1,
"annotations": true,
"type": "eq"
},
{ "id": "annotation-squiggly",
"file": "pdfs/annotation-squiggly.pdf",
"md5": "38661e731ac6c525af5894d2d20c6e71",
"rounds": 1,
"type": "eq",
"annotations": true
},
{ "id": "annotation-squiggly-without-appearance",
"file": "pdfs/annotation-squiggly-without-appearance.pdf",
"md5": "6546f22a06a5e51d0e835c677cdbc705",
"rounds": 1,
"annotations": true,
"type": "eq"
},
{ "id": "annotation-highlight",
"file": "pdfs/annotation-highlight.pdf",
"md5": "e13e198e3a69c32dc9ebdc704d3105e1",
"rounds": 1,
"type": "eq",
"annotations": true
},
{ "id": "annotation-highlight-without-appearance",
"file": "pdfs/annotation-highlight-without-appearance.pdf",
"md5": "a1f2811324fa1ff0c9f1778697413dad",
"rounds": 1,
"annotations": true,
"type": "eq"
},
2019-04-14 01:45:22 +09:00
{ "id": "annotation-freetext",
"file": "pdfs/annotation-freetext.pdf",
"md5": "6ca19ce632ead3aed08f22e588510e2f",
"rounds": 1,
"type": "eq",
"annotations": true
},
{ "id": "annotation-line",
"file": "pdfs/annotation-line.pdf",
"md5": "fde60608be2748f10fb6522cba425ca1",
"rounds": 1,
"type": "eq",
"annotations": true
},
{ "id": "annotation-line-without-appearance",
"file": "pdfs/annotation-line-without-appearance.pdf",
"md5": "1f60935b2a7719ce40616af60fc308a2",
"rounds": 1,
"annotations": true,
"type": "eq"
},
{ "id": "annotation-square-circle",
"file": "pdfs/annotation-square-circle.pdf",
"md5": "cfd3c302f68d61e1d55ed9c7896046c3",
"rounds": 1,
"type": "eq",
"annotations": true
},
{ "id": "annotation-square-circle-without-appearance",
"file": "pdfs/annotation-square-circle-without-appearance.pdf",
"md5": "5b2a5e1e918137993d26a0cd8b0947f6",
"rounds": 1,
"annotations": true,
"type": "eq"
},
{ "id": "annotation-stamp",
"file": "pdfs/annotation-stamp.pdf",
"md5": "0a04d7ce1ad103cb3c033d26855d6ec7",
"rounds": 1,
"type": "eq",
"annotations": true
},
{ "id": "annotation-fileattachment",
"file": "pdfs/annotation-fileattachment.pdf",
"md5": "d20ecee4b53c81b2dd44c8715a1b4a83",
"rounds": 1,
"type": "eq",
"annotations": true
},
{ "id": "bug1230933",
"file": "pdfs/bug1230933.pdf",
"md5": "d8e7dce9ce79aa5a6121b21be8935429",
"link": true,
"rounds": 1,
"type": "eq",
"annotations": true
},
{ "id": "issue14117",
"file": "pdfs/issue14117.pdf",
"md5": "9b1c33ad2f59f4e723c258e863149abf",
"rounds": 1,
"type": "eq"
},
{ "id": "annotation-text-widget-annotations",
"file": "pdfs/annotation-text-widget.pdf",
"md5": "b7b8923a12998fca8603fae53f73f19b",
"rounds": 1,
"type": "eq",
"annotations": true
},
{ "id": "annotation-text-widget-forms",
"file": "pdfs/annotation-text-widget.pdf",
"md5": "b7b8923a12998fca8603fae53f73f19b",
"rounds": 1,
"type": "eq",
"forms": true
},
{ "id": "annotation-text-widget-print",
"file": "pdfs/annotation-text-widget.pdf",
"md5": "b7b8923a12998fca8603fae53f73f19b",
"rounds": 1,
"type": "eq",
"print": true,
"annotationStorage": {
"61R": {
"value": "Single line, unlimited length"
},
"62R": {
"value": "Single lin"
},
"63R": {
"value": "Single line, center aligned"
},
"64R": {
"value": "Single line, right aligned"
},
"65R": {
"value": ""
},
"66R": {
"value": "zyxwvutsrqponmlkjihgfedcba"
},
"67R": {
"value": "Multiline\nstring"
}
}
},
{ "id": "annotation-choice-widget-annotations",
"file": "pdfs/annotation-choice-widget.pdf",
"md5": "7dfb0d743a0da0f4a71b209ab43b0be5",
"rounds": 1,
"type": "eq",
"annotations": true
},
{ "id": "issue6605",
"file": "pdfs/issue6605.pdf",
"md5": "67158a9c6d0e966ece55f7c433e18cc5",
"rounds": 1,
"type": "text"
},
{ "id": "annotation-choice-widget-forms",
"file": "pdfs/annotation-choice-widget.pdf",
"md5": "7dfb0d743a0da0f4a71b209ab43b0be5",
"rounds": 1,
"type": "eq",
"forms": true
},
{ "id": "annotation-choice-widget-print",
"file": "pdfs/annotation-choice-widget.pdf",
"md5": "7dfb0d743a0da0f4a71b209ab43b0be5",
"rounds": 1,
"type": "eq",
"print": true,
"annotationStorage": {
"57R": {
"value": "Ipsum"
},
"58R": {
"value": "Lorem"
},
"59R": {
"value": "Dolor"
},
"62R": {
"value": ["Sit", "Adipiscing"]
}
}
},
{ "id": "issue12233-forms",
"file": "pdfs/issue12233.pdf",
"md5": "6099fc695fe018ce444752929d86f9c8",
"link": true,
"rounds": 1,
"type": "eq",
"forms": true
},
{ "id": "issue12233-print",
"file": "pdfs/issue12233.pdf",
"md5": "6099fc695fe018ce444752929d86f9c8",
"link": true,
"rounds": 1,
"type": "eq",
"print": true,
"annotationStorage": {
"20R": {
"value": true
}
}
},
{ "id": "issue10572",
"file": "pdfs/issue10572.pdf",
"md5": "48ad69ed106338b3c6845fc7101488b2",
"rounds": 1,
"type": "eq"
},
{ "id": "issue11931",
"file": "pdfs/issue11931.pdf",
"md5": "9ea233037992e1f10280420a49e72845",
"rounds": 1,
"type": "eq"
},
{ "id": "issue6931",
"file": "pdfs/issue6931_reduced.pdf",
"md5": "e61388913821a5e044bf85a5846d6d9a",
"rounds": 1,
"type": "eq"
},
{ "id": "issue6931-disable-isOffscreenCanvasSupported",
"file": "pdfs/issue6931_reduced.pdf",
"md5": "e61388913821a5e044bf85a5846d6d9a",
"rounds": 1,
"type": "eq",
"isOffscreenCanvasSupported": false
},
{ "id": "annotation-button-widget-annotations",
"file": "pdfs/annotation-button-widget.pdf",
"md5": "5cf23adfff84256d9cfe261bea96dade",
"rounds": 1,
"type": "eq",
"annotations": true
},
{ "id": "annotation-button-widget-forms",
"file": "pdfs/annotation-button-widget.pdf",
"md5": "5cf23adfff84256d9cfe261bea96dade",
"rounds": 1,
"type": "eq",
"forms": true
},
{ "id": "annotation-button-widget-print",
"file": "pdfs/annotation-button-widget.pdf",
"md5": "5cf23adfff84256d9cfe261bea96dade",
"rounds": 1,
"type": "eq",
"print": true,
"annotationStorage": {
"105R": {
"value": true
},
"106R": {
"value": false
},
"107R": {
"value": false
},
"108R": {
"value": true
},
"109R": {
"value": false
},
"110R": {
"value": false
},
"111R": {
"value": true
},
"112R": {
"value": false
},
"113R": {
"value": false
}
}
},
{ "id": "issue6127",
"file": "pdfs/issue6127.pdf",
"md5": "65ef9572bddef5fddfaf7172f10a0df2",
"rounds": 1,
"lastPage": 1,
"type": "eq"
},
{ "id": "annotation-polyline-polygon",
"file": "pdfs/annotation-polyline-polygon.pdf",
"md5": "e68611602f58c8ca70cc40575ba3b04e",
"rounds": 1,
"type": "eq",
"annotations": true
},
{ "id": "annotation-polyline-polygon-without-appearance",
"file": "pdfs/annotation-polyline-polygon-without-appearance.pdf",
"md5": "b776937148e9f7c4de6bea552e23b92f",
"rounds": 1,
"annotations": true,
"type": "eq"
},
{ "id": "issue4872",
"file": "pdfs/issue4872.pdf",
"md5": "21c6cbc682140d6f6017bbeb45892053",
"rounds": 1,
"link": true,
"firstPage": 1,
"lastPage": 1,
"type": "eq",
"annotations": true
},
{ "id": "issue4872-forms",
"file": "pdfs/issue4872.pdf",
"md5": "21c6cbc682140d6f6017bbeb45892053",
"rounds": 1,
"link": true,
"firstPage": 1,
"lastPage": 1,
"type": "eq",
"forms": true
},
{ "id": "issue6108",
"file": "pdfs/issue6108.pdf",
"md5": "8961cb55149495989a80bf0487e0f076",
"rounds": 1,
"type": "load"
},
{ "id": "issue6961",
"file": "pdfs/issue6961.pdf",
"md5": "a80e4357a8fda758d96c2c76f2980b03",
"link": false,
"rounds": 1,
"lastPage": 1,
"type": "eq"
},
{ "id": "zero_descent",
"file": "pdfs/zero_descent.pdf",
"md5": "32805ab28be1d0e91d27d9742c66eccf",
"link": false,
"rounds": 1,
"lastPage": 1,
"type": "text"
},
{ "id": "quadpoints",
"file": "pdfs/quadpoints.pdf",
"md5": "aadbc9bf826b4604c49a994fc8cd72c1",
"rounds": 1,
"type": "eq",
"annotations": true
},
{ "id": "operator-in-TJ-array",
"file": "pdfs/operator-in-TJ-array.pdf",
"md5": "dfe0f15a45be18eca142adaf760984ee",
"link": false,
"rounds": 1,
"type": "text"
},
{ "id": "issue7878",
"file": "pdfs/issue7878.pdf",
"md5": "59194e30037e8c09ae846ddd0ace4c81",
"link": false,
"rounds": 1,
"type": "text"
2017-02-11 15:25:05 +09:00
},
{ "id": "font_ascent_descent",
"file": "pdfs/font_ascent_descent.pdf",
"md5": "c0048a7735010002b998c112335e47bf",
"rounds": 1,
"type": "eq"
},
{ "id": "issue8097",
"file": "pdfs/issue8097_reduced.pdf",
"md5": "ced0e2d88cfd5b4d3a55d937ea288af1",
"rounds": 1,
"type": "eq"
},
{ "id": "bug1721218_reduced",
"file": "pdfs/bug1721218_reduced.pdf",
"md5": "20ee3e9500d8f5f5e532ec2edfaaaaaa",
"rounds": 1,
"type": "eq"
},
{ "id": "pr8491",
"file": "pdfs/pr8491.pdf",
"md5": "36ea2e28cd77e9e70731f574ab27cbe0",
"rounds": 1,
"link": true,
"type": "eq"
},
{ "id": "ccitt_EndOfBlock_false",
"file": "pdfs/ccitt_EndOfBlock_false.pdf",
"md5": "ce718efe601cd7491dd00651b4790329",
"rounds": 1,
"type": "eq"
},
{ "id": "issue9940",
"file": "pdfs/issue9940.pdf",
"md5": "6ffef210c4b6cfe423e20430d8af168a",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "issue11526",
"file": "pdfs/issue11526.pdf",
"md5": "9babc771fc8792f43e4ada46b0daff8c",
"rounds": 1,
"lastPage": 1,
"link": true,
"type": "eq"
},
{ "id": "issue11555",
"file": "pdfs/issue11555.pdf",
"md5": "f84ce8b7414f6a18e75a6ce69c902501",
"rounds": 1,
"type": "eq"
},
{ "id": "issue12337",
"file": "pdfs/issue12337.pdf",
"md5": "9165772d5b860bcbcc2478f32e311eb0",
"rounds": 2,
"lastPage": 1,
"type": "fbf"
},
{ "id": "pr12564",
"file": "pdfs/pr12564.pdf",
"md5": "24a19949a2541b960363832cf141f2f2",
"rounds": 1,
"type": "eq",
"annotations": true
},
{
"id": "pr12828",
"file": "pdfs/pr12828.pdf",
"md5": "e44d364fba2f146aed04f9d9abbb0f28",
"rounds": 1,
"type": "eq",
"forms": true
},
{
"id": "issue12716",
"file": "pdfs/issue12716.pdf",
"md5": "9bdc9c552bcfccd629f5f97385e79ca5",
"rounds": 1,
"link": true,
"type": "eq",
"forms": true,
"lastPage": 1
},
{
"id": "issue12716-hidpi",
"file": "pdfs/issue12716.pdf",
"md5": "9bdc9c552bcfccd629f5f97385e79ca5",
"rounds": 1,
"link": true,
"type": "eq",
"forms": true,
"lastPage": 1,
"outputScale": 2,
"about": "This tests draws to another canvas for the button, so it's a good test to ensure output scale is working."
},
{ "id": "xfa_issue13500",
"file": "pdfs/xfa_issue13500.pdf",
"md5": "b81274a19f5a95c1466db3648f1be491",
"link": true,
"rounds": 1,
"enableXfa": true,
"type": "eq"
},
{ "id": "issue13999",
"file": "pdfs/issue13999.pdf",
"md5": "8829c76887e7827390e9a5f73cab23f2",
"link": true,
"rounds": 1,
"lastPage": 1,
"type": "eq"
},
{ "id": "bug1722036",
"file": "pdfs/bug1722036.pdf",
"md5": "bbc7f62ca85609c97069bd3ce2658288",
"rounds": 1,
"link": true,
"forms": true,
"type": "eq"
},
{ "id": "issue14046",
"file": "pdfs/issue14046.pdf",
"md5": "dbb5d4e284ca9cc3219e04af6ce64e13",
"rounds": 1,
"type": "eq",
"annotations": true
},
{ "id": "issue14021",
"file": "pdfs/issue14021.pdf",
"md5": "d18aa84135ce985c70a8f56306ecb95f",
"link": true,
"rounds": 1,
"firstPage": 2,
"lastPage": 2,
"type": "eq",
"forms": true
},
{ "id": "issue14021-storage",
"file": "pdfs/issue14021.pdf",
"md5": "d18aa84135ce985c70a8f56306ecb95f",
"link": true,
"rounds": 1,
"firstPage": 2,
"lastPage": 3,
"type": "eq",
"print": true,
"annotationStorage": {
"148R": {
"value": true
},
"138R": {
"value": true
},
"139R": {
"value": true
}
}
},
{ "id": "issue13003",
"file": "pdfs/issue13003.pdf",
"md5": "a4c00bd6456d3c16b9bd44957caa4ab6",
"rounds": 1,
"type": "eq",
"annotations": true
2021-10-15 18:46:28 +09:00
},
{ "id": "xfa_issue14144",
"file": "pdfs/xfa_issue14144.pdf",
"md5": "6a0e99edcf31e815dd0e1395e8dc15f2",
"link": true,
"rounds": 1,
"enableXfa": true,
"type": "eq",
"lastPage": 1
},
{ "id": "xfa_bug1735738",
"file": "pdfs/xfa_bug1735738.pdf",
"md5": "7aa91f6681798c48e0c9d9836ed30742",
"enableXfa": true,
"link": true,
"rounds": 1,
"type": "eq"
},
{ "id": "issue14415",
"file": "pdfs/issue14415.pdf",
"md5": "fa306a250a3d37fe0e7a4b3bba51c91e",
"type": "text"
},
{ "id": "issue14438",
"file": "pdfs/issue14438.pdf",
"md5": "c4f5a21bbd6567fe08583fc9d3149a38",
"rounds": 1,
"type": "eq",
"annotations": true
},
{ "id": "bug1749563",
"file": "pdfs/bug1749563.pdf",
"md5": "11294f6071a8dcc25b0e18953cee68fa",
"rounds": 1,
"link": true,
"firstPage": 1,
"lastPage": 1,
"type": "eq"
},
{ "id": "issue9186",
"file": "pdfs/issue9186.pdf",
"md5": "d151857bb724ab9a291704a45a0b5d7f",
"rounds": 1,
"link": true,
"lastPage": 1,
"type": "text"
},
{ "id": "issue14497",
"file": "pdfs/issue14497.pdf",
"md5": "7f795a92caa612117b6928f8bb4c5b65",
"rounds": 1,
"type": "text"
},
{ "id": "issue14052",
"file": "pdfs/issue14502.pdf",
"md5": "7085cdc31243ab0b979f0c5fa151e491",
"rounds": 1,
"type": "eq",
"print": true,
"annotationStorage": {
"27R": {
"value": "Hello PDF.js World"
},
"28R": {
"value": "PDF.js PDF.js PDF.js PDF.js\nPDF.js PDF.js PDF.js PDF.js\nPDF.js PDF.js PDF.js PDF.js\nPDF.js PDF.js PDF.js PDF.js"
},
"29R": {
"value": "PDF.js"
},
"30R": {
"value": "PDF.js PDF.js PDF.js"
}
}
},
{ "id": "issue14562",
"file": "pdfs/issue14562.pdf",
"md5": "565b0a1e46a32e907837506a10d25277",
"rounds": 1,
"link": true,
"type": "other"
},
{ "id": "bug1753075",
"file": "pdfs/bug1753075.pdf",
"md5": "12716fa2dc3e0b3a61d88fef10abc7cf",
"rounds": 1,
"link": true,
"lastPage": 1,
"type": "eq"
},
{ "id": "issue13211",
"file": "pdfs/issue13211.pdf",
"md5": "d193853e8a123dc50eeea593a4150b60",
"rounds": 1,
"type": "eq"
},
{ "id": "issue14627",
"file": "pdfs/issue14627.pdf",
"md5": "5d1bfcc3b3130bfa7e33e43990e2213a",
"rounds": 1,
"type": "text"
},
{ "id": "issue14685",
"file": "pdfs/issue14685.pdf",
"md5": "2c608203b9b1d13455f0b1d9cebc9515",
"rounds": 1,
"link": true,
"lastPage": 1,
"type": "eq"
},
{ "id": "issue14685-print",
"file": "pdfs/issue14685.pdf",
"md5": "2c608203b9b1d13455f0b1d9cebc9515",
"rounds": 1,
"link": true,
"lastPage": 1,
"type": "eq",
"print": true,
"annotationStorage": {
"150R": {
"value": "Hello PDF.js World"
}
}
},
{ "id": "bug857031",
"file": "pdfs/bug857031.pdf",
"md5": "f11ecd7f75675e0cafbc9880c1a586c7",
"rounds": 1,
"link": true,
"lastPage": 1,
"type": "eq"
},
{ "id": "issue12306",
"file": "pdfs/issue12306.pdf",
"md5": "7fd05ba56791238b5a60adc6cc0e7a22",
"rounds": 1,
"link": true,
"lastPage": 1,
"type": "eq"
},
{ "id": "issue3351.1",
"file": "pdfs/issue3351.1.pdf",
"md5": "4216245a5f18bb3eac80575ccf0b272d",
"rounds": 1,
"link": true,
"lastPage": 1,
"type": "eq"
},
{ "id": "issue3351.2",
"file": "pdfs/issue3351.2.pdf",
"md5": "fa3fd1659c409c7824ef8838c3071efc",
"rounds": 1,
"link": true,
"lastPage": 1,
"type": "eq"
},
{ "id": "issue3351.3",
"file": "pdfs/issue3351.3.pdf",
"md5": "60e2f2c480b6bc0e7f726743c6896520",
"rounds": 1,
"link": true,
"lastPage": 1,
"type": "eq"
},
{ "id": "issue14928",
"file": "pdfs/issue14928.pdf",
"md5": "9687feb927eeb1b2a6f0794ea00f5c60",
"rounds": 1,
"link": true,
"lastPage": 1,
"type": "eq",
"print": true,
"annotationStorage": {
"1483R": {
"value": "05/17/2022"
}
}
},
{ "id": "bug1766987",
"file": "pdfs/bug1766987.pdf",
"md5": "3ce134ead03d6158c3e8207453dcd21d",
"rounds": 1,
"link": true,
"type": "other"
},
{ "id": "issue14301",
"file": "pdfs/issue14301.pdf",
"md5": "9973936dcf8dd41daa62c04a4eb621f0",
"rounds": 1,
"link": true,
"firstPage": 2,
"lastPage": 2,
"type": "eq",
"forms": true,
"annotationStorage": {
"1832R": {
"value": "3"
},
"1827R": {
"value": "2"
},
"1808R": {
"value": "1"
}
}
},
{ "id": "bug1737260-oc",
"file": "pdfs/bug1737260.pdf",
"md5": "8bd4f810d30972764b07ae141a4afbc4",
"rounds": 1,
"link": true,
"type": "eq",
"optionalContent": {
"191R": false
}
},
{ "id": "bug1737260",
"file": "pdfs/bug1737260.pdf",
"md5": "8bd4f810d30972764b07ae141a4afbc4",
"rounds": 1,
"link": true,
"type": "eq",
"annotations": true
},
{ "id": "issue14105",
"file": "pdfs/issue14105.pdf",
"md5": "554174cd461180cbe46c137e846dd527",
"rounds": 1,
"link": true,
"type": "eq",
"annotations": true
},
{ "id": "bug1724918",
"file": "pdfs/bug1724918.pdf",
"md5": "ab30269570c8ff2c9f8eb73fb376a081",
"rounds": 1,
"type": "eq",
"annotations": true
},
{ "id": "bug1675139",
"file": "pdfs/bug1675139.pdf",
"md5": "052c2c3dcc7ef4d4ac622282cb0fb17a",
"rounds": 1,
"type": "eq",
"annotations": true
},
{ "id": "bug1675139-print",
"file": "pdfs/bug1675139.pdf",
"md5": "052c2c3dcc7ef4d4ac622282cb0fb17a",
"rounds": 1,
"type": "eq",
"print": true,
"annotationStorage": {
"42R": {
"value": "pi/2"
},
"46R": {
"value": "3*pi/2",
"rotation": 180
},
"47R": {
"value": "0*pi/2"
},
"45R": {
"value": "pi"
},
"55R": {
"value": "C",
"rotation": 90
},
"52R": {
"value": "Yes"
},
"56R": {
"rotation": 270
}
}
},
{
"id": "tracemonkey-editor",
"file": "pdfs/tracemonkey.pdf",
"md5": "9a192d8b1a7dc652a19835f6f08098bd",
"rounds": 1,
"lastPage": 1,
"type": "eq",
"print": true,
"annotationStorage": {
"pdfjs_internal_editor_0": {
"annotationType": 3,
"color": [0, 0, 0],
"fontSize": 10,
"value": "Hello World",
"pageIndex": 0,
"rect": [67.5, 543, 119, 556.5],
"rotation": 0
},
"pdfjs_internal_editor_1": {
"annotationType": 15,
"color": [255, 0, 0],
"thickness": 3,
"opacity": 1,
"paths": [{
"bezier": [
1.5, 25.727771084724367, 2.8040804485100495, 27.031851533234402,
5.396811581133676, 23.25556095123241, 6, 22.727771084724367,
10.45407020558315, 18.830459654839103, 15.981183968598401,
16.364531104350363, 21, 13.227771084724367, 25.88795894206055,
10.172796745936523, 37.988543516372076, 5.739227568352277, 42,
1.7277710847243668
],
"points": [
1.5, 25.727771084724367, 5.225791198862495, 23.602568747729173,
4.012834511116397, 24.914722452856147, 6, 22.727771084724367, 21,
13.227771084724367, 37.71378602219673, 4.78737352236285,
31.828688421912233, 7.836451889039392, 42, 1.7277710847243668
]
}],
"pageIndex": 0,
"rect": [71.5, 534.5, 115, 562],
"rotation": 0
}
}
},
{
"id": "tracemonkey-editor-rotation",
"file": "pdfs/tracemonkey.pdf",
"md5": "9a192d8b1a7dc652a19835f6f08098bd",
"rounds": 1,
"lastPage": 1,
"type": "eq",
"print": true,
"annotationStorage": {
"pdfjs_internal_editor_3": {
"annotationType": 3,
"color": [0, 0, 0],
"fontSize": 10,
"value": "Hello",
"pageIndex": 0,
"rect": [
96.34615384615385, 554.8461538461538, 119.12498076923077,
568.3461538461538
],
"rotation": 0
},
"pdfjs_internal_editor_4": {
"annotationType": 3,
"color": [0, 0, 0],
"fontSize": 10,
"value": "PDF",
"pageIndex": 0,
"rect": [
125.57692307692308, 533.5384615384615, 139.07692307692307,
553.5384807692308
],
"rotation": 90
},
"pdfjs_internal_editor_5": {
"annotationType": 3,
"color": [0, 0, 0],
"fontSize": 10,
"value": ".js",
"pageIndex": 0,
"rect": [
105.9615576923077, 535.0769230769231, 115.96153846153847,
548.5769230769231
],
"rotation": 180
},
"pdfjs_internal_editor_6": {
"annotationType": 3,
"color": [0, 0, 0],
"fontSize": 10,
"value": "world!",
"pageIndex": 0,
"rect": [
77.84615384615385, 531.682673076923, 91.34615384615385,
558.3461538461538
],
"rotation": 270
},
"pdfjs_internal_editor_21": {
"annotationType": 15,
"color": [0, 0, 0],
"thickness": 1,
"opacity": 1,
"paths": [
{
"bezier": [
0.5, 15.653846153846189, 0.5, 10.612792605955292,
2.221156193659856, 5.960961418318131, 2.221156193659856,
0.7371591421274406
],
"points": [
0.5, 15.653846153846189, 2.221156193659856, 0.7371591421274406
]
}
],
"pageIndex": 0,
"rect": [
416.53846153846155, 561.8076923076923, 419.41346388596753,
577.9615384615385
],
"rotation": 0
},
"pdfjs_internal_editor_23": {
"annotationType": 15,
"color": [0, 0, 0],
"thickness": 1,
"opacity": 1,
"paths": [
{
"bezier": [
0.5, 18.538461538461547, 0.5, 12.869221974582576,
3.9307267310416893, 5.207607308237302, 1.6538461538461537,
0.653846153846164
],
"points": [
0.5, 18.538461538461547, 2.434116685812059, 4.572198481030599,
1.9307532933714027, 9.17784944259592, 1.6538461538461537,
0.653846153846164
]
}
],
"pageIndex": 0,
"rect": [
390.00000000000006, 543.4615384615386, 409.0384615384616,
546.9134638859676
],
"rotation": 90
},
"pdfjs_internal_editor_25": {
"annotationType": 15,
"color": [0, 0, 0],
"thickness": 1,
"opacity": 1,
"paths": [
{
"bezier": [
0.5, 24.307692307692264, 0.5, 16.218230266280443,
1.6442331167367787, 8.976323168614734, 1.6442331167367787,
0.8509134145882982
],
"points": [
0.5, 24.307692307692264, 1.6442331167367787, 0.8509134145882982
]
}
],
"pageIndex": 0,
"rect": [
422.7788438063401, 515.7692307692307, 425.07692307692304,
540.576923076923
],
"rotation": 180
},
"pdfjs_internal_editor_27": {
"annotationType": 15,
"color": [0, 0, 0],
"thickness": 1,
"opacity": 1,
"paths": [
{
"bezier": [
0.5, 32.96153846153845, 4.262222952239026, 32.96153846153845,
2.8076923076923075, 4.355429108316972, 2.8076923076923075,
0.6538461538461462
],
"points": [
0.5, 32.96153846153845, 2.9761779872739975, 7.263528385840449,
3.0646797609357885, 18.195785915618856, 2.8076923076923075,
0.6538461538461462
]
}
],
"pageIndex": 0,
"rect": [
425.6538461538462, 553.7403822678785, 459.11538461538464,
557.7692307692307
],
"rotation": 270
}
}
},
{ "id": "bug1778692",
"file": "pdfs/bug1778692.pdf",
"md5": "8855414caaa04fbbdfad1545d1c8a8ae",
"rounds": 1,
"link": true,
"firstPage": 2,
"lastPage": 2,
"type": "eq",
"annotations": true
},
{ "id": "bug1782186",
"file": "pdfs/bug1782186.pdf",
"password": "Hello",
"md5": "8505033d63625dfd77e90a3722b0c316",
"rounds": 1,
"type": "eq"
},
{ "id": "issue15289",
"file": "pdfs/issue15289.pdf",
"md5": "f3d20aee398e052ac3dce7cc030f50de",
"link": true,
"rounds": 1,
"firstPage": 1,
"lastPage": 1,
"type": "eq"
},
{ "id": "bug1791583",
"file": "pdfs/bug1791583.pdf",
"md5": "1ff6badc865c9a5e9a0dc0b7131ffe28",
"link": true,
"rounds": 1,
"type": "eq"
},
{ "id": "bug1795263",
"file": "pdfs/bug1795263.pdf",
"md5": "af708acbb22c6c9d268240dcf4a39809",
"rounds": 1,
"type": "eq"
},
{ "id": "bug1796741-print",
"file": "pdfs/bug1796741.pdf",
"md5": "d5167d1b0d1b840c9aa258b98ce4fa62",
"rounds": 1,
"type": "eq",
"print": true
},
{ "id": "ascii_print_textfields",
"file": "pdfs/textfields.pdf",
"md5": "5f743ca838ff9b7a286dbe52002860b7",
"rounds": 1,
"type": "eq",
"print": true,
"annotationStorage": {
"32R": {
"value": "Hello World"
},
"35R": {
"value": "Hello World"
},
"38R": {
"value": "Hello World"
},
"34R": {
"value": "Hello World"
},
"37R": {
"value": "Hello World"
},
"40R": {
"value": "Hello World"
},
"33R": {
"value": "Hello World\nDlrow Olleh\nHello World"
},
"36R": {
"value": "Hello World\nDlrow Olleh\nHello World"
},
"39R": {
"value": "Hello World\nDlrow Olleh\nHello World"
}
}
},
{ "id": "arabic_print_textfields",
"file": "pdfs/textfields.pdf",
"md5": "5f743ca838ff9b7a286dbe52002860b7",
"rounds": 1,
"type": "eq",
"print": true,
"annotationStorage": {
"32R": {
"value": "مرحبا بالعالم"
},
"35R": {
"value": "مرحبا بالعالم"
},
"38R": {
"value": "مرحبا بالعالم"
},
"34R": {
"value": "مرحبا بالعالم"
},
"37R": {
"value": "مرحبا بالعالم"
},
"40R": {
"value": "مرحبا بالعالم"
},
"33R": {
"value": "مرحبا بالعالم\nملاعلاب ابحرم\nمرحبا بالعالم"
},
"36R": {
"value": "مرحبا بالعالم\nملاعلاب ابحرم\nمرحبا بالعالم"
},
"39R": {
"value": "مرحبا بالعالم\nملاعلاب ابحرم\nمرحبا بالعالم"
}
}
},
{ "id": "ascii_save_print_textfields",
"file": "pdfs/textfields.pdf",
"md5": "5f743ca838ff9b7a286dbe52002860b7",
"rounds": 1,
"type": "eq",
"save": true,
"print": true,
"annotationStorage": {
"32R": {
"value": "Hello World"
},
"35R": {
"value": "Hello World"
},
"38R": {
"value": "Hello World"
},
"34R": {
"value": "Hello World"
},
"37R": {
"value": "Hello World"
},
"40R": {
"value": "Hello World"
},
"33R": {
"value": "Hello World\nDlrow Olleh\nHello World"
},
"36R": {
"value": "Hello World\nDlrow Olleh\nHello World"
},
"39R": {
"value": "Hello World\nDlrow Olleh\nHello World"
}
}
},
{ "id": "arabic_save_print_textfields",
"file": "pdfs/textfields.pdf",
"md5": "5f743ca838ff9b7a286dbe52002860b7",
"rounds": 1,
"type": "eq",
"save": true,
"print": true,
"annotationStorage": {
"32R": {
"value": "مرحبا بالعالم"
},
"35R": {
"value": "مرحبا بالعالم"
},
"38R": {
"value": "مرحبا بالعالم"
},
"34R": {
"value": "مرحبا بالعالم"
},
"37R": {
"value": "مرحبا بالعالم"
},
"40R": {
"value": "مرحبا بالعالم"
},
"33R": {
"value": "مرحبا بالعالم\nملاعلاب ابحرم\nمرحبا بالعالم"
},
"36R": {
"value": "مرحبا بالعالم\nملاعلاب ابحرم\nمرحبا بالعالم"
},
"39R": {
"value": "مرحبا بالعالم\nملاعلاب ابحرم\nمرحبا بالعالم"
}
}
},
{ "id": "freetext_no_appearance",
"file": "pdfs/freetext_no_appearance.pdf",
"md5": "1dc519c06f1dc6f6e594f168080dcde9",
"rounds": 1,
"type": "eq"
},
{ "id": "freetext_print_no_appearance",
"file": "pdfs/freetext_no_appearance.pdf",
"md5": "1dc519c06f1dc6f6e594f168080dcde9",
"rounds": 1,
"type": "eq",
"print": true
},
{
"id": "tracemonkey-multi-lang-editors",
"file": "pdfs/tracemonkey.pdf",
"md5": "9a192d8b1a7dc652a19835f6f08098bd",
"rounds": 1,
"lastPage": 1,
"type": "eq",
"print": true,
"annotationStorage": {
"pdfjs_internal_editor_0": {
"annotationType": 3,
"color": [255, 0, 0],
"fontSize": 10,
"value": "Hello World",
"pageIndex": 0,
"rect": [67.5, 143, 119, 156.5],
"rotation": 0
},
"pdfjs_internal_editor_1": {
"annotationType": 3,
"color": [0, 255, 0],
"fontSize": 10,
"value": "مرحبا بالعالم",
"pageIndex": 0,
"rect": [67.5, 243, 119, 256.5],
"rotation": 0
},
"pdfjs_internal_editor_2": {
"annotationType": 3,
"color": [0, 0, 255],
"fontSize": 10,
"value": "你好世界",
"pageIndex": 0,
"rect": [67.5, 343, 119, 356.5],
"rotation": 0
},
"pdfjs_internal_editor_3": {
"annotationType": 3,
"color": [255, 0, 255],
"fontSize": 10,
"value": "Hello World 你好世界 مرحبا بالعالم",
"pageIndex": 0,
"rect": [67.5, 443, 222, 456.5],
"rotation": 0
}
}
},
{
"id": "issue12233-arabic-print",
"file": "pdfs/issue12233.pdf",
"md5": "6099fc695fe018ce444752929d86f9c8",
"link": true,
"rounds": 1,
"type": "eq",
"print": true,
"annotationStorage": {
"23R": {
"value": "مرحبا بالعالم"
}
}
},
{
"id": "issue15815-print",
"file": "pdfs/issue15815.pdf",
"md5": "48b8b057954d5b773421ac03b7fcd738",
"rounds": 1,
"type": "eq",
"print": true,
"annotationStorage": {
"24R": {
"value": "x3"
}
}
},
{
"id": "issue15815-save-print",
"file": "pdfs/issue15815.pdf",
"md5": "48b8b057954d5b773421ac03b7fcd738",
"rounds": 1,
"type": "eq",
"save": true,
"print": true,
"annotationStorage": {
"24R": {
"value": "x2"
}
}
},
{
"id": "issue15784",
"file": "pdfs/issue15784.pdf",
"md5": "6e4fce8e36d960955a7476b862f58939",
"rounds": 1,
"link": true,
"type": "eq"
},
{
"id": "bug1815476-save-print",
"file": "pdfs/bug1815476.pdf",
"md5": "476f77da5f9422ef86ea5f4531602e93",
"rounds": 1,
"type": "eq",
"save": true,
"print": true,
"annotationStorage": {
"88R": {
"value": "foo"
},
"87R": {
"value": "bar"
}
}
},
{
"id": "issue16021",
"file": "pdfs/issue16021.pdf",
"md5": "78a12254cac90ba5219a4c5555ea35ed",
"rounds": 1,
"type": "eq"
},
{
"id": "bug1770750-annotations",
"file": "pdfs/bug1770750.pdf",
"md5": "01e6d77eac90b4b08d75240d3db2b826",
"rounds": 1,
"type": "eq",
"annotations": true
},
{
"id": "issue16081",
"file": "pdfs/issue16081.pdf",
"md5": "e890d55c9527a116431ebef3efb960ff",
"link": true,
"type": "other"
},
{
"id": "f1040_2022.pdf",
"file": "pdfs/f1040_2022.pdf",
"md5": "1eec7137e471a3d68a20855a04293b5b",
"link": true,
"type": "other"
},
{
"id": "issue6741",
"file": "pdfs/issue6741.pdf",
"md5": "ddbe6ccc7ae414c7ffa6c4110536730d",
"rounds": 1,
"link": true,
"type": "eq"
},
{
"id": "issue8076",
"file": "pdfs/issue8076.pdf",
"md5": "4a866bff4209956a6cfa2e2c9456f421",
"rounds": 1,
"link": true,
"type": "eq"
},
{
"id": "annotation-link-text-popup-rotated-90",
"file": "pdfs/annotation-link-text-popup.pdf",
"md5": "4bbf56e81d47232de5f305124ab0ba27",
"rounds": 1,
"type": "eq",
"annotations": true,
"rotation": 90
},
{
"id": "annotation-link-text-popup-rotated-180",
"file": "pdfs/annotation-link-text-popup.pdf",
"md5": "4bbf56e81d47232de5f305124ab0ba27",
"rounds": 1,
"type": "eq",
"annotations": true,
"rotation": 180
},
{
"id": "annotation-link-text-popup-rotated-270",
"file": "pdfs/annotation-link-text-popup.pdf",
"md5": "4bbf56e81d47232de5f305124ab0ba27",
"rounds": 1,
"type": "eq",
"annotations": true,
"rotation": 270
},
{
"id": "bug1723568",
"file": "pdfs/bug1723568.pdf",
"md5": "c5cc9f1e01d195b96eadf8be0a819578",
"rounds": 1,
"link": true,
"type": "eq",
"forms": true
},
{
"id": "issue16119",
"file": "pdfs/issue16119.pdf",
"md5": "76d680172c969c77c9fb650b3d822ad6",
"link": true,
"type": "other"
},
{
"id": "issue16114",
"file": "pdfs/issue16114.pdf",
"md5": "c04827ea33692e0f94a5e51716d9aa2e",
"rounds": 1,
"link": true,
"type": "eq"
},
{
"id": "issue16114-disable-isOffscreenCanvasSupported",
"file": "pdfs/issue16114.pdf",
"md5": "c04827ea33692e0f94a5e51716d9aa2e",
"rounds": 1,
"link": true,
"type": "eq",
"isOffscreenCanvasSupported": false
},
{
"id": "bug1820909",
"file": "pdfs/bug1820909.pdf",
"md5": "d95a83a868671a03cbf322f16b2e2b9d",
"link": true,
"type": "other"
},
{
"id": "bug1823296",
"file": "pdfs/bug1823296.pdf",
"md5": "f71e89ebe3d6e75e0c83ce41cd72df1f",
"link": true,
"type": "other"
},
{
"id": "issue16221-text",
"file": "pdfs/issue16221.pdf",
"md5": "62d93c9b3aa4ba3af5446504632e78a5",
"rounds": 1,
"type": "text"
},
{
"id": "issue16224-text",
"file": "pdfs/issue16224.pdf",
"md5": "1aa34fbb2154f9a647c7fa9e90db0eff",
"rounds": 1,
"type": "text"
},
{
"id": "annotation-fileattachment-forced-colors-eq",
"file": "pdfs/annotation-fileattachment.pdf",
"md5": "d20ecee4b53c81b2dd44c8715a1b4a83",
"rounds": 1,
"pageColors": {
"background": "black",
"foreground": "#00FF00"
},
"annotations": true,
"type": "eq"
},
{
"id": "issue16384",
"file": "pdfs/issue16384.pdf",
"md5": "2a4695a9ce6243832a06e989f1dc6599",
"rounds": 1,
"link": true,
"forms": true,
"type": "eq"
},
{
"id": "issue14565",
"file": "pdfs/issue14565.pdf",
"md5": "ee0b064d227fe90a4795ff0c4dd0a47c",
"rounds": 1,
"annotations": true,
"type": "eq"
},
{
"id": "multiline_compress",
"file": "pdfs/multiline.pdf",
"md5": "4727c7d1e4e5c7d45fded8ab7a2e05e5",
"rounds": 1,
"type": "eq",
"save": true,
"print": true,
"annotationStorage": {
"24R": {
"value": "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz\nabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz\nabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz\nabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz\nabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz\nabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz\nabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz\nabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz\nabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz\nabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz\nabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz\nabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz\nabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz\nabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz\nabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz\nabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz\nabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz\nabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"
}
}
},
{
"id": "issue16300",
"file": "pdfs/issue16300.pdf",
"md5": "45ac5cd3a159a4e9152bc1fdb685750d",
"rounds": 1,
"link": true,
"type": "eq"
},
{
"id": "issue15813",
"file": "pdfs/issue15813.pdf",
"md5": "af5124ee1dbc39c679a903690958c5b2",
"rounds": 1,
"link": true,
"print": true,
"type": "eq"
},
{
"id": "issue16471",
"file": "pdfs/issue16471.pdf",
"md5": "8ac3720d6d3ddcc58e2eadab477fd81e",
"rounds": 1,
"link": true,
"forms": true,
"type": "eq"
},
{
"id": "bug1529502",
"file": "pdfs/bug1529502.pdf",
"md5": "4830e765a3d6cb64d39b84de11178f6e",
"rounds": 1,
"type": "eq"
}
Initial import of first test harness The harness (test.py) operates as follows. First it locates executable browsers (or symlinks or scripts) named "[browser][version]", e.g. "firefox4". It then launches the located browsers and asks them to load the file test_slave.html. At the same time, test.py sets up an HTTP server on localhost:8080 (there's a race condition here currently ;). After test_slave loads in the browser(s), it fetches the task manifest (test_manifest.json). The entries in the manifest specify which PDF to load and how many times to cycle through page rendering. This will probably evolve over time. test_slave then performs the requested tasks and POSTs the results back to test.py, which saves them. When all the results of for a task are in, test.py checks them. There are three types of tests currently. "==" tests compare the rendering of a PDF against a master copy. This is not yet implemented because setting up a master copy is complicated. "fbf" tests render all a PDF's pages, then go back to page 1 and render all pages a second time. The renderings from the first round must match the ones from the second round. "load" tests just check that a PDF's pages load without errors. Currently the test harness will only launch a "firefox4" target. This can be a bash script in your pdf.js checkout, pdf.js/firefox4, something like the following #!/bin/bash dist="/path/to/firefox4/installation" profile=`mktemp -dt 'pdf.js-test-ff-profile-XXXXXXXXXX'` $dist/firefox -no-remote -profile $profile $* rm -rf $profile (Yes, this script doesn't clean up properly on early termination.) It's possible to run the tests in a normal browsing session, but that might be annoying. With that set up, run the harness like so python test.py If all goes well, you'll see all "TEST-PASS" messages printed to stdout. If something goes wrong, you'll see "TEST-UNEXPECTED-FAIL" printed to stdout.
2011-06-19 10:09:21 +09:00
]