【问题标题】:Printing Word document from PHP in WAMP在 WAMP 中从 PHP 打印 Word 文档
【发布时间】:2015-09-24 00:18:56
【问题描述】:

所以,我有这台打印机,它没有 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() 不适用于这种情况。

【问题讨论】:

  • 不,阅读编辑。这特别是关于 PHP exec() 在文档上调用 MS Word 以打印它的问题。
  • 不,您不需要通过“system()”调用显式调用 winword.exe 来打印文档。 PHP printer_open() 可以工作(在 Windows 上运行 Apache/PHP); .Net/MS-Office Interop 也可以工作:sitepoint.com/make-microsoft-word-documents-php
  • 这在最新版本的 PHP 中有效吗?我在某处没有读到。
  • 你真的用这些方法取得了成功吗?我看不到如何使用普通的 printer_open() 方法指定 word 文档,我尝试从您的链接中遵循 Interop 方法,但指定的文件在 Win 8 中非常不同。我更喜欢这种方法。

标签: php printing wamp exec


【解决方案1】:

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

由于您似乎在使用 .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. 确保路径是有效的在 PHP 中

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

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

祝你好运!

【讨论】:

  • 谢谢,我试试看。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-11
  • 1970-01-01
  • 1970-01-01
  • 2023-04-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多