Skip to content

Commit

Permalink
Merge pull request mozilla#17905 from timvandermeij/annotation-dash-a…
Browse files Browse the repository at this point in the history
…rray

Fix annotation border style parsing by handling empty dash arrays
  • Loading branch information
timvandermeij authored Apr 8, 2024
2 parents 5adad89 + d01a0bd commit 2aeafc0
Show file tree
Hide file tree
Showing 5 changed files with 22 additions and 4 deletions.
8 changes: 4 additions & 4 deletions src/core/annotation.js
Original file line number Diff line number Diff line change
Expand Up @@ -1474,9 +1474,9 @@ class AnnotationBorderStyle {
// We validate the dash array, but we do not use it because CSS does not
// allow us to change spacing of dashes. For more information, visit
// http://www.w3.org/TR/css3-background/#the-border-style.
if (Array.isArray(dashArray) && dashArray.length > 0) {
// According to the PDF specification: the elements in `dashArray`
// shall be numbers that are nonnegative and not all equal to zero.
if (Array.isArray(dashArray)) {
// The PDF specification states that elements in the dash array, if
// present, must be non-negative numbers and must not all equal zero.
let isValid = true;
let allZeros = true;
for (const element of dashArray) {
Expand All @@ -1488,7 +1488,7 @@ class AnnotationBorderStyle {
allZeros = false;
}
}
if (isValid && !allZeros) {
if (dashArray.length === 0 || (isValid && !allZeros)) {
this.dashArray = dashArray;

if (forceStyle) {
Expand Down
1 change: 1 addition & 0 deletions test/pdfs/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -514,6 +514,7 @@
!issue11549_reduced.pdf
!issue8097_reduced.pdf
!issue15262.pdf
!issue17904.pdf
!bug1743245.pdf
!quadpoints.pdf
!transparent.pdf
Expand Down
Binary file added test/pdfs/issue17904.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 @@ -3858,6 +3858,14 @@
"type": "eq",
"annotations": true
},
{
"id": "issue17904",
"file": "pdfs/issue17904.pdf",
"md5": "4b8f0b565a61bf068ef72d232c997cef",
"rounds": 1,
"type": "eq",
"annotations": true
},
{
"id": "issue6179_reduced",
"file": "pdfs/issue6179_reduced.pdf",
Expand Down
9 changes: 9 additions & 0 deletions test/unit/annotation_spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -549,6 +549,15 @@ describe("annotation", function () {
expect(borderStyle.dashArray).toEqual([3]);
});

it("should not set the width to zero if the dash array is empty (issue 17904)", function () {
const borderStyle = new AnnotationBorderStyle();
borderStyle.setWidth(3);
borderStyle.setDashArray([]);

expect(borderStyle.width).toEqual(3);
expect(borderStyle.dashArray).toEqual([]);
});

it("should set and get a valid horizontal corner radius", function () {
const borderStyle = new AnnotationBorderStyle();
borderStyle.setHorizontalCornerRadius(3);
Expand Down

0 comments on commit 2aeafc0

Please sign in to comment.