From de3d321b00989946a06ba9f0eca7eae9e782a5b5 Mon Sep 17 00:00:00 2001 From: smiley Date: Mon, 6 May 2024 17:01:52 +0200 Subject: [PATCH] :book: --- README.md | 3 +- docs/Built-In-Output/QREps.md | 16 +-- docs/Built-In-Output/QRFpdf.md | 15 +-- docs/Built-In-Output/QRGdImage.md | 30 +++--- docs/Built-In-Output/QRImagick.md | 8 -- docs/Built-In-Output/QRInterventionImage.md | 102 +++++++++++++++++++ docs/Built-In-Output/QRMarkupSVG.md | 21 ++-- docs/Built-In-Output/QRMarkupXML.md | 104 ++++++++++++++++++++ docs/Built-In-Output/QRString.md | 98 ------------------ docs/Built-In-Output/QRStringJSON.md | 50 ++++++++++ docs/Built-In-Output/QRStringText.md | 57 +++++++++++ docs/Readme.md | 5 +- docs/Usage/Configuration-settings.md | 15 ++- docs/Usage/Overview.md | 5 +- docs/index.rst | 5 +- examples/Readme.md | 3 +- 16 files changed, 362 insertions(+), 175 deletions(-) create mode 100644 docs/Built-In-Output/QRInterventionImage.md create mode 100644 docs/Built-In-Output/QRMarkupXML.md delete mode 100644 docs/Built-In-Output/QRString.md create mode 100644 docs/Built-In-Output/QRStringJSON.md create mode 100644 docs/Built-In-Output/QRStringText.md diff --git a/README.md b/README.md index d72f02ae1..7588a2274 100644 --- a/README.md +++ b/README.md @@ -61,8 +61,9 @@ It also features a QR Code reader based on a [PHP port](https://github.com/khana - [`ext-imagick`](https://github.com/Imagick/imagick) with [ImageMagick](https://imagemagick.org) installed - [`ext-fileinfo`](https://www.php.net/manual/book.fileinfo.php) (required by `QRImagick` output) - [`setasign/fpdf`](https://github.com/setasign/fpdf) for the PDF output module + - [`intervention/image`](https://github.com/Intervention/image) for alternative GD/ImageMagick output -For the QRCode reader, either `ext-gd` or `ext-imagick` is required! +For the QR Code reader, either `ext-gd` or `ext-imagick` is required! # Documentation diff --git a/docs/Built-In-Output/QREps.md b/docs/Built-In-Output/QREps.md index 730588000..63cedb994 100644 --- a/docs/Built-In-Output/QREps.md +++ b/docs/Built-In-Output/QREps.md @@ -1,6 +1,7 @@ # QREps -[Class `QREps`](https://github.com/chillerlan/php-qrcode/blob/main/src/Output/QREps.php): [Encapsulated Postscript](https://en.wikipedia.org/wiki/Encapsulated_PostScript) (EPS) output. +[Class `QREps`](https://github.com/chillerlan/php-qrcode/blob/main/src/Output/QREps.php): +[Encapsulated Postscript](https://en.wikipedia.org/wiki/Encapsulated_PostScript) (EPS) output. ## Example @@ -50,6 +51,7 @@ echo (new QRCode($options))->render($data); exit; ``` + ## Additional methods | method | return | description | @@ -67,15 +69,3 @@ exit; | `$drawLightModules` | `bool` | | `$excludeFromConnect` | `array` | | `$scale` | `int` | - - -### Options that have no effect - -| property | reason | -|------------------------|-----------------| -| `$circleRadius` | not implemented | -| `$drawCircularModules` | not implemented | -| `$outputBase64` | N/A | -| `$imageTransparent` | N/A | -| `$keepAsSquare` | not implemented | -| `$returnResource` | N/A | diff --git a/docs/Built-In-Output/QRFpdf.md b/docs/Built-In-Output/QRFpdf.md index 3bda31410..ff6c2cd3b 100644 --- a/docs/Built-In-Output/QRFpdf.md +++ b/docs/Built-In-Output/QRFpdf.md @@ -1,6 +1,7 @@ # QRFpdf -[Class `QRFpdf`](https://github.com/chillerlan/php-qrcode/blob/main/src/Output/QRFpdf.php): [Portable Document Format](https://en.wikipedia.org/wiki/PDF) (PDF) output via [FPDF](https://github.com/setasign/fpdf) +[Class `QRFpdf`](https://github.com/chillerlan/php-qrcode/blob/main/src/Output/QRFpdf.php): +[Portable Document Format](https://en.wikipedia.org/wiki/PDF) (PDF) output via [FPDF](https://github.com/setasign/fpdf). ## Example @@ -74,15 +75,3 @@ echo $fpdf->Output('S'); | `$outputBase64` | `bool` | | `$returnResource` | `bool` | | `$scale` | `ìnt` | - - -### Options that have no effect - -| property | reason | -|------------------------|--------| -| `$circleRadius` | N/A | -| `$connectPaths` | N/A | -| `$drawCircularModules` | N/A | -| `$excludeFromConnect` | N/A | -| `$imageTransparent` | N/A | -| `$keepAsSquare` | N/A | diff --git a/docs/Built-In-Output/QRGdImage.md b/docs/Built-In-Output/QRGdImage.md index 8fbfcb7ca..7fd0dfe92 100644 --- a/docs/Built-In-Output/QRGdImage.md +++ b/docs/Built-In-Output/QRGdImage.md @@ -1,6 +1,7 @@ # QRGdImage -[Class `QRGdImage`](https://github.com/chillerlan/php-qrcode/blob/main/src/Output/QRGdImage.php): [GdImage](https://www.php.net/manual/book.image) raster graphic output (GIF, JPG, PNG) +[Class `QRGdImage`](https://github.com/chillerlan/php-qrcode/blob/main/src/Output/QRGdImage.php): +[GdImage](https://www.php.net/manual/book.image) raster graphic output (GIF, JPG, PNG, ...) ## Example @@ -51,12 +52,12 @@ printf('%s', $alt, $out); ``` -Return the `GdImage` instance/resource (will ignore other output options): +Return the `GdImage` instance (will ignore other output options): ```php $options->returnResource = true; -/** @var \GdImage|resource $gdImage */ +/** @var \GdImage $gdImage */ $gdImage = (new QRCode($options))->render($data); // do stuff with the GdImage instance... @@ -73,13 +74,14 @@ imagedestroy($gdImage); ## Additional methods -| method | return | description | -|---------------------------------------------------|----------|-------------------------------------------------------------------| -| (protected) `drawImage()` | `void` | Draws the QR image | -| (protected) `dumpImage()` | `string` | Creates the final image by calling the desired GD output function | -| (protected) `module(int $x, int $y, int $M_TYPE)` | `void` | Renders a single module | -| (protected) `setBgColor()` | `void` | Sets the background color | -| (protected) `setTransparencyColor()` | `void` | Sets the transparency color | +| method | return | description | +|---------------------------------------------------|----------|--------------------------------------------------------------------------------------------------| +| (protected) `drawImage()` | `void` | Draws the QR image | +| (protected) `dumpImage()` | `string` | Creates the final image by calling the desired GD output function | +| (protected) `module(int $x, int $y, int $M_TYPE)` | `void` | Renders a single module | +| (protected) `setBgColor()` | `void` | Sets the background color | +| (protected) `setTransparencyColor()` | `void` | Sets the transparency color | +| (abstract protected) `renderImage()` | `void` | Renders the image with the gdimage function for the desired output, implemented by child classes | ## Options that affect this module @@ -97,11 +99,3 @@ imagedestroy($gdImage); | `$returnResource` | `bool` | | `$scale` | `int` | | `$transparencyColor` | `mixed` | - - -### Options that have no effect - -| property | reason | -|-----------------------|--------| -| `$connectPaths` | N/A | -| `$excludeFromConnect` | N/A | diff --git a/docs/Built-In-Output/QRImagick.md b/docs/Built-In-Output/QRImagick.md index b1068ab63..24ce09600 100644 --- a/docs/Built-In-Output/QRImagick.md +++ b/docs/Built-In-Output/QRImagick.md @@ -102,11 +102,3 @@ echo $imagick->getImageBlob(); | `$returnResource` | `bool` | | `$scale` | `int` | | `$transparencyColor` | `mixed` | - - -### Options that have no effect - -| property | reason | -|-----------------------|--------| -| `$connectPaths` | N/A | -| `$excludeFromConnect` | N/A | diff --git a/docs/Built-In-Output/QRInterventionImage.md b/docs/Built-In-Output/QRInterventionImage.md new file mode 100644 index 000000000..e747d3c35 --- /dev/null +++ b/docs/Built-In-Output/QRInterventionImage.md @@ -0,0 +1,102 @@ +# QRInterventionImage + +[Class `QRInterventionImage`](https://github.com/chillerlan/php-qrcode/blob/main/src/Output/QRInterventionImage.php): +[intervention/image](https://image.intervention.io/) alternative GD/ImageMagick output. + +***Note:** this output class works significantly slower than the native GD/Imagick output classes due to the several underlying abstraction layers. Use only if you must.* + + +## Example + +See: [intervention/image example](https://github.com/chillerlan/php-qrcode/blob/main/examples/intervention-image.php) + +Set the options: + +```php +$options = new QROptions; + +$options->outputInterface = QRInterventionImage::class; +$options->scale = 20; +$options->bgColor = '#ccccaa'; +$options->imageTransparent = false; +$options->transparencyColor = '#ccccaa'; +$options->drawLightModules = false; +$options->drawCircularModules = true; +$options->circleRadius = 0.4; +$options->keepAsSquare = [ + QRMatrix::M_FINDER_DARK, + QRMatrix::M_FINDER_DOT, + QRMatrix::M_ALIGNMENT_DARK, +]; +$options->moduleValues = [ + QRMatrix::M_FINDER_DARK => '#A71111', // dark (true) + QRMatrix::M_FINDER_DOT => '#A71111', // finder dot, dark (true) + QRMatrix::M_FINDER => '#FFBFBF', // light (false) + QRMatrix::M_ALIGNMENT_DARK => '#A70364', + QRMatrix::M_ALIGNMENT => '#FFC9C9', + QRMatrix::M_VERSION_DARK => '#650098', + QRMatrix::M_VERSION => '#E0B8FF', +]; +``` + + +Render the output: + +```php +$data = 'https://www.youtube.com/watch?v=dQw4w9WgXcQ'; +$out = (new QRCode($options))->render($data); // -> data:image/png;base64,... + +printf('%s', $alt, $out); +``` + + +Return the `ImageInterface` instance (will ignore other output options): + +```php +$options->returnResource = true; + +/** @var \Intervention\Image\Interfaces\ImageInterface $image */ +$image = (new QRCode($options))->render($data); + +// do stuff with the ImageInterface instance... + +// ...dump output + +header('Content-type: image/png'); + +echo $image->toPng()->toString(); +``` + +Set a different driver in the internal `ImageManager` instance (the internal detection order is: 1. GD, 2. Imagick): + +```php +$qrOutputInterface = new QRInterventionImage($options, $matrix); +// set a different driver +$qrOutputInterface->setDriver(new \Intervention\Image\Drivers\Imagick\Driver); +// dump output +$out = $qrOutputInterface->dump(); +``` + + +## Additional methods + +| method | return | description | +|--------------------------------------|----------|----------------------------------------------------------------------------------------------------------------------| +| `setDriver(DriverInterface $driver)` | `static` | Sets a DriverInterface, see [instantiation (intervention.io)](https://image.intervention.io/v3/basics/instantiation) | +| (protected) `module()` | `void` | Draws a single pixel at the given position | + + +## Options that affect this module + +| property | type | +|------------------------|----------| +| `$bgColor` | `mixed` | +| `$circleRadius` | `float` | +| `$drawCircularModules` | `bool` | +| `$drawLightModules` | `bool` | +| `$imageTransparent` | `bool` | +| `$keepAsSquare` | `array` | +| `$outputBase64` | `bool` | +| `$returnResource` | `bool` | +| `$scale` | `int` | +| `$transparencyColor` | `mixed` | diff --git a/docs/Built-In-Output/QRMarkupSVG.md b/docs/Built-In-Output/QRMarkupSVG.md index 298c8f631..082bf5feb 100644 --- a/docs/Built-In-Output/QRMarkupSVG.md +++ b/docs/Built-In-Output/QRMarkupSVG.md @@ -1,10 +1,12 @@ # QRMarkupSVG -[Class `QRMarkupSVG`](https://github.com/chillerlan/php-qrcode/blob/main/src/Output/QRMarkupSVG.php): [Scalable Vector Graphics](https://developer.mozilla.org/en-US/docs/Glossary/SVG) (SVG) output +[Class `QRMarkupSVG`](https://github.com/chillerlan/php-qrcode/blob/main/src/Output/QRMarkupSVG.php): +[Scalable Vector Graphics](https://developer.mozilla.org/en-US/docs/Glossary/SVG) (SVG) output. + ## Example -See: [ImageMagick example](https://github.com/chillerlan/php-qrcode/blob/main/examples/imagick.php) +See: [SVG example](https://github.com/chillerlan/php-qrcode/blob/main/examples/svg.php) Set the options: @@ -62,13 +64,14 @@ printf('%s', $alt, $out); | method | return | description | |---------------------------------------------------|----------|---------------------------------------------------------------| | (protected) `getCssClass(int $M_TYPE = 0)` | `string` | returns a string with all css classes for the current element | +| (protected) `getViewBox()` | `string` | returns the value for the SVG viewBox attribute | | (protected) `header()` | `string` | returns the `` header with the given options parsed | -| (protected) `module(int $x, int $y, int $M_TYPE)` | `string` | returns a path segment for a single module | | (protected) `path(string $path, int $M_TYPE)` | `string` | renders and returns a single `` element | | (protected) `paths()` | `string` | returns one or more SVG `` elements | +| (protected) `module(int $x, int $y, int $M_TYPE)` | `string` | returns a path segment for a single module | -## Options that affect this module +## Options that affect this class | property | type | |---------------------------|-------------| @@ -87,13 +90,3 @@ printf('%s', $alt, $out); | `$svgPreserveAspectRatio` | `string` | | `$svgViewBoxSize` | `int\|null` | | `$svgUseFillAttributes` | `bool` | - - -### Options that have no effect - -| property | reason | -|---------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| `$bgColor` | background color can be achieved via CSS, attributes or the `` element, see also [php-qrcode/discussions/199 (comment)](https://github.com/chillerlan/php-qrcode/discussions/199#discussioncomment-5747471) | -| `$imageTransparent` | SVG is - similar to a HTML element - transparent by default | -| `$returnResource` | N/A | -| `$scale` | `$scale` (pixel size of a qr module) is intended for raster image types, use `$svgViewBoxSize` instead | diff --git a/docs/Built-In-Output/QRMarkupXML.md b/docs/Built-In-Output/QRMarkupXML.md new file mode 100644 index 000000000..34ddb22a2 --- /dev/null +++ b/docs/Built-In-Output/QRMarkupXML.md @@ -0,0 +1,104 @@ +# QRMarkupXML + +[Class `QRMarkupXML`](https://github.com/chillerlan/php-qrcode/blob/main/src/Output/QRMarkupXML.php): [eXtensible Markup Language](https://developer.mozilla.org/en-US/docs/Glossary/XML) (XML) output + + +## Example + +See: [XML example](https://github.com/chillerlan/php-qrcode/blob/main/examples/xml.php) + +Set the options: + +```php +$options = new QROptions; + +$options->outputInterface = QRMarkupXML::class; +$options->outputBase64 = false; +// if set to false, the light modules won't be included in the output +$options->drawLightModules = false; + +// assign an XSLT stylesheet +$options->xmlStylesheet = './qrcode.style.xsl'; + +$options->moduleValues = [ + QRMatrix::M_FINDER_DARK => '#A71111', // dark (true) + QRMatrix::M_FINDER_DOT => '#A71111', // finder dot, dark (true) + QRMatrix::M_FINDER => '#FFBFBF', // light (false) + QRMatrix::M_ALIGNMENT_DARK => '#A70364', + QRMatrix::M_ALIGNMENT => '#FFC9C9', + QRMatrix::M_VERSION_DARK => '#650098', + QRMatrix::M_VERSION => '#E0B8FF', +]; +``` + + +The XSLT stylesheet `qrcode.style.xsl`: + +```XSLT + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + + +Render the output: + +```php +$data = 'https://www.youtube.com/watch?v=dQw4w9WgXcQ'; +$out = (new QRCode($options))->render($data); // -> XML, rendered as SVG + +printf('%s', $alt, $out); +``` + +The associated [XML schema](https://www.w3.org/XML/Schema) can be found over at GitHub: [`qrcode.schema.xsd`](https://github.com/chillerlan/php-qrcode/blob/main/src/Output/qrcode.schema.xsd) + + +## Additional methods + +| method | return | description | +|---------------------------------------------------|--------------------|-------------------------------------------| +| (protected) `createMatrix()` | `DOMElement` | creates the matrix element | +| (protected) `row(int $y, array $row)` | `DOMElement\|null` | creates a DOM element for a matrix row | +| (protected) `module(int $x, int $y, int $M_TYPE)` | `DOMElement\|null` | creates a DOM element for a single module | + + +## Options that affect this class + +| property | type | +|---------------------------|----------| +| `$drawLightModules` | `bool` | +| `$outputBase64` | `bool` | +| `xmlStylesheet` | `string` | diff --git a/docs/Built-In-Output/QRString.md b/docs/Built-In-Output/QRString.md deleted file mode 100644 index f28bea465..000000000 --- a/docs/Built-In-Output/QRString.md +++ /dev/null @@ -1,98 +0,0 @@ -# QRString - -[Class `QRString`](https://github.com/chillerlan/php-qrcode/blob/main/src/Output/QRString.php): String output: plain text, [JSON](https://developer.mozilla.org/en-US/docs/Glossary/JSON) - -## Plain text - -Render in a CLI console, using [ANSI colors](https://en.wikipedia.org/wiki/ANSI_escape_code#Colors) and [block elements](https://en.wikipedia.org/wiki/Block_Elements): - -```php -// a little helper to a create proper ANSI 8-bit color escape sequence -function ansi8(string $str, int $color, bool $background = false):string{ - $color = max(0, min($color, 255)); - $background = ($background ? 48 : 38); - - return sprintf("\x1b[%s;5;%sm%s\x1b[0m", $background, $color, $str); -} - -$options = new QROptions; - -$options->outputInterface = QRStringText::class; -$options->eol = "\n"; -// add some space on the line start -$options->textLineStart = str_repeat(' ', 6); -// default values for unassigned module types -$options->textDark = QRStringText::ansi8('██', 253); -$options->textLight = QRStringText::ansi8('░░', 253); -$options->moduleValues = [ - QRMatrix::M_FINDER_DARK => QRStringText::ansi8('██', 124), - QRMatrix::M_FINDER => QRStringText::ansi8('░░', 124), - QRMatrix::M_FINDER_DOT => QRStringText::ansi8('██', 124), - QRMatrix::M_ALIGNMENT_DARK => QRStringText::ansi8('██', 2), - QRMatrix::M_ALIGNMENT => QRStringText::ansi8('░░', 2), - QRMatrix::M_VERSION_DARK => QRStringText::ansi8('██', 21), - QRMatrix::M_VERSION => QRStringText::ansi8('░░', 21), -]; -``` - - -Output: - -```php -$data = 'https://www.youtube.com/watch?v=dQw4w9WgXcQ'; -$qrcode = (new QRCode($options))->render($data); - -echo "\n\n$qrcode\n\n"; -``` - - -## JSON - -```php -$options = new QROptions; - -$options->outputType = QROutputInterface::STRING_JSON; -// output the integer values ($M_TYPE) held in the matrix object -$options->jsonAsBooleans = false; - -header('Content-type: application/json'); - -echo (new QRCode($options))->render($data); -``` - - -## Additional methods - -| method | return | description | -|-----------------------------------------------------------|----------|---------------------------------------------------------------------| -| (protected) `text()` | `string` | string output | -| (protected) `json()` | `string` | JSON output | -| `ansi8(string $str, int $color, bool $background = null)` | `string` | a little helper to create a proper ANSI 8-bit color escape sequence | - - -## Options that affect this module - -| property | type | -|-------------------|----------| -| `$eol` | `string` | -| `$jsonAsBooleans` | `bool` | -| `$textDark` | `string` | -| `$textLight` | `string` | -| `$textLineStart` | `string` | - - -### Options that have no effect - -| property | reason | -|------------------------|-----------------| -| `$bgColor` | N/A | -| `$circleRadius` | N/A | -| `$connectPaths` | N/A | -| `$drawCircularModules` | N/A | -| `$drawLightModules` | not implemented | -| `$excludeFromConnect` | N/A | -| `$imageTransparent` | N/A | -| `$keepAsSquare` | N/A | -| `$outputBase64` | N/A | -| `$returnResource` | N/A | -| `$scale` | N/A | diff --git a/docs/Built-In-Output/QRStringJSON.md b/docs/Built-In-Output/QRStringJSON.md new file mode 100644 index 000000000..2dbeca522 --- /dev/null +++ b/docs/Built-In-Output/QRStringJSON.md @@ -0,0 +1,50 @@ +# QRStringJSON + +[Class `QRStringJSON`](https://github.com/chillerlan/php-qrcode/blob/main/src/Output/QRStringJSON.php): +[JSON](https://developer.mozilla.org/en-US/docs/Glossary/JSON) output. + + +## Example + +```php +$options = new QROptions; + +$options->outputType = QROutputInterface::STRING_JSON; +$options->jsonFlags = JSON_THROW_ON_ERROR|JSON_UNESCAPED_SLASHES; + +header('Content-type: application/json'); + +$data = 'https://www.youtube.com/watch?v=dQw4w9WgXcQ'; + +echo (new QRCode($options))->render($data); // -> JSON string +``` + +The associated [JSON schema](https://json-schema.org/specification) can be found over at GitHub: [`qrcode.schema.json`](https://github.com/chillerlan/php-qrcode/blob/main/src/Output/qrcode.schema.json) + + +## Previous functionality + +The previous versions of `php-qrcode` (v5 and earlier) just dumped an array representation of the internal matrix, +which is equivalent to the following: + +```php +$matrix = (new QRCode($options))->getQRMatrix(); // -> QRMatrix instance + +// retrieve the internal matrix as an array of booleans +$json = json_encode($matrix->getMatrix(true), $jsonFlags); +``` + + +## Additional methods + +| method | return | description | +|---------------------------------------------------|---------------|-------------------------------------------| +| (protected) `row(int $y, array $row)` | `array\|null` | creates a DOM element for a matrix row | +| (protected) `module(int $x, int $y, int $M_TYPE)` | `array\|null` | creates a DOM element for a single module | + + +## Options that affect this class + +| property | type | +|--------------|-------| +| `$jsonFlags` | `int` | diff --git a/docs/Built-In-Output/QRStringText.md b/docs/Built-In-Output/QRStringText.md new file mode 100644 index 000000000..3a9691ddb --- /dev/null +++ b/docs/Built-In-Output/QRStringText.md @@ -0,0 +1,57 @@ +# QRStringText + +[Class `QRStringText`](https://github.com/chillerlan/php-qrcode/blob/main/src/Output/QRStringText.php): +render in a CLI console, using [ANSI colors](https://en.wikipedia.org/wiki/ANSI_escape_code#Colors) and [block elements](https://en.wikipedia.org/wiki/Block_Elements). + + +## Example + +See: [plaintext example](https://github.com/chillerlan/php-qrcode/blob/main/examples/text.php) + +```php +$options = new QROptions; + +$options->outputInterface = QRStringText::class; +$options->eol = "\n"; +// add some space on the line start +$options->textLineStart = str_repeat(' ', 6); +// default values for unassigned module types +$options->textDark = QRStringText::ansi8('██', 253); +$options->textLight = QRStringText::ansi8('░░', 253); +$options->moduleValues = [ + QRMatrix::M_FINDER_DARK => QRStringText::ansi8('██', 124), + QRMatrix::M_FINDER => QRStringText::ansi8('░░', 124), + QRMatrix::M_FINDER_DOT => QRStringText::ansi8('██', 124), + QRMatrix::M_ALIGNMENT_DARK => QRStringText::ansi8('██', 2), + QRMatrix::M_ALIGNMENT => QRStringText::ansi8('░░', 2), + QRMatrix::M_VERSION_DARK => QRStringText::ansi8('██', 21), + QRMatrix::M_VERSION => QRStringText::ansi8('░░', 21), +]; +``` + + +Output: + +```php +$data = 'https://www.youtube.com/watch?v=dQw4w9WgXcQ'; +$qrcode = (new QRCode($options))->render($data); + +echo "\n\n$qrcode\n\n"; +``` + + +## Additional methods + +| method | return | description | +|-----------------------------------------------------------|----------|---------------------------------------------------------------------| +| `ansi8(string $str, int $color, bool $background = null)` | `string` | a little helper to create a proper ANSI 8-bit color escape sequence | + + +## Options that affect this class + +| property | type | +|-------------------|----------| +| `$eol` | `string` | +| `$textDark` | `string` | +| `$textLight` | `string` | +| `$textLineStart` | `string` | diff --git a/docs/Readme.md b/docs/Readme.md index 160a7a14e..139831d5f 100644 --- a/docs/Readme.md +++ b/docs/Readme.md @@ -77,9 +77,12 @@ The markdown sources for the [Read the Docs online manual](https://php-qrcode.re - [QRFpdf](./Built-In-Output/QRFpdf.md) - [QRGdImage](./Built-In-Output/QRGdImage.md) - [QRImagick](./Built-In-Output/QRImagick.md) +- [QRInterventionImage](./Built-In-Output/QRInterventionImage.md) - [QRMarkupHTML](./Built-In-Output/QRMarkupHTML.md) - [QRMarkupSVG](./Built-In-Output/QRMarkupSVG.md) -- [QRString](./Built-In-Output/QRString.md) +- [QRMarkupXML](./Built-In-Output/QRMarkupXML.md) +- [QRStringText](./Built-In-Output/QRStringText.md) +- [QRStringJSON](./Built-In-Output/QRStringJSON.md) ### Appendix diff --git a/docs/Usage/Configuration-settings.md b/docs/Usage/Configuration-settings.md index 0dd2d4908..7edfd7043 100644 --- a/docs/Usage/Configuration-settings.md +++ b/docs/Usage/Configuration-settings.md @@ -408,11 +408,6 @@ Sets the flags to use for the `json_encode()` call - [www.php.net/manual/json.constants.php](https://www.php.net/manual/json.constants.php) -## jsonAsBooleans - -Whether to return matrix values in JSON as booleans or `$M_TYPE` integers - - ## fpdfMeasureUnit Measurement unit for `FPDF` output: `pt`, `mm`, `cm`, `in` (default: `pt`) @@ -423,6 +418,16 @@ Measurement unit for `FPDF` output: `pt`, `mm`, `cm`, `in` (default: `pt`) - `FPDF::__construct()` +## xmlStylesheet + +Sets an optional XSLT stylesheet in the XML output + + +**See also:** + +- [developer.mozilla.org/en-US/docs/Web/XSLT](https://developer.mozilla.org/en-US/docs/Web/XSLT) + + ## readerUseImagickIfAvailable Use Imagick (if available) when reading QR Codes diff --git a/docs/Usage/Overview.md b/docs/Usage/Overview.md index 69bac9d66..0175d6ad3 100644 --- a/docs/Usage/Overview.md +++ b/docs/Usage/Overview.md @@ -28,13 +28,14 @@ It also features a QR Code reader based on a [PHP port](https://github.com/khana ## Requirements -- PHP 7.4+ +- PHP 8.2+ - [`ext-mbstring`](https://www.php.net/manual/book.mbstring.php) - optional: - - [`ext-fileinfo`](https://www.php.net/manual/book.fileinfo.php) (required by `QRImagick` output) - [`ext-gd`](https://www.php.net/manual/book.image) - [`ext-imagick`](https://github.com/Imagick/imagick) with [ImageMagick](https://imagemagick.org) installed + - [`ext-fileinfo`](https://www.php.net/manual/book.fileinfo.php) (required by `QRImagick` output) - [`setasign/fpdf`](https://github.com/setasign/fpdf) for the PDF output module + - [`intervention/image`](https://github.com/Intervention/image) for alternative GD/ImageMagick output For the QR Code reader, either `ext-gd` or `ext-imagick` is required! diff --git a/docs/index.rst b/docs/index.rst index 99784fbc8..499f50b19 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -38,9 +38,12 @@ This work is licensed under the Creative Commons Attribution 4.0 International ( Built-In-Output/QRFpdf.md Built-In-Output/QRGdImage.md Built-In-Output/QRImagick.md + Built-In-Output/QRInterventionImage.md Built-In-Output/QRMarkupHTML.md Built-In-Output/QRMarkupSVG.md - Built-In-Output/QRString.md + Built-In-Output/QRMarkupXML.md + Built-In-Output/QRStringJSON.md + Built-In-Output/QRStringText.md .. toctree:: :maxdepth: 3 diff --git a/examples/Readme.md b/examples/Readme.md index e76264a6a..c005f444d 100644 --- a/examples/Readme.md +++ b/examples/Readme.md @@ -6,10 +6,11 @@ - [ImageMagick](./imagick.php): Raster Images via [ImageMagick](https://imagemagick.org/) - [SVG](./svg.php): [Scalable Vector Graphics](https://developer.mozilla.org/en-US/docs/Web/SVG) - [HTML](./html.php): HTML markup -- [FPDF](./fpdf.php): PDF output via [FPDF](http://www.fpdf.org/) +- [FPDF](./fpdf.php): PDF output, see http://www.fpdf.org/ - [EPS](./eps.php): Encapsulated PostScript - [String](./text.php): String output - [XML](./xml.php): XML output (rendered as SVG via an [XSLT style](./qrcode.style.xsl)) +- [intervention/image](./intervention-image.php): alternative GD/ImageMagick output, see https://image.intervention.io/ - [Multi mode](./multimode.php): a demostration of multi mode usage - [Reflectance](./reflectance.php): demonstrates reflectance reversal - [QRCode reader](./reader.php): a simple reader example