Il s'agit d'un générateur de codes-barres facile à utiliser, non volumineux et indépendant du framework en PHP. Il n'utilise aucune (!) dépendance du compositeur et ne représente qu'une poignée de fichiers. C'est probablement la raison pour laquelle il s'agit du générateur de codes-barres pour PHP le plus téléchargé sur Packagist. ;)
Il crée des images SVG, PNG, JPG et HTML, à partir des standards de codes-barres 1D les plus utilisés.
Aucune prise en charge des codes-barres 2D , comme les codes QR.
Nous générons uniquement la partie « barres » d'un code-barres, sans texte sous le code-barres. Si vous souhaitez le texte du code sous le code-barres, vous pourrez l'ajouter ultérieurement à la sortie de ce package.
Installer via composer :
composer require picqer/php-barcode-generator
Si vous souhaitez générer des images PNG ou JPG, vous devez également installer la bibliothèque GD ou Imagick sur votre système. Pour les rendus SVG ou HTML, il n'y a aucune dépendance.
Vous souhaitez un code-barres pour un "type" spécifique (par exemple Code 128 ou UPC) dans un format d'image spécifique (par exemple PNG ou SVG).
Tout d’abord, encodez la chaîne dont vous souhaitez le code-barres dans un objet Barcode
avec l’un des types de code-barres.
Ensuite, utilisez l'un des moteurs de rendu pour restituer l'image des barres dans l'objet Barcode
.
Le "type" est une norme qui définit quels caractères vous pouvez encoder et quelles barres représentent quel caractère. Les types les plus utilisés sont le code 128 et EAN/UPC. Tous les caractères ne peuvent pas être codés dans chaque type de code-barres, et tous les lecteurs de codes-barres ne peuvent pas lire tous les types.
<?phprequire 'vendor/autoload.php';// Créer un objet Barcode de codage Code128.$barcode = (new PicqerBarcodeTypesTypeCode128())->getBarcode('081231723897');// Afficher le code-barres au format HTML dans le navigateur avec un HTML Renderer$renderer = new PicqerBarcodeRenderersHtmlRenderer();echo $renderer->render($code-barres);
Il en résultera cette beauté :
Chaque moteur de rendu a ses propres options. Par exemple, vous pouvez définir la hauteur, la largeur et la couleur d'un PNG :
<?phprequire 'vendor/autoload.php';$colorRed = [255, 0, 0];$barcode = (new PicqerBarcodeTypesTypeCode128())->getBarcode('081231723897');$renderer = new PicqerBarcodeRenderersPngRenderer();$renderer ->setForegroundColor($colorRed);// Enregistrer le PNG dans le système de fichiers, avec widthFactor 3 (largeur du code-barres x 3) et hauteur de 50 pixelsfile_put_contents('barcode.png', $renderer->render($barcode, $barcode->getWidth() * 3, 50));
Rendus d'images disponibles : SVG, PNG, JPG et HTML.
Ils sont tous conformes à RendererInterface et ont la même méthode render()
. Certains moteurs de rendu ont également des options supplémentaires, via les méthodes set*().
La méthode render() a besoin de l'objet Barcode, de la largeur et de la hauteur. Pour les images JPG/PNG , vous obtenez un code-barres valide uniquement si vous indiquez une largeur qui est un facteur de la largeur de l'objet Code-barres. C'est pourquoi les exemples montrent $barcode->getWidth() * 2
pour rendre l'image 2 fois plus large en pixels que la largeur des données du code-barres. Vous pouvez donner un nombre arbitraire comme largeur et l'image sera redimensionnée au mieux, mais sans anti-aliasing, elle ne sera pas parfaitement valide.
Les moteurs de rendu HTML et SVG peuvent gérer n'importe quelle largeur et hauteur, même les flottants.
Voici toutes les options pour chaque moteur de rendu :
Une image SVG vectorielle. Donne la meilleure qualité d’impression.
$renderer = new PicqerBarcodeRenderersSvgRenderer();$renderer->setForegroundColor([255, 0, 0]); // Donne une couleur rouge pour les barres, la valeur par défaut est noire. Donnez-le comme 3 fois les valeurs 0-255 pour le rouge, le vert et le bleu. $renderer->setBackgroundColor([0, 0, 255]); // Donne une couleur bleue pour l'arrière-plan, la valeur par défaut est transparente. Donnez-le comme 3 fois les valeurs 0-255 pour le rouge, le vert et le bleu. $renderer->setSvgType($renderer::TYPE_SVG_INLINE); // Modifie la sortie à utiliser en ligne dans les documents HTML, au lieu d'une image SVG autonome (par défaut)$renderer->setSvgType($renderer::TYPE_SVG_STANDALONE); // Si vous souhaitez forcer la valeur par défaut, créez une image SVG autonome$renderer->render($barcode, 450.20, 75); // Support flottant en largeur et en hauteur
Toutes les options pour PNG et JPG sont les mêmes.
$renderer = new PicqerBarcodeRenderersPngRenderer();$renderer->setForegroundColor([255, 0, 0]); // Donne une couleur aux barres, la valeur par défaut est noire. Donnez-le comme 3 fois les valeurs 0-255 pour le rouge, le vert et le bleu. $renderer->setBackgroundColor([0, 255, 255]); // Donne une couleur pour l'arrière-plan, par défaut est transparent (en PNG) ou blanc (en JPG). Donnez-le comme 3 fois les valeurs 0-255 pour le rouge, le vert et le bleu. $renderer->useGd(); // Si Imagick et GD sont installés, mais que vous souhaitez utiliser GD$renderer->useImagick(); // Si Imagick et GD sont installés, mais que vous souhaitez utiliser Imagick$renderer->render($barcode, 5, 40); // Facteur de largeur (la largeur de chaque barre en pixels) et la hauteur en pixels
Donne du HTML à utiliser en ligne dans un document HTML complet.
$renderer = new PicqerBarcodeRenderersHtmlRenderer();$renderer->setForegroundColor([255, 0, 0]); // Donne une couleur rouge pour les barres, la valeur par défaut est noire. Donnez-le comme 3 fois les valeurs 0-255 pour le rouge, le vert et le bleu. $renderer->setBackgroundColor([0, 0, 255]); // Donne une couleur bleue pour l'arrière-plan, la valeur par défaut est transparente. Donnez-le comme 3 fois les valeurs 0-255 pour le rouge, le vert et le bleu. $renderer->render($code-barres, 450.20, 75); // Support flottant en largeur et en hauteur
Donnez HTML ici, le code-barres utilise toute la largeur et la hauteur, à placer dans un conteneur/div de taille fixe.
$renderer = new PicqerBarcodeRenderersDynamicHtmlRenderer();$renderer->setForegroundColor([255, 0, 0]); // Donne une couleur rouge pour les barres, la valeur par défaut est noire. Donnez-le comme 3 fois les valeurs 0-255 pour le rouge, le vert et le bleu. $renderer->setBackgroundColor([0, 0, 255]); // Donne une couleur bleue pour l'arrière-plan, la valeur par défaut est transparente. Donnez-le comme 3 fois les valeurs 0-255 pour le rouge, le vert et le bleu. $renderer->render($code-barres);
Vous pouvez placer le code HTML rendu dans un div comme ceci :
<div style="largeur : 400px; hauteur : 75px"><?php echo $rendedBarcode; ?></div>
Ces types de codes-barres sont pris en charge. Tous les types prennent en charge différents jeux de caractères et certains ont des longueurs obligatoires. Veuillez consulter Wikipédia pour connaître les caractères et les longueurs pris en charge par type.
Vous pouvez trouver tous les types pris en charge dans le dossier src/Types.
Les types les plus utilisés sont TYPE_CODE_128 et TYPE_CODE_39. En raison de la meilleure prise en charge du scanner, de la longueur variable et de la plupart des caractères pris en charge.
TYPE_CODE_32 (code pharmaceutique italien 'MINSAN')
TYPE_CODE_39
TYPE_CODE_39_CHECKSUM
TYPE_CODE_39E
TYPE_CODE_39E_CHECKSUM
TYPE_CODE_93
TYPE_STANDARD_2_5
TYPE_STANDARD_2_5_CHECKSUM
TYPE_INTERLEAVED_2_5
TYPE_INTERLEAVED_2_5_CHECKSUM
TYPE_CODE_128
TYPE_CODE_128_A
TYPE_CODE_128_B
TYPE_CODE_128_C
TYPE_EAN_2
TYPE_EAN_5
TYPE_EAN_8
TYPE_EAN_13
TYPE_ITF14 (également connu sous le nom de GTIN-14)
TYPE_UPC_A
TYPE_UPC_E
TYPE_MSI
TYPE_MSI_CHECKSUM
TYPE_POSTNET
TYPE_PLANÈTE
TYPE_RMS4CC
TYPE_KIX
TYPE_IMB
TYPE_CODABAR
TYPE_CODE_11
TYPE_PHARMA_CODE
TYPE_PHARMA_CODE_TWO_TRACKS
Voir des exemples d'images pour tous les types de codes-barres pris en charge
Si vous souhaitez utiliser des images PNG ou JPG, vous devez installer Imagick ou la bibliothèque GD. Ce package utilisera Imagick s'il est installé, ou reviendra à GD. Si vous avez les deux installés, mais que vous souhaitez une méthode spécifique, vous pouvez utiliser $renderer->useGd()
ou $renderer->useImagick()
pour forcer votre préférence.
$barcode = (new PicqerBarcodeTypesTypeCode128())->getBarcode('081231723897');$renderer = new PicqerBarcodeRenderersPngRenderer();echo '<img src="data:image/png;base64,' . base64_encode($renderer->render ($code-barres, $code-barres->getWidth() * 2)) .
$barcode = (new PicqerBarcodeTypesTypeCodabar())->getBarcode('081231723897');$renderer = new PicqerBarcodeRenderersJpgRenderer();file_put_contents('barcode.jpg', $renderer->render($barcode, $barcode->getWidth() *2));
file_put_contents('barcode.svg', (nouveau PicqerBarcodeRenderersSvgRenderer())->render((nouveau PicqerBarcodeTypesTypeKix())->getBarcode('6825ME601')));
Il n'est pas nécessaire de modifier quoi que ce soit lors de la mise à niveau de la v2 vers la v3. Ci-dessus vous trouverez la nouvelle façon privilégiée d'utiliser cette bibliothèque depuis la v3. Mais l’ancien style fonctionne toujours.
Pour donner aux moteurs de rendu la même interface, la définition des couleurs se fait désormais toujours avec un tableau de couleurs RVB. Si vous utilisez les anciennes classes BarcodeGenerator* et utilisez des couleurs avec des noms (« rouge ») ou des codes hexadécimaux (#3399ef), ceux-ci seront convertis à l'aide de ColorHelper. Tous les codes hexadécimaux sont pris en charge, mais pour les noms de couleurs, seules les couleurs de base sont prises en charge.
Si vous souhaitez convertir vers le nouveau style, voici un exemple :
// Ancien style$generator = new PicqerBarcodeBarcodeGeneratorSVG();echo $generator->getBarcode('081231723897', $generator::TYPE_CODE_128);// Nouveau style$barcode = (new PicqerBarcodeTypesTypeCode128())->getBarcode('081231723897' );$rendu = new PicqerBarcodeRenderersSvgRenderer();echo $renderer->render($barcode);
La largeur dans le moteur de rendu est désormais la largeur du résultat final, au lieu du widthFactor. Si vous souhaitez conserver les largeurs dynamiques, vous pouvez obtenir la largeur du code-barres encodé et la multiplier par widthFactor pour obtenir le même résultat qu'avant. Voir ici un exemple pour un widthFactor de 2 :
// Ancien style$generator = new PicqerBarcodeBarcodeGeneratorSVG();echo $generator->getBarcode('081231723897', $generator::TYPE_CODE_128, 2. 30);// Nouveau style$barcode = (new PicqerBarcodeTypesTypeCode128())->getBarcode('081231723897');$renderer = new PicqerBarcodeRenderersSvgRenderer();echo $renderer->render($barcode, $barcode->getWidth() * 2, 30);
Dans la version 3, les encodeurs de type code-barres et les moteurs de rendu d'images sont complètement séparés. Cela facilite grandement la création de votre propre moteur de rendu. L'ancienne méthode utilisait des « générateurs ». Vous trouverez ci-dessous les anciens exemples de ces générateurs, qui fonctionnent toujours également en v3.
Lancez le générateur de codes-barres pour la sortie souhaitée, puis appelez la routine ->getBarcode() autant de fois que vous le souhaitez.
<?phprequire 'vendor/autoload.php';// Ceci affichera le code-barres sous forme de sortie HTML à afficher dans le navigateur$generator = new PicqerBarcodeBarcodeGeneratorHTML();echo $generator->getBarcode('081231723897', $generator::TYPE_CODE_128 );
Il en résultera cette beauté :
La méthode getBarcode()
accepte les paramètres suivants :
$barcode
Chaîne nécessaire pour encoder le code-barres
$type
Type de code barre, utilise les constantes définies dans la classe
$widthFactor
La largeur est basée sur la longueur des données, avec ce facteur, vous pouvez rendre les barres du code-barres plus larges que par défaut
$height
La hauteur totale du code-barres en pixels
$foregroundColor
Code hexadécimal sous forme de chaîne, ou tableau de RVB, des couleurs des barres (la couleur de premier plan)
Exemple d'utilisation de tous les paramètres :
<?phprequire 'vendor/autoload.php';$redColor = [255, 0, 0];$generator = new PicqerBarcodeBarcodeGeneratorPNG();file_put_contents('barcode.png', $generator->getBarcode('081231723897', $generator ::TYPE_CODE_128, 3, 50, $couleurrouge));
$generatorSVG = nouveau PicqerBarcodeBarcodeGeneratorSVG(); // SVG$generatorPNG basé sur un vecteur = new PicqerBarcodeBarcodeGeneratorPNG(); // PNG$generatorJPG basé sur les pixels = new PicqerBarcodeBarcodeGeneratorJPG(); // JPG$generatorHTML basé sur les pixels = new PicqerBarcodeBarcodeGeneratorHTML(); // HTML$generatorHTML basé sur les pixels = new PicqerBarcodeBarcodeGeneratorDynamicHTML(); // HTML basé sur des vecteurs
$generator = new PicqerBarcodeBarcodeGeneratorPNG();echo '<img src="data:image/png;base64,' . base64_encode($generator->getBarcode('081231723897', $generator::TYPE_CODE_128)) . '">';
$generator = new PicqerBarcodeBarcodeGeneratorJPG();file_put_contents('barcode.jpg', $generator->getBarcode('081231723897', $generator::TYPE_CODABAR));
file_put_contents('barcode.svg', (nouveau PicqerBarcodeBarcodeGeneratorSVG())->getBarcode('6825ME601', PicqerBarcodeBarcodeGeneratorSVG::TYPE_KIX));
La base de code est basée sur le générateur de codes-barres TCPDF de Nicola Asuni. Ce code est donc sous licence LGPLv3.