需要每晚启动一个创建基于PDF的报告(财务图表)的流程。一位过去的开发人员制作了一个组件,该组件使用System.Drawing和System.Printing创建报告,并使用Amyuni将其保存为PDF文件。现在,我们想使用该组件在下班时间生成PDF,供分析师第二天使用。实际的图形是使用带有DrawLine、DrawString等的GDI+自定义绘制的。使用PrintPageEventArgs Graphics属性作为绘图的画布。
在Windows窗体应用程序中使用该组件工作得很好。当使用在用户帐户(而不是LocalSystem)下运行的组件时,服务可以访问打印机。除了任何例外,该组件不会失败,但不会创建任何文件。
我知道Windows服务不支持System.Drawing和System.Printing,但支持并不意味着不起作用。这意味着MS不会帮你解决问题。
你知道我们能做些什么让它发挥作用吗?这不是一个大容量的过程。目前,他们使用命令行程序和Windows任务调度程序来完成这项工作,但这需要用户保持登录状态
更新:因此,我将其作为.NET控制台应用程序进行了尝试,并使用Windows任务调度程序启动了它,但也出现了同样的问题。从桌面运行控制台应用程序,它就可以工作了。从它运行的任务计划程序运行它,但没有创建任何文件。我确实进行了大量的日志记录,没有发生任何异常,看起来这个过程确实是在创建图表。它们只是没有显示在输出目录中。我将该任务设置为在我登录的同一帐户下运行。上一个有效的任务是Visual Basic 6解决方案,而不是.NET解决方案。
对于这篇文章的未来读者来说,这个问题上描述的问题是由Windows Server操作系统上Amyuni库的许可限制引起的(Amyuni Technologies根据正在开发的应用程序提供了几种许可模型)。对于这种特殊情况,在联系Amyuni支持后提供了新的许可信息,问题得到了解决
免责声明:我为Amyuni Technologies工作