在申请中打印文档——>WCF服务.我可以访问本地打印机吗?



我有一个应用程序运行,它有一个WCF后端。
一切都很好,除了一件事,打印文件!

基本上我有一个LocalReport (Microsoft.Reporting.WinForms.LocalReport, .rdlc文件),它生活在服务器上,并得到一个命令从应用程序客户端打印。
服务器填充报表并将其打印到客户端指定的打印机

它可以打印到网络打印机,但我希望能够打印到本地打印机(特别是'Microsoft XPS Document Writer',当我尝试时它只是超时,这是可以理解的)。

LocalReport有它的内容从数据库填充,这就是为什么它是从服务器完成的。
它也被其他应用程序使用,这就是为什么我宁愿把它保存在服务器上,而不是有一个本地副本。



我试过让服务返回一个PrintDocument,但它没有在WCF上正确序列化。
我的另一个想法是将PrintDocument(或LocalReport的实例,甚至将其导出为PDF)转换为字节数组,将其发送给客户端,然后将其转换回来并处理打印。看起来有点像黑客。

但是作为WCF世界的新手,我想知道是否有更好的方法。
还是我把事情都搞错了?

在客户端实例化Microsoft.Reporting.WinForms.LocalReport(我假设您使用的是WinForms)。你可以添加

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

GetReportData可以调用WCF并引入可以呈现为报告的对象列表。如果这样做,将在客户端生成报告,并且本地打印机都可用。事实上,这也是做报告的标准方式。

最新更新