From db89d3a0e6e4691246d2843fc1b438a8bdda60a1 Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Mon, 20 Apr 2026 18:42:05 +0200 Subject: [PATCH] Correctly compute the bbox when simplifying the path construction It fixes #21126. --- src/core/operator_list.js | 5 ++++- test/pdfs/.gitignore | 1 + test/pdfs/issue21126.pdf | Bin 0 -> 15332 bytes test/test_manifest.json | 7 +++++++ 4 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 test/pdfs/issue21126.pdf diff --git a/src/core/operator_list.js b/src/core/operator_list.js index 64091bc9a..f63ac0718 100644 --- a/src/core/operator_list.js +++ b/src/core/operator_list.js @@ -15,6 +15,7 @@ import { DrawOPS, + F32_BBOX_INIT, ImageKind, OPS, RenderingIntentFlag, @@ -520,7 +521,9 @@ addState( const [, [buffer], minMax] = args; if (minMax) { - Util.scaleMinMax(transform, minMax); + const newBBox = F32_BBOX_INIT.slice(); + Util.axialAlignedBoundingBox(minMax, transform, newBBox); + minMax.set(newBBox); for (let k = 0, kk = buffer.length; k < kk; ) { switch (buffer[k++]) { case DrawOPS.moveTo: diff --git a/test/pdfs/.gitignore b/test/pdfs/.gitignore index c5dcca40e..1bd14c54d 100644 --- a/test/pdfs/.gitignore +++ b/test/pdfs/.gitignore @@ -904,3 +904,4 @@ !three_pages_with_number.pdf !issue13520.pdf !22060_A1_01_Plans.pdf +!issue21126.pdf diff --git a/test/pdfs/issue21126.pdf b/test/pdfs/issue21126.pdf new file mode 100644 index 0000000000000000000000000000000000000000..f0a5358079a559131bdf1ed18aac55cf900db195 GIT binary patch literal 15332 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