Ir para conteúdo

Arquivado

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

Lyon Carlos Kunz Junior

system drawing printing - dificuldade em imprimir

Recommended Posts

Bom dia,

Estou com dificuldade de imprimir mais que uma página utilizando o comando e.hasmorepages. Ou imprime somente em uma página ou gera várias páginas com o mesmo conteúdo só parando de imprimir quando cancelamos o relatório.
Abaixo o código que estou utilizando. (não estou preocupado ainda com a impressão do cabeçalho em todas as páginas)

Private Sub m_PrintDocument_PrintPage(sender As Object, e As PrintPageEventArgs) Handles m_PrintDocument.PrintPage

'Variaveis das linhas
Dim LinhasPorPagina As Single = 0
Dim PosicaoDaLinha As Single = 0
Dim LinhaAtual As Single = 0
Dim PaginaAtual As Integer = 0

'Variaveis das margens
Dim MargemEsquerda As Single = e.MarginBounds.Left
Dim MargemSuperior As Single = e.MarginBounds.Top + 100
Dim MargemDireita As Single = e.MarginBounds.Right
Dim MargemInferior As Single = e.MarginBounds.Bottom
Dim CanetaDaImpressora As Pen = New Pen(Color.Black, 1)


Dim j As Integer = 200


'Variaveis das fontes
Dim FonteNegrito As Font
Dim FonteTitulo As Font
Dim FonteSubTitulo As Font
Dim FonteRodape As Font
Dim FonteNormal As Font


'define efeitos em fontes
FonteNegrito = New Font("Arial", 9, FontStyle.Bold)
FonteTitulo = New Font("Arial", 15, FontStyle.Bold)
FonteSubTitulo = New Font("Arial", 12, FontStyle.Bold)
FonteRodape = New Font("Arial", 8)
FonteNormal = New Font("Arial", 9)


'define valores para linha atual e para linha da impressao
LinhaAtual = 0
Dim L As Integer = 0

'Cabecalho
e.Graphics.DrawLine(CanetaDaImpressora, MargemEsquerda, 60, MargemDireita, 60)
e.Graphics.DrawLine(CanetaDaImpressora, MargemEsquerda, 160, MargemDireita, 160)

'nome da empresa
e.Graphics.DrawString("Teste", FonteTitulo, Brushes.Blue, MargemEsquerda + 250, 80, New StringFormat())


'Imagem
e.Graphics.DrawImage(Image.FromFile("C:\Temp\" & "xxxx.jpg"), 100, 68)
e.Graphics.DrawString(RelatorioTitulo & System.DateTime.Today, FonteSubTitulo, Brushes.Black, MargemEsquerda + 250, 120, New StringFormat())

LinhasPorPagina = CInt(e.MarginBounds.Height / FonteNormal.GetHeight(e.Graphics) - 9)

PaginaAtual = 1
ComandoSql = "select * from processo"

If preencheTabela(ComandoSql, "processo") Then


For i As Integer = 0 To tabela.DefaultView.Count - 1

j += 30

e.Graphics.DrawString(tabela.Rows(i)(10).ToString(), New Font("arial", 15, FontStyle.Regular), Brushes.Black, 160, j)
e.Graphics.DrawString(tabela.Rows(i)(12).ToString(), New Font("arial", 15, FontStyle.Regular), Brushes.Black, 350, j)

LinhaAtual += 1

'verifica se continua imprimindo

If (LinhaAtual > LinhasPorPagina) Then
e.HasMorePages() = True
i = 999
'Rodape
'e.Graphics.DrawLine(CanetaDaImpressora, MargemEsquerda, MargemInferior, MargemDireita, MargemInferior)
e.Graphics.DrawString(System.DateTime.Now.ToString(), FonteRodape, Brushes.Black, MargemEsquerda, MargemInferior, New StringFormat())
LinhaAtual += CInt(FonteNormal.GetHeight(e.Graphics))
LinhaAtual += 1
e.Graphics.DrawString("P gina : " & PaginaAtual, FonteRodape, Brushes.Black, MargemDireita - 50, MargemInferior, New StringFormat())
PosicaoDaLinha = MargemSuperior + (LinhaAtual * FonteNormal.GetHeight(e.Graphics))
'Incrementa o n£mero da pagina

PaginaAtual += 1
LinhaAtual = 1
Else
e.HasMorePages = False
End If

Next

End If
End Sub

Lyon C Kunz Jr

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.