Нужно работать с *.doc файлом. Попробовал пример отсюда http://php.com.ua/ru/articles/bicycles/php_com_word.htm Копипастю код, сохраняю и запускаю. Скрипт выполняется до предела времени исполнения скрипта, после чего завершается фатальной ошибкой. Fatal error: Maximum execution time of 30 seconds exceeded in U:\projects\abit.local.server\htdocs\generate.php on line 42 Строка №42 - последняя и в ней только "?>" Из-за чего это может происходить? Извините если повторяюсь. О системе: Apache 2.0.53 PHP 5.2.4 MySQL 5.0.45 WinXP sp2 MS Office 2003 (Конкретно Word - 2003 SP2 11.6568.6568)
Скрипт работает дольше указаного времени (30 секунд) в настройках и дохнет. Поставь set_time_limit(0) куда-нить наверх скрипта и он будет работать столько, сколько потребуется. upd PHP: <?php set_time_limit(0); // !!! $app = new COM("word.application") or die("Невозможно инициализировать Word"); $version=$app->Version; //Открываем заготовку документа $app->Documents->Open("blank.doc"); //Пишем текст $app->Selection->TypeText("Привет"); //Переводим курсор в следующую строку $app->Selection->TypeParagraph(); $app->Selection->TypeText("Как дела?"); //Выделяем весь документ $app->Selection->WholeStory(); //Обращаемся к свойствам абзаца (для всего выделения) $f=$app->Selection->ParagraphFormat(); $f->LineSpacingRule=1; // выставляем 1.5 интервала $f->Alignment=3; // выравниваем по ширине //Обращаемся к свойствам страницы $f=$app->ActiveDocument->PageSetup(); $f->Orientation = 0; // 0-книжная 1-альбомная $f->TopMargin = 28.34646; // 1 см = 28.34646pt $f->BottomMargin = 28.34646; // 1 см $f->LeftMargin = 28.34646; // 1 см $f->RightMargin = 28.34646; // 1 см // Сохраняемся $app->Documents[1]->SaveAs("Doc1.doc"); // Закрываемся $app->Quit(); // Освобождаем память $app->Release(); $app=Null; $f=Null; ?>
Замечательно. Фатал еррор поменялся. Теперь он следующий: Fatal error: Uncaught exception 'com_exception' with message 'Failed to create COM object `word.application': Ошибка при выполнении приложения-сервера ' in U:\projects\abit.local.server\htdocs\generate.php:3 Stack trace: #0 U:\projects\abit.local.server\htdocs\generate.php(3): com->com('word.applicatio...') #1 {main} thrown in U:\projects\abit.local.server\htdocs\generate.php on line 3 Код 3й строки: ... 3 $app = new COM("word.application") ... Как обработать особое состояние? try-catch это понятно.... в каком формате com_exception возвращается? Может быть в пхп модуля какого-н-ть не хватает?
Если про ветку HKEY_CLASSES_ROOT\CLSID\{000209FF-0000-0000-C000-000000000046}\ProgID то там Word.Application.11 Заменил на ...8 но ничего не поменялось. Таже фаталка что и во втором моём посте. Вообще по идеи 11 означает версию ворда... Как-то критично сказаться не должно. ... не забыть бы поменять назад) ЗЫ.... Покапался дальше... Встретил Word.Application, Word.Application.11, Word.Application.8 все они ссылаются на этот {000209FF-0000-0000-C000-000000000046} id класса.... равнозначны получается. HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID и HKEY_CLASSES_ROOT\CLSID\ идентичны в плане Word.Application