Skip to content

Commit c5449a9

Browse files
committed
Ignore empty paths when optimizing constructPath operations (issue 19971)
Note how we're handling empty paths in [src/display/canvas.js](https://github.com/mozilla/pdf.js/blob/a8e05d82e23056ddc2c28f83854b6f74ffa4bebc/src/display/canvas.js#L1423-L1428), hence we need add similar code in the `QueueOptimizer` as well.
1 parent a8e05d8 commit c5449a9

File tree

4 files changed

+23
-12
lines changed

4 files changed

+23
-12
lines changed

src/core/operator_list.js

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -519,18 +519,20 @@ addState(
519519
const transform = argsArray[iFirstTransform];
520520
const [, [buffer], minMax] = args;
521521

522-
Util.scaleMinMax(transform, minMax);
523-
for (let k = 0, kk = buffer.length; k < kk; ) {
524-
switch (buffer[k++]) {
525-
case DrawOPS.moveTo:
526-
case DrawOPS.lineTo:
527-
Util.applyTransform(buffer, transform, k);
528-
k += 2;
529-
break;
530-
case DrawOPS.curveTo:
531-
Util.applyTransformToBezier(buffer, transform, k);
532-
k += 6;
533-
break;
522+
if (minMax) {
523+
Util.scaleMinMax(transform, minMax);
524+
for (let k = 0, kk = buffer.length; k < kk; ) {
525+
switch (buffer[k++]) {
526+
case DrawOPS.moveTo:
527+
case DrawOPS.lineTo:
528+
Util.applyTransform(buffer, transform, k);
529+
k += 2;
530+
break;
531+
case DrawOPS.curveTo:
532+
Util.applyTransformToBezier(buffer, transform, k);
533+
k += 6;
534+
break;
535+
}
534536
}
535537
}
536538
// Replace queue items.

test/pdfs/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -622,6 +622,7 @@
622622
!bug1815476.pdf
623623
!issue16021.pdf
624624
!bug1770750.pdf
625+
!issue19971.pdf
625626
!issue16063.pdf
626627
!issue19389.pdf
627628
!issue16067.pdf

test/pdfs/issue19971.pdf

1.65 MB
Binary file not shown.

test/test_manifest.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4142,6 +4142,14 @@
41424142
"lastPage": 1,
41434143
"type": "eq"
41444144
},
4145+
{
4146+
"id": "issue19971",
4147+
"file": "pdfs/issue19971.pdf",
4148+
"md5": "2eb897b3ef3342bfc5ad31886e7cd1fe",
4149+
"rounds": 1,
4150+
"lastPage": 1,
4151+
"type": "eq"
4152+
},
41454153
{
41464154
"id": "issue8702-text",
41474155
"file": "pdfs/issue8702.pdf",

0 commit comments

Comments
 (0)