From 71b243539af82b17c1945842205a9bb837ebafa5 Mon Sep 17 00:00:00 2001 From: oleibman <10341515+oleibman@users.noreply.github.com> Date: Thu, 20 Mar 2025 20:11:11 -0700 Subject: [PATCH] Ignore Fractional Part of Drawing Shadow Alpha Fix #4415. We store the rarely-used property Drawing/Shadow/Alpha as an integer representing the percentage. Excel also stores it as an integer, but multiplies it by 1,000, so we divide by 1,000 when we read this value. This can, and in the case of the issue at hand does, leave a fractional portion. Php has deprecated passing a float with a fractional portion to an int argument, so the reporter saw a deprecation message. This is easily fixed. --- src/PhpSpreadsheet/Reader/Xlsx.php | 16 +++++- .../Reader/Xlsx/Issue4415Test.php | 47 ++++++++++++++++++ tests/data/Reader/XLSX/issue.4415.xlsx | Bin 0 -> 29325 bytes 3 files changed, 61 insertions(+), 2 deletions(-) create mode 100644 tests/PhpSpreadsheetTests/Reader/Xlsx/Issue4415Test.php create mode 100644 tests/data/Reader/XLSX/issue.4415.xlsx diff --git a/src/PhpSpreadsheet/Reader/Xlsx.php b/src/PhpSpreadsheet/Reader/Xlsx.php index 2e1ea196b..ffb6c34dc 100644 --- a/src/PhpSpreadsheet/Reader/Xlsx.php +++ b/src/PhpSpreadsheet/Reader/Xlsx.php @@ -1492,7 +1492,13 @@ class Xlsx extends BaseReader $shadow->setAlignment(self::getArrayItemString(self::getAttributes($outerShdw), 'algn')); $clr = $outerShdw->srgbClr ?? $outerShdw->prstClr; $shadow->getColor()->setRGB(self::getArrayItemString(self::getAttributes($clr), 'val')); - $shadow->setAlpha(self::getArrayItem(self::getAttributes($clr->alpha), 'val') / 1000); // @phpstan-ignore-line + if ($clr->alpha) { + $alpha = StringHelper::convertToString(self::getArrayItem(self::getAttributes($clr->alpha), 'val')); + if (is_numeric($alpha)) { + $alpha = (int) ($alpha / 1000); + $shadow->setAlpha($alpha); + } + } } $this->readHyperLinkDrawing($objDrawing, $oneCellAnchor, $hyperlinks); @@ -1597,7 +1603,13 @@ class Xlsx extends BaseReader $shadow->setAlignment(self::getArrayItemString(self::getAttributes($outerShdw), 'algn')); $clr = $outerShdw->srgbClr ?? $outerShdw->prstClr; $shadow->getColor()->setRGB(self::getArrayItemString(self::getAttributes($clr), 'val')); - $shadow->setAlpha(self::getArrayItem(self::getAttributes($clr->alpha), 'val') / 1000); // @phpstan-ignore-line + if ($clr->alpha) { + $alpha = StringHelper::convertToString(self::getArrayItem(self::getAttributes($clr->alpha), 'val')); + if (is_numeric($alpha)) { + $alpha = (int) ($alpha / 1000); + $shadow->setAlpha($alpha); + } + } } $this->readHyperLinkDrawing($objDrawing, $twoCellAnchor, $hyperlinks); diff --git a/tests/PhpSpreadsheetTests/Reader/Xlsx/Issue4415Test.php b/tests/PhpSpreadsheetTests/Reader/Xlsx/Issue4415Test.php new file mode 100644 index 000000000..2417e9f22 --- /dev/null +++ b/tests/PhpSpreadsheetTests/Reader/Xlsx/Issue4415Test.php @@ -0,0 +1,47 @@ +'; + self::assertStringContainsString($expected, $data); + $expected = ''; + self::assertStringContainsString($expected, $data); + self::assertSame(2, substr_count($data, ''), 'first 2 drawings'); + self::assertSame(1, substr_count($data, ''), 'third drawings'); + } + + public function testFractionalAlpha(): void + { + $file = self::$file; + $reader = new XlsxReader(); + $spreadsheet = $reader->load($file); + $sheet = $spreadsheet->getActiveSheet(); + $drawings = $sheet->getDrawingCollection(); + self::assertCount(3, $drawings); + self::assertNotNull($drawings[0]); + self::assertNotNull($drawings[1]); + self::assertNotNull($drawings[2]); + self::assertSame(50, $drawings[0]->getShadow()->getAlpha()); + self::assertSame(72, $drawings[1]->getShadow()->getAlpha()); + self::assertSame('', $drawings[1]->getCoordinates2(), 'one cell anchor'); + self::assertSame(90, $drawings[2]->getShadow()->getAlpha()); + self::assertNotEquals('', $drawings[2]->getCoordinates2(), 'two cell anchor'); + $spreadsheet->disconnectWorksheets(); + } +} diff --git a/tests/data/Reader/XLSX/issue.4415.xlsx b/tests/data/Reader/XLSX/issue.4415.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..2b970b318d1c427712b93f249be7aacb18da530c GIT binary patch literal 29325 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 z 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 QkBJ4P1+l7$Y<~axf4^Itr2qf` literal 0 HcmV?d00001