C#, etiquetas com PrintDocument
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.
Discussão (1)
Carregando comentários...