Foros del Web » Programando para Internet » PHP » Zend »

Aporte codigo de barras Zend_barcode

Estas en el tema de Aporte codigo de barras Zend_barcode en el foro de Zend en Foros del Web. Hola hola esta es la primera vez que hago un aporte espero que sea de utilidad, la verdad no es gran cosa pero despues de ...
  #1 (permalink)  
Antiguo 20/01/2012, 09:52
 
Fecha de Ingreso: abril-2008
Ubicación: Chihuahua Mexico
Mensajes: 166
Antigüedad: 11 años, 8 meses
Puntos: 15
Aporte codigo de barras Zend_barcode

Hola hola esta es la primera vez que hago un aporte espero que sea de utilidad, la verdad no es gran cosa pero despues de realizar codigo de barras con diferentes clases (mas de 7) esta es la que mejor me ha funcionado para los lectores de codigo un tanto amolados (que no estan en su mejor estado)

como el titulo lo dice vamos a usar la classe Barcode de zend (no zend completo)



Zend_Barcode:: que la llamaremos Barcode.php

Código PHP:
<?php
 
class Zend_Barcode
 
{
     public static function 
factory(
         
$barcode
         
$renderer 'image'
         
$barcodeConfig = array(), 
         
$rendererConfig = array(), 
         
$automaticRenderError true
    
) {
         
/*
          * Convert Zend_Config argument to plain string
          * barcode name and separate config object.
          */
         
if ($barcode instanceof Zend_Config) {
             if (isset(
$barcode->rendererParams)) {
                 
$rendererConfig $barcode->rendererParams->toArray();
             }
             if (isset(
$barcode->renderer)) {
                 
$renderer = (string) $barcode->renderer;
             }
             if (isset(
$barcode->barcodeParams)) {
                 
$barcodeConfig $barcode->barcodeParams->toArray();
             }
             if (isset(
$barcode->barcode)) {
                 
$barcode = (string) $barcode->barcode;
             } else {
                 
$barcode null;
             }
         }
 
         try {
             
$barcode  self::makeBarcode($barcode$barcodeConfig);
             
$renderer self::makeRenderer($renderer$rendererConfig);
        } catch (
Zend_Exception $e) {
             
$renderable = ($e instanceof Zend_Barcode_Exception) ? $e->isRenderable() : false;
             if (
$automaticRenderError && $renderable) {
                 
$barcode self::makeBarcode('error', array(
                     
'text' => $e->getMessage()
                 ));
                 
$renderer self::makeRenderer($renderer, array());
             } else {
                 throw 
$e;
             }
         }
 
         
$renderer->setAutomaticRenderError($automaticRenderError);
         return 
$renderer->setBarcode($barcode);
     }
 
     public static function 
makeBarcode($barcode$barcodeConfig = array())
     {
         if (
$barcode instanceof Zend_Barcode_Object_ObjectAbstract) {
             return 
$barcode;
         }
 
         
/*
          * Convert Zend_Config argument to plain string
          * barcode name and separate config object.
          */
         
if ($barcode instanceof Zend_Config) {
             if (isset(
$barcode->barcodeParams) && $barcode->barcodeParams instanceof Zend_Config) {
                 
$barcodeConfig $barcode->barcodeParams->toArray();
             }
             if (isset(
$barcode->barcode)) {
                 
$barcode = (string) $barcode->barcode;
             } else {
                 
$barcode null;
             }
         }
         if (
$barcodeConfig instanceof Zend_Config) {
             
$barcodeConfig $barcodeConfig->toArray();
         }
 
         
/*
          * Verify that barcode parameters are in an array.
         */
         
if (!is_array($barcodeConfig)) {
             require_once 
'Zend/Barcode/Exception.php';
             throw new 
Zend_Barcode_Exception(
                 
'Barcode parameters must be in an array or a Zend_Config object'
            
);
         }
 
        
/*
          * Verify that an barcode name has been specified.
          */
         
if (!is_string($barcode) || empty($barcode)) {
             require_once 
'Zend/Barcode/Exception.php';
             throw new 
Zend_Barcode_Exception(
                 
'Barcode name must be specified in a string'
             
);
         }
         
/*
          * Form full barcode class name
          */
         
$barcodeNamespace 'Zend_Barcode_Object';
        if (isset(
$barcodeConfig['barcodeNamespace'])) {
             
$barcodeNamespace $barcodeConfig['barcodeNamespace'];
         }
 
         
$barcodeName strtolower($barcodeNamespace '_' $barcode);
         
$barcodeName str_replace(' ''_'ucwords(
             
str_replace'_'' '$barcodeName)
         ));
 
         
/*
          * Load the barcode class.  This throws an exception
          * if the specified class cannot be loaded.
          */
         
if (!class_exists($barcodeName)) {
             require_once 
'Zend/Loader.php';
             
Zend_Loader::loadClass($barcodeName);
         }
 
         
/*
          * Create an instance of the barcode class.
          * Pass the config to the barcode class constructor.
          */
         
$bcAdapter = new $barcodeName($barcodeConfig);
 
         
/*
        * Verify that the object created is a descendent of the abstract barcode type.
          */
        
if (!$bcAdapter instanceof Zend_Barcode_Object_ObjectAbstract) {
             require_once 
'Zend/Barcode/Exception.php';
             throw new 
Zend_Barcode_Exception(
                
"Barcode class '$barcodeName' does not extend Zend_Barcode_Object_ObjectAbstract"
             
);
         }
         return 
$bcAdapter;
     }
 
     public static function 
makeRenderer($renderer 'image'$rendererConfig = array())
     {
         if (
$renderer instanceof Zend_Barcode_Renderer_RendererAbstract) {
             return 
$renderer;
         }
 
         
/*
          * Convert Zend_Config argument to plain string
          * barcode name and separate config object.
          */
         
if ($renderer instanceof Zend_Config) {
             if (isset(
$renderer->rendererParams)) {
                 
$rendererConfig $renderer->rendererParams->toArray();
             }
             if (isset(
$renderer->renderer)) {
                 
$renderer = (string) $renderer->renderer;
             }
         }
         if (
$rendererConfig instanceof Zend_Config) {
            
$rendererConfig $rendererConfig->toArray();
         }
 
         
/*
          * Verify that barcode parameters are in an array.
          */
         
if (!is_array($rendererConfig)) {
             require_once 
'Zend/Barcode/Exception.php';
             
$e = new Zend_Barcode_Exception(
                 
'Barcode parameters must be in an array or a Zend_Config object'
             
);
             
$e->setIsRenderable(false);
             throw 
$e;
         }
 
         
/*
          * Verify that an barcode name has been specified.
          */
         
if (!is_string($renderer) || empty($renderer)) {
             require_once 
'Zend/Barcode/Exception.php';
             
$e = new Zend_Barcode_Exception(
                 
'Renderer name must be specified in a string'
            
);
             
$e->setIsRenderable(false);
             throw 
$e;
         }
 
         
/*
          * Form full barcode class name
          */
         
$rendererNamespace 'Zend_Barcode_Renderer';
         if (isset(
$rendererConfig['rendererNamespace'])) {
             
$rendererNamespace $rendererConfig['rendererNamespace'];
         }
 
         
$rendererName strtolower($rendererNamespace '_' $renderer);
         
$rendererName str_replace(' ''_'ucwords(
             
str_replace'_'' '$rendererName)
         ));
 
         
/*
          * Load the barcode class.  This throws an exception
          * if the specified class cannot be loaded.
          */
         
if (!class_exists($rendererName)) {
             require_once 
'Zend/Loader.php';
             
Zend_Loader::loadClass($rendererName);
         }
 
         
/*
          * Create an instance of the barcode class.
          * Pass the config to the barcode class constructor.
          */
         
$rdrAdapter = new $rendererName($rendererConfig);
 
         
/*
         * Verify that the object created is a descendent of the abstract barcode type.
          */
        
if (!$rdrAdapter instanceof Zend_Barcode_Renderer_RendererAbstract) {
             require_once 
'Zend/Barcode/Exception.php';
             
$e = new Zend_Barcode_Exception(
                 
"Renderer class '$rendererName' does not extend Zend_Barcode_Renderer_RendererAbstract"
             
);
             
$e->setIsRenderable(false);
             throw 
$e;
         }
         return 
$rdrAdapter;
     }
 
     public static function 
render(
         
$barcode
         
$renderer
         
$barcodeConfig = array(), 
        
$rendererConfig = array()
     ) {
         
self::factory($barcode$renderer$barcodeConfig$rendererConfig)->render();
    }
 
     public static function 
draw(
         
$barcode
         
$renderer
         
$barcodeConfig = array(), 
         
$rendererConfig = array()
     ) {
         return 
self::factory($barcode$renderer$barcodeConfig$rendererConfig)->draw();
     }
 
     public static function 
setBarcodeFont($font)
     {
         require_once 
'Zend/Barcode/Object/ObjectAbstract.php';
         
Zend_Barcode_Object_ObjectAbstract::setBarcodeFont($font);
     }
 }
?>
veamos la segunda parte...
  #2 (permalink)  
Antiguo 20/01/2012, 09:54
 
Fecha de Ingreso: abril-2008
Ubicación: Chihuahua Mexico
Mensajes: 166
Antigüedad: 11 años, 8 meses
Puntos: 15
Respuesta: Aporte codigo de barras Zend_barcode

Impresion.php (donde imprimiremos el codigo de barras o lo guardaremos)

Para guardar el codigo de barras como imagen usaremos una funcion de la libreria GD en conjunto de zend_barcode que quedaria algo asi:

Código PHP:
// este  "numero" es el que se imprimira como codigo de barras
// obviamente se puede poner tambien caracter ($numero ='hola';)
$numero 54741577;

$barcodeOptions = array('text' => $numero);
 
$bc Zend_Barcode::factory(
    
'code39',
    
'image',
    
$barcodeOptions,
    array()
);
$res $bc->draw();
//guardaremos el codigo de barras dentro dela carpeta imagen con extension png
imagejpeg($res"images/".$numero.".png"90); 


Para imprimir en pantalla la imagen del codigo de barras es:

Código PHP:
$numero 123456;
$barcodeOptions = array('text' => $numero);

$rendererOptions = array();
 
// Imprimimos la imagen del codigo,
$imageResource Zend_Barcode::factory(
    
'code39''image'$barcodeOptions$rendererOptions
)->draw(); 
este ejemplo lo tome de la ayuda oficial:
http://framework.zend.com/manual/en/....creation.html



por mi parte es todo espero que les alla gustado y sea de su ayuda la verdad en mi opinion zend_barcode es lo mejor para trabajar con codigo de barras.


saludos.
  #3 (permalink)  
Antiguo 20/01/2012, 10:08
 
Fecha de Ingreso: abril-2008
Ubicación: Chihuahua Mexico
Mensajes: 166
Antigüedad: 11 años, 8 meses
Puntos: 15
Respuesta: Aporte codigo de barras Zend_barcode

puf mi primer aporte y adios karma........ que cosas... ajjajaj
  #4 (permalink)  
Antiguo 20/01/2012, 10:14
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 11 años, 9 meses
Puntos: 2534
Respuesta: Aporte codigo de barras Zend_barcode

Cita:
Iniciado por espher Ver Mensaje
puf mi primer aporte y adios karma........ que cosas... ajjajaj
En mi opinión no es un "aporte" que goce de creatividad o aporte algo en realidad, sólo copiaste la librería (incompleta por cierto) de Zend_Barcode y pusiste un ejemplo que obviamente sacaste de otro lugar.

No entiendo el supuesto aporte, cualquiera puede hacer eso.

Si deseas hacer aportes de calidad te sugiero revises los que actualmente existen y veas que están mucho mejor desarrollados, además ofrecen mas información y no copy+paste de librerías lo cual los hace verdaderamente útiles.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 20/01/2012, 10:25
 
Fecha de Ingreso: abril-2008
Ubicación: Chihuahua Mexico
Mensajes: 166
Antigüedad: 11 años, 8 meses
Puntos: 15
Respuesta: Aporte codigo de barras Zend_barcode

pufff ahora hasta por poner codigo que puede llegar servirnos ay molestia, eso e sierto pateke cualquier pudo haber puesto ese codigo pero no cualquiera pudo haberse tomado la molestia de postearlo aqui para futuras consultas....

y si tome la clase incompleta como dije en un principio solo la clae barcode (nozend completo)
  #6 (permalink)  
Antiguo 20/01/2012, 10:30
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 11 años, 9 meses
Puntos: 2534
Respuesta: Aporte codigo de barras Zend_barcode

No he dicho que fuera molesto, solo que no aporta nada en realidad.

De verdad te sugiero que veas los aportes que actualmente existen y compares con el tuyo.

Cualquiera puede copiar código y pegarlo, pero pocos pueden escribir un aporte extenso de gran calidad en sus propias palabras, cosa que tu no hiciste.

Al menos lo que escribes no es ni el 10% de la longitud del tema, el resto es código copypasteado.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 01/03/2012, 07:35
 
Fecha de Ingreso: octubre-2010
Ubicación: Uruguay, Canelones
Mensajes: 66
Antigüedad: 9 años, 3 meses
Puntos: 6
Respuesta: Aporte codigo de barras Zend_barcode

Muy bueno el aporte, la verdad me solucionó el trabajo.
Se agradece!!!!
  #8 (permalink)  
Antiguo 03/03/2012, 11:40
 
Fecha de Ingreso: octubre-2010
Ubicación: Uruguay, Canelones
Mensajes: 66
Antigüedad: 9 años, 3 meses
Puntos: 6
Respuesta: Aporte codigo de barras Zend_barcode

No hay porque ver los conocimientos que una persona tiene sobre un tema, sino que se haya tomado las molestias de buscarlo, quizas él tuvo que buscar en varios lugares o en uno solo, para poder realizar esa recopilación, además de haber hecho su aporte.

En vez de criticar creo que lo mejor sería que vieras el trabajo o el tiempo que una persona le puso para hacer algo.

Y de verdad te digo, despues de tanto buscar, di con este aporte de espher, lo copie y pegue en mi código, me anda espectacular.

Así que no tenemos porque criticar y si no nos gusta algo, no lo usamos. Quizas como mucho le pones que no te gusta
  #9 (permalink)  
Antiguo 05/03/2012, 19:32
 
Fecha de Ingreso: abril-2008
Ubicación: Chihuahua Mexico
Mensajes: 166
Antigüedad: 11 años, 8 meses
Puntos: 15
Respuesta: Aporte codigo de barras Zend_barcode

mil gracias lorena.... por defender otro punto de vista que es un tanto subjetivo entre lo que esta bien y lo que esta mal pero como dices tu mientras nos saque del apuro no creo que exista algun problema :)

saludos!!!
  #10 (permalink)  
Antiguo 12/03/2012, 20:38
 
Fecha de Ingreso: febrero-2004
Mensajes: 192
Antigüedad: 15 años, 11 meses
Puntos: 0
Respuesta: Aporte codigo de barras Zend_barcode

Saludos senores, un favor pateketrueke puedes comentarnos cuales son las nuevas opciones para el manejo de código de barras que existen, te pido los nombres y ya yo me adentro en ellos, saludos a todos de nuevos, bye.
  #11 (permalink)  
Antiguo 16/03/2012, 00:01
 
Fecha de Ingreso: abril-2008
Ubicación: Chihuahua Mexico
Mensajes: 166
Antigüedad: 11 años, 8 meses
Puntos: 15
Respuesta: Aporte codigo de barras Zend_barcode

novosky disculpa la tardanza!! la verdad es que yo he intentado con varios los saque todos se san google y de phpclasses.org (creo que esa es la direccion) pero la verdad no hay mejor que esta de zend..

saludos.

Etiquetas: barras, aportes
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 3 personas




La zona horaria es GMT -6. Ahora son las 11:54.