在我的应用程序中,我需要打印我的报告而不转换为pdf或任何其他格式。我需要在用户单击打印按钮时立即打印记录。我使用了以下代码。但不幸的是,这是不是直接打印,而是转换成pdf然后打印。转换为pdf需要花费很多时间才能让我们的生活变得可怕。下面是我的代码。请帮助......
Private Sub imgPrint_Click(ByVal sender As System.Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles imgPrint.Click
'Function to open connection and table
Dim dt As DataTable
Dim SQLString As String = TKSUCSearchChild.SQLWhereClause
Try
'dt = GetTableData("View_Item", SQLString, SQLOrderByClause)
'dt = Your DataTable
oRpt = New YourReportName
oRpt.SetDataSource(dt)
View_PickingSlip.ReportSource = oRpt
Dim exp As ExportOptions
Dim req As ExportRequestContext
Dim st As System.IO.Stream
Dim b() As Byte
Dim pg As Page
pg = View_PickingSlip.Page
exp = New ExportOptions
exp.ExportFormatType = ExportFormatType.PortableDocFormat
exp.FormatOptions = New PdfRtfWordFormatOptions
req = New ExportRequestContext
req.ExportInfo = exp
With oRpt.FormatEngine.PrintOptions
.PaperSize = PaperSize.PaperLegal
.PaperOrientation = PaperOrientation.Landscape
End With
st = oRpt.FormatEngine.ExportToStream(req)
pg.Response.ClearHeaders()
pg.Response.ClearContent()
pg.Response.ContentType = "application/pdf"
ReDim b(st.Length)
st.Read(b, 0, CInt(st.Length))
pg.Response.BinaryWrite(b)
pg.Response.End()
dt.Dispose()
Catch ex As Exception
ShowError(ex.Message)
End Try
End Sub
答案 0 :(得分:1)
没有办法实现这一点,因为你不能从服务器向客户端发出命令来打印计算机,它只是不起作用。有一些方法可以使用pdf打印,但它不是很优雅,你说你不想使用pdfs ...除此之外我认为你会编写某种浏览器插件,必须安装在需要打印的机器。
答案 1 :(得分:0)
@AGoodDisplayName大部分是正确的。但是,您没有提供环境的详细信息 - 如果您正在构建基于Intranet的应用程序,则可以将服务器直接打印到打印机(如果服务器可以访问该打印机)。
安全性会出现问题,如果您有许多打印机的用户,这将是一个问题,但它是可能的。
答案 2 :(得分:0)
另一个选项(如果您有IE / Windows的受限制受众)是在客户端计算机上运行“代理”进程。然后,您可以拥有一个网页“poke”,处理要打印的数据。在现代IE中,最简单的方法是使用APP(异步可插拔协议)。
如果没有IE / Windows的“好处”,你几乎就会陷入PDF。