在.NET应用程序中生成和打印发票的最佳方法是什么?
我正在为公用事业公司开发计费系统,我们有以下要求:
- 每天批量生成并打印约1,500张账单,然后我们将其邮寄给客户
- 将帐单保存为可以通过电子邮件发送给客户并可以存档的格式(可能为PDF)
- 使用.NET和MS SQL Server数据库后端构建
我想要一些有关实现此目标的最佳方法的建议。我正在考虑构建一个WPF应用程序,该应用程序将具有我们将账单数据绑定到并从中打印的账单模板。但是我以前没有使用过WPF,所以我不确定这是否是使用的最佳技术,并且我无法理解批处理和PDF转换的工作方式。
有什么想法吗? WPF是否有效,还是有更好的解决方案?
解决方案
也许我们应该尝试使用ActiveReports.NET或者DevExpress XtraReports首先通过代码生成报告。两者都具有PDF导出支持,因此我们可以生成PDF文件并通过邮件发送。
如果我们使用的是SQL Server后端,Reporting Services应该可以为我们工作。
否则,我会建议一个适合报告需求的第三方报告生成器,并创建一个使用它来创建和导出报告的应用程序。
查阅本书(http://www.apress.com/book/view/9781590598542),它提供了许多不同的方案,包括通过电子邮件发送报告,报告生成服务等。它与客户端报告有关,但同样适用于服务器端(无论如何都是设计端)。在客户端(或者专用服务器)上执行此操作可能有其优势,因为我们可以完全控制自动化过程。但这就是如果我们想使用.NET报告的方法。
是的,我们可以使用WPF。
即使使用SQL Server,我们也可能希望查看客户端报告功能。它确实适合我们想要的更好的IMO。我们仍然可以从服务器查询并获取所需的所有数据,但是它使我们可以完全控制自动化过程。也许我们想将其作为服务运行,该服务每天都会生成报告,将报告转换为PDF,然后复制到磁盘并自动通过电子邮件发送。客户端可以轻松完成所有操作。而且,它不依赖于报表服务或者IIS,也不必配置其中的任何一个。
我强烈建议使用提供本地支持以导出为PDF的报告工具,如果我们可以从单一格式和报告开始处理信息的打印和归档,则出于管理目的,它会容易得多。
如果我们确实在进行批处理,那么我不会将WPF视为批处理作业的必需组件,而实际上并没有太多的UI(如果有的话),这取决于我们如何真正实现。
如果我们是我,我将专注于创建一个批处理处理器,该处理器可以作为Windows服务运行,也可以按计划在特定时间间隔运行以完成其工作。
我们还可以查看itextSharp。它是.net pdf编写工具,并且是Java itext的端口。我的有限演奏使pdf编写变得简单而有趣。
我们可以从WPF中获得良好的打印功能,因为新技术纸质XPS文档可以替代PDF。并且它也具有强大的编程支持。来自pettzold的博客http://www.charlespetzold.com/blog/2006/02/201111.html,有关WPF打印。
在我从事的其中一个项目中,我们使用列表和标签。
基本上,我们有一个.NET API,向它传递了一个DataSet,然后制作了引用数据集中各列的模板,这些列至少可以打印出来(我想也可以导出到PDF,但没有检查...)
我自己没有使用它,所以不能过多地谈论质量。