IMPRESSÃO
Olá pessoal.
Estou com o seguinte problema: tenho um sistema para lanchonetes. E consequentemente imprimo tudo em impressora térmica.
Acontece que quando dá o tamanho de uma folha A4, corta a impressão e ela não continua.
Como devo proceder?
Segue como eu fiz.
Dim FonteTitulo = New Font([Ô]Arial[Ô], 12, FontStyle.Bold)
Dim FonteSubtitulo = New Font([Ô]Arial[Ô], 8, FontStyle.Regular)
Dim MargemEsquerda As Single = e.MarginBounds.Left
Dim x As Single = 0.0F
Dim y As Single = 0.0F
Dim width As Single = 280.0F
Dim height As Single = 50.0F
Dim drawRect As New RectangleF(x, y, width, height)
[ô] Draw rectangle to screen.
Dim blackPen As New Pen(Color.Black)
e.Graphics.DrawRectangle(blackPen, x, y, width, height)
TBPESQ = New ADODB.Recordset
TBPESQ.CursorLocation = ADODB.CursorLocationEnum.adUseClient
TBPESQ.Open([Ô]Select * from empresa[Ô], Conexao, ADODB.CursorTypeEnum.adOpenDynamic, ADODB.LockTypeEnum.adLockBatchOptimistic)
If (TBPESQ.RecordCount > 0) Then
TBPESQ.MoveFirst()
e.Graphics.DrawString(TBPESQ([Ô]razao_social[Ô]).Value, FonteTitulo, Brushes.Black, 3, 5, New StringFormat())
End If
TBPESQ.Close()
e.Graphics.DrawString([Ô]QUANTIDADE EM ESTOQUE[Ô], FonteSubtitulo, Brushes.Black, 3, 30, New StringFormat())
Dim vEspacoLinhas As Integer
vEspacoLinhas = 55
e.Graphics.DrawString([Ô]Codigo[Ô], FonteSubtitulo, Brushes.Black, 0, vEspacoLinhas, New StringFormat())
e.Graphics.DrawString([Ô]Produto[Ô], FonteSubtitulo, Brushes.Black, 55, vEspacoLinhas, New StringFormat())
e.Graphics.DrawString([Ô]Qtde[Ô], FonteSubtitulo, Brushes.Black, 250, vEspacoLinhas, New StringFormat())
vEspacoLinhas = vEspacoLinhas + 25
TB = New ADODB.Recordset
TB.CursorLocation = ADODB.CursorLocationEnum.adUseClient
TB.Open([Ô]select * from produto where descricao >= [ô][Ô] & cmb_produto_inicial.Text & [Ô][ô] and descricao <= [ô][Ô] & cmb_produto_final.Text & [Ô][ô] and id_familia >= [ô][Ô] & txt_familia_inicial.Text & [Ô][ô] and id_familia <= [ô][Ô] & txt_familia_final.Text & [Ô][ô] order by descricao[Ô], Conexao, ADODB.CursorTypeEnum.adOpenDynamic, ADODB.LockTypeEnum.adLockOptimistic)
If TB.RecordCount > 0 Then
While TB.EOF = False
e.Graphics.DrawString(TB([Ô]id_produto[Ô]).Value, FonteSubtitulo, Brushes.Black, 0, vEspacoLinhas, New StringFormat())
e.Graphics.DrawString(Mid(TB([Ô]descricao[Ô]).Value, 1, 29), FonteSubtitulo, Brushes.Black, 55, vEspacoLinhas, New StringFormat())
e.Graphics.DrawString(Format(TB([Ô]quantidade_estoque[Ô]).Value, [Ô]##0.00[Ô]).ToString.PadLeft(7, [Ô] [Ô]), FonteSubtitulo, Brushes.Black, 245, vEspacoLinhas, New StringFormat())
TB.MoveNext()
vEspacoLinhas = vEspacoLinhas + 25
End While
End If
e.HasMorePages = False
Estou com o seguinte problema: tenho um sistema para lanchonetes. E consequentemente imprimo tudo em impressora térmica.
Acontece que quando dá o tamanho de uma folha A4, corta a impressão e ela não continua.
Como devo proceder?
Segue como eu fiz.
Dim FonteTitulo = New Font([Ô]Arial[Ô], 12, FontStyle.Bold)
Dim FonteSubtitulo = New Font([Ô]Arial[Ô], 8, FontStyle.Regular)
Dim MargemEsquerda As Single = e.MarginBounds.Left
Dim x As Single = 0.0F
Dim y As Single = 0.0F
Dim width As Single = 280.0F
Dim height As Single = 50.0F
Dim drawRect As New RectangleF(x, y, width, height)
[ô] Draw rectangle to screen.
Dim blackPen As New Pen(Color.Black)
e.Graphics.DrawRectangle(blackPen, x, y, width, height)
TBPESQ = New ADODB.Recordset
TBPESQ.CursorLocation = ADODB.CursorLocationEnum.adUseClient
TBPESQ.Open([Ô]Select * from empresa[Ô], Conexao, ADODB.CursorTypeEnum.adOpenDynamic, ADODB.LockTypeEnum.adLockBatchOptimistic)
If (TBPESQ.RecordCount > 0) Then
TBPESQ.MoveFirst()
e.Graphics.DrawString(TBPESQ([Ô]razao_social[Ô]).Value, FonteTitulo, Brushes.Black, 3, 5, New StringFormat())
End If
TBPESQ.Close()
e.Graphics.DrawString([Ô]QUANTIDADE EM ESTOQUE[Ô], FonteSubtitulo, Brushes.Black, 3, 30, New StringFormat())
Dim vEspacoLinhas As Integer
vEspacoLinhas = 55
e.Graphics.DrawString([Ô]Codigo[Ô], FonteSubtitulo, Brushes.Black, 0, vEspacoLinhas, New StringFormat())
e.Graphics.DrawString([Ô]Produto[Ô], FonteSubtitulo, Brushes.Black, 55, vEspacoLinhas, New StringFormat())
e.Graphics.DrawString([Ô]Qtde[Ô], FonteSubtitulo, Brushes.Black, 250, vEspacoLinhas, New StringFormat())
vEspacoLinhas = vEspacoLinhas + 25
TB = New ADODB.Recordset
TB.CursorLocation = ADODB.CursorLocationEnum.adUseClient
TB.Open([Ô]select * from produto where descricao >= [ô][Ô] & cmb_produto_inicial.Text & [Ô][ô] and descricao <= [ô][Ô] & cmb_produto_final.Text & [Ô][ô] and id_familia >= [ô][Ô] & txt_familia_inicial.Text & [Ô][ô] and id_familia <= [ô][Ô] & txt_familia_final.Text & [Ô][ô] order by descricao[Ô], Conexao, ADODB.CursorTypeEnum.adOpenDynamic, ADODB.LockTypeEnum.adLockOptimistic)
If TB.RecordCount > 0 Then
While TB.EOF = False
e.Graphics.DrawString(TB([Ô]id_produto[Ô]).Value, FonteSubtitulo, Brushes.Black, 0, vEspacoLinhas, New StringFormat())
e.Graphics.DrawString(Mid(TB([Ô]descricao[Ô]).Value, 1, 29), FonteSubtitulo, Brushes.Black, 55, vEspacoLinhas, New StringFormat())
e.Graphics.DrawString(Format(TB([Ô]quantidade_estoque[Ô]).Value, [Ô]##0.00[Ô]).ToString.PadLeft(7, [Ô] [Ô]), FonteSubtitulo, Brushes.Black, 245, vEspacoLinhas, New StringFormat())
TB.MoveNext()
vEspacoLinhas = vEspacoLinhas + 25
End While
End If
e.HasMorePages = False
Deixa eu adivinhar: Esse código você [Ô]pegou na net[Ô] e não entende direito o que ele faz, certo? Você percebeu que a base da sua impressão é um retângulo? Já tentou redimensionar esse retângulo para o tamanho desejado?
Citação::
Deixa eu adivinhar: Esse código você [Ô]pegou na net[Ô] e não entende direito o que ele faz, certo? Você percebeu que a base da sua impressão é um retângulo? Já tentou redimensionar esse retângulo para o tamanho desejado?
bom dia!
Não peguei na net não.
é que quando eu fiz, não sabia que ele pegava apenas o tamanho a4. E no caso ele imprime somente uma folha.
E eu precisaria montar alguma coisa, para ele imprimir enquanto tiver produto
você já usou isso?
Bem, então aqui vão algumas dicas:
1 - Não use ADO, use ADO.NET, o que você está fazendo agora(recordset e talz), é criar uma dependência COM que é totalmente desnecessária.
2 - Crie classes especializadas para impressão. Você não precisa de tanto código, veja o que está fazendo comumente e use métodos adequados.
Tente fazer um resumo do que o código está fazendo. Passe-o linha à linha e veja o que está sendo feito e assim vai ver onde está [Ô]faltando algo[Ô].
O que estou tentando fazer é te ajudar a entender direitnho o que está sendo feito, não vai ser frutÃfero para você eu simplesmente passar a solução pronta.
1 - Não use ADO, use ADO.NET, o que você está fazendo agora(recordset e talz), é criar uma dependência COM que é totalmente desnecessária.
2 - Crie classes especializadas para impressão. Você não precisa de tanto código, veja o que está fazendo comumente e use métodos adequados.
Tente fazer um resumo do que o código está fazendo. Passe-o linha à linha e veja o que está sendo feito e assim vai ver onde está [Ô]faltando algo[Ô].
O que estou tentando fazer é te ajudar a entender direitnho o que está sendo feito, não vai ser frutÃfero para você eu simplesmente passar a solução pronta.
Obrigado, mas ja resolvi
Antes de mandar a impressão, coloque o seguinte:
ImpRel1.DefaultPageSettings.PaperSize = New System.Drawing.Printing.PaperSize([Ô]Customizado[Ô], 200, 10000)
Obrigado
Antes de mandar a impressão, coloque o seguinte:
ImpRel1.DefaultPageSettings.PaperSize = New System.Drawing.Printing.PaperSize([Ô]Customizado[Ô], 200, 10000)
Obrigado
Realmente não vejo como utilizar térmica para imprimir gráficos, principalmente em caso de itens de venda.
Imprima em um arquivo texto mande para a porta com da impressora transformando em bytes.
Arquivo texto porque vc pode utilizar esse arquivo para imprimir em uma impressora da rede, dispensa instalação via spool do windows, evita configuração de tamanho de papel na impressora.
Só vejo vantagens.
Imprima em um arquivo texto mande para a porta com da impressora transformando em bytes.
Arquivo texto porque vc pode utilizar esse arquivo para imprimir em uma impressora da rede, dispensa instalação via spool do windows, evita configuração de tamanho de papel na impressora.
Só vejo vantagens.
Tópico encerrado , respostas não são mais permitidas