Dies ist ein einfach zu verwendender, nicht überladener, Framework-unabhängiger Barcode-Generator in PHP. Es verwendet keine (!) Composer-Abhängigkeiten und besteht nur aus einer Handvoll Dateien. Wahrscheinlich der Grund dafür, dass dies der am häufigsten heruntergeladene Barcode-Generator für PHP auf Packagist ist. ;)
Es erstellt SVG-, PNG-, JPG- und HTML-Bilder aus den am häufigsten verwendeten 1D-Barcode-Standards.
Keine Unterstützung für 2D- Barcodes wie QR-Codes.
Wir generieren nur den „Strich“-Teil eines Barcodes, ohne Text unter dem Barcode. Wenn Sie einen Text des Codes unterhalb des Barcodes wünschen, können Sie ihn später zur Ausgabe dieses Pakets hinzufügen.
Installation über Composer:
composer require picqer/php-barcode-generator
Wenn Sie PNG- oder JPG-Bilder generieren möchten, müssen Sie zusätzlich die GD-Bibliothek oder Imagick auf Ihrem System installiert haben. Für SVG- oder HTML-Renderings gibt es keine Abhängigkeiten.
Sie möchten einen Barcode für einen bestimmten „Typ“ (z. B. Code 128 oder UPC) in einem bestimmten Bildformat (z. B. PNG oder SVG).
Codieren Sie zunächst die Zeichenfolge, deren Barcode Sie erstellen möchten, in ein Barcode
Objekt mit einem der Barcode-Typen.
Verwenden Sie dann einen der Renderer, um das Bild der Balken im Barcode
-Objekt zu rendern.
Der „Typ“ ist ein Standard, der definiert, welche Zeichen Sie kodieren können und welche Balken welches Zeichen darstellen. Die am häufigsten verwendeten Typen sind Code 128 und EAN/UPC. Nicht alle Zeichen können in jedem Barcode-Typ kodiert werden und nicht alle Barcode-Scanner können alle Typen lesen.
<?phprequire 'vendor/autoload.php';// Barcode-Objekt der Code128-Kodierung erstellen.$barcode = (new PicqerBarcodeTypesTypeCode128())->getBarcode('081231723897');// Barcode als HTML im Browser ausgeben mit a HTML Renderer$renderer = new PicqerBarcodeRenderersHtmlRenderer();echo $renderer->render($barcode);
Wird zu dieser Schönheit führen:
Jeder Renderer hat seine eigenen Optionen. Sie können beispielsweise die Höhe, Breite und Farbe eines PNG festlegen:
<?phprequire 'vendor/autoload.php';$colorRed = [255, 0, 0];$barcode = (new PicqerBarcodeTypesTypeCode128())->getBarcode('081231723897');$renderer = new PicqerBarcodeRenderersPngRenderer();$renderer ->setForegroundColor($colorRed);// PNG im speichern Dateisystem, mit widthFactor 3 (Breite des Barcodes x 3) und einer Höhe von 50 Pixelfile_put_contents('barcode.png', $renderer->render($barcode, $barcode->getWidth() * 3, 50));
Verfügbare Bildrenderer: SVG, PNG, JPG und HTML.
Sie entsprechen alle dem RendererInterface und verfügen über dieselbe render()
-Methode. Einige Renderer verfügen über set*()-Methoden auch über zusätzliche Optionen.
Die render()-Methode benötigt das Barcode-Objekt sowie die Breite und Höhe. Für JPG/PNG-Bilder erhalten Sie nur dann einen gültigen Barcode, wenn Sie eine Breite angeben, die ein Faktor der Breite des Barcode-Objekts ist. Aus diesem Grund zeigen die Beispiele $barcode->getWidth() * 2
um das Bild in Pixeln doppelt so breit zu machen wie die Breite der Barcode-Daten. Sie können als Breite eine beliebige Zahl angeben und das Bild wird bestmöglich skaliert, aber ohne Anti-Aliasing ist es nicht vollkommen gültig.
HTML- und SVG-Renderer können jede Breite und Höhe verarbeiten, sogar Floats.
Hier sind alle Optionen für jeden Renderer:
Ein vektorbasiertes SVG-Bild. Bietet die beste Druckqualität.
$renderer = new PicqerBarcodeRenderersSvgRenderer();$renderer->setForegroundColor([255, 0, 0]); // Geben Sie eine Farbe Rot für die Balken an, Standard ist Schwarz. Geben Sie 3 mal 0-255 Werte für Rot, Grün und Blau an. $renderer->setBackgroundColor([0, 0, 255]); // Geben Sie eine Farbe Blau für den Hintergrund an, Standard ist transparent. Geben Sie 3 mal 0-255 Werte für Rot, Grün und Blau an. $renderer->setSvgType($renderer::TYPE_SVG_INLINE); // Ändert die Ausgabe so, dass sie inline in HTML-Dokumenten anstelle eines eigenständigen SVG-Bilds verwendet wird (Standard)$renderer->setSvgType($renderer::TYPE_SVG_STANDALONE); // Wenn Sie die Standardeinstellung erzwingen möchten, erstellen Sie ein eigenständiges SVG-Bild$renderer->render($barcode, 450.20, 75); // Breite und Höhe unterstützen Schwimmkörper
Alle Optionen für PNG und JPG sind gleich.
$renderer = new PicqerBarcodeRenderersPngRenderer();$renderer->setForegroundColor([255, 0, 0]); // Geben Sie eine Farbe für die Balken an, Standard ist Schwarz. Geben Sie 3 mal 0-255 Werte für Rot, Grün und Blau an. $renderer->setBackgroundColor([0, 255, 255]); // Geben Sie eine Farbe für den Hintergrund an. Standard ist transparent (in PNG) oder Weiß (in JPG). Geben Sie 3 mal 0-255 Werte für Rot, Grün und Blau an. $renderer->useGd(); // Wenn Sie Imagick und GD installiert haben, aber GD verwenden möchten$renderer->useImagick(); // Wenn Sie Imagick und GD installiert haben, aber Imagick verwenden möchten$renderer->render($barcode, 5, 40); // Breitenfaktor (wie viele Pixel breit jeder Balken ist) und die Höhe in Pixel
Stellt HTML zur Inline-Verwendung in einem vollständigen HTML-Dokument bereit.
$renderer = new PicqerBarcodeRenderersHtmlRenderer();$renderer->setForegroundColor([255, 0, 0]); // Geben Sie eine Farbe Rot für die Balken an, Standard ist Schwarz. Geben Sie 3 mal 0-255 Werte für Rot, Grün und Blau an. $renderer->setBackgroundColor([0, 0, 255]); // Geben Sie eine Farbe Blau für den Hintergrund an, Standard ist transparent. Geben Sie 3 mal 0-255 Werte für Rot, Grün und Blau an. $renderer->render($barcode, 450.20, 75); // Breite und Höhe unterstützen Schwimmkörper
Geben Sie hier HTML ein. Der Barcode nutzt die volle Breite und Höhe, um ihn in einen Container/Div mit einer festen Größe einzufügen.
$renderer = new PicqerBarcodeRenderersDynamicHtmlRenderer();$renderer->setForegroundColor([255, 0, 0]); // Geben Sie eine Farbe Rot für die Balken an, Standard ist Schwarz. Geben Sie 3 mal 0-255 Werte für Rot, Grün und Blau an. $renderer->setBackgroundColor([0, 0, 255]); // Geben Sie eine Farbe Blau für den Hintergrund an, Standard ist transparent. Geben Sie 3 mal 0-255 Werte für Rot, Grün und Blau an. $renderer->render($barcode);
Sie können den gerenderten HTML-Code wie folgt in ein Div einfügen:
<div style="width: 400px; height: 75px"><?php echo $renderedBarcode; ?></div>
Diese Barcodetypen werden unterstützt. Alle Typen unterstützen unterschiedliche Zeichensätze und einige haben obligatorische Längen. Die unterstützten Zeichen und Längen pro Typ finden Sie auf Wikipedia.
Alle unterstützten Typen finden Sie im Ordner src/Types.
Die am häufigsten verwendeten Typen sind TYPE_CODE_128 und TYPE_CODE_39. Aufgrund der besten Scannerunterstützung, der variablen Länge und der Unterstützung der meisten Zeichen.
TYPE_CODE_32 (italienischer Pharmacode „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 (auch bekannt als GTIN-14)
TYPE_UPC_A
TYPE_UPC_E
TYPE_MSI
TYPE_MSI_CHECKSUM
TYPE_POSTNET
TYPE_PLANET
TYPE_RMS4CC
TYPE_KIX
TYPE_IMB
TYPE_CODABAR
TYPE_CODE_11
TYPE_PHARMA_CODE
TYPE_PHARMA_CODE_TWO_TRACKS
Sehen Sie sich Beispielbilder für alle unterstützten Barcodetypen an
Wenn Sie PNG- oder JPG-Bilder verwenden möchten, müssen Sie Imagick oder die GD-Bibliothek installieren. Dieses Paket verwendet Imagick, sofern dieses installiert ist, oder greift auf GD zurück. Wenn Sie beide installiert haben, aber eine bestimmte Methode wünschen, können Sie $renderer->useGd()
oder $renderer->useImagick()
verwenden, um Ihre Präferenz zu erzwingen.
$barcode = (new PicqerBarcodeTypesTypeCode128())->getBarcode('081231723897');$renderer = new PicqerBarcodeRenderersPngRenderer();echo '<img src="data:image/png;base64,' . base64_encode($renderer->render ($barcode, $barcode->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', (new PicqerBarcodeRenderersSvgRenderer())->render((new PicqerBarcodeTypesTypeKix())->getBarcode('6825ME601')));
Beim Upgrade von v2 auf v3 müssen keine Änderungen vorgenommen werden. Oben finden Sie die neue bevorzugte Art der Verwendung dieser Bibliothek seit Version 3. Aber der alte Stil funktioniert immer noch.
Um den Renderern die gleiche Benutzeroberfläche zu bieten, erfolgt das Festlegen von Farben jetzt immer mit einem Array von RGB-Farben. Wenn Sie die alten BarcodeGenerator*-Klassen verwenden und Farben mit Namen ('red') oder Hex-Codes (#3399ef) verwenden, werden diese mit dem ColorHelper konvertiert. Alle Hexcodes werden unterstützt, aber für Farbnamen werden nur die Grundfarben unterstützt.
Wenn Sie auf den neuen Stil umstellen möchten, finden Sie hier ein Beispiel:
// Old style$generator = new PicqerBarcodeBarcodeGeneratorSVG();echo $generator->getBarcode('081231723897', $generator::TYPE_CODE_128);// Neuer Stil$barcode = (new PicqerBarcodeTypesTypeCode128())->getBarcode('081231723897' );$renderer = neu PicqerBarcodeRenderersSvgRenderer();echo $renderer->render($barcode);
Die Breite im Renderer ist jetzt die Breite des Endergebnisses und nicht mehr der widthFactor. Wenn Sie dynamische Breiten beibehalten möchten, können Sie die Breite des codierten Barcodes ermitteln und diese mit dem widthFactor multiplizieren, um das gleiche Ergebnis wie zuvor zu erhalten. Sehen Sie hier ein Beispiel für einen widthFactor von 2:
// Old style$generator = new PicqerBarcodeBarcodeGeneratorSVG();echo $generator->getBarcode('081231723897', $generator::TYPE_CODE_128, 2. 30);// New style$barcode = (new PicqerBarcodeTypesTypeCode128())->getBarcode ('081231723897');$renderer = neu PicqerBarcodeRenderersSvgRenderer();echo $renderer->render($barcode, $barcode->getWidth() * 2, 30);
In Version 3 sind die Barcode-Encoder und Bildrenderer vollständig getrennt. Dies erleichtert die Erstellung Ihres eigenen Renderers erheblich. Der alte Weg war die Verwendung von „Generatoren“. Nachfolgend finden Sie die alten Beispiele dieser Generatoren, die auch in Version 3 noch funktionieren.
Starten Sie den Barcode-Generator für die gewünschte Ausgabe und rufen Sie dann die Routine ->getBarcode() so oft auf, wie Sie möchten.
<?phprequire 'vendor/autoload.php';// Dadurch wird der Barcode als HTML-Ausgabe ausgegeben, um ihn im Browser anzuzeigen$generator = new PicqerBarcodeBarcodeGeneratorHTML();echo $generator->getBarcode('081231723897', $generator::TYPE_CODE_128 );
Wird zu dieser Schönheit führen:
Die Methode getBarcode()
akzeptiert die folgenden Parameter:
$barcode
String, der zum Kodieren im Barcode benötigt wird
$type
Typ des Barcodes, verwenden Sie die in der Klasse definierten Konstanten
$widthFactor
Die Breite basiert auf der Länge der Daten. Mit diesem Faktor können Sie die Barcode-Balken breiter als standardmäßig machen
$height
Die Gesamthöhe des Barcodes in Pixel
$foregroundColor
Hex-Code als String oder RGB-Array der Farben der Balken (der Vordergrundfarbe)
Beispiel für die Verwendung aller Parameter:
<?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, $redColor));
$generatorSVG = new PicqerBarcodeBarcodeGeneratorSVG(); // Vektorbasierter SVG$generatorPNG = new PicqerBarcodeBarcodeGeneratorPNG(); // Pixelbasierter PNG$generatorJPG = new PicqerBarcodeBarcodeGeneratorJPG(); // Pixelbasierter JPG$generatorHTML = new PicqerBarcodeBarcodeGeneratorHTML(); // Pixelbasierter HTML$generatorHTML = new PicqerBarcodeBarcodeGeneratorDynamicHTML(); // Vektorbasiertes HTML
$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', (new PicqerBarcodeBarcodeGeneratorSVG())->getBarcode('6825ME601', PicqerBarcodeBarcodeGeneratorSVG::TYPE_KIX));
Die Codebasis basiert auf dem TCPDF-Barcodegenerator von Nicola Asuni. Dieser Code ist daher unter LGPLv3 lizenziert.