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.
Aunque por las dudas, les dejamos el enlace a la nueva versión que es la que veremos aquí
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.
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
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?
- 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.
- Repetir la etiqueta para crear una plantilla de códigos de barra que se recortaran.
Aqui he visto un video : Generar Códigos de Barras en PDF desde PHP y MySQL
Me gustaMe gusta
Me gustaMe gusta
Hola…
Me genera este error al momento de visualizar la imagen
FPDF error: Not a JPEG file: 27000002.jpg
Podrías ayudarme … Gracias..!!
Me gustaMe gusta
ya tengo respuesta a mi interrogante me olvide leer la parte donde dice que solo se acptan «gifs»..
. Me sirvió de mucho , una vez mas gracias!!
Me gustaMe gusta
Gracias a ti por comentar
Me gustaMe gusta
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!!!
Me gustaLe gusta a 1 persona
El autor de la librería indicaba en su documentación que se podía, pero no encontramos el parámetro que lo hacía, en cuanto a lo del lector, lo leen sin problemas
Me gustaMe gusta
Muchas gracias, tengo una inquietud.
Que pasa en un caso como éste?
require_once(‘barcode.inc.php’);
$a = ‘1256893654’;
$b = ‘72365458’;
$code_number = $a.$b;
new barCodeGenrator($code_number,0,’hello.gif’, 100,50, true);
Necesito concatenar 3 variables y dejarlas en una variable final y crear el código pero no funciona.
Gracias
Me gustaMe gusta
Puedes usar la inserción de cadenas en línea $code_number=»$a$b$c»,
Me gustaMe gusta
Hola podria imprimir directamente a la imperesora termica los codigos de barras..?
Me gustaMe gusta
Si, si es posible, se genera el PDF y se manda directo a impresión
Me gustaMe gusta
Oye y el archivo que se llama 30generar.php ese cual es pues el programa trata de redireccionar a ese archivo
Me gustaMe gusta
Es el PHP que describimos, el que imprime el codigo de barras en si
Me gustaMe gusta
me puedes decir como hacerlo?, ya lo intente con PDF_AutoPrint pero tengo que reemplazar $pdf= new FPDF(‘P’,’cm’,array(10,10)); con este otro $pdf=new PDF_AutoPrint(); y deja de crearme el pdf con el formato que quiero 😦
Me gustaMe gusta
Cuantos caracteres acepta?
Me gustaMe gusta
Cuantos numero acepta?
Me gustaMe gusta
No hemos revisado pero se supone que acepta un arreglo de numero según indica el creador del complemtob
Me gustaMe gusta
En que version esta ese codigo de barra?
Me gustaMe gusta
Esta en code 128
Me gustaMe gusta
una consulta, revisando el archivo que genera el codigo de barras solo tiene numeros. No estoy seguro si tambien acepta lafanuméricos. si me pueden ayudar por favor tengo 1 semana de darle vueltas al asunto, gracias.
Me gustaMe gusta
Buenas tardes , si los acepta
Me gustaMe gusta
Estoy intentando aplicar esta libreria, pero me funciona en mi máquina local. Una vez que lo implemento en un servidor real no funciona. será que internamente la librería se conecta a otro servidor y si no hay acceso a internet no funciona?
Me gustaMe gusta
Nos parece raro pues la librería la hemos probado en servidores en funcionamiento sin problemas
Me gustaMe gusta
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 gustaMe gusta
En este caso estas colocando un solo código por cada página abría que meter otro ciclo para que te coloque varias copias del mismo código en cada página para aprovechar el espacio
Me gustaMe gusta
como implemento code128 de la misma forma
Me gustaMe gusta
en qué formato de código lo genera?
Me gustaMe gusta
En la nueva versión, soporta EAN-13, EAN-8, UPC-A, UPC-E, ISBN, 2 of 5 interleaved, postnet, codabar, code128, code39 and code93.
Me gustaMe gusta