Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Michael.Dev

C#, etiquetas com PrintDocument

Recommended Posts

Olá pessoal,

 

bom dia, boa tarde ou boa noite.

 

Estou desenvolvendo uma aplicação desktop, e , estou tendo algumas dificuldades quando vou gerar etiquetas. As etiquetas possuem o seguinte padrão:

 

- 6 X 10, são seis colunas contendo 10 etiquetas cada.

 

O programa está gerando as etiquetas normalmente 60 etiquetas por folha, acontece que, quando mando gerar mais etiquetas, o programa não está passando para a próxima folha e dando continuidade com as etiquetas.

 

Seguem o código abaixo:

 


private void printDocument_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
           //Definindo a fonte para o código de barras
           Font BarcodeFont = new Font("Free 3 of 9", 18, FontStyle.Regular);
           Font NumberFont = new Font("Arial", 8);

           Font thisFont = this.Font;

           Int32 LinePerPage = 0;

           //Pegando margens da folha de impressão
           float LeftMargin = e.MarginBounds.Left;
           float RightMargin = e.MarginBounds.Right;
           float BottomMargin = e.MarginBounds.Bottom;
           float TopMargin = e.MarginBounds.Top + 100;

           SolidBrush myBrush = new SolidBrush(Color.Black);
           e.Graphics.PageUnit = GraphicsUnit.Millimeter;

           float x = 7.3f;
           float y = 15.7f;

           Int32 Count = 0;
           Int32 CountEtiqueta = 0; //Contador de Etiquetas

           Int32 TotalRegPage = this.OBJEtiqueta.LISTEtiqueta.Count;

           LinePerPage =  Convert.ToInt32(e.MarginBounds.Height / thisFont.GetHeight(e.Graphics));

           for (Int32 i = 0; i <= this.OBJEtiqueta.LISTEtiqueta.Count; i++)
           {
               if (i != this.OBJEtiqueta.LISTEtiqueta.Count)
               {
                   //imprime os dados relativo ao codigo 
                   e.Graphics.DrawString("*" + this.OBJEtiqueta.LISTEtiqueta[i].CODETIQUETA + "*", BarcodeFont, Brushes.Black, x, y + 3, new StringFormat());
                   e.Graphics.DrawString(this.OBJEtiqueta.LISTEtiqueta[i].CODETIQUETA, NumberFont, Brushes.Black, x + 5, y + 9, new StringFormat());

                   //soma +  25.4f cm vericalmente
                   y += 25.4f;
                   Count++;
                   CountEtiqueta++;

                   // a cada 10 linhas adicicone uma coluna
                   if (Count == 10)
                   {
                       x += 33.5f; //adicione 33.5fcm na posicao horiz.
                       y = 15.7f; //volta para o topo da pagina
                       Count = 0; // contador de linhas volta a ser zero
                   }
               }
               //verifica se continua imprimindo
               if (CountEtiqueta > 60) //se tiver mais do que 60 etiquetas na pagina, adicione uma nova pagina
               {
                   e.HasMorePages = true; //Adiciona uma página
                   CountEtiqueta = 0;
                   Count = 0;
               }
               else
               {
                      e.HasMorePages = false; //Não adiciona página
               }
}

 

Agradeço desde já,

 

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara antes adicione um breakpoint nesse seu if else ai para ter certeza de que o programa está passando por ele, especialmente na linha do HasMorePages.

 

Vou deixar tres referencias aqui:

 

http://msdn.microsoft.com/en-us/library/cwbe712d(v=vs.80).aspx

http://simpleprogrammingexamples.blogspot.com.br/2009/01/c-printing.html

http://msdn.microsoft.com/en-us/library/system.drawing.printing.printpageeventargs.hasmorepages(v=vs.71).aspx

 

Espero que você saiba ingles :S

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.