Programmer's Reference Guide

Introduction

Barcode creation using Zend_Barcode class

Using Zend_Barcode::factory

Zend_Barcode uses a factory method to create an instance of a renderer that extends Zend_Barcode_Renderer_RendererAbstract. The factory method accepts five arguments.

  1. The name of the barcode format (e.g., "code39") (required)

  2. The name of the renderer (e.g., "image") (required)

  3. Options to pass to the barcode object (an array or Zend_Config object) (optional)

  4. Options to pass to the renderer object (an array or Zend_Config object) (optional)

  5. Boolean to indicate whether or not to automatically render errors. If an exception occurs, the provided barcode object will be replaced with an Error representation (optional default TRUE)

Example #1 Getting a Renderer with Zend_Barcode::factory()

Zend_Barcode::factory() instantiates barcode objects and renderers and ties them together. In this first example, we will use the Code39 barcode type together with the Image renderer.

  1. // Only the text to draw is required
  2. $barcodeOptions = array('text' => 'ZEND-FRAMEWORK');
  3.  
  4. // No required options
  5. $rendererOptions = array();
  6. $renderer = Zend_Barcode::factory(
  7.     'code39', 'image', $barcodeOptions, $rendererOptions
  8. );

Example #2 Using Zend_Barcode::factory() with Zend_Config objects

You may pass a Zend_Config object to the factory in order to create the necessary objects. The following example is functionally equivalent to the previous.

  1. // Using only one Zend_Config object
  2. $config = new Zend_Config(array(
  3.     'barcode'        => 'code39',
  4.     'barcodeParams'  => array('text' => 'ZEND-FRAMEWORK'),
  5.     'renderer'       => 'image',
  6.     'rendererParams' => array('imageType' => 'gif'),
  7. ));
  8.  
  9. $renderer = Zend_Barcode::factory($config);

Drawing a barcode

When you draw the barcode, you retrieve the resource in which the barcode is drawn. To draw a barcode, you can call the draw() of the renderer, or simply use the proxy method provided by Zend_Barcode.

Example #3 Drawing a barcode with the renderer object

  1. // Only the text to draw is required
  2. $barcodeOptions = array('text' => 'ZEND-FRAMEWORK');
  3.  
  4. // No required options
  5. $rendererOptions = array();
  6.  
  7. // Draw the barcode in a new image,
  8. $imageResource = Zend_Barcode::factory(
  9.     'code39', 'image', $barcodeOptions, $rendererOptions
  10. )->draw();

Example #4 Drawing a barcode with Zend_Barcode::draw()

  1. // Only the text to draw is required
  2. $barcodeOptions = array('text' => 'ZEND-FRAMEWORK');
  3.  
  4. // No required options
  5. $rendererOptions = array();
  6.  
  7. // Draw the barcode in a new image,
  8. $imageResource = Zend_Barcode::draw(
  9.     'code39', 'image', $barcodeOptions, $rendererOptions
  10. );

Renderering a barcode

When you render a barcode, you draw the barcode, you send the headers and you send the resource (e.g. to a browser). To render a barcode, you can call the render() method of the renderer or simply use the proxy method provided by Zend_Barcode.

Example #5 Renderering a barcode with the renderer object

  1. // Only the text to draw is required
  2. $barcodeOptions = array('text' => 'ZEND-FRAMEWORK');
  3.  
  4. // No required options
  5. $rendererOptions = array();
  6.  
  7. // Draw the barcode in a new image,
  8. // send the headers and the image
  9. Zend_Barcode::factory(
  10.     'code39', 'image', $barcodeOptions, $rendererOptions
  11. )->render();

This will generate this barcode:

zend.barcode.introduction.example-1.png

Example #6 Renderering a barcode with Zend_Barcode::render()

  1. // Only the text to draw is required
  2. $barcodeOptions = array('text' => 'ZEND-FRAMEWORK');
  3.  
  4. // No required options
  5. $rendererOptions = array();
  6.  
  7. // Draw the barcode in a new image,
  8. // send the headers and the image
  9. Zend_Barcode::render(
  10.     'code39', 'image', $barcodeOptions, $rendererOptions
  11. );

This will generate the same barcode as the previous example.


Introduction

Comments

In Example #5 I can't see no barcode (using Firefox 3.5).
this is not working. Please fix it. I'm new to ZF and I want to believe!!! :-)
If you are in MVC, think to deactivate layout and viewRenderer:

public function myAction() 
{
    $this->_helper->layout->disableLayout();
    $this->_helper->viewRenderer->setNoRender(); 
    Zend_Barcode::render(
        'code39', 'image', array('text' => 'ZEND-FRAMEWORK'), array()
    );
}
this not working!!
Works for me! cool. @ zf version 1.10.7
It works for me only if the text is CAPITALIZED, lowercase gives me an error "illegal characters"
Hello,
I'm interested to use this component into Yii Framework, but in not works ok.
I have this error when I render the object.

PHP Error

include(Zend_Barcode_Object_Code39.php)

+ Add A Comment

Please do not report issues via comments; use the ZF Issue Tracker.

If you have a JIRA/Crowd account, we suggest you login first before commenting.

  • BBCode is allowed in the comment markup

  • Select a Version

    Languages Available

    Components

    Search the Manual