SGKBarcodeBundle
, (*1)
SGKBarcodeBundle is the Symfony2 Barcode Generator Bundle what you want!
This README is also available in French (Français) and Chinese (中文)., (*2)
Features:, (*3)
- Support 3 two-dimensional (2D) and 30 one-dimensional (1D) Barcode types
- Three output formats: HTML, PNG and SVG canvas
- Twig integration: you can simply use a extensional function of Twig in the template to generate Barcode
- Core of this bundle use this laravel project: dinesh/barcode
, (*4)
Installation
Add SGKBarcodeBundle by running the command:, (*5)
$ php composer.phar require ulabox/barcode-bundle:~3.0
Composer will install the bundle to your project's vendor/ulabox directory., (*6)
Then, Enable the bundle in the kernel:, (*7)
<?php
// app/AppKernel.php
public function registerBundles()
{
$bundles = array(
// ...
new SGK\BarcodeBundle\SGKBarcodeBundle(),
);
}
Generate options
To generate one barcode, you have 5 options can be configured., (*8)
option |
type |
required |
allowed values |
description |
code |
string |
required |
what you want encoded |
type |
string |
required |
Supported Types |
type of barcode |
format |
string |
required |
html, svg, png |
output format |
width |
integer |
optional |
width of unit |
height |
integer |
optional |
height of unit |
color |
string for html, svg / array for png |
optional |
HTML Color Names / array(R, G, B) |
barcode color |
Default width and height for 2D barcode are 5, 5, for 1D are 2, 30.
Default color for html, svg is black, for png is array(0, 0, 0), (*9)
Usage by service
The bundle registers one service: sgk_barcode.generator
which will allows you to generate barcode:, (*10)
$options = array(
'code' => 'string to encode',
'type' => 'c128',
'format' => 'html',
);
$barcode =
$this->get('sgk_barcode.generator')->generate($options);
return new Response($barcode);
$options = array(
'code' => 'string to encode',
'type' => 'qrcode',
'format' => 'svg',
'width' => 10,
'height' => 10,
'color' => 'green',
);
$barcode =
$this->get('sgk_barcode.generator')->generate($options);
return new Response($barcode);
$options = array(
'code' => 'string to encode',
'type' => 'datamatrix',
'format' => 'png',
'width' => 10,
'height' => 10,
'color' => array(127, 127, 127),
);
$barcode =
$this->get('sgk_barcode.generator')->generate($options);
return new Response('<img src="data:image/png;base64,'.$barcode.'" />');
For format png, the generator return the based64 of png file, so you can get the real data of png by base64_decode($barcode)
. Here we use Data URI scheme to direct display the png in webpage., (*11)
Usage in Twig template
This bundle extend one function of Twig: barcode
which you can simply use it to generate barcode in the twig template., (*12)
barcode
use the same options, only different thing is your need pass a Twig array (it looks really like Json, but it isn't) in the function., (*13)
{{ barcode({code: 'string to encode', type: 'c128', format: 'html'}) }}
{{ barcode({code: 'string to encode', type: 'qrcode', format: 'svg', width: 10, height: 10, color: 'green'}) }}
<img src="data:image/png;base64,
{{ barcode({code: 'string to encode', type: 'datamatrix', format: 'png', width: 10, height: 10, color: [127, 127, 127]}) }}
" />
Usage without service
use SGK\BarcodeBundle\Generator\Generator;
//...
$options = array(
'code' => 'string to encode',
'type' => 'qrcode',
'format' => 'html',
);
$generator = new Generator();
$barcode = $generator->generate($options);
return new Response($barcode);
Save Barcode in file
As you can see, the Bundle save nothing on the file system, But if you want to keep the barcode, No problem!, (*14)
$savePath = '/tmp/';
$fileName = 'sample.html';
file_put_contents($savePath.$fileName, $barcode);
$savePath = '/tmp/';
$fileName = 'sample.svg';
file_put_contents($savePath.$fileName, $barcode);
$savePath = '/tmp/';
$fileName = 'sample.png';
file_put_contents($savePath.$fileName, base64_decode($barcode));
Supported Barcode Types
Please read Wikipedia page to know which type you should choice., (*15)
2d barcodes
1d barcodes
Requirements
If there is some problem of requirements, make sure you have install these two extensions of PHP (check in your phpinfo())., (*16)
- Barcodes requires GD and ImageMagick to create PNGs in PHP 5.3.
- Barcodes requires PHP bcmath extension for Intelligent Mail barcodes
Tests
To execute unit tests:, (*17)
$ phpunit --coverage-text