mirror of
https://github.com/zen-browser/pdf.js.git
synced 2025-07-09 17:55:37 +02:00
Improve handling of named destinations in out-of-order NameTrees (PR 10274 follow-up)
According to the specification, see https://web.archive.org/web/20210404042322if_/https://www.adobe.com/content/dam/acom/en/devnet/acrobat/pdfs/PDF32000_2008.pdf#G6.2384179, the keys of a NameTree/NumberTree should be ordered. For corrupt PDF files, which violate this assumption, it's thus possible that trying to lookup a single entry fails. Previously, in PR 10274, we implemented a fallback that only applies to the "bottom" node of a NameTree/NumberTree, which in general might not actually help for sufficiently corrupt NameTree/NumberTree data. Instead we remove the current *limited* fallback from `NameOrNumberTree.get`, and defer to the call-site to handle this case explicitly e.g. by using `NameOrNumberTree.getAll` for data where that makes sense. For well-formed documents, these changes should *not* lead to any additional data fetching/parsing. Finally, as part of these changes, the validation of named destination data is improved in the `Catalog` and a new unit-test is also added.
This commit is contained in:
parent
faf6b10939
commit
8d5689387b
6 changed files with 58 additions and 27 deletions
|
@ -730,8 +730,9 @@ class PDFDocumentProxy {
|
|||
|
||||
/**
|
||||
* @param {string} id - The named destination to get.
|
||||
* @returns {Promise<Array<any>>} A promise that is resolved with all
|
||||
* information of the given named destination.
|
||||
* @returns {Promise<Array<any> | null>} A promise that is resolved with all
|
||||
* information of the given named destination, or `null` when the named
|
||||
* destination is not present in the PDF file.
|
||||
*/
|
||||
getDestination(id) {
|
||||
return this._transport.getDestination(id);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue