mirror of
https://github.com/mozilla/pdf.js.git
synced 2025-04-26 10:08:06 +02:00
[api-minor] Add support for OpenAction destinations (issue 10332)
Note that the OpenAction dictionary may contain other information besides just a destination array, e.g. instructions for auto-printing[1]. Given first of all that an arbitrary `Dict` cannot be sent from the Worker (since cloning would fail), and second of all that the data obviously needs to be validated, this patch purposely only adds support for fetching a destination from the OpenAction entry[2]. --- [1] This information is, currently in PDF.js, being included through the `getJavaScript` API method. [2] This significantly reduces the complexity of the implementation, which seems fine for now. If there's ever need for other kinds of OpenAction to be fetched, additional API methods could/should be implemented as necessary (could e.g. follow the `getOpenActionWhatever` naming scheme).
This commit is contained in:
parent
ba2edeae18
commit
b05f053287
4 changed files with 57 additions and 0 deletions
|
@ -392,6 +392,28 @@ class Catalog {
|
|||
return shadow(this, 'pageMode', pageMode);
|
||||
}
|
||||
|
||||
get openActionDestination() {
|
||||
const obj = this.catDict.get('OpenAction');
|
||||
let openActionDest = null;
|
||||
|
||||
if (isDict(obj)) {
|
||||
// Convert the OpenAction dictionary into a format that works with
|
||||
// `parseDestDictionary`, to avoid having to re-implement those checks.
|
||||
const destDict = new Dict(this.xref);
|
||||
destDict.set('A', obj);
|
||||
|
||||
const resultObj = { url: null, dest: null, };
|
||||
Catalog.parseDestDictionary({ destDict, resultObj, });
|
||||
|
||||
if (Array.isArray(resultObj.dest)) {
|
||||
openActionDest = resultObj.dest;
|
||||
}
|
||||
} else if (Array.isArray(obj)) {
|
||||
openActionDest = obj;
|
||||
}
|
||||
return shadow(this, 'openActionDestination', openActionDest);
|
||||
}
|
||||
|
||||
get attachments() {
|
||||
const obj = this.catDict.get('Names');
|
||||
let attachments = null;
|
||||
|
|
|
@ -531,6 +531,10 @@ var WorkerMessageHandler = {
|
|||
return pdfManager.ensureCatalog('pageMode');
|
||||
});
|
||||
|
||||
handler.on('getOpenActionDestination', function(data) {
|
||||
return pdfManager.ensureCatalog('openActionDestination');
|
||||
});
|
||||
|
||||
handler.on('GetAttachments',
|
||||
function wphSetupGetAttachments(data) {
|
||||
return pdfManager.ensureCatalog('attachments');
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue