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


Doc to PDF conversion using php and Word. How to handle unknown files?

我们使用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在打开文件时失败,例如出现异常?

我们在虚拟机的服务器上使用Word2007,脚本是由web应用程序触发的,所以简单地手动按对话框上的取消不是最好的选择。。。

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

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