mirror of
https://github.com/mozilla/pdf.js.git
synced 2025-04-22 16:18:08 +02:00
[api-minor] Let getAnnotations
fetch all annotations by default, unless an intent is specified
Currently `getAnnotations` will *only* fetch annotations that are either `viewable` or `printable`. This is "hidden" inside the `core.js` file, meaning that API consumers might be confused as to why they are not recieving *all* the annotations present for a page. I thus think that the API should, by default, return *all* available annotations unless specifically told otherwise. In e.g. the default viewer, we obviously only want to display annotations that are `viewable`, hence this patch adds an `intent` parameter to `getAnnotations` that makes it possible to decide if only `viewable` or `printable` annotations should be fetched.
This commit is contained in:
parent
aa75c4fe4e
commit
b05652ca97
6 changed files with 55 additions and 17 deletions
|
@ -252,10 +252,16 @@ var Page = (function PageClosure() {
|
|||
});
|
||||
},
|
||||
|
||||
getAnnotationsData: function Page_getAnnotationsData() {
|
||||
getAnnotationsData: function Page_getAnnotationsData(intent) {
|
||||
var annotations = this.annotations;
|
||||
var annotationsData = [];
|
||||
for (var i = 0, n = annotations.length; i < n; ++i) {
|
||||
if (intent) {
|
||||
if (!(intent === 'display' && annotations[i].viewable) &&
|
||||
!(intent === 'print' && annotations[i].printable)) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
annotationsData.push(annotations[i].data);
|
||||
}
|
||||
return annotationsData;
|
||||
|
@ -268,7 +274,7 @@ var Page = (function PageClosure() {
|
|||
for (var i = 0, n = annotationRefs.length; i < n; ++i) {
|
||||
var annotationRef = annotationRefs[i];
|
||||
var annotation = annotationFactory.create(this.xref, annotationRef);
|
||||
if (annotation && (annotation.viewable || annotation.printable)) {
|
||||
if (annotation) {
|
||||
annotations.push(annotation);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -399,7 +399,7 @@ var WorkerMessageHandler = PDFJS.WorkerMessageHandler = {
|
|||
|
||||
handler.on('GetDestination',
|
||||
function wphSetupGetDestination(data) {
|
||||
return pdfManager.ensureCatalog('getDestination', [ data.id ]);
|
||||
return pdfManager.ensureCatalog('getDestination', [data.id]);
|
||||
}
|
||||
);
|
||||
|
||||
|
@ -447,7 +447,7 @@ var WorkerMessageHandler = PDFJS.WorkerMessageHandler = {
|
|||
|
||||
handler.on('GetAnnotations', function wphSetupGetAnnotations(data) {
|
||||
return pdfManager.getPage(data.pageIndex).then(function(page) {
|
||||
return pdfManager.ensure(page, 'getAnnotationsData', []);
|
||||
return pdfManager.ensure(page, 'getAnnotationsData', [data.intent]);
|
||||
});
|
||||
});
|
||||
|
||||
|
|
|
@ -649,6 +649,16 @@ var PDFDocumentProxy = (function PDFDocumentProxyClosure() {
|
|||
* @property {string} fontFamily - possible font family
|
||||
*/
|
||||
|
||||
/**
|
||||
* Page annotation parameters.
|
||||
*
|
||||
* @typedef {Object} GetAnnotationsParameters
|
||||
* @param {string} intent - Determines the annotations that will be fetched,
|
||||
* can be either 'display' (viewable annotations) or 'print'
|
||||
* (printable annotations).
|
||||
* If the parameter is omitted, all annotations are fetched.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Page render parameters.
|
||||
*
|
||||
|
@ -737,12 +747,17 @@ var PDFPageProxy = (function PDFPageProxyClosure() {
|
|||
return new PDFJS.PageViewport(this.view, scale, rotate, 0, 0);
|
||||
},
|
||||
/**
|
||||
* @param {GetAnnotationsParameters} params - Annotation parameters.
|
||||
* @return {Promise} A promise that is resolved with an {Array} of the
|
||||
* annotation objects.
|
||||
*/
|
||||
getAnnotations: function PDFPageProxy_getAnnotations() {
|
||||
if (!this.annotationsPromise) {
|
||||
this.annotationsPromise = this.transport.getAnnotations(this.pageIndex);
|
||||
getAnnotations: function PDFPageProxy_getAnnotations(params) {
|
||||
var intent = (params && params.intent) || null;
|
||||
|
||||
if (!this.annotationsPromise || this.annotationsIntent !== intent) {
|
||||
this.annotationsPromise = this.transport.getAnnotations(this.pageIndex,
|
||||
intent);
|
||||
this.annotationsIntent = intent;
|
||||
}
|
||||
return this.annotationsPromise;
|
||||
},
|
||||
|
@ -1470,9 +1485,11 @@ var WorkerTransport = (function WorkerTransportClosure() {
|
|||
return this.messageHandler.sendWithPromise('GetPageIndex', { ref: ref });
|
||||
},
|
||||
|
||||
getAnnotations: function WorkerTransport_getAnnotations(pageIndex) {
|
||||
return this.messageHandler.sendWithPromise('GetAnnotations',
|
||||
{ pageIndex: pageIndex });
|
||||
getAnnotations: function WorkerTransport_getAnnotations(pageIndex, intent) {
|
||||
return this.messageHandler.sendWithPromise('GetAnnotations', {
|
||||
pageIndex: pageIndex,
|
||||
intent: intent,
|
||||
});
|
||||
},
|
||||
|
||||
getDestinations: function WorkerTransport_getDestinations() {
|
||||
|
@ -1480,7 +1497,7 @@ var WorkerTransport = (function WorkerTransportClosure() {
|
|||
},
|
||||
|
||||
getDestination: function WorkerTransport_getDestination(id) {
|
||||
return this.messageHandler.sendWithPromise('GetDestination', { id: id } );
|
||||
return this.messageHandler.sendWithPromise('GetDestination', { id: id });
|
||||
},
|
||||
|
||||
getAttachments: function WorkerTransport_getAttachments() {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue