| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- # 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.
- ## Example
- See: [SVG example](https://github.com/chillerlan/php-qrcode/blob/main/examples/svg.php)
- Set the options:
- ```php
- $options = new QROptions;
- $options->version = 7;
- $options->outputInterface = QRMarkupSVG::class;
- // if set to false, the light modules won't be rendered
- $options->drawLightModules = true;
- $options->svgUseFillAttributes = true;
- // draw the modules as circles isntead of squares
- $options->drawCircularModules = true;
- $options->circleRadius = 0.4;
- // connect paths to avoid render glitches
- // @see https://github.com/chillerlan/php-qrcode/issues/57
- $options->connectPaths = true;
- // keep modules of these types as square
- $options->keepAsSquare = [
- QRMatrix::M_FINDER_DARK,
- QRMatrix::M_FINDER_DOT,
- QRMatrix::M_ALIGNMENT_DARK,
- ];
- // add a gradient via the <defs> element
- // @see https://developer.mozilla.org/en-US/docs/Web/SVG/Element/defs
- // @see https://developer.mozilla.org/en-US/docs/Web/SVG/Element/linearGradient
- $options->svgDefs = '
- <linearGradient id="rainbow" x1="1" y2="1">
- <stop stop-color="#e2453c" offset="0"/>
- <stop stop-color="#e07e39" offset="0.2"/>
- <stop stop-color="#e5d667" offset="0.4"/>
- <stop stop-color="#51b95b" offset="0.6"/>
- <stop stop-color="#1e72b7" offset="0.8"/>
- <stop stop-color="#6f5ba7" offset="1"/>
- </linearGradient>
- <style><![CDATA[
- .dark{fill: url(#rainbow);}
- .light{fill: #eee;}
- ]]></style>';
- ```
- Render the output:
- ```php
- $data = 'https://www.youtube.com/watch?v=dQw4w9WgXcQ';
- $out = (new QRCode($options))->render($data); // -> data:image/svg+xml;base64,PD94bWwgdmVyc2...
- printf('<img alt="%s" src="%s" />', $alt, $out);
- ```
- ## Additional methods
- | 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 `<svg>` header with the given options parsed |
- | (protected) `path(string $path, int $M_TYPE)` | `string` | renders and returns a single `<path>` element |
- | (protected) `paths()` | `string` | returns one or more SVG `<path>` elements |
- | (protected) `module(int $x, int $y, int $M_TYPE)` | `string` | returns a path segment for a single module |
- ## Options that affect this class
- | property | type |
- |---------------------------|-------------|
- | `$circleRadius` | `float` |
- | `$connectPaths` | `bool` |
- | `$cssClass` | `string` |
- | `$drawCircularModules` | `bool` |
- | `$drawLightModules` | `bool` |
- | `$eol` | `string` |
- | `$excludeFromConnect` | `array` |
- | `$keepAsSquare` | `array` |
- | `$outputBase64` | `bool` |
- | `$svgAddXmlHeader` | `bool` |
- | `$svgDefs` | `string` |
- | `$svgOpacity` | `float` |
- | `$svgPreserveAspectRatio` | `string` |
- | `$svgViewBoxSize` | `int\|null` |
- | `$svgUseFillAttributes` | `bool` |
|