SGKBarcodeBundle est un Symfony2 Bundle pour l’objet de générer tous les types de code-barres ! Ce document README ont aussi une version Anglaise (English) et une version Chinoise (中文).
Caractéristiques:
- Capable de générer 3 types de codes-barres bidimensionnels (2D) et 30 types de codes-barres unidimensionnels (1D)
- Trois formats de sortie : HTML, PNG and SVG canvas
- Twig intégration: vous pouvez directement utiliser une Twig fonction dans le Template pour générer les codes-barres
- Ce Bundle est un portage depuis le Laravel project: dinesh/barcode
Ajoutez SGKBarcodeBundle via exécuter le command:
// Symfony version < 2.7
$ php composer.phar require sgk/barcode-bundle:~1.0
// Symfony version >= 2.7
$ php composer.phar require sgk/barcode-bundle:~2.0
Ou ajoutez la dépendance de SGKBarcodeBundle à votre fichier composer.json
, puis mettez à jour les bibliothèques vendor : php composer.phar update
// Symfony version < 2.7
"require": {
"sgk/barcode-bundle": "~1.0"
}
// Symfony version >= 2.7
"require": {
"sgk/barcode-bundle": "~2.0"
}
Composer téléchargera automatiquement tous les fichiers requis, et les installera pour vous sous le répertoire vendor/sgk.
Ensuite, comme pour tout autre bundle, incluez dans votre classe Kernel:
<?php
// app/AppKernel.php
public function registerBundles()
{
$bundles = array(
// ...
new SGK\BarcodeBundle\SGKBarcodeBundle(),
);
}
Vous avez 5 paramètres (options) à choisir pour la génération d’un code-barres.
option | type | requis | valeur possible | description |
---|---|---|---|---|
code | string | obligatoire | ce que vous voulez encoder | |
type | string | obligatoire | Types disponible | type de code-barre |
format | string | obligatoire | html, svg, png | format de sortie |
width | integer | optionnel | largeur de unit | |
height | integer | optionnel | hauteur de unit | |
color | string (html, svg) / array (png) | optionnel | HTML Color Names / array(R, G, B) | couleur |
Valeur par défaut de width et height pour les codes-barres 2D sont 5, 5, pour les codes-barres 1D sont 2, 30. Valeur par défaut de couleur pour les fomarts html et svg est black, pour png est array(0, 0, 0)
Ce bundle crée un service sgk_barcode.generator
dans le Conteneur, cela vous permettez de l’utiliser pour générer le code-barres d’une façon très simple.
- outpout html
$options = array(
'code' => 'string to encode',
'type' => 'c128',
'format' => 'html',
);
$barcode =
$this->get('sgk_barcode.generator')->generate($options);
return new Response($barcode);
- outpout svg
$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);
- outpout png
$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.'" />');
Si vous choisissez le format png, le générateur retournera le donnée based64 de png fichier, vous pouvez obtenir le donnée original via
base64_decode($barcode)
. Ici on prend Data URI scheme pour directement afficher le png image sur webpage.
Ce bundle crée une fonction de Twig barcode
que vous pouvez l’utiliser directement dans le Twig Template.
barcode
prend les mêmes paramètres (options), la seule chose différente est que vous avez besoin de passer un Twig tableau (qui vraiment ressemble à Json, mais il n’est pas) dans la fonction.
- display html
{{ barcode({code: 'string to encode', type: 'c128', format: 'html'}) }}
- display svg
{{ barcode({code: 'string to encode', type: 'qrcode', format: 'svg', width: 10, height: 10, color: 'green'}) }}
- display png
<img src="data:image/png;base64,
{{ barcode({code: 'string to encode', type: 'datamatrix', format: 'png', width: 10, height: 10, color: [127, 127, 127]}) }}
" />
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);
Comme vous avez vu, ce Bundle n’enregistre rien sur vos ordinateurs, mais si vous voulez les enregistrer, il n’y aura pas de problème !
- save as html
$savePath = '/tmp/';
$fileName = 'sample.html';
file_put_contents($savePath.$fileName, $barcode);
- save as svg
$savePath = '/tmp/';
$fileName = 'sample.svg';
file_put_contents($savePath.$fileName, $barcode);
- save as png
$savePath = '/tmp/';
$fileName = 'sample.png';
file_put_contents($savePath.$fileName, base64_decode($barcode));
Jetez un coup d'œil à Wikipedia page pour savoir quel type vous devez choisir.
type | Name | Example(encode 123456) |
---|---|---|
qrcode | QR code | |
pdf417 | PDF417 | |
datamatrix | Data Matrix |
type | Symbology | Example(encode 123456) |
---|---|---|
c39 | Code 39 | |
c39+ | Code 39 CHECK_DIGIT | |
c39e | Code 39 EXTENDED | |
c39e+ | Code 39 EXTENDED CHECK_DIGIT | |
c93 | Code 93 | |
s25 | Standard 2 of 5 | |
s25+ | Standard 2 of 5 CHECK_DIGIT | |
i25 | Interleaved 2 of 5 | |
i25+ | Interleaved 2 of 5 CHECK_DIGIT | |
c128 | Code 128 | |
c128a | Code 128A | |
c128b | Code 128B | |
c128c | Code 128C | |
ean2 | EAN 2 | |
ean5 | EAN 5 | |
ean8 | EAN 8 | |
ean13 | EAN 13 | |
upca | UPC-A | |
upce | UPC-B | |
msi | MSI | |
msi+ | MSI CHECK_DIGIT | |
postnet | POSTNET | |
planet | PLANET | |
rms4cc | RMS4CC | |
kix | KIX-code | |
imb | IM barcode | |
codabar | Codabar | |
code11 | Code 11 | |
pharma | Pharmacode | |
pharma2t | Pharmacode Two-Track |
Si vous avez rencontré quelque problème de dépendance, vérifierez que vous avez bien installé les deux extensions de PHP (dans phpinfo()).
- GD et ImageMagick pour créer les PNGs sous PHP 5.3.
- PHP bcmath extension pour générer le format Intelligent Mail barcodes (IMB)
Exécuter les tests unitaires:
$ phpunit --coverage-text