From 6ecb09f01be15f3c47a499a107179b7ef00fce95 Mon Sep 17 00:00:00 2001 From: codemasher Date: Wed, 18 Nov 2020 17:00:07 +0100 Subject: [PATCH] :octocat: allow base64 encoding for SVG and PDF output --- src/Output/QRFpdf.php | 4 ++++ src/Output/QRMarkup.php | 4 ++++ tests/Output/QRFpdfTest.php | 3 ++- tests/Output/QRMarkupTest.php | 4 +++- tests/QRCodeTest.php | 2 +- 5 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/Output/QRFpdf.php b/src/Output/QRFpdf.php index 54c51a807..a706685af 100644 --- a/src/Output/QRFpdf.php +++ b/src/Output/QRFpdf.php @@ -102,6 +102,10 @@ public function dump(string $file = null){ $this->saveToFile($pdfData, $file); } + if($this->options->imageBase64){ + $pdfData = sprintf('data:application/pdf;base64,%s', base64_encode($pdfData)); + } + return $pdfData; } diff --git a/src/Output/QRMarkup.php b/src/Output/QRMarkup.php index 11d5ec510..15559dae0 100644 --- a/src/Output/QRMarkup.php +++ b/src/Output/QRMarkup.php @@ -141,6 +141,10 @@ protected function svg():string{ return ''.$this->options->eol.$svg; } + if($this->options->imageBase64){ + $svg = sprintf('data:image/svg+xml;base64,%s', base64_encode($svg)); + } + return $svg; } diff --git a/tests/Output/QRFpdfTest.php b/tests/Output/QRFpdfTest.php index 4d01bc704..1b49182d2 100644 --- a/tests/Output/QRFpdfTest.php +++ b/tests/Output/QRFpdfTest.php @@ -61,7 +61,8 @@ public function testSetModuleValues():void{ public function testRenderImage():void{ $type = QRCode::OUTPUT_FPDF; - $this->options->outputType = $type; + $this->options->outputType = $type; + $this->options->imageBase64 = false; $this->outputInterface->dump($this::cachefile.$type); // substr() to avoid CreationDate diff --git a/tests/Output/QRMarkupTest.php b/tests/Output/QRMarkupTest.php index ef05c6b79..24fdc3ce6 100644 --- a/tests/Output/QRMarkupTest.php +++ b/tests/Output/QRMarkupTest.php @@ -43,7 +43,8 @@ public function testMarkupOutputFile($type){ * @param $type */ public function testMarkupOutput($type){ - $this->options->outputType = $type; + $this->options->imageBase64 = false; + $this->options->outputType = $type; $this->setOutputInterface(); $expected = explode($this->options->eol, file_get_contents($this::cachefile.$type)); @@ -62,6 +63,7 @@ public function testMarkupOutput($type){ public function testSetModuleValues(){ + $this->options->imageBase64 = false; $this->options->moduleValues = [ // data 1024 => '#4A6000', diff --git a/tests/QRCodeTest.php b/tests/QRCodeTest.php index 452cfacba..8613c961f 100755 --- a/tests/QRCodeTest.php +++ b/tests/QRCodeTest.php @@ -56,7 +56,7 @@ public function typeDataProvider(){ 'png' => [QRCode::OUTPUT_IMAGE_PNG, 'data:image/png;base64,'], 'gif' => [QRCode::OUTPUT_IMAGE_GIF, 'data:image/gif;base64,'], 'jpg' => [QRCode::OUTPUT_IMAGE_JPG, 'data:image/jpg;base64,'], - 'svg' => [QRCode::OUTPUT_MARKUP_SVG, ' [QRCode::OUTPUT_STRING_TEXT, '⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕⭕'.PHP_EOL], 'json' => [QRCode::OUTPUT_STRING_JSON, '[[18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18],'],