Прямая печать в Asp.net - PullRequest
       11

Прямая печать в Asp.net

1 голос
/ 01 февраля 2010

В моем приложении мне нужно распечатать свои отчеты без преобразования в 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 ]

1 голос
/ 01 февраля 2010

Нет способа сделать это, потому что вы не можете давать клиенту команды с сервера, чтобы он печатал компьютер, просто это не работает. Есть способы печати с использованием PDF, но это не очень элегантно, и вы заявили, что не хотите использовать PDF ... кроме этого, я думаю, вам нужно написать какой-нибудь плагин для браузера, который должен быть установлен машина, которая должна печатать.

0 голосов
/ 01 февраля 2010

Другой вариант (если у вас есть целая аудитория с IE / Windows) - запустить процесс «агент» на клиентском компьютере. После этого вы можете «проткнуть» веб-страницу с данными, которые будут напечатаны. В современном IE самый простой способ сделать это - использовать APP (асинхронные подключаемые протоколы).

Без "выгоды" IE / Windows вы в значительной степени застряли в PDF.

0 голосов
/ 01 февраля 2010

@ AGoodDisplayName в основном верно. Однако вы не предоставляете подробных сведений о своей среде - если вы создаете приложение на основе интрасети, сервер может печатать непосредственно на принтере, если этот принтер доступен для сервера.

Будут проблемы с безопасностью, и это будет проблемой, если у вас много пользователей со многими принтерами, но это возможно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...