Implement free text annotations

This commit is contained in:
Tim van der Meij 2019-04-13 18:45:22 +02:00
parent 62dc431af6
commit ae2a4dc3dd
No known key found for this signature in database
GPG Key ID: 8C3FD2925A5F2762
6 changed files with 47 additions and 0 deletions

View File

@ -92,6 +92,9 @@ class AnnotationFactory {
case 'Popup':
return new PopupAnnotation(parameters);
case 'FreeText':
return new FreeTextAnnotation(parameters);
case 'Line':
return new LineAnnotation(parameters);
@ -964,6 +967,14 @@ class PopupAnnotation extends Annotation {
}
}
class FreeTextAnnotation extends MarkupAnnotation {
constructor(parameters) {
super(parameters);
this.data.annotationType = AnnotationType.FREETEXT;
}
}
class LineAnnotation extends MarkupAnnotation {
constructor(parameters) {
super(parameters);

View File

@ -71,6 +71,9 @@ class AnnotationElementFactory {
case AnnotationType.POPUP:
return new PopupAnnotationElement(parameters);
case AnnotationType.FREETEXT:
return new FreeTextAnnotationElement(parameters);
case AnnotationType.LINE:
return new LineAnnotationElement(parameters);
@ -807,6 +810,30 @@ class PopupElement {
}
}
class FreeTextAnnotationElement extends AnnotationElement {
constructor(parameters) {
const isRenderable = !!(parameters.data.hasPopup ||
parameters.data.title || parameters.data.contents);
super(parameters, isRenderable, /* ignoreBorder = */ true);
}
/**
* Render the free text annotation's HTML element in the empty container.
*
* @public
* @memberof FreeTextAnnotationElement
* @returns {HTMLSectionElement}
*/
render() {
this.container.className = 'freeTextAnnotation';
if (!this.data.hasPopup) {
this._createPopup(this.container, null, this.data);
}
return this.container;
}
}
class LineAnnotationElement extends AnnotationElement {
constructor(parameters) {
let isRenderable = !!(parameters.data.hasPopup ||

View File

@ -323,6 +323,7 @@
!annotation-strikeout.pdf
!annotation-squiggly.pdf
!annotation-highlight.pdf
!annotation-freetext.pdf
!annotation-line.pdf
!annotation-square-circle.pdf
!annotation-stamp.pdf

BIN
test/pdfs/annotation-freetext.pdf Executable file

Binary file not shown.

View File

@ -4007,6 +4007,13 @@
"type": "eq",
"annotations": true
},
{ "id": "annotation-freetext",
"file": "pdfs/annotation-freetext.pdf",
"md5": "6ca19ce632ead3aed08f22e588510e2f",
"rounds": 1,
"type": "eq",
"annotations": true
},
{ "id": "annotation-line",
"file": "pdfs/annotation-line.pdf",
"md5": "fde60608be2748f10fb6522cba425ca1",

View File

@ -183,6 +183,7 @@
.annotationLayer .underlineAnnotation,
.annotationLayer .squigglyAnnotation,
.annotationLayer .strikeoutAnnotation,
.annotationLayer .freeTextAnnotation,
.annotationLayer .lineAnnotation svg line,
.annotationLayer .squareAnnotation svg rect,
.annotationLayer .circleAnnotation svg ellipse,