IMPRESSÃO

VAMLA 07/12/2017 09:58:07
#478318
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
KERPLUNK 07/12/2017 10:14:55
#478320
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?
VAMLA 07/12/2017 10:34:28
#478321
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?
KERPLUNK 07/12/2017 10:56:06
#478322
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.
VAMLA 07/12/2017 10:58:41
#478323
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
NILSONTRES 07/12/2017 11:04:50
#478324
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.
Tópico encerrado , respostas não são mais permitidas