2016-09-15 41 views
0

我有一个基于内部PHP/IIS的应用程序。 我需要有一个后端进程运行(powershell),它可以从Crystal Reports生成PDF,然后将其发送到打印机。 我不想直接从我的PHP程序调用powershell,因为它在后台运行时挂起浏览器屏幕,很少实际完成该过程。从PHP触发后端打印

我在IIS/Server2008R2上运行PHP,MSSQL2008R2作为我的数据库平台。

我发布了这个问题,我打算自己回答,因为我想了很多小时的研究和试验后如何完成这个。

回答

0

多小时的研究和挫折后,我想出了以下解决方案,它的工作原理:

  1. 我有建说对水晶运行时库调用生成PDF文件和PowerShell脚本将其存储在一个文件夹中。
  2. 我使用福昕阅读器freader.exe /t filename PRINTERNAME将它发送到打印机。
  3. 我设置了一个cmd来调用powershell脚本并进行清理。 "C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe" -file c:\pdf.ps\ProcessQueue.ps1
  4. 我设置了一个由调用我的命令文件的事件ID 17061源MSSQLSERVER触发的任务调度器条目。
  5. 从我的PHP前端,我提交一个SQL查询:xp_logevent 55555,'Print Job Requested',Informational

SQL Server将事件日志条目,这会触发计划的任务,它运行我在后端脚本。该脚本检查数据库中的printQueue表,生成pdf并打印它。

由于权限问题,您无法直接让PHP登录到EventLOG。

感谢这个网站上的许多其他人的所有伟大的信息。希望这能帮助解决这个问题的其他人。