Criação de código de barras usando a classe Zend_Barcode

Usando o Zend_Barcode::factory

Zend_Barcode utiliza um método de fábrica para criar uma instância de um renderizador que estende Zend_Barcode_Renderer_RendererAbstract. O método de fábrica aceita cinco argumentos.

  1. O nome do formato de código de barras (por exemplo, "code39") (obrigatório)

  2. O nome do renderizador (por exemplo, "image") (obrigatório)

  3. As opções do objeto código de barras (uma matriz ou objeto Zend_Config) (opcional)

  4. As opções do objeto renderizador (uma matriz ou objeto Zend_Config) (opcional)

  5. Booleano indicando se a renderização automática dos erros está ativada. Se ocorrer uma exceção, o objeto código de barras fornecido será substituído por uma representação de erro (opcional, padrão TRUE)

Exemplo 59. Recuperando um Renderizador com Zend_Barcode::factory()

Zend_Barcode::factory() instancia objetos código de barras e renderizadores no mesmo laço. Neste primeiro exemplo, vamos usar o tipo código de barras Code39, juntamente com o renderizador Image.

// Somente o texto a ser escrito é necessário
$barcodeOptions = array('text' => 'ZEND-FRAMEWORK');

// Não há opções necessárias
$rendererOptions = array();
$renderer = Zend_Barcode::factory(
    'code39', 'image', $barcodeOptions, $rendererOptions
);

Exemplo 60. Usando o Zend_Barcode::factory() com objetos Zend_Config

Você pode passar um objeto Zend_Config para a fábrica, a fim de criar os objetos necessários. O exemplo a seguir é funcionalmente equivalente ao anterior.

// Usando apenas um objeto Zend_Config
$config = new Zend_Config(array(
    'barcode'        => 'code39',
    'barcodeParams'  => array('text' => 'ZEND-FRAMEWORK'),
    'renderer'       => 'image',
    'rendererParams' => array('imageType' => 'gif'),
));

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

Desenhando um código de barras

Quando você desenha o código de barras, você recuperar o recurso em que o código de barras é desenhado. Para desenhar um código de barras, você pode chamar o método draw() do renderizador ou simplesmente usar o método de proxy fornecido pelo Zend_Barcode.

Exemplo 61. Desenhando um código de barras com o objeto renderizador

// Somente o texto a ser escrito é necessário
$barcodeOptions = array('text' => 'ZEND-FRAMEWORK');

// Não há opções necessárias
$rendererOptions = array();

// Desenha o código de barras em uma nova imagem
$imageResource = Zend_Barcode::factory(
    'code39', 'image', $barcodeOptions, $rendererOptions
)->draw();

Exemplo 62. Desenhando um código de barras com Zend_Barcode::draw()

// Somente o texto a ser escrito é necessário
$barcodeOptions = array('text' => 'ZEND-FRAMEWORK');

// Não há opções necessárias
$rendererOptions = array();

// Desenha o código de barras em uma nova imagem
$imageResource = Zend_Barcode::draw(
    'code39', 'image', $barcodeOptions, $rendererOptions
);

Renderizando um código de barras

Quando você renderiza um código de barras, você desenha o código de barras, envia os cabeçalhos e envia também o recurso (à um navegador, por exemplo). Para renderizar um código de barras, você pode chamar o método render() do renderizador ou simplesmente usar o método de proxy fornecido pelo Zend_Barcode.

Exemplo 63. Renderizando um código de barras com o objeto renderizador

// Somente o texto a ser escrito é necessário
$barcodeOptions = array('text' => 'ZEND-FRAMEWORK');

// Não há opções necessárias
$rendererOptions = array();

// Desenha o código de barras em uma nova imagem,
// enviar os cabeçalhos e a imagem
Zend_Barcode::factory(
    'code39', 'image', $barcodeOptions, $rendererOptions
)->render();

Isso gerará este código de barras:


Exemplo 64. Renderizando um código de barras com Zend_Barcode::render()

// Somente o texto a ser escrito é necessário
$barcodeOptions = array('text' => 'ZEND-FRAMEWORK');

// Não há opções necessárias
$rendererOptions = array();

// Desenha o código de barras em uma nova imagem,
// enviar os cabeçalhos e a imagem
Zend_Barcode::render(
    'code39', 'image', $barcodeOptions, $rendererOptions
);

Isso gerará o mesmo código de barras do exemplo anterior.