Преобразование документов в PDF с использованием PHP и Word.Как обращаться с неизвестными файлами? - PullRequest
1 голос
/ 04 июня 2011

Мы используем 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-вызов, как это было предложено в первом ответе. Не работает, хотя.

1 Ответ

0 голосов
/ 04 июня 2011

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

...