在 WAMP 中打印来自 PHP 的 Word 文档

Printing Word document from PHP in WAMP

所以,我的这台打印机没有 Windows 以外的任何 OS 的驱动程序,所以,我想 运行 Windows 上的服务器] PC 连接到打印机,这样我就可以从本地网络中的任何设备上传文件,并有一个 PHP 脚本调用文件上的 MS Word 来打印它。当我从命令行给出它并且文件上传有效时,我必须调用 Word 来打印文档的命令有效,但是当命令是 PHP 脚本中的 运行 和 system() 时或 exec(),它不起作用。我从任务管理器中看到 WINWORD.exe 运行ning,但没有显示 GUI,也没有打印。我正在 运行 在 Windows 8 上安装最新的 WAMP,我尝试进入 services.msc 并将 wampapache 的登录更改为我的管理员用户或启用复选框以允许该服务与桌面交互,但 none 有效。这是我正在使用的实际命令:"C:\Program Files\Microsoft Office\Office14\WINWORD.EXE" C:\path\file.txt /q /n /mFilePrintDefault /mFileExit。它在我 运行 使用 exec()

的批处理文件中

编辑:我不是要打印到网络打印机,这是连接到服务器计算机的打印机,我使用的是最新版本的 WAMP,所以我不能使用 PHP 在链接问题中起作用。另外,我正在尝试打印 Word 文档而不是原始文本。这特别是关于 PHP 的 exec() 不适用于这种情况。

老实说,我认为这是你最好的选择:

由于您似乎在使用 .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() and/or realpath()来验证这一点。

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

祝你好运!