我创建了一个与WCF服务通信的“winform”应用程序。
winform显示包含许多行的datagridview。用户可以选择(复选框)他希望打印的行,然后单击打印按钮。
所选行被发送到我的WCF服务中的方法,该方法又返回二进制数据的集合(要打印的文档)。返回后,我在磁盘上为返回集合中的每个二进制数据创建一个pdf文件。
完成后,这些新创建的文档将被发送到打印机......
注意: 在创建这些pdf文档之前,我需要创建一个“摘要”报告文档,该文档将在任何这些pdf文档之前打印。
为此,我在WCF服务中调用一个将返回二进制数据的方法。然后我得到那个二进制文件并用它创建一个摘要pdf文档...
这是我的问题: 创建“摘要报告”的最佳方法是什么?
到目前为止,我一直在尝试使用Reporting Services设计我的摘要报告,但是我正在抓住那些我希望在该报告中做的事情的吸管(即:尝试添加复选框列并制作它根据某个规则“选择”或不选择和/或使我的报告双语......)。所以我想也许RS不像我想的那样灵活/直观......
我的WCF服务将调用Reporting Services Web服务,调用相应的报告并返回我将发送回winform应用程序的二进制数据。
我也使用Crystal Report,但由于我从未使用它,因此会产生反作用......
我能想到的最后一个选择是从我的WCF服务中调用一个网页,传递必要的参数。网页将呈现自己,我会尝试将该网页转换为二进制数据,这将由我的WCF服务方法返回...
虽然我没有尝试过最后一种选择,但我认为它可以让我更灵活地选择我能做什么/不能做什么。
有没有人有建议或其他可以帮助我的替代方案? 感谢
答案 0 :(得分:1)
我没有意识到这篇文章仍然开放......
如果有人想知道,这是我最终提出的解决方案:
获取二进制数据集合并循环遍历该集合以在用户磁盘上生成物理PDF文件后,我需要一种方法来调用(第二次)我的WCF生成摘要报告。一旦渲染,想法是获取生成的结果(二进制)并将该数据发送回winform应用程序,这样我就可以创建一个很好的小Summary.pdf文件(在用户的磁盘上)。
完成后,使用第三方组件以编程方式将所有生成的PDF文件发送到打印机。
现在......因为摘要报告可能需要一段时间来呈现自己,所以我增加了获得超时的机会。增加超时不是一个合适的选择......
所以解决方案是,我决定在winform应用程序中包含一个客户端报告定义文件(.rdlc),而不是在服务器上调用/创建摘要报告。
基本上,当我安装winform应用程序时,它还包含一个Summary.rdlc文件。当适当的时间到来时,我从WCF服务获取报告所需的数据,并将此数据提供给.rdlc文件,该文件在用户计算机上本地呈现,然后在用户的磁盘上创建Summary.pdf文件。 / p>
就是这样!