2013-03-26 2 views
0

Это код для небольшого программного обеспечения для выставления счетов, для которого печать должна выполняться в термопринтере. Ниже приведен мой код, который отлично подходит для лазерных принтеров. Я хочу знать, подходит ли этот код для термических принтеров, или я должен изменить код специально для этих типов принтеров. Если так любезно помогите мне с некоторым кодом. Thnx заранее :)печать на термопринтер с использованием vb.net от datagridview

Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage 
    mRow = 0 
    Try 
     Dim big, small As Font 
     big = New Font(Font.FontFamily, 20, FontStyle.Bold) 
     small = New Font(Font.FontFamily, 10, FontStyle.Bold) 
     newpage = True 
     With DGVView 
      Dim fmt As StringFormat = New StringFormat(StringFormatFlags.FitBlackBox) 
      fmt.LineAlignment = StringAlignment.Near 
      fmt.Trimming = StringTrimming.None 
      Dim y As Single = e.MarginBounds.Top 
      Do While mRow < .RowCount 
       Dim row As DataGridViewRow = .Rows(mRow) 
       Dim x As Single = e.MarginBounds.Left 
       Dim h As Single = 0 
       For Each cell As DataGridViewCell In row.Cells 
        Dim rc As RectangleF = New RectangleF(x, y, cell.Size.Width, cell.Size.Height) 
        e.Graphics.DrawRectangle(Pens.Black, rc.Left, rc.Top, rc.Width, rc.Height) 
        If (newpage = True) Then 
         PrintDocument1.PrinterSettings.DefaultPageSettings.PaperSize = New PaperSize("custom format", 300, 300) 
         'e.Graphics.DrawString("    AYYA NADAR JANAKI AMMAL COLLEGE", big, Brushes.Black, 5, 50) 
         e.Graphics.DrawString(DGVView.Columns(cell.ColumnIndex).HeaderText, small, Brushes.Black, rc, fmt) 
        Else 
         e.Graphics.DrawString(DGVView.Rows(cell.RowIndex - 1).Cells(cell.ColumnIndex).FormattedValue.ToString(), .Font, Brushes.Black, rc, fmt) 
        End If 
        x += rc.Width 
        h = Math.Max(h, rc.Height) 
       Next 
       newpage = False 
       y += h 
       mRow += 1 
       If y + h > e.MarginBounds.Bottom Then 
        e.HasMorePages = True 
        mRow -= 1 
        newpage = True 
        Exit Sub 
       End If 
      Loop 

      mRow = 0 
     End With 
    Catch 
     MsgBox("Unexpected Error Occured. Sorry for the inconvenience") 
    End Try 
+0

Непросто было бы попробовать? – LarsTech

ответ

0

Графической метода устройство независимо (The graphics class«Инкапсуляция GDI + рисование поверхности») - при использовании их с принтером, они полагаются на драйвере принтера, так что ни вы не выиграли Не нужно менять код.

Отказ от ответственности: вы иногда обнаруживаете, что разные устройства ведут себя несколько иначе, поэтому самый простой способ - просто попробовать!

+0

попробовал и удался спасибо frnz :) –

Смежные вопросы