2013-06-21 68 views
1

我其中有一個WCF後臺運行的應用程序。除了一兩件事,打印文檔
一切是偉大的工作,!通過應用程序打印文檔 - > WCF服務。我可以訪問本地打印機嗎?

基本上我有一個LocalReportMicrosoft.Reporting.WinForms.LocalReport,.rdlc文件),它位於服務器上,並從應用程序客戶端獲取打印命令。
服務器填充報告,並將其打印到客戶端

它適用於打印到網絡打印機指定的打印機,但我希望能夠打印到本地打印機(特別是「Microsoft XPS文檔作家,當我嘗試時,它只是超時,這是可以理解的)。

LocalReport有它是從數據庫中,這就是爲什麼它是由服務器完成填充內容。
它也可用於其他應用程序,這是我爲什麼我寧願把它的服務器上,而不是有一個本地副本。



我試着讓服務返回PrintDocument代替,但它不能正確序列化在WCF。
我的另一個想法是給PrintDocument轉換(或LocalReport的情況下,甚至可以將其導出爲PDF)到字節數組,發送到客戶端,然後再轉換回來和處理打印。 似乎是一個黑客攻擊的一位。

但是因爲我是WCF世界的新手,我想聽聽是否有更好的方法。
還是我的事情都錯了?

回答

1

在客戶端實例化Microsoft.Reporting.WinForms.LocalReport(WinForms,我假設你正在使用)。您可以添加

var report = new Microsoft.Reporting.WinForms.LocalReport(); 
report.DataSources.Add(new ReportDataSource("MyReport", GetReportData())); 

GetReportData可以使WCF呼叫並在可呈現爲報告對象的列表帶來。如果這樣做,報告將在客戶端生成,本地打印機全部可用。實際上,它也是進行報告的標準方式。

相關問題