Cómo crear un generador de códigos de barras mediante PHP

Los códigos de barras son identificadores legibles por máquinas que incluyen datos sobre una entidad. Usualmente se utilizan para almacenar datos relacionados con productos, como por ejemplo el precio, el código, la fecha de fabricación y demás datos similares.

En este tutorial vamos a crear un script para generar códigos de barras. Para ello utilizaremos la librería tc-lib-barcode, que es una librería que nos permite, pues eso, crear códigos de barras mediante PHP.

Los códigos de barras que generemos mediante este script almacenarán datos como el precio del producto o el EXP. Al escanear la imagen del código de barras generado con un aplicación para leer códigos de barras, todos estos datos serán revelados.

Podemos agregar este código PHP en una tienda online parq que genere el código de barras de los productos en base a su ID o referencia única.

En este script utilizaremos un formulario HTML que se encargará de recoger los datos del producto. Al enviar dicho formulario, validaremos los datos y los incluiremos en el formato adecuado. Los datos formateados se pasarán a la función de la librería que se encargará de generar el código de barras.

 

Formulario HTML para obtener la información de los producto

Este formulario HTML contiene los campos para obtener la información de nuestros productos. Validaremos dicha información utilizando Javascript en el submit del formulario.

Si algo va mal durante la validación, la función devolverá un false y mostrará el error debajo del formulario. Si por el contrario todo va bien, se enviará la información al PHP para generar el código de barras.

<form method="post" name="frmBarcodeGenerator" id="frmBarcodeGenerator"
    onSubmit="return validate();">
    <div class="form-row">
        MRP:
        <div>
            <input type="text" name="mrp" id="mrp" class="input-field" />
        </div>
    </div>
    <div class="form-row">
        MFG Date:
        <div>
            <input type="date" name="mfg_date" id="mfg_date"
                class="input-field" />
        </div>
    </div>
    <div class="form-row">
        EXP Date:
        <div>
            <input type="date" name="exp_date" id="exp_date"
                class="input-field" />
        </div>
    </div>

    <div>
        <input type="submit" name="generate" class="submit-button"
            value="Generate Barcode" />
    </div>
</form>

Este es el código Javascript que contiene la función que valida los campos. Comprueba mayoritariamente que no estén vacíos y también si el valor de MRP tiene formato numérico.

 

<script>
    function validate() {
        	var valid = true;
        var message;
    	    
        $("#validation-info").hide();
        	$("#validation-info").html();
        if($("#mrp").val() == "") {
            message = "All fields are required";
            	valid = false;
        } else if(!$.isNumeric($("#mrp").val())) {
            	message = "MRP should be in numbers";
            	valid = false;
        } else if($("#mfg_date").val() == "") {
            message = "All fields are required";
            	valid = false;
        } else if($("#exp_date").val() == "") {
                message = "All fields are required";
                valid = false;
        }
        if(valid == false) {
        	   $("#validation-info").show();
           $("#validation-info").html(message);
        }
        return valid;
    }
</script>

Codigo PHP para generar el código de barras

En este código PHP, se incluye el autoload de la librería tc-lib-barcode al principio. Después, recibiremos los datos del formulario en un array dentro de la variable POST. Las fechas de MFG y EXP las convertiremos en un timestamp.

Después, los timestamps de MRP y MFG / EXP del producto se agrupan en una cadena. Esta información del producto formateada lo pasaremos a getBarcodeObj. Esta función devolverá el objeto de código de barras según el tipo especificado.

Con la referencia del objeto de código de barras, se creará el png del código de barras y se mostrará en el navegador.

<?php
if (! empty($_POST["generate"])) {
    require ('tc-lib-barcode/vendor/autoload.php');
    $barcode = new ComTecnickBarcodeBarcode();
    $targetPath = "barcode/";
    
    if (! is_dir($targetPath)) {
        mkdir($targetPath, 0777, true);
    }
    $MRP = $_POST["mrp"];
    $MFGDate = strtotime($_POST["mfg_date"]);
    $EXPDate = strtotime($_POST["exp_date"]);
    $productData = "098{$MRP}10{$MFGDate}55{$EXPDate}";
    $barcode = new ComTecnickBarcodeBarcode();
    $bobj = $barcode->getBarcodeObj('C128C', "{$productData}", 450, 70, 'black', array(
        0,
        0,
        0,
        0
    ));
    
    $imageData = $bobj->getPngData();
    $timestamp = time();
    
    file_put_contents($targetPath . $timestamp . '.png', $imageData);
    ?>
<div class="result-heading">Output:</div>
<img src="<?php echo $targetPath . $timestamp ; ?>.png">
<?php
}
?>

 

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP