From 368cde6fbe595d9957f2099798b43f41903a5250 Mon Sep 17 00:00:00 2001 From: Roman Steiner Date: Tue, 17 Jan 2023 14:32:39 +0100 Subject: [PATCH 1/3] allow cmyk colors in Mpdf Output --- src/Output/Mpdf.php | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/Output/Mpdf.php b/src/Output/Mpdf.php index 880e0be..9b5d206 100644 --- a/src/Output/Mpdf.php +++ b/src/Output/Mpdf.php @@ -16,8 +16,8 @@ class Mpdf * @param float $x position X * @param float $y position Y * @param float $w QR code width - * @param int[] $background RGB background color - * @param int[] $color RGB foreground and border color + * @param int[] $background RGB/CMYK background color + * @param int[] $color RGB/CMYK foreground and border color */ public function output(QrCode $qrCode, MpdfObject $mpdf, $x, $y, $w, $background = [255, 255, 255], $color = [0, 0, 0]) { @@ -25,8 +25,11 @@ public function output(QrCode $qrCode, MpdfObject $mpdf, $x, $y, $w, $background $qrSize = $qrCode->getQrSize(); $s = $size / $qrCode->getQrDimensions(); - $mpdf->SetDrawColor($color[0], $color[1], $color[2]); - $mpdf->SetFillColor($background[0], $background[1], $background[2]); + $background = array_slice($background, 0, 4); + $color = array_slice($color, 0, 4); + + $mpdf->SetDrawColor(...$color); + $mpdf->SetFillColor(...$background); if ($qrCode->isBorderDisabled()) { $minSize = 4; @@ -38,7 +41,7 @@ public function output(QrCode $qrCode, MpdfObject $mpdf, $x, $y, $w, $background $mpdf->Rect($x, $y, $size, $size, 'FD'); } - $mpdf->SetFillColor($color[0], $color[1], $color[2]); + $mpdf->SetFillColor(...$color); $final = $qrCode->getFinal(); From 2027458369e3231e174d6fecd97f5f6051dfb275 Mon Sep 17 00:00:00 2001 From: Roman Steiner Date: Tue, 17 Jan 2023 14:37:39 +0100 Subject: [PATCH 2/3] fix spaces -> tabs --- src/Output/Mpdf.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Output/Mpdf.php b/src/Output/Mpdf.php index 9b5d206..82a4db5 100644 --- a/src/Output/Mpdf.php +++ b/src/Output/Mpdf.php @@ -25,8 +25,8 @@ public function output(QrCode $qrCode, MpdfObject $mpdf, $x, $y, $w, $background $qrSize = $qrCode->getQrSize(); $s = $size / $qrCode->getQrDimensions(); - $background = array_slice($background, 0, 4); - $color = array_slice($color, 0, 4); + $background = array_slice($background, 0, 4); + $color = array_slice($color, 0, 4); $mpdf->SetDrawColor(...$color); $mpdf->SetFillColor(...$background); From 87741eab57eb14edf964904af1ec87c56d7681a4 Mon Sep 17 00:00:00 2001 From: Roman Steiner Date: Tue, 4 Jun 2024 16:04:26 +0000 Subject: [PATCH 3/3] add unit test for cmyk colors in mpdf output --- tests/QrCode/Output/MpdfTest.php | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/tests/QrCode/Output/MpdfTest.php b/tests/QrCode/Output/MpdfTest.php index a9f86ab..e1536f2 100644 --- a/tests/QrCode/Output/MpdfTest.php +++ b/tests/QrCode/Output/MpdfTest.php @@ -75,6 +75,24 @@ public function testOutputQDisableBorder() $output->output($code, $mpdf, 0, 0, 0); } + public function testOutputCMYK() + { + $color = [1,2,3,4]; + $background = [5,6,7,8]; + + $code = new QrCode('LOREM IPSUM 2019', QrCode::ERROR_CORRECTION_QUARTILE); + + $mpdf = Mockery::mock('Mpdf\Mpdf'); + + $mpdf->shouldReceive('SetDrawColor')->with(1,2,3,4)->once(); + $mpdf->shouldReceive('SetFillColor')->with(1,2,3,4)->once(); + $mpdf->shouldReceive('SetFillColor')->with(5,6,7,8)->once(); + $mpdf->shouldReceive('Rect')->times(217); + + $output = new Mpdf(); + $output->output($code, $mpdf, 0, 0, 0, $background, $color); + } + protected function tear_down() { parent::tear_down();