【问题标题】:Windows Service Printing PDFsWindows 服务打印 PDF
【发布时间】: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


【解决方案1】:

对于这篇文章的未来读者来说,这个问题所描述的问题是由 Windows Server 操作系统上的 Amyuni 库的许可限制引起的(Amyuni Technologies 根据正在开发的应用程序提供了几种许可模式)。对于这种特殊情况,在联系 Amyuni 支持后提供了新的许可信息并解决了问题。
免责声明:我为 Amyuni Technologies 工作。

【讨论】:

    猜你喜欢
    • 2010-11-03
    • 1970-01-01
    • 2020-03-01
    • 2011-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多