Мы используем COM-объект application.word из PHP для преобразования файлов 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 на сервере в виртуальной машине, и сценарий запускается веб-приложением, поэтому простое нажатие кнопки «Отмена» в диалоговом окне - не лучший вариант
РЕДАКТИРОВАТЬ: изменилось на com-вызов, как это было предложено в первом ответе. Не работает, хотя.