我正在编写一个作为Windows服务运行的服务器,该服务通过请求调用Firefox来生成网页的pdf快照。在Windows服务模式下运行GUI应用程序
我知道这是一个坏主意来运行服务模式的GUI程序,但我的程序的服务器从本质在用户模式下运行它限制。运行用户级“代理”也不是一种选择,因为在运行服务器的机器上可能没有登录交互式用户。
在我的实验Firefox的成功制作PDF时,该服务在一个已经登录的用户帐户下运行。显然,在其他情况下它不起作用:用于未登录的本地系统和用户帐户。在启用“允许服务与桌面交互”选项的LocalSystem下,我可以看到Firefox开始报告无法找到打印机。
因为它不会是实际的需要为PDF服务器运行一个打开的用户会话,有没有除了从虚拟机中运行整个事情的任何解决方法吗?
更新:我觉得这个问题并不是真正用于帐户权限,而是FF在服务模式下运行时等待的隐形模式对话框。
但是,当FF在LocalSystem帐户下运行时,它仍然无法创建pdf。 FF说它找不到打印机,我想知道这是否可以以某种方式启用的权限?
+1严重的是,正如kzen所说的,你真的应该考虑使用一个创建pdf的组件,而不是打开一个GUI应用来完成它。如果这可以由多个用户调用,那么你正在乞求麻烦。大多数GUI应用程序不是为这种情况而构建的,许多人只是为了遇到争用问题而走上这条路。 不要为他们埋单,但Aspose有许多为这种场景构建的组件,作为PDFSharp的另一个候选者。 我也总是问“为什么PDF”?对于人们来说,这是一个默认的答案,因此他们通常不会问一个更简单的格式是否可行。 – 2010-04-13 21:06:19
不知道原始海报需要什么,这种解决方案不适用于“浏览器”类的情况。如果项目的要点是概述页面的外观,那么使用PDF生成器并不是一个好的选择。 – 2010-04-14 08:37:50
你是对的,基督徒。问题是我需要在将结果保存为PDF之前首先进行可能的闪存和启用js的页面的有效渲染。这意味着我应该坚持使用像Gecko或Webkit这样的现有引擎,或者自己写。幸运的是,使用'cmdlnprint'附加组件的FF解决了这两个问题。但将这个捆绑服务作为服务运行是主要挑战。 – Leonid 2010-04-16 20:39:17