печать на термопринтер с использованием 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

person Jothieshwar RS    schedule 26.03.2013    source источник
comment
Не было бы проще попробовать?   -  person LarsTech    schedule 26.03.2013


Ответы (1)


Методы Graphics не зависят от устройства (графический класс "инкапсулирует поверхность для рисования GDI + ") - при использовании с принтером они полагаются на драйвер устройства принтера, поэтому вам не придется менять код.

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

person Matt Wilko    schedule 27.03.2013