TigerZF
🌐Español

16.2. Creación de códigos de barras usando la clase Zend_Barcode

16.2.1. Uso de Zend_Barcode::factory

Zend_Barcode utiliza un método factory para crear una instancia de un renderizador (renderer) que extiende Zend_Barcode_Renderer_RendererAbstract. El método factory acepta cinco argumentos.

  1. El nombre del formato de código de barras (por ejemplo, "code39") (obligatorio)

  2. El nombre del renderizador (por ejemplo, "image") (obligatorio)

  3. Opciones para pasar al objeto del código de barras (un array o un objeto Zend_Config) (opcional)

  4. Opciones para pasar al objeto renderizador (un array o un objeto Zend_Config) (opcional)

  5. Valor booleano que indica si se deben renderizar automáticamente los errores o no. Si ocurre una excepción, el objeto de código de barras proporcionado se sustituirá por una representación de error (opcional, valor por defecto TRUE)

Ejemplo 16.1. Obtener un renderizador con Zend_Barcode::factory()

Zend_Barcode::factory() instancia objetos de código de barras y renderizadores y los enlaza entre sí. En este primer ejemplo, usaremos el tipo de código de barras Code39 junto con el renderizador Image.

// Only the text to draw is required
$barcodeOptions = array('text' => 'ZEND-FRAMEWORK');

// No required options
$rendererOptions = array();
$renderer = Zend_Barcode::factory(
    'code39', 'image', $barcodeOptions, $rendererOptions
);

Ejemplo 16.2. Uso de Zend_Barcode::factory() con objetos Zend_Config

Puede pasar un objeto Zend_Config al factory para crear los objetos necesarios. El siguiente ejemplo es funcionalmente equivalente al anterior.

// Using only one Zend_Config object
$config = new Zend_Config(array(
    'barcode'        => 'code39',
    'barcodeParams'  => array('text' => 'ZEND-FRAMEWORK'),
    'renderer'       => 'image',
    'rendererParams' => array('imageType' => 'gif'),
));

$renderer = Zend_Barcode::factory($config);

16.2.2. Dibujar un código de barras

Cuando dibuja el código de barras, recupera el recurso en el que se dibuja el código de barras. Para dibujar un código de barras, puede llamar a draw() del renderizador, o simplemente usar el método proxy proporcionado por Zend_Barcode.

Ejemplo 16.3. Dibujar un código de barras con el objeto renderizador

// Only the text to draw is required
$barcodeOptions = array('text' => 'ZEND-FRAMEWORK');

// No required options
$rendererOptions = array();

// Draw the barcode in a new image,
$imageResource = Zend_Barcode::factory(
    'code39', 'image', $barcodeOptions, $rendererOptions
)->draw();

Ejemplo 16.4. Dibujar un código de barras con Zend_Barcode::draw()

// Only the text to draw is required
$barcodeOptions = array('text' => 'ZEND-FRAMEWORK');

// No required options
$rendererOptions = array();

// Draw the barcode in a new image,
$imageResource = Zend_Barcode::draw(
    'code39', 'image', $barcodeOptions, $rendererOptions
);

16.2.3. Renderizar un código de barras

Cuando renderiza un código de barras, dibuja el código de barras, envía las cabeceras y envía el recurso (por ejemplo, a un navegador). Para renderizar un código de barras, puede llamar al método render() del renderizador o simplemente usar el método proxy proporcionado por Zend_Barcode.

Ejemplo 16.5. Renderizar un código de barras con el objeto renderizador

// Only the text to draw is required
$barcodeOptions = array('text' => 'ZEND-FRAMEWORK');

// No required options
$rendererOptions = array();

// Draw the barcode in a new image,
// send the headers and the image
Zend_Barcode::factory(
    'code39', 'image', $barcodeOptions, $rendererOptions
)->render();

Esto generará este código de barras:


Ejemplo 16.6. Renderizar un código de barras con Zend_Barcode::render()

// Only the text to draw is required
$barcodeOptions = array('text' => 'ZEND-FRAMEWORK');

// No required options
$rendererOptions = array();

// Draw the barcode in a new image,
// send the headers and the image
Zend_Barcode::render(
    'code39', 'image', $barcodeOptions, $rendererOptions
);

Esto generará el mismo código de barras que el ejemplo anterior.