Как я могу напечатать текстовый файл с вкладками в нем? - PullRequest
0 голосов
/ 19 апреля 2011

Я пытаюсь напечатать текстовый файл с символами табуляции.Проблема в том, что эти вкладки не отображаются при печати.Вот мой код:

Private Sub pd_PrintPage(ByVal sender As Object, ByVal ev As PrintPageEventArgs)
    Dim linesPerPage As Single = 0
    Dim yPos As Single = 0
    Dim count As Integer = 0
    Dim leftMargin As Single = ev.MarginBounds.Left
    Dim topMargin As Single = ev.MarginBounds.Top
    Dim line As String = Nothing

    ' Calculate the number of lines per page.
    linesPerPage = ev.MarginBounds.Height / printFont.GetHeight(ev.Graphics)

    ' Iterate over the file, printing each line.
    While count < linesPerPage
      line = streamToPrint.ReadLine()
      If line Is Nothing Then
        Exit While
      End If
      yPos = topMargin + count * printFont.GetHeight(ev.Graphics)
      ev.Graphics.DrawString(line, printFont, Brushes.Black, leftMargin, _
        yPos, New StringFormat())
      count += 1
    End While

    ' If more lines exist, print another page.
    If Not (line Is Nothing) Then
      ev.HasMorePages = True
    Else
      ev.HasMorePages = False
    End If
End Sub

Что мне нужно сделать, чтобы он поддерживал вкладки?

1 Ответ

1 голос
/ 02 августа 2011

вы не дали нам подробное описание вашей проблемы. Также я предполагаю, что переменная streamToPrint имеет тип StreamReader.try this:

Private Sub pd_PrintPage(ByVal sender As Object, ByVal ev As PrintPageEventArgs)
Dim linesPerPage As Single = 0
Dim yPos As Single = 0
Dim count As Integer = 0
Dim leftMargin As Single = ev.MarginBounds.Left
Dim topMargin As Single = ev.MarginBounds.Top
Dim line As String = Nothing
Dim myStringFormat As New StringFormat
Dim tabStops As Single() = {150.0F, 100.0F, 100.0F}
myStringFormat.SetTabStops(0.0F, tabStops)
'The above two line can be changed to the following:
'myStringFormat.SetTabStops(0.0F, {150.0F, 100.0F, 100.0F})
'your call
' Calculate the number of lines per page.
linesPerPage = ev.MarginBounds.Height / printFont.GetHeight(ev.Graphics)

' Iterate over the file, printing each line.
While count < linesPerPage
  line = streamToPrint.ReadLine()
  If line Is Nothing Then
    Exit While
  End If
  yPos = topMargin + count * printFont.GetHeight(ev.Graphics)
  ev.Graphics.DrawString(line, printFont, Brushes.Black, leftMargin, _
    yPos, myStringFormat)
  count += 1
End While

' If more lines exist, print another page.
If Not (line Is Nothing) Then
  ev.HasMorePages = True
Else
  ev.HasMorePages = False
End If
End Sub
...