1
0
Fork 0
mirror of https://github.com/mozilla/pdf.js.git synced 2025-04-19 14:48:08 +02:00

Merge pull request #17905 from timvandermeij/annotation-dash-array

Fix annotation border style parsing by handling empty dash arrays
This commit is contained in:
Tim van der Meij 2024-04-08 18:11:10 +02:00 committed by GitHub
commit 2aeafc0d55
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 22 additions and 4 deletions

View file

@ -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) {
@ -1488,7 +1488,7 @@ class AnnotationBorderStyle {
allZeros = false;
}
}
if (isValid && !allZeros) {
if (dashArray.length === 0 || (isValid && !allZeros)) {
this.dashArray = dashArray;
if (forceStyle) {

View file

@ -514,6 +514,7 @@
!issue11549_reduced.pdf
!issue8097_reduced.pdf
!issue15262.pdf
!issue17904.pdf
!bug1743245.pdf
!quadpoints.pdf
!transparent.pdf

BIN
test/pdfs/issue17904.pdf Normal file

Binary file not shown.

View file

@ -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",

View file

@ -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);