我的任务是:
我需要将一个字符串打印到打印机,然后使用第三方程序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
我会发布文本文件输出的截图,但没有足够的声誉。 我在调试中查看了字符串,它具有所有正确的信息。一旦将其发送到打印机,就会丢失数据。任何帮助,将不胜感激。谢谢。