an-open-web document outline and bookmarks

This commit is contained in:
notmasteryet 2011-08-29 20:59:38 -05:00
parent 75d7649c49
commit 5326f262e0
2 changed files with 10 additions and 5 deletions

12
pdf.js
View File

@ -3541,6 +3541,11 @@ var Catalog = (function() {
}
},
get destinations() {
function fetchDestination(ref) {
var dest = xref.fetchIfRef(ref);
return IsDict(dest) ? dest.get('D') : dest;
}
var xref = this.xref;
var dests = {}, nameTreeRef, nameDictionaryRef;
var obj = this.catDict.get('Names');
@ -3551,10 +3556,10 @@ var Catalog = (function() {
if (nameDictionaryRef) {
// reading simple destination dictionary
obj = xref.fetch(nameDictionaryRef);
obj = xref.fetchIfRef(nameDictionaryRef);
obj.forEach(function(key, value) {
if (!value) return;
dests[key] = xref.fetch(value).get('D');
dests[key] = fetchDestination(value);
});
}
if (nameTreeRef) {
@ -3578,8 +3583,7 @@ var Catalog = (function() {
}
var names = obj.get('Names');
for (i = 0, n = names.length; i < n; i += 2) {
var dest = xref.fetch(names[i + 1]);
dests[names[i]] = IsDict(dest) ? dest.get('D') : dest;
dests[names[i]] = fetchDestination(names[i + 1]);
}
}
}

View File

@ -91,7 +91,8 @@ var PDFView = {
return; // invalid destination
// dest array looks like that: <page-ref> </XYZ|FitXXX> <args..>
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) {
this.page = pageNumber;
// TODO scroll to specific region on the page, the precise scaling