在WAMP中从PHP打印Word文档

时间:2015-09-24 00:18:57

标签: php printing wamp exec

所以,我有这台打印机没有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()

运行的批处理文件中 编辑:我不打算打印到网络打印机,这是一台连接到服务器计算机的打印机,我使用的是最新版本的WAMP,所以我不能在链接的问题中使用PHP函数。此外,我试图打印Word文档而不是原始文本。这特别是关于PHP的exec()不适用于这种情况。

1 个答案:

答案 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 . '"'

强烈建议:

  1. 确保路径有效 INSIDE OF PHP

    您可以使用file_exists()和/或realpath()来验证这一点。

  2. 启用详细错误记录。在Powershell中,我喜欢使用try / catch块和$error对象。

  3. 祝你好运!