Création de code-barres avec la classe Zend_Barcode

Utilisation de la fabrique Zend_Barcode::factory

Zend_Barcode possède une méthode de fabrique pour créer une instance d'un générateur de rendu qui étend Zend_Barcode_Renderer_RendererAbstract. Ce méthode accepte 5 arguments.

  1. Le nom du format de code-barres (ex. "code39") (obligatoire)

  2. Le nom du générateur de rendu (ex. "image") (obligatoire)

  3. Les options de l'objet code-barres (un tableau ou un objet Zend_Config) (optionnel)

  4. Les options du générateur de rendu (un tableau ou un objet Zend_Config) (optionnel)

  5. Booléen indiquant si le générateur automatique d'erreur est activé. Si une exception intervient, l'objet code-barres fourni sera remplacé par un objet représentant l'erreur (optionnel par défaut vaut TRUE)

Exemple 59. Récupérer un générateur de rendu avec Zend_Barcode::factory()

Zend_Barcode::factory() instancie un objet code-barres et un générateur de rendu et les lie ensemble. Dans le premier exemple, nous allons utiliser le type de code-barres Code39 avec le générateur de rendu Image.

// Seul le texte à écrire est obligatoire
$barcodeOptions = array('text' => 'ZEND-FRAMEWORK');
// Pas d'options requises
$rendererOptions = array();
$renderer = Zend_Barcode::factory(
    'code39', 'image', $barcodeOptions, $rendererOptions
);

Exemple 60. Utiliser Zend_Barcode::factory() avec des objets Zend_Config

Vous pouvez fournir un objet Zend_Config à la fabrique afin de créer les objets souhaités. L'exemple suivant est fonctionnellement équivalent au précédent.

// En utilisant seulement un objet 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);

Tracer un code-barres

Quand vous dessiner un code-barres, vous récupérez la ressource dans laquelle le code-barres est tracée. Pour ensuite tracer le code-barres, vous pouvez appeler la méthode draw() du générateur de rendu ou simplement utiliser la méthode proxy fournie par Zend_Barcode.

Exemple 61. Tracer un code-barres avec l'objet générateur de rendu

// Seul le texte à écrire est obligatoire
$barcodeOptions = array('text' => 'ZEND-FRAMEWORK');
// Pas d'options requises
$rendererOptions = array();
// Tracé du code-barres dans une nouvelle image
$imageResource = Zend_Barcode::factory(
    'code39', 'image', $barcodeOptions, $rendererOptions
)->draw();

Exemple 62. Trace un code-barres avec Zend_Barcode::draw()

// Seul le texte à écrire est obligatoire
$barcodeOptions = array('text' => 'ZEND-FRAMEWORK');
// Pas d'options requises
$rendererOptions = array();
// Tracé du code-barres dans une nouvelle image
$imageResource = Zend_Barcode::draw(
    'code39', 'image', $barcodeOptions, $rendererOptions
);

Générer le rendu d'un code-barres

Quand vous générez un code-barres, vous dessinez le code-barres, vous envoyez les entêtes et vous envoyez la ressource (par exemple vers un navigateur). Pour rendre un code-barres, vous pouvez appeler la méthode render() du générateur de rendu ou simplement utiliser la méthode proxy fournie par Zend_Barcode.

Exemple 63. Effectuer le rendu d'un code-barres avec l'objet générateur de rendu

// Seul le texte à écrire est obligatoire
$barcodeOptions = array('text' => 'ZEND-FRAMEWORK');
// Pas d'options requises
$rendererOptions = array();
// Tracé du code-barres dans une nouvelle image,
// envoi des entêtes et de l'image
Zend_Barcode::factory(
    'code39', 'image', $barcodeOptions, $rendererOptions
)->render();

Ceci générera ce code-barres :


Exemple 64. Effectuer le rendu d'un code-barres avec Zend_Barcode::render()

// Seul le texte à écrire est obligatoire
$barcodeOptions = array('text' => 'ZEND-FRAMEWORK');
// Pas d'options requises
$rendererOptions = array();
// Tracé du code-barres dans une nouvelle image,
// envoi des entêtes et de l'image
Zend_Barcode::render(
    'code39', 'image', $barcodeOptions, $rendererOptions
);

Ceci générera le même code-barres que l'exemple précédent.