Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update the noHTML flag to take into account the hasOwnCanvas one (fixes #17069) #17070

Merged
merged 1 commit into from
Oct 5, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 18 additions & 1 deletion src/core/annotation.js
Original file line number Diff line number Diff line change
Expand Up @@ -2845,6 +2845,7 @@ class ButtonWidgetAnnotation extends WidgetAnnotation {
this._processRadioButton(params);
} else if (this.data.pushButton) {
this.data.hasOwnCanvas = true;
this.data.noHTML = false;
this._processPushButton(params);
} else {
warn("Invalid field flags for button widget annotation");
Expand Down Expand Up @@ -3570,6 +3571,7 @@ class SignatureWidgetAnnotation extends WidgetAnnotation {
// to the main-thread (issue 10347).
this.data.fieldValue = null;
this.data.hasOwnCanvas = this.data.noRotate;
this.data.noHTML = !this.data.hasOwnCanvas;
}

getFieldObject() {
Expand All @@ -3591,6 +3593,7 @@ class TextAnnotation extends MarkupAnnotation {
// No rotation for Text (see 12.5.6.4).
this.data.noRotate = true;
this.data.hasOwnCanvas = this.data.noRotate;
this.data.noHTML = false;

const { dict } = params;
this.data.annotationType = AnnotationType.TEXT;
Expand Down Expand Up @@ -3643,6 +3646,11 @@ class PopupAnnotation extends Annotation {

const { dict } = params;
this.data.annotationType = AnnotationType.POPUP;

// A pop-up is never rendered on the main canvas so we must render its HTML
// version.
this.data.noHTML = false;

if (
this.data.rect[0] === this.data.rect[2] ||
this.data.rect[1] === this.data.rect[3]
Expand Down Expand Up @@ -3712,7 +3720,10 @@ class FreeTextAnnotation extends MarkupAnnotation {
constructor(params) {
super(params);

this.data.hasOwnCanvas = true;
// It uses its own canvas in order to be hidden if edited.
// But if it has the noHTML flag, it means that we don't want to be able
// to modify it so we can just draw it on the main canvas.
this.data.hasOwnCanvas = !this.data.noHTML;

const { evaluatorOptions, xref } = params;
this.data.annotationType = AnnotationType.FREETEXT;
Expand Down Expand Up @@ -3926,6 +3937,7 @@ class LineAnnotation extends MarkupAnnotation {
const { dict, xref } = params;
this.data.annotationType = AnnotationType.LINE;
this.data.hasOwnCanvas = this.data.noRotate;
this.data.noHTML = false;

const lineCoordinates = dict.getArray("L");
this.data.lineCoordinates = Util.normalizeRect(lineCoordinates);
Expand Down Expand Up @@ -3993,6 +4005,7 @@ class SquareAnnotation extends MarkupAnnotation {
const { dict, xref } = params;
this.data.annotationType = AnnotationType.SQUARE;
this.data.hasOwnCanvas = this.data.noRotate;
this.data.noHTML = false;

if (!this.appearance) {
// The default stroke color is black.
Expand Down Expand Up @@ -4105,6 +4118,7 @@ class PolylineAnnotation extends MarkupAnnotation {
const { dict, xref } = params;
this.data.annotationType = AnnotationType.POLYLINE;
this.data.hasOwnCanvas = this.data.noRotate;
this.data.noHTML = false;
this.data.vertices = [];

if (
Expand Down Expand Up @@ -4193,6 +4207,7 @@ class InkAnnotation extends MarkupAnnotation {
super(params);

this.data.hasOwnCanvas = this.data.noRotate;
this.data.noHTML = false;

const { dict, xref } = params;
this.data.annotationType = AnnotationType.INK;
Expand Down Expand Up @@ -4531,6 +4546,7 @@ class StampAnnotation extends MarkupAnnotation {

this.data.annotationType = AnnotationType.STAMP;
this.data.hasOwnCanvas = this.data.noRotate;
this.data.noHTML = false;
}

static async createImage(bitmap, xref) {
Expand Down Expand Up @@ -4680,6 +4696,7 @@ class FileAttachmentAnnotation extends MarkupAnnotation {

this.data.annotationType = AnnotationType.FILEATTACHMENT;
this.data.hasOwnCanvas = this.data.noRotate;
this.data.noHTML = false;
this.data.file = file.serializable;

const name = dict.get("Name");
Expand Down
1 change: 1 addition & 0 deletions test/pdfs/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -615,3 +615,4 @@
!tagged_stamp.pdf
!bug1851498.pdf
!issue17065.pdf
!issue17069.pdf
Binary file added test/pdfs/issue17069.pdf
Binary file not shown.
8 changes: 8 additions & 0 deletions test/test_manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -8156,5 +8156,13 @@
"md5": "16a70b9941ba049a61612109e0e1d719",
"rounds": 1,
"type": "eq"
},
{
"id": "issue17069",
"file": "pdfs/issue17069.pdf",
"md5": "e44a3920c83d8e7be112c52da4db8e57",
"rounds": 1,
"type": "eq",
"annotations": true
}
]