Browse Source

[api-minor] Add support for PageMode in the API (issue 8657)

Please refer to https://wwwimages2.adobe.com/content/dam/Adobe/en/devnet/pdf/pdfs/PDF32000_2008.pdf#page=82.
Jonas Jenwald 8 years ago
parent
commit
16c5d41c5b
  1. 18
      src/core/obj.js
  2. 4
      src/core/worker.js
  3. 11
      src/display/api.js
  4. 22
      test/unit/api_spec.js

18
src/core/obj.js

@ -313,6 +313,24 @@ var Catalog = (function CatalogClosure() { @@ -313,6 +313,24 @@ var Catalog = (function CatalogClosure() {
return pageLabels;
},
get pageMode() {
let obj = this.catDict.get('PageMode');
let pageMode = 'UseNone'; // Default value.
if (isName(obj)) {
switch (obj.name) {
case 'UseNone':
case 'UseOutlines':
case 'UseThumbs':
case 'FullScreen':
case 'UseOC':
case 'UseAttachments':
pageMode = obj.name;
}
}
return shadow(this, 'pageMode', pageMode);
},
get attachments() {
var xref = this.xref;
var attachments = null, nameTreeRef;

4
src/core/worker.js

@ -770,6 +770,10 @@ var WorkerMessageHandler = { @@ -770,6 +770,10 @@ var WorkerMessageHandler = {
}
);
handler.on('GetPageMode', function wphSetupGetPageMode(data) {
return pdfManager.ensureCatalog('pageMode');
});
handler.on('GetAttachments',
function wphSetupGetAttachments(data) {
return pdfManager.ensureCatalog('attachments');

11
src/display/api.js

@ -568,6 +568,13 @@ var PDFDocumentProxy = (function PDFDocumentProxyClosure() { @@ -568,6 +568,13 @@ var PDFDocumentProxy = (function PDFDocumentProxyClosure() {
getPageLabels: function PDFDocumentProxy_getPageLabels() {
return this.transport.getPageLabels();
},
/**
* @return {Promise} A promise that is resolved with a {string} containing
* the PageMode name.
*/
getPageMode() {
return this.transport.getPageMode();
},
/**
* @return {Promise} A promise that is resolved with a lookup table for
* mapping named attachments to their content.
@ -1939,6 +1946,10 @@ var WorkerTransport = (function WorkerTransportClosure() { @@ -1939,6 +1946,10 @@ var WorkerTransport = (function WorkerTransportClosure() {
return this.messageHandler.sendWithPromise('GetPageLabels', null);
},
getPageMode() {
return this.messageHandler.sendWithPromise('GetPageMode', null);
},
getAttachments: function WorkerTransport_getAttachments() {
return this.messageHandler.sendWithPromise('GetAttachments', null);
},

22
test/unit/api_spec.js

@ -630,6 +630,28 @@ describe('api', function() { @@ -630,6 +630,28 @@ describe('api', function() {
});
});
it('gets default page mode', function(done) {
var loadingTask = getDocument(buildGetDocumentParams('tracemonkey.pdf'));
loadingTask.promise.then(function(pdfDocument) {
return pdfDocument.getPageMode();
}).then(function(mode) {
expect(mode).toEqual('UseNone');
loadingTask.destroy().then(done);
}).catch(function (reason) {
done.fail(reason);
});
});
it('gets non-default page mode', function(done) {
doc.getPageMode().then(function(mode) {
expect(mode).toEqual('UseOutlines');
done();
}).catch(function(reason) {
done.fail(reason);
});
});
it('gets non-existent attachments', function(done) {
var promise = doc.getAttachments();
promise.then(function (data) {

Loading…
Cancel
Save