Códigos de barra en PDF con PHP


Imagen1

 

 

El uso de los códigos de barra ha cobrado gran relevancia hoy en día, se emplean para marcar y etiquetar prácticamente cualquier cosa, por lo que en esta ocasión les mostraremos como pueden no solo generar un código de barras, sino incluirlos en un PDF.

Para comenzar necesitaremos las siguientes librerías, de las cuales les damos los enlaces a continuación.

– Libreria FPDF

– Libreria barcode

Aunque por las dudas, les dejamos el enlace a la nueva versión que es la que veremos aquí

-nueva libreria barcode

Una vez descargadas las dos librerías y colocadas en nuestro sitio, comencemos con el HTML que servirá de interfaz, no hemos trabajado mucho en el pues es solo de muestra.

Captura de pantalla 2014-12-02 a las 8.48.47 p.m.

En las lineas 22 a la 26 hemos creado una capa con un iframe donde presentaremos el PDF con el código de barras, para hacerlo, pedimos un código de producto, el cual enviaremos a un PHP, en este caso podemos ver que en la linea 19, tenemos el botón que ejecuta funciona generar().

La función generar la tenemos de la linea 7 a la 14, es un javascript en el cual usamos getelementsbyid para obtener el valor que se escribió en el cuadro de texto, con ese valor en la siguiente linea construimos una cadena, que es la ruta al PHP con el valor del cuadro de texto como parámetro y que le pasamos al iframe como pagina para mostrar en la linea 12 con el r.src=envio, en donde src el el atributo SRC (source o fuente ) del iframe.

Resumiendo, escribimos el valor en el cuadro de texto, presionamos el botón «Generar código» y el valor que escribimos se usa para presentar el PHP en el iframe.

Ahora vamos al PHP

Captura de pantalla 2014-12-02 a las 10.25.14 p.m.

Comencemos, en la linea 2, cargamos la libreria FPDF, en la linea 3 cargamos la libreria bardode, en la linea 4 cargamos un PHP llamado conecta.php, que lo que hace es establecer conexión con la base de datos.

Debido a que en el HTML construimos la dirección del PHP con el parámetro y lo enviamos a un iframe, este llamado no genera un paso de valores del tipos POST, sino un paso de valores del tipo GET, por lo que en la linea 6 puede ver que leemos el valor que fue enviado desde el HTML a través del arreglo asociativo $_GET.

Ahora bien, como suponemos que los datos del producto lo sacaremos de una base de datos, construimos la consulta en la linea 8 y la ejecutamos con mysql_query en la linea 9, en la linea 10 usamos mysql_fetch_row, para obtener el resultado de la consulta.

En la linea 11, le agregamos unos cuantos ceros al numero para que el código de barras resultante no sea tan pequeño.

Ahora creamos el código de barras, con la instrucción barCodeGenrator, la cual usa los siguientes parámetros, según aparecen.

  • $ llenar   – esta es la variable o valor del cual se creara el código de barras.
  • 1 – como pusimos 1, el resultado se guardara en un archivo, si ponemos 0 el código de barras se manda a pantalla.
  • ‘test.gif’  -nombre con el que se guardara el código de barras, en este caso solo soporta GIF
  • 190,130 – tamaño en pixeles que tendrá la imagen.
  • verdadero – si marca error con este valor, solo  hay que cambiarlo por un 1, es para que aparezca el valor del código de barras debajo del mismo.

Uno de los aspectos con los que hay que tener cuidado es con no hacer demasiado pequeño el código de barras, en la medida de los pixeles, porque puede resultar ilegible.

A partir de la linea 15 comenzamos a crear el PDF con el llamado de la instrucción new FPDF, observe que en esta usamos array para indicarle un tamaño de hoja de 4 x 5 cm, esto es suponiendo que estamos generando una etiqueta de ese tamaño para imprimirla en una impresora de etiquetas.

Agregamos una pagina al PDF del tamaño especificado en la linea que comentamos, después especificamos con setFont el tipo y tamaño de la letra, esto es importante, porque después puede que no aparezca nada, si no lo ponemos.

Observe que en la linea 18, tomamos los datos que consultamos en la base de datos, esto es la categoria y el nombre del producto, para que se vea en la etiqueta, esta información la colocamos en el PDF con la instrucción cell en la cual usamos los parámetros.

  • 3.9    —ancho de la celda donde se escribirán lo datos.
  • 1       —-altura de la celda
  • $informacion    —- variable o dato a escribir en la celda.
  • 1       —- indica que se presentara el borde
  • 0     —–indica en este caso que no se hara un salto de linea
  • L    —- es la alineacion del texto, en este cado left (izquierda)

Ahora para incluir el código de barras, usamos la instrucción Image en la linea 21, en este caso el problema es estar probando para ubicarla, observe que los primeros dos números indican en donde queda la esquina superior izquierda de la imagen dentro del PDF, y las otras dos, indican el tamaño de la imagen, en este caso en centímetros, porque esa fue la unidad de medida especificada en el PDF en la instrucción new FPDF.

Por ultimo usamos la instrucción Output para que se genere y aparezca en el navegador el PDF con el código de barras y toda la información que pusimos.

 

QUE FALTO?

  1. Verificar si el dato existe en la base de datos y tomas las precauciones para el caso que alguien coloque un código o numero de producto que no esta registrado en la base de datos.
  2. Repetir la etiqueta para crear una plantilla de códigos de barra que se recortaran.

 

 

 

28 Comments

  1. Hola, solo tengo 2 dudas, la primera, hay manera de especificar el formato en que genera el codigo? en este caso por ejemplo un codigo en code128? y la segunda, los codigos generados pueden ser leidos por un lector de codigo de barras sin problemas o es preferible manejar algun formato de imagen en especifico para evitar que no se puedan leer, como gif, png o jpeg? gracias , tu clase me ha servido mucho!!!

    Le gusta a 1 persona

  2. y si quiero imprimir varios codigos con un while?

    $sql=»select cod_producto,nombre_producto from productos where cod_generado=’$cod_generado'»;

    $r=mysql_query($sql,$bd);
    $fila=mysql_num_rows($r);

    $pdf=new FPDF(‘p’,’cm’,array(21.59,27.94));
    $pdf->AddPage();
    $pdf->SetFont(‘Arial’,»,7);

    $i=0;
    while($dato=mysql_fetch_row($r)){
    $i++;
    $numero=$dato[0];
    $llenar=$numero;

    new barCodeGenrator($llenar,1,’test.gif’,100,100,1);

    $informacion=»$dato[1]»;
    $pdf->Cell(2.3,1.5,$informacion,0,0,’L’);
    $pdf->Image(‘test.gif’,1,2,3,1);

    }

    $pdf->Output();

    solo me imprime el codigo de barras solamente una vez

    Me gusta

¿Qué estas pensando?

Este sitio utiliza Akismet para reducir el spam. Conoce cómo se procesan los datos de tus comentarios.