所以,我有这台打印机没有Windows以外的任何操作系统的驱动程序,因此,我想在连接到打印机的Windows PC上运行服务器,以便我可以从任何上传文件设备在本地网络中并有一个PHP脚本调用文件上的MS Word进行打印。当我从命令行提供文件并且文件上传工作时,我必须调用Word来打印文档的命令工作,但是当命令从带有system()
或exec()
的PHP脚本运行时,它不起作用。我看到WINWORD.exe
从任务管理器运行,但没有显示GUI,也没有打印。我在Windows 8上运行最新的WAMP,我尝试进入services.msc
并将wampapache的登录更改为我的用户(管理员)或启用复选框以允许服务与桌面交互,但没有有效。这是我正在使用的实际命令:"C:\Program Files\Microsoft Office\Office14\WINWORD.EXE" C:\path\file.txt /q /n /mFilePrintDefault /mFileExit
。它位于我使用exec()
exec()
不适用于这种情况。
答案 0 :(得分:2)
老实说,我认为这是你最好的选择:
由于您似乎遇到了.bat文件方法的问题,我建议您尝试使用Powershell脚本。例如:
print_doc.ps1 =>
Param([string] $filePath)
# This should handle any file type, including an MS-Word .doc/.docx
Start-Process -FilePath $filePath -Verb print
在PHP中,你可以exec()
这样的脚本:
'powershell.exe -noprofile -executionpolicy bypass -file \path\to\script\print_doc.ps1 "' . $path . '"'
强烈建议:
确保路径有效 INSIDE OF PHP 。
您可以使用file_exists()和/或realpath()来验证这一点。
启用详细错误记录。在Powershell中,我喜欢使用try / catch块和$error对象。