<?xml version="1.0" encoding="UTF-8"?>
<!-- EN-Revision: 24249 -->
<!-- Reviewed: no -->
<sect1 id="zend.barcode.creation">
    <title>Criação de código de barras usando a classe Zend_Barcode</title>

    <sect2 id="zend.barcode.creation.configuration">
        <title>Usando o Zend_Barcode::factory</title>

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

        <orderedlist>
            <listitem>
                <para>
                    O nome do formato de código de barras (por exemplo, "code39") (obrigatório)
                </para>
            </listitem>

            <listitem>
                <para>O nome do renderizador (por exemplo, "image") (obrigatório)</para>
            </listitem>

            <listitem>
                <para>
                    As opções do objeto código de barras (uma matriz ou objeto
                    <classname>Zend_Config</classname>) (opcional)
                </para>
            </listitem>

            <listitem>
                <para>
                    As opções do objeto renderizador (uma matriz ou objeto
                    <classname>Zend_Config</classname>) (opcional)
                </para>
            </listitem>

            <listitem>
                <para>
                    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 <constant>TRUE</constant>)
                </para>
            </listitem>
        </orderedlist>

        <example id="zend.barcode.creation.configuration.example-1">
            <title>Recuperando um Renderizador com Zend_Barcode::factory()</title>

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

            <programlisting language="php"><![CDATA[
// 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
);
]]></programlisting>
        </example>

        <example id="zend.barcode.creation.configuration.example-2">
            <title>Usando o Zend_Barcode::factory() com objetos Zend_Config</title>

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

            <programlisting language="php"><![CDATA[
// 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);
]]></programlisting>
        </example>
    </sect2>

    <sect2 id="zend.barcode.creation.drawing">
        <title>Desenhando um código de barras</title>

        <para>
            Quando você <emphasis>desenha</emphasis> 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 <methodname>draw()</methodname> do renderizador ou simplesmente usar o método
            de proxy fornecido pelo <classname>Zend_Barcode</classname>.
        </para>

        <example id="zend.barcode.creation.drawing.example-1">
            <title>Desenhando um código de barras com o objeto renderizador</title>

            <programlisting language="php"><![CDATA[
// 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();
]]></programlisting>
        </example>

        <example id="zend.barcode.creation.drawing.example-2">
            <title>Desenhando um código de barras com Zend_Barcode::draw()</title>

            <programlisting language="php"><![CDATA[
// 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
);
]]></programlisting>
        </example>
    </sect2>

    <sect2 id="zend.barcode.creation.renderering">
        <title>Renderizando um código de barras</title>

        <para>
            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 <methodname>render()</methodname> do
            renderizador ou simplesmente usar o método de proxy fornecido pelo
            <classname>Zend_Barcode</classname>.
        </para>

        <example id="zend.barcode.creation.renderering.example-1">
            <title>Renderizando um código de barras com o objeto renderizador</title>

            <programlisting language="php"><![CDATA[
// 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();
]]></programlisting>

            <para>
                Isso gerará este código de barras:
            </para>

            <para>
                <inlinegraphic width="275" align="center" valign="middle"
                    fileref="figures/zend.barcode.introduction.example-1.png" format="PNG"/>
            </para>
        </example>

        <example id="zend.barcode.creation.renderering.example-2">
            <title>Renderizando um código de barras com Zend_Barcode::render()</title>

            <programlisting language="php"><![CDATA[
// 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
);
]]></programlisting>

            <para>
                Isso gerará o mesmo código de barras do exemplo anterior.
            </para>
        </example>
    </sect2>
</sect1>
