如何在 php 中通过 COM 在 windows 中使用密码打开 docx?

How to open docx with password in windows by COM in php?

我有一个 docx 文件并且知道密码。

如何将密码作为参数传递以通过 COM 对象打开它?

也就是说,我想让它在后台运行。

这是我的代码:

        $word = new COM("Word.Application");
        $word->Visible = 0;//set 0 to operate it at background
        $word->DisplayAlerts = 0;

        if(file_exists ($document))
        {
            $word->Documents->Open($document);
            return $word;
        }
        else
            return false;

文件加密后,Office 会打开并要求我输入密码。

我试过this ppt,也就是

$word = new COM("Word.Application", 
                array( 'Server' => '127.0.0.1', 
                       'Username' => 'foo', 
                       'Password' => 'bar' ), 
                CP_UTF8); 

然而,它不起作用。

办公室还开着,问我密码。

有人知道怎么做吗?

Microsoft 目前不推荐也不支持从任何无人值守的非交互式客户端应用程序或组件(包括 ASP、ASP.NET 自动化 Microsoft Office 应用程序、DCOM 和 NT 服务),因为当 Office 在此环境中处于 运行 时,Office 可能会表现出不稳定的行为 and/or 死锁。

如果您正在构建 运行 在服务器端上下文中的解决方案,您应该尝试使用已针对无人值守执行安全设置的组件。或者,您应该尝试找到至少允许 运行 客户端部分代码的替代方案。如果您从服务器端解决方案使用 Office 应用程序,该应用程序将缺少许多 运行 成功所必需的功能。此外,您将承担整体解决方案稳定性的风险。

您可以在 Considerations for server-side Automation of Office 文章中阅读更多相关信息。