- PVSM.RU - https://www.pvsm.ru -
Доброго времени суток Хабр!
Хочу немного рассказать о том, что нужно сделать при использования COM объекта для конвертирования файлов word в какой-нибудь из доступных форматов [1]. Сам столкнулся со множеством проблем, облазил много форумов, русских мануалов практически нет. Решил написать, больше для себя, но вдруг кому-то еще пригодится?
Если у вас IIS, есть вероятность того, что вам это не понадобится, статья исключительно о настройке работы под Apache
Первая и основная проблема, которая вызывала разрыв
Call to undefined method variant::SaveAs()
при попытке сохранить документ.
Эксперименты часто приводили к ошибкам отсутствия свойства в объекте или ошибкам разбора документа, самая частая —
Fatal error: Uncaught exception 'com_exception'
with message '<b>Source:</b> Unknown<br/><b>Description:</b> Unknown'
Что нужно сделать для того, чтобы процесс все-таки заработал:
com.allow_dcom = true
com.autoregister_typelib = true
com.autoregister_casesensitive = false
com.autoregister_verbose = true
Ищем секцию Dynamic Extensions
Добавляем строку:
extension=php com_dotnet.dll
Перезапускаем apache
PS не забываем убивать процесс ворда в случае неудачных экспериментов, так как он запускается, открывает файл на чтение и висит.
Далее можно использовать стандартные функции COM для работы с объектом, напрмер, так:
com_load_typelib('Word.Application');
$name = 'test.docx';
$path = dirname(__FILE__) . "\tmp\". $name ;
$word = new COM("word.application") or die ("Невозможно создать COM объект");
$word->Documents->Open( $path );
mkdir(dirname(__FILE__) . "\tmp\{$name}");
$folder = dirname(__FILE__) . "\tmp\{$name}";
$word->ActiveDocument->SaveAs( $folder . "\{$name}.html", 8);
$word->Quit();
$word = null;
Автор: Slavenin999
Источник [3]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/php-2/22595
Ссылки в тексте:
[1] форматов: http://msdn.microsoft.com/en-us/library/office/bb238158(v=office.12).aspx
[2] мозга: http://www.braintools.ru
[3] Источник: http://habrahabr.ru/post/162473/
Нажмите здесь для печати.