Browse Source

Implement support for stamp annotations

Tim van der Meij 8 years ago
parent
commit
400e4aae0e
No known key found for this signature in database
GPG Key ID: 8C3FD2925A5F2762
  1. 12
      src/core/annotation.js
  2. 27
      src/display/annotation_layer.js
  3. 1
      test/pdfs/.gitignore
  4. BIN
      test/pdfs/annotation-stamp.pdf
  5. 7
      test/test_manifest.json
  6. 1
      web/annotation_layer_builder.css

12
src/core/annotation.js

@ -99,6 +99,9 @@ class AnnotationFactory { @@ -99,6 +99,9 @@ class AnnotationFactory {
case 'StrikeOut':
return new StrikeOutAnnotation(parameters);
case 'Stamp':
return new StampAnnotation(parameters);
case 'FileAttachment':
return new FileAttachmentAnnotation(parameters);
@ -946,6 +949,15 @@ class StrikeOutAnnotation extends Annotation { @@ -946,6 +949,15 @@ class StrikeOutAnnotation extends Annotation {
}
}
class StampAnnotation extends Annotation {
constructor(parameters) {
super(parameters);
this.data.annotationType = AnnotationType.STAMP;
this._preparePopup(parameters.dict);
}
}
class FileAttachmentAnnotation extends Annotation {
constructor(parameters) {
super(parameters);

27
src/display/annotation_layer.js

@ -92,6 +92,9 @@ class AnnotationElementFactory { @@ -92,6 +92,9 @@ class AnnotationElementFactory {
case AnnotationType.STRIKEOUT:
return new StrikeOutAnnotationElement(parameters);
case AnnotationType.STAMP:
return new StampAnnotationElement(parameters);
case AnnotationType.FILEATTACHMENT:
return new FileAttachmentAnnotationElement(parameters);
@ -1004,6 +1007,30 @@ class StrikeOutAnnotationElement extends AnnotationElement { @@ -1004,6 +1007,30 @@ class StrikeOutAnnotationElement extends AnnotationElement {
}
}
class StampAnnotationElement extends AnnotationElement {
constructor(parameters) {
let isRenderable = !!(parameters.data.hasPopup ||
parameters.data.title || parameters.data.contents);
super(parameters, isRenderable, /* ignoreBorder = */ true);
}
/**
* Render the stamp annotation's HTML element in the empty container.
*
* @public
* @memberof StampAnnotationElement
* @returns {HTMLSectionElement}
*/
render() {
this.container.className = 'stampAnnotation';
if (!this.data.hasPopup) {
this._createPopup(this.container, null, this.data);
}
return this.container;
}
}
class FileAttachmentAnnotationElement extends AnnotationElement {
constructor(parameters) {
super(parameters, /* isRenderable = */ true);

1
test/pdfs/.gitignore vendored

@ -285,6 +285,7 @@ @@ -285,6 +285,7 @@
!annotation-highlight.pdf
!annotation-line.pdf
!annotation-square-circle.pdf
!annotation-stamp.pdf
!annotation-fileattachment.pdf
!annotation-text-widget.pdf
!annotation-choice-widget.pdf

BIN
test/pdfs/annotation-stamp.pdf

Binary file not shown.

7
test/test_manifest.json

@ -3583,6 +3583,13 @@ @@ -3583,6 +3583,13 @@
"type": "eq",
"annotations": true
},
{ "id": "annotation-stamp",
"file": "pdfs/annotation-stamp.pdf",
"md5": "0a04d7ce1ad103cb3c033d26855d6ec7",
"rounds": 1,
"type": "eq",
"annotations": true
},
{ "id": "annotation-fileattachment",
"file": "pdfs/annotation-fileattachment.pdf",
"md5": "d20ecee4b53c81b2dd44c8715a1b4a83",

1
web/annotation_layer_builder.css

@ -191,6 +191,7 @@ @@ -191,6 +191,7 @@
.annotationLayer .lineAnnotation svg line,
.annotationLayer .squareAnnotation svg rect,
.annotationLayer .circleAnnotation svg ellipse,
.annotationLayer .stampAnnotation,
.annotationLayer .fileAttachmentAnnotation {
cursor: pointer;
}

Loading…
Cancel
Save