【发布时间】:2021-06-21 07:35:06
【问题描述】:
我正在编写一个零售系统,该系统应该在 4 种类型的打印机上打印:收据、A4、A5 和标签。 我的问题是我需要在不更改默认打印机的情况下打印收据,但是如果打印机设置为默认值,我可以正常打印。
让我想知道的是,我已经设置了所需打印机的名称,但它打印为默认打印机,并且无论如何需要 6-10 秒,这在此类软件中是不可接受的,这是我的代码:
Private Sub PrintFromDS()
Dim rptDoc As New ReportDocument
rptDoc = New CRrcpt
Dim i As Integer
Dim doctoprint As New System.Drawing.Printing.PrintDocument()
doctoprint.PrinterSettings.PrinterName = RcptPrinter
Dim rawKind As Integer
For i = 0 To doctoprint.PrinterSettings.PaperSizes.Count - 1
If doctoprint.PrinterSettings.PaperSizes(i).PaperName = "72mm x Receipt" Then
rawKind = CInt(doctoprint.PrinterSettings.PaperSizes(i).GetType().GetField("kind", Reflection.BindingFlags.Instance Or Reflection.BindingFlags.NonPublic).GetValue(doctoprint.PrinterSettings.PaperSizes(i)))
Exit For
End If
Next
rptDoc.SetDataSource(ds)
rptDoc.PrintOptions.PaperSize = CType(rawKind, CrystalDecisions.Shared.PaperSize)
rptDoc.PrintToPrinter(1, False, 0, 0)
rptDoc.Refresh()
End If
End Sub
谢谢。
【问题讨论】:
标签: vb.net printing crystal-reports