an-open-web document outline and bookmarks
This commit is contained in:
parent
75d7649c49
commit
5326f262e0
12
pdf.js
12
pdf.js
@ -3541,6 +3541,11 @@ var Catalog = (function() {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
get destinations() {
|
get destinations() {
|
||||||
|
function fetchDestination(ref) {
|
||||||
|
var dest = xref.fetchIfRef(ref);
|
||||||
|
return IsDict(dest) ? dest.get('D') : dest;
|
||||||
|
}
|
||||||
|
|
||||||
var xref = this.xref;
|
var xref = this.xref;
|
||||||
var dests = {}, nameTreeRef, nameDictionaryRef;
|
var dests = {}, nameTreeRef, nameDictionaryRef;
|
||||||
var obj = this.catDict.get('Names');
|
var obj = this.catDict.get('Names');
|
||||||
@ -3551,10 +3556,10 @@ var Catalog = (function() {
|
|||||||
|
|
||||||
if (nameDictionaryRef) {
|
if (nameDictionaryRef) {
|
||||||
// reading simple destination dictionary
|
// reading simple destination dictionary
|
||||||
obj = xref.fetch(nameDictionaryRef);
|
obj = xref.fetchIfRef(nameDictionaryRef);
|
||||||
obj.forEach(function(key, value) {
|
obj.forEach(function(key, value) {
|
||||||
if (!value) return;
|
if (!value) return;
|
||||||
dests[key] = xref.fetch(value).get('D');
|
dests[key] = fetchDestination(value);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
if (nameTreeRef) {
|
if (nameTreeRef) {
|
||||||
@ -3578,8 +3583,7 @@ var Catalog = (function() {
|
|||||||
}
|
}
|
||||||
var names = obj.get('Names');
|
var names = obj.get('Names');
|
||||||
for (i = 0, n = names.length; i < n; i += 2) {
|
for (i = 0, n = names.length; i < n; i += 2) {
|
||||||
var dest = xref.fetch(names[i + 1]);
|
dests[names[i]] = fetchDestination(names[i + 1]);
|
||||||
dests[names[i]] = IsDict(dest) ? dest.get('D') : dest;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -91,7 +91,8 @@ var PDFView = {
|
|||||||
return; // invalid destination
|
return; // invalid destination
|
||||||
// dest array looks like that: <page-ref> </XYZ|FitXXX> <args..>
|
// dest array looks like that: <page-ref> </XYZ|FitXXX> <args..>
|
||||||
var destRef = dest[0];
|
var destRef = dest[0];
|
||||||
var pageNumber = this.pagesRefMap[destRef.num + ' ' + destRef.gen + ' R'];
|
var pageNumber = destRef instanceof Object ?
|
||||||
|
this.pagesRefMap[destRef.num + ' ' + destRef.gen + ' R'] : (destRef + 1);
|
||||||
if (pageNumber) {
|
if (pageNumber) {
|
||||||
this.page = pageNumber;
|
this.page = pageNumber;
|
||||||
// TODO scroll to specific region on the page, the precise scaling
|
// TODO scroll to specific region on the page, the precise scaling
|
||||||
|
Loading…
x
Reference in New Issue
Block a user