Merge pull request #3557 from timvandermeij/named-actions
Named actions implementation
This commit is contained in:
commit
e5cd027dce
@ -629,6 +629,8 @@ var LinkAnnotation = (function LinkAnnotationClosure() {
|
||||
}
|
||||
data.url = url;
|
||||
data.dest = action.get('D');
|
||||
} else if (linkType === 'Named') {
|
||||
data.action = action.get('N').name;
|
||||
} else {
|
||||
TODO('unrecognized link type: ' + linkType);
|
||||
}
|
||||
|
@ -1614,6 +1614,52 @@ var PageView = function pageView(container, id, scale,
|
||||
link.className = 'internalLink';
|
||||
}
|
||||
|
||||
function bindNamedAction(link, action) {
|
||||
link.onclick = function pageViewSetupNamedActionOnClick() {
|
||||
// See PDF reference, table 8.45 - Named action
|
||||
switch (action) {
|
||||
case 'GoToPage':
|
||||
document.getElementById('pageNumber').focus();
|
||||
break;
|
||||
|
||||
case 'GoBack':
|
||||
PDFHistory.back();
|
||||
break;
|
||||
|
||||
case 'GoForward':
|
||||
PDFHistory.forward();
|
||||
break;
|
||||
|
||||
case 'Find':
|
||||
if (!PDFView.supportsIntegratedFind) {
|
||||
PDFFindBar.toggle();
|
||||
}
|
||||
break;
|
||||
|
||||
case 'NextPage':
|
||||
PDFView.page++;
|
||||
break;
|
||||
|
||||
case 'PrevPage':
|
||||
PDFView.page--;
|
||||
break;
|
||||
|
||||
case 'LastPage':
|
||||
PDFView.page = PDFView.pages.length;
|
||||
break;
|
||||
|
||||
case 'FirstPage':
|
||||
PDFView.page = 1;
|
||||
break;
|
||||
|
||||
default:
|
||||
break; // No action according to spec
|
||||
}
|
||||
return false;
|
||||
};
|
||||
link.className = 'internalLink';
|
||||
}
|
||||
|
||||
pdfPage.getAnnotations().then(function(annotationsData) {
|
||||
viewport = viewport.clone({ dontFlip: true });
|
||||
for (var i = 0; i < annotationsData.length; i++) {
|
||||
@ -1646,7 +1692,11 @@ var PageView = function pageView(container, id, scale,
|
||||
CustomStyle.setProp('transformOrigin', element, transformOriginStr);
|
||||
|
||||
if (data.subtype === 'Link' && !data.url) {
|
||||
bindLink(element, ('dest' in data) ? data.dest : null);
|
||||
if (data.action) {
|
||||
bindNamedAction(element, data.action);
|
||||
} else {
|
||||
bindLink(element, ('dest' in data) ? data.dest : null);
|
||||
}
|
||||
}
|
||||
|
||||
annotationsDiv.appendChild(element);
|
||||
|
Loading…
x
Reference in New Issue
Block a user