使用VB将文本打印到打印机忽略页面长度

时间:2014-08-18 14:25:35

标签: vb.net printing

我的任务是:

我需要将一个字符串打印到打印机,然后使用第三方程序PlanetPress对其进行格式化。我决定使用XML格式来更好地操作。我的问题是,当我将字符串发送到打印机时,它似乎遵守正常的页面宽度和高度限制并切断任何其他字符和行。我需要能够打印文本文件,无论长度如何,并且不以任何方式操纵它。这是我的打印代码:

Imports Microsoft.VisualBasic
Imports System.Drawing
Imports System.Drawing.Printing

Public Class Print
    Friend TextToBePrinted As String

    Public Sub print(ByVal text As String, ByVal printer As String)
        TextToBePrinted = text
        Dim print As New Printing.PrintDocument
        Using (print)
            print.PrinterSettings.PrinterName = printer
            AddHandler print.PrintPage, AddressOf Me.PrintPageHandler
            print.Print()
        End Using
    End Sub

    Private Sub PrintPageHandler(ByVal sender As Object, ByVal args As Printing.PrintPageEventArgs)
        Dim myFont As New Font("Courier New", 9)
        args.Graphics.DrawString(TextToBePrinted, New Font(myFont, FontStyle.Regular), Brushes.Black, 0, 0)
    End Sub
End Class

这就是我所说的:

    Protected Sub btnPrint_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnPrint.Click

    Dim printer As New Print
    printer.print(Trim(strPrint), "\\nj-nt-ppress\capture")

这是我创建要打印的字符串的地方。它通过对象集合成员使用迭代,strPrint被定义为全局变量:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    Dim oJ As New clsJobs, oJM As clsJobs
    If Not oJ.ReadAllActiveJobs Then
        ' manage error
    Else
        Dim tr As TableRow, tc As TableCell, chk As CheckBox
        strPrint = "<?xml version='1.0' encoding='utf-8'?>" & Environment.NewLine
        strPrint = strPrint & "<JobSchedule>"
        strPrint = "<TimeStamp>'" & Now.ToString & "'</TimeStamp>"
        hdnScrollSpeed.Value = oJ.mCollection.Count
        For Each oJM In oJ.mCollection
            strPrint = strPrint & "<Job>"
            tr = New TableRow
            tc = New TableCell
            tc.Text = oJM.JobID
            tc.Visible = False
            tr.Cells.Add(tc)
            tc = New TableCell
            tc.Text = oJM.JobPriority
            tc.Font.Bold = True
            tc.CssClass() = "Priority"
            strPrint = strPrint & "<Priority>'" & oJM.JobPriority & "'</Priority>"
            tr.Cells.Add(tc)
            tc = New TableCell
            tc.Text = oJM.JobNumber
            tc.CssClass() = "JobNumber"
            tr.Cells.Add(tc)
            strPrint = strPrint & "<JobNumber>'" & oJM.JobNumber & "'</JobNumber>"
            tc = New TableCell
            tc.Text = oJM.ItemNumber
            tc.CssClass() = "ItemNumber"
            tr.Cells.Add(tc)
            strPrint = strPrint & "<ItemNumber>'" & oJM.ItemNumber & "'</ItemNumber>"
            tc = New TableCell
            tc.Text = oJM.moItem.Description
            tc.CssClass() = "ItemDescription"
            tr.Cells.Add(tc)
            strPrint = strPrint & "<ItemDescription>'" & SharedCode.StripCommas(oJM.moItem.Description) & "'</ItemDescription>"
            tc = New TableCell
            tc.Text = oJM.moMold.MoldNumber
            tc.CssClass() = "Mold"
            tr.Cells.Add(tc)
            'tc = New TableCell
            'tc.Text = oJM.moInsert.InsertLetter
            'tc.CssClass() = "Insert"
            'tr.Cells.Add(tc)
            strPrint = strPrint & "<Mold>'" & oJM.moMold.MoldNumber & "'</Mold>"
            tc = New TableCell
            tc.Text = oJM.Quantity
            tc.CssClass() = "Quantity"
            tr.Cells.Add(tc)
            strPrint = strPrint & "<Quantity>'" & oJM.Quantity & "'</Quantity>"
            tc = New TableCell
            tc.Text = oJM.moMachine.MachineNumber
            tc.CssClass() = "Machine"
            tr.Cells.Add(tc)
            strPrint = strPrint & "<Machine>'" & oJM.moMachine.MachineNumber & "'</Machine>"
            tc = New TableCell
            'chk = New CheckBox
            'chk.Checked = oJM.isRunning
            'chk.Enabled = False
            'tc.Controls.Add(chk)
            If oJM.isRunning Then
                tc.Text = "<img src='img/running.png' />"
            End If
            tc.CssClass() = "Running"
            tr.Cells.Add(tc)
            strPrint = strPrint & "<Running>'" & oJM.isRunning & "'</Running></Job>"
            tblMstrJobsList.Rows.Add(tr)
        Next
        strPrint = strPrint & "</JobSchedule>"
    End If
    Exit Sub
End Sub

我会发布文本文件输出的截图,但没有足够的声誉。 我在调试中查看了字符串,它具有所有正确的信息。一旦将其发送到打印机,就会丢失数据。任何帮助,将不胜感激。谢谢。

0 个答案:

没有答案