Преобразование Doc в PDF с использованием php и Word. Как обрабатывать неизвестные файлы?

#php #pdf #com #ms-word #automation

#php #PDF #com #ms-word #автоматизация

Вопрос:

Мы используем приложение.COM-объект 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(v=Office.11).aspx

второй параметр, для которого установлено значение false, должен подавлять это диалоговое окно.

Есть ли какой-либо способ подавить это диалоговое окно и заставить word просто не открывать файл, например, с исключением?

Мы используем Word 2007 на сервере в виртуальной машине, и скрипт запускается веб-приложением, поэтому простое нажатие «Отмена» вручную в диалоговом окне — не лучший вариант…

РЕДАКТИРОВАТЬ: изменен на com-вызов, как предлагалось в первом ответе. Однако не работает.

Ответ №1:

Я думаю, вам нужно прочитать дальше на этой странице. Вероятно, вам нужен NoEncodingDialog параметр. После того, как вы закрыли диалоговое окно, я не уверен, выдает ли Open исключение. Может быть, что он возвращает null, поэтому обязательно проверьте, какой это.

Комментарии:

1. К сожалению, это не работает. Мы изменили команду (см. отредактированный вопрос), все та же проблема…