Implement contents for every annotation type

The specification states that `Contents` can be available for every
annotation types instead of only for markup annotations.
This commit is contained in:
Tim van der Meij 2019-05-18 15:52:17 +02:00
parent 1421b2f205
commit cf07918ccb
No known key found for this signature in database
GPG Key ID: 8C3FD2925A5F2762
2 changed files with 30 additions and 2 deletions

View File

@ -173,8 +173,9 @@ function getTransformMatrix(rect, bbox, matrix) {
class Annotation {
constructor(params) {
let dict = params.dict;
const dict = params.dict;
this.setContents(dict.get('Contents'));
this.setCreationDate(dict.get('CreationDate'));
this.setModificationDate(dict.get('M'));
this.setFlags(dict.get('F'));
@ -188,6 +189,7 @@ class Annotation {
annotationFlags: this.flags,
borderStyle: this.borderStyle,
color: this.color,
contents: this.contents,
creationDate: this.creationDate,
hasAppearance: !!this.appearance,
id: params.id,
@ -242,6 +244,19 @@ class Annotation {
return this._isPrintable(this.flags);
}
/**
* Set the contents.
*
* @public
* @memberof Annotation
* @param {string} contents - Text to display for the annotation or, if the
* type of annotation does not display text, a
* description of the annotation's contents
*/
setContents(contents) {
this.contents = stringToPDFString(contents || '');
}
/**
* Set the creation date.
*
@ -623,7 +638,6 @@ class MarkupAnnotation extends Annotation {
this.data.hasPopup = dict.has('Popup');
this.data.title = stringToPDFString(dict.get('T') || '');
this.data.contents = stringToPDFString(dict.get('Contents') || '');
}
}

View File

@ -131,6 +131,20 @@ describe('annotation', function() {
dict = ref = null;
});
it('should set and get valid contents', function() {
const annotation = new Annotation({ dict, ref, });
annotation.setContents('Foo bar baz');
expect(annotation.contents).toEqual('Foo bar baz');
});
it('should not set and get invalid contents', function() {
const annotation = new Annotation({ dict, ref, });
annotation.setContents(undefined);
expect(annotation.contents).toEqual('');
});
it('should set and get a valid creation date', function() {
const annotation = new Annotation({ dict, ref, });
annotation.setCreationDate('D:20190422');