Entradas con la etiqueta ‘PEAR’

Generar códigos de barras con PHP y PEAR:Image_Barcode. (Y, sobretodo, como cambiar la altura del código de barras)

Miércoles, 3 de Septiembre de 2008

Ante la necesidad de generar códigos de barras mediante PHP, he encontrado el paquete de PEAR Image_Barcode.

La instalación no puede ser más sencilla en Ubuntu 8.04. Image_Barcode se encuentra en los repositorios en forma de módulo de PHP (php-image-barcode). Ha instalado Pear y Gd como dependencias y ya está.

Con un:

sudo apt-get install php-image-barcode

Ya tenemos instalado todo lo necesario

En caso de no tener hasta ahora Gd, se hace necesario reiniciar apache:

sudo /etc/init.d/apache2 restart

Bien, ahora ya podemos ejecutar el ejemplo que nos dan en la documentación:

PHP:
  1. require_once 'Image/Barcode.php';
  2. Image_Barcode::draw('1234', 'int25', 'png');

Nos generará la siguiente imagen:  

En nuestro caso necesitamos generar códigos con letras y descripciones, por esta razón utilizamos el tipo de código "code128", quedando el ejemplo de la siguiente manera:

PHP:
  1. require_once 'Image/Barcode.php';
  2. Image_Barcode::draw('ControlZeta', 'code128', 'png');

Se nos genera esta otra imagen:

Código de barras alfanumérico con Control Zeta

Hasta aquí todo perfecto, pero... Estos códigos son demasiado altos para el uso que se les va a dar, así que necesitamos disminuir el alto del código. Una opción seria modificar directamente la altura de la imagen, pero esto "achataría" el texto inferior. No nos interesa.

Evidentemente hemos ido a la documentación oficial: http://pear.php.net/package/Image_Barcode/docs

Tras no ser capaz de encontrar ningún método para modificar la altura de códigos de barras code128 (cualquier ayuda será bienvenida) he ido directamente a la clase para ver como podía modificar esta altura. Mi sorpresa ha sido no encontrar ningún método que hiciera lo que necesitaba, pero en cambio, me encontrado con esta simple porción de código nada más empezar a leer:

PHP:
  1. class Image_Barcode_code128 extends Image_Barcode
  2. {
  3. var $_type = 'code128';
  4. var $_barcodeheight = 60;
  5. var $_font = 2;
  6. var $_barwidth = 1;
  7. var $code;
  8.  
  9. ...

Evidentemente, he cambiado el valor $_barcodeheight y todo ha funcionado a la perfección, pero estoy seguro que hay algún motivo para que este valor sea fijo. ¿Alguien tiene alguna explicación al respecto?

Por cierto, el resultado final es este: