#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-скрипт. Насколько я понимаю, документация здесь:
второй параметр, для которого установлено значение false, должен подавлять это диалоговое окно.
Есть ли какой-либо способ подавить это диалоговое окно и заставить word просто не открывать файл, например, с исключением?
Мы используем Word 2007 на сервере в виртуальной машине, и скрипт запускается веб-приложением, поэтому простое нажатие «Отмена» вручную в диалоговом окне — не лучший вариант…
РЕДАКТИРОВАТЬ: изменен на com-вызов, как предлагалось в первом ответе. Однако не работает.
Ответ №1:
Я думаю, вам нужно прочитать дальше на этой странице. Вероятно, вам нужен NoEncodingDialog
параметр. После того, как вы закрыли диалоговое окно, я не уверен, выдает ли Open исключение. Может быть, что он возвращает null, поэтому обязательно проверьте, какой это.
Комментарии:
1. К сожалению, это не работает. Мы изменили команду (см. отредактированный вопрос), все та же проблема…