2016-09-15 42 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。

感謝這個網站上的許多其他人的所有偉大的信息。希望這能幫助解決這個問題的其他人。