1
0
Fork 0
mirror of https://github.com/mozilla/pdf.js.git synced 2025-04-29 15:47:57 +02:00
pdf.js/test/unit
Jonas Jenwald b354682dd6 [api-minor] Let LinkAnnotation/PDFLinkService_getDestinationHash return a stringified version of the destination array for explicit destinations
Currently for explicit destinations, compared to named destinations, we manually try to build a hash that often times is a quite poor representation of the *actual* destination. (Currently this only, kind of, works for `\XYZ` destinations.)
For PDF files using explicit destinations, this can make it difficult/impossible to obtain a link to a specific section of the document through the URL.

Note that in practice most PDF files, especially newer ones, use named destinations and these are thus unnaffected by this patch.
This patch also fixes an existing issue in `PDFLinkService_getDestinationHash`, where a named destination consisting of only a number would not be handled correctly.

With the added, and already existing, type checks in place for destinations, I really don't think that this patch exposes any "sensitive" internal destination code not already accessible through normal hash parameters.

*Please note:* Just trying to improve the algorithm that generates the hash is unfortunately not possible in general, since there are a number of cases where it will simply never work well.

 - First of all, note that `getDestinationHash` currently relies on the `_pagesRefCache`, hence it's possible that the hash returned is empty during e.g. ranged/streamed loading of a PDF file.

 - Second of all, the currently computed hash is actually dependent on the document rotation. With named destinations, the fetched internal destination array is rotational invariant (as it should be), but this will not hold in general for the hash. We can easily avoid this issue by using a stringified destination array.

 - Third of all, note that according to the PDF specification[1], `GoToR` destinations may actually contain explicit destination arrays. Since we cannot really construct a hash in `annotation.js`, we currently have no good way to support those. Even though this case seems *very* rare in practice (I've not actually seen such a PDF file), it's in the specification, and this patch allows us to support that for "free".

---
[1] http://www.adobe.com/content/dam/Adobe/en/devnet/acrobat/pdfs/PDF32000_2008.pdf#G11.1951685
2016-05-21 14:14:07 +02:00
..
annotation_layer_spec.js [api-minor] Let LinkAnnotation/PDFLinkService_getDestinationHash return a stringified version of the destination array for explicit destinations 2016-05-21 14:14:07 +02:00
api_spec.js [api-minor] Let Catalog_getPageIndex check that the Ref actually points to a /Page dictionary 2016-05-21 14:13:41 +02:00
cff_parser_spec.js Split the font_spec.js unit-tests into cff_parser_spec.js and type1_parser_spec.js 2016-05-03 09:37:36 +02:00
cmap_spec.js Remove the remaining usages of new {Name,Cmd} in favor of {Name,Cmd}.get 2016-04-08 12:14:05 +02:00
crypto_spec.js Add a couple of CipherTransformFactory unit-tests to check that blank passwords are correctly rejected 2016-04-16 20:24:55 +02:00
dom_utils_spec.js Use beforeAll/afterAll in isExternalLinkTargetSet in dom_utils_spec.js (issue 6905) 2016-04-07 14:00:40 +02:00
evaluator_spec.js Updates Jasmine version. 2016-03-29 09:34:13 -05:00
function_spec.js Updates Jasmine version. 2016-03-29 09:34:13 -05:00
jasmine-boot.js Add basic unit-tests for unicode.js 2016-05-19 19:45:45 +02:00
metadata_spec.js Uses editorconfig to maintain consistent coding styles 2015-11-14 07:32:18 +05:30
network_spec.js Removes hijack describe() hack from unit tests. 2016-04-11 07:37:35 -05:00
parser_spec.js Ensure that Lexer_getName does not fail if a Name contains in invalid usage of the NUMBER SIGN (#) (issue 6692) 2015-11-28 11:59:09 +01:00
primitives_spec.js [api-minor] Let Catalog_getPageIndex check that the Ref actually points to a /Page dictionary 2016-05-21 14:13:41 +02:00
stream_spec.js Updates Jasmine version. 2016-03-29 09:34:13 -05:00
testreporter.js Updates Jasmine version. 2016-03-29 09:34:13 -05:00
type1_parser_spec.js Split the font_spec.js unit-tests into cff_parser_spec.js and type1_parser_spec.js 2016-05-03 09:37:36 +02:00
ui_utils_spec.js Adds EventBus. 2016-04-28 06:57:24 -05:00
unicode_spec.js Add basic unit-tests for unicode.js 2016-05-19 19:45:45 +02:00
unit_test.html Add basic unit-tests for unicode.js 2016-05-19 19:45:45 +02:00
util_spec.js Move isDict unit-tests from util_spec.js to primitives_spec.js 2016-04-16 20:32:46 +02:00