使用php和Word将文档转换为PDF。如何处理未知文件?

时间:2011-06-04 10:27:47

标签: php pdf com ms-word automation

我们使用PHP中的application.word COM对象将Word文件转换为后台的PDF文件。

使用以下代码非常有效:

$this->com = new COM('word.application');
$this->com->Visible = false;
$this->com->DisplayAlerts = false;
$this->com->Documents->Open($from /* Filename */, false /* ConfirmConversions */,  
                            true /* ReadOnly */, false /* AddToRecentFiles */, 
                            '' /* PasswordDocument */, '' /* PasswordTemplate */, 
                            false /* Revert */, '' /* WritePasswordDocument */, 
                            '' /* WritePasswordTemplate */, 0 /* Format */, 
                            NULL /* Encoding */, true /* Visible */, 
                            false /* OpenAndRepair */, NULL /* DocumentDirection */, 
                            true /* NoEncodingDialog */, '' /* XMLTransform */);

(为简洁而遗漏了异常处理)

但是如果word无法识别文件类型,则会打开一个询问格式的对话框,阻止我们的php脚本。据我了解这里的文档:

http://msdn.microsoft.com/en-us/library/microsoft.office.interop.word.documents.open%28v=Office.11%29.aspx

第二个参数(设置为false)应禁止此对话框。

是否有任何方法可以取消此对话框并使单词无法打开文件,例如例外?

我们在虚拟机中的服务器上使用Word 2007,并且该脚本由Web应用程序触发,因此只需在对话框上手动按取消就不是最佳选择...

编辑:按照第一个答案中的建议更改为com调用。虽然不起作用。

1 个答案:

答案 0 :(得分:0)

我认为您需要在该页面上进一步阅读。您可能需要NoEncodingDialog参数。压缩对话框后,我不确定Open是否会抛出异常。可能是它返回null,所以一定要测试它是哪一个。