繁体   English   中英

从非交互式进程(Windows服务,计划任务等)在WinServer 2008中打印PDF

[英]Printing PDFs in WinServer 2008 from a non-interactive process (Windows service, scheduled task, etc.)

我正在尝试编写一个打印PDF的非交互式进程,我需要有关如何在Windows Server 2008(和Vista / 7)上构建它的建议。

以前,我们有一个计划任务(设置为运行是否登录用户帐户),它将打印目录中的所有PDF。 (单独的过程会将PDF移动到目录中。)在运行时,这将启动另一个进程(Adobe Reader或Foxit Reader)来打印PDF。 Adobe Reader和Foxit Reader都具有静默打印功能,因此所有内容都将被发送到计划任务运行的用户的默认打印机。 没有生成任何用户界面,所有文件都可以毫不费力地打印出来。 这适用于Server 2003。

该过程不再适用于Server 2008.我不完全确定,但我相信这与Session 0 Isolation有关。 我无法证明这一点。 但是,我可以说当设置为“仅在用户登录时运行”时该过程将作为计划任务运行 现在,虽然这有效,但它会强制用户登录到计算机,因此无法满足我的要求。 (我的第一个线索就是上一个问题 。)

我无法确定如何在这方面取得进展。 有没有办法满足我的要求?

几点说明:

我见过的每个解决方案似乎都在使用登录用户的凭据。 请参阅上面链接的问题 - 列出的解决方案似乎是抓取登录用户的令牌并使用它来运行程序。 (查看GetCurrentUserToken()过程 - 稍后在API调用CreateProcessAsUser()中使用返回的值。)

我现在的流程尽可能地生成,没有用户界面。 我已经使用ProcMon验证了读取器进程(Adobe或Foxit)似乎正确打印并且打印驱动程序本身似乎有问题。 这是通过尝试使用打印到文件驱动程序来支持的 - 打印到文件驱动程序以三个可见步骤运行,并且清楚地完成所有文件的第一个而不启动第二个。 那么Session 0 Isolation如何影响打印机驱动程序? 我不清楚这一点。 我在该主题上找到的最佳文档仅提到打印机驱动程序可能会受到影响,即使打印后台处理程序在会话0中运行。)

即使进程已选中“允许服务与桌面交互”,打印为Windows服务也无法正常工作。

添加了粗体文字以抵消引起炫目的文本墙效果。

尝试使用福昕阅读器而不是Acrobat-Reader。 Foxit Reader在Windows 2008及更高版本中也支持无GUI /命令行执行!

也可以打印,但每次运行printjob时都必须在session0中添加(或检查)打印机。

如果您需要更多帮助,请再次询问。 我已经构建了一个PowerShell脚本,该脚本在任务调度程序中运行,在福昕阅读器的帮助下打印pdf文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM