【发布时间】:2014-09-26 15:38:12
【问题描述】:
需要每晚启动创建基于 PDF 的报告(财务图表)的流程。一位过去的开发人员制作了一个组件,该组件使用 System.Drawing 和 System.Printing 使用 Amyuni 创建报告并将报告以 PDF 格式保存到目录中。现在我们想使用该组件在下班时间生成 PDF 供分析师在第二天使用。实际的图形是使用带有 DrawLine、DrawString 等的 GDI+ 自定义绘制的。使用 PrintPageEventArgs 图形属性作为绘图的画布。
在 Windows 窗体应用程序中使用该组件就可以正常工作。当使用在用户帐户(不是 LocalSystem)下运行的组件时,服务可以访问打印机不会失败,但不会出现任何异常,但不会创建文件。
我知道 Windows 服务并不真正支持 System.Drawing 和 System.Printing,但支持并不意味着不起作用。只是意味着 MS 不会帮助您解决问题。
知道我们可以做些什么来让它发挥作用吗?这不是一个高容量的过程。目前他们使用命令行程序和 Windows 任务计划程序来执行此操作,但这需要用户保持登录状态。
更新: 因此,我将其作为 .NET 控制台应用程序进行了尝试,并使用 Windows 任务计划程序启动了它,并且出现了同样的问题。从桌面运行控制台应用程序,它可以工作。从它运行的任务计划程序运行它,但没有创建文件。我确实有大量的日志记录,没有发生任何异常,而且看起来该过程正在创建图表。他们只是没有出现在输出目录中。我将任务设置为在我登录的同一帐户下运行。之前的工作是 Visual Basic 6 解决方案而不是 .NET 解决方案。
【问题讨论】:
-
您可以设置计划任务在用户是否登录时运行。
-
在某些情况下,“不支持”意味着它不起作用,并且您可以在桌面应用程序中执行的许多操作都“不支持”(从某种意义上说,它们 将不起作用)从服务。我认为这里根本不需要服务。任务计划程序将允许您在特定帐户下运行应用程序,无论该帐户当前是否登录。
-
尝试设置服务可以与桌面交互。或者只是按照 eddie_cat 的建议将其作为计划任务运行。
-
我建议您联系 Amyuni 支持以解决您的问题 (support@amyuni.com) 或在我们的论坛 (amyuni.com/forum) 中发布此问题。如果您这样做,请提供尽可能多的详细信息,例如:您使用的是哪个版本的 Windows?您的应用程序是否使用 Amyuni PDF Converter 或 Amyuni PDF Creator?哪个确切版本? 免责声明:我目前在 Amyuni Technologies 工作。
-
我试过运行它,让它与桌面交互。
标签: c# .net windows service printing