在Asp.net直接打印

时间:2010-02-01 11:05:56

标签: asp.net printing

在我的应用程序中,我需要打印我的报告而不转换为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

3 个答案:

答案 0 :(得分:1)

没有办法实现这一点,因为你不能从服务器向客户端发出命令来打印计算机,它只是不起作用。有一些方法可以使用pdf打印,但它不是很优雅,你说你不想使用pdfs ...除此之外我认为你会编写某种浏览器插件,必须安装在需要打印的机器。

答案 1 :(得分:0)

@AGoodDisplayName大部分是正确的。但是,您没有提供环境的详细信息 - 如果您正在构建基于Intranet的应用程序,则可以将服务器直接打印到打印机(如果服务器可以访问该打印机)。

安全性会出现问题,如果您有许多打印机的用户,这将是一个问题,但它是可能的。

答案 2 :(得分:0)

另一个选项(如果您有IE / Windows的受限制受众)是在客户端计算机上运行“代理”进程。然后,您可以拥有一个网页“poke”,处理要打印的数据。在现代IE中,最简单的方法是使用APP(异步可插拔协议)。

如果没有IE / Windows的“好处”,你几乎就会陷入PDF。