2013-11-12 4 views
1

Мне нужно распечатать отчет RDLC на принтере по умолчанию на пользовательской (клиентской) машине.Непосредственно распечатать отчет RDLC без отображения пользователю

У меня есть веб-приложение VB.Net (VS 2008 /. Net 3.5) с отчетами RDLC. Часть требования состоит в том, чтобы НЕ показать пользователю, сгенерированный отчет, но распечатать его непосредственно на принтере пользователя по умолчанию. Пользователь будет нажимать на кнопку, и соответствующий отчет должен быть отправлен на принтер пользователя.

Любые идеи или предложения были бы очень полезными.

Обновление - До сих пор все попытки создания клиентской печати для отчетов rdlc потерпели неудачу. Не удалось распечатать их с клиентского принтера по умолчанию, только работы на стороне сервера

+0

Было бы полезно узнать (для людей, у которых есть этот вопрос в будущем), какие варианты вы исследовали и почему они не работали. Не стесняйтесь редактировать вопрос, чтобы добавить эту информацию, когда сможете. –

+0

Обновление. До сих пор все попытки создания клиентской печати для отчетов rdlc потерпели неудачу. Не удалось распечатать их с клиентского принтера по умолчанию, только печать на стороне сервера – BCV

ответ

1
I have a solution for the rdlc printing directly without preview. 
1. Convert the local report to word. 
2. print the word document. You can pop up the print diaglog and let you choose the printer. 
sample code like: 

'Convert to word: 
Dim bytes As Byte() = rptForm.ReportViewer1.LocalReport.Render("WORD", Nothing, mimeType, encoding, extension, streamids, warnings) 

Dim printDlg As New PrintDialog() 
Dim PrinterName as String 
If (printDlg.ShowDialog() = DialogResult.OK) Then 
    PrinterName = printDlg.PrinterSettings.PrinterName 
End If 

'Print the word document: 
Dim appWord As New Word.Application 
appWord.Documents.Open(FullPath, m, m, m, m, m, m, m, m, m, m, m) 
appWord.WordBasic.FilePrintSetup(Printer:=PrinterName , DoNotSetAsSysDefault:=1) 
appWord.ActiveDocument.PageSetup.Orientation = WdOrientation.wdOrientPortrait 
appWord.ActiveDocument.PageSetup.PaperSize = WdPaperSize.wdPaperLetter 
        appWord.ActiveDocument.PrintOut() 
        appWord.Documents.Close() 
        appWord.Quit() 
        appWord = Nothing 
Смежные вопросы