none
Definir tamanho de codigo de barras RRS feed

  • Pergunta

  • Boa tarde.

    Estou fazendo impressão de etiquetas, esta tudo certo quanto a impressão da etiqueta, o meu problema e que nesta etiqueta gera um código de barras, com letras e números, estou usando a fonte BARCODE 39, só que esta ficando muito grande o tamanho do código de barras, tem alguma forma de eu dimensionar o tamanho do código de barras, independente da quantidade de informações que ele possua. Sou novo em c# então achei alguns foruns falando sobre o assunto e não entendi muito bem como fazer funcionar no meu código.

    segue meu código.

     public partial class frmETQNatura : Form
        {

            List<string> etqNatura1 = new List<string>();
            List<string> etqNatura2 = new List<string>();

            SqlConnection conex = new SqlConnection(Properties.Settings.Default.DADOSADVConnectionString);
            SqlCommand comando = null;

            public frmETQNatura()
            {
                InitializeComponent();
            }

            private void frmETQNatura_Load(object sender, EventArgs e)
            {

            }

            private void EtiquetaNatura()
            {
                conex.Open();
                string strSQL = @"SELECT DISTINCT 
                                LOTE = 'LOTE',
                                LNATURA = 'QA0001',
                                MPRIMA = 'ZMAP',
                                S6.C6_XPROCLI,
                                S6.C6_DESCRI,
                                FORNECEDOR = 'PIC-QUÍMICA E FARMACÊUTICA - LTDA',
                                CONVERT(varchar(10), CAST(S6.C6_DTVALID AS date), 103) AS VALIDADE,
                                S6.C6_LOTECTL,
                                SC.C5_VOLUME1,
                                S6.C6_UM,
                                CONVERT(varchar(10), CAST(SB.B8_DFABRIC AS date), 103) AS FABRICACAO,
                                MENSAGEM = 'LIVRE CALOR/LUZ/UMIDADE',
                                S6.C6_DTVALID
                          FROM SC6010 AS S6
                          INNER JOIN SC5010 AS SC WITH (NOLOCK) ON SC.C5_NUM = S6.C6_NUM
                          INNER JOIN SB8010 AS SB WITH (NOLOCK) ON SB.B8_LOTECTL = S6.C6_LOTECTL
                          WHERE S6.C6_NUM = '" + txtPedido.Text + "' AND SB.B8_LOCAL = '01'";

                comando = new SqlCommand(strSQL, conex);

                SqlDataReader reader = comando.ExecuteReader();
                    {
                    while (reader.Read())
                        {

                          reader.GetString(0);

                        etqNatura1.Add(("                         " + reader[0].ToString())+ "      " + (reader[1].ToString()) + "     " + (reader[2].ToString()));
                        etqNatura1.Add("-----------------------------------------------------------------------------------------------------------");

                        etqNatura2.Add((reader[3].ToString())+ "          " + " DESC. PROD.: " + (reader[4].ToString()));
                        etqNatura2.Add(" FORNEC.: " + (reader[5].ToString()));
                        etqNatura2.Add("VALID. : " + (reader[6].ToString()) + "          " + "LOTE FORN. : " + (reader[7].ToString()));
                        etqNatura2.Add("QTD. VOL. : " + (reader[8].ToString()) + "          " + "UNID. : " + (reader[9].ToString()));
                        etqNatura2.Add("FABRIC. : " + (reader[10].ToString()) + "          " + "MENS.. : " + (reader[11].ToString()));
                        etqNatura2.Add("Cod.: " + "*" + "17" + reader[1].ToString() + "10" + "*");
                        break;

                    }
                }
            }

            private void ETQNatura_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
            {
                Font letra = new Font("Aerial", 16, FontStyle.Bold, GraphicsUnit.Pixel);
                Font letra2 = new Font("Aerial", 14, FontStyle.Bold, GraphicsUnit.Pixel);
                Font codBarras = new Font("Bar-Code 39", 30);
                
                SolidBrush cor = new SolidBrush(Color.Black);
                SolidBrush cor2 = new SolidBrush(Color.Black);


                int y = 70;
                foreach (string frase in etqNatura1)
                {
                    e.Graphics.DrawString(frase, letra, cor, new Point(40, y));
                    y += 20;
                }

                foreach (string frase in etqNatura2)
                {
                    if (frase.Contains("Cod"))
                    {
                        e.Graphics.DrawString(frase.Split(':')[1].ToString(), codBarras, cor, new Point(10, y));
                    }
                    else
                    {
                    e.Graphics.DrawString(frase, letra2, cor2, new Point(10, y));
                        y += 30;
                    }
                }
            }

            private static int CentimetrosParaCentesimasPolegada(double cm)
            {
                return (int)Math.Round(cm / 0.393701 * 100, MidpointRounding.AwayFromZero);
            }

            private void btnNatura_Click(object sender, EventArgs e)
            {
                ETQNatura.DefaultPageSettings.Landscape = true;

                EtiquetaNatura();

                PaperSize ETQN = new PaperSize("MeuTipo", 540, 540);
                ETQNatura.DefaultPageSettings.PaperSize = ETQN;
                ETQNatura.PrinterSettings.DefaultPageSettings.PaperSize = ETQN;

                vizualizacao.Document = ETQNatura;
                vizualizacao.ShowDialog();
                ETQNatura.Print();
            }
        }
    }


    JUNIOR GUERREIRO T.I


    quinta-feira, 11 de maio de 2017 20:16

Respostas

  • Bom dia Junior Guerreiro,

    Eu vi que você não está definindo em nenhum momento no seu código a tamanho do barcode.

    De acordo com a documentação própria deles, você consegue definir esse tamanho e também bloquear o autoresize.

    code39.BarcodeWidth = 250;
    code39.BarcodeHeight = 60;
    code39.AutoResize = false;

    Atigo de referência: Setting Code 39 Barcode Size in C#


    Att., Roberto Alves

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    • Marcado como Resposta Junior Guerreiro terça-feira, 16 de maio de 2017 02:06
    • Não Marcado como Resposta Junior Guerreiro terça-feira, 16 de maio de 2017 12:11
    • Marcado como Resposta Junior Guerreiro terça-feira, 16 de maio de 2017 12:11
    sexta-feira, 12 de maio de 2017 15:06

Todas as Respostas

  • Bom dia Junior Guerreiro,

    Eu vi que você não está definindo em nenhum momento no seu código a tamanho do barcode.

    De acordo com a documentação própria deles, você consegue definir esse tamanho e também bloquear o autoresize.

    code39.BarcodeWidth = 250;
    code39.BarcodeHeight = 60;
    code39.AutoResize = false;

    Atigo de referência: Setting Code 39 Barcode Size in C#


    Att., Roberto Alves

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    • Marcado como Resposta Junior Guerreiro terça-feira, 16 de maio de 2017 02:06
    • Não Marcado como Resposta Junior Guerreiro terça-feira, 16 de maio de 2017 12:11
    • Marcado como Resposta Junior Guerreiro terça-feira, 16 de maio de 2017 12:11
    sexta-feira, 12 de maio de 2017 15:06
  • Roberto obrigado pela atenção.

    Este código que vc me respondeu posso colocar me qualquer posição dentro do meu código acima ou tem algum lugar especifico que tenho que colocar o seu código.

    quando coloco o seu codigo da mensagem de erro, diz de code39 não existe no contexto atual.


    JUNIOR GUERREIRO T.I


    sexta-feira, 12 de maio de 2017 17:47
  • Bom dia,

    Sim, esse código normalmente vai nas configurações do começo, onde você declara como objeto o barcode, code39 é meramente ilustrativo.


    Att., Roberto Alves

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    • Marcado como Resposta Junior Guerreiro terça-feira, 16 de maio de 2017 02:07
    • Não Marcado como Resposta Junior Guerreiro terça-feira, 16 de maio de 2017 12:11
    segunda-feira, 15 de maio de 2017 12:11
  • Obrigado pela ajuda..

    JUNIOR GUERREIRO T.I

    terça-feira, 16 de maio de 2017 02:06