Эта тема на forum.dklab.ru


leonnash: Чтение свойств документа MS Word
Каким методом можно прочитать свойства документа MS Word (автор, название, даты, количество слов)?

через COM нашел такое (количество слов в документе)

$word = new COM("word.application") or die("Unable to instantiate Word");
$word->Visible = 1;
$word->Documents->Open("c:/anydocument.doc");
$temp = $word->Dialogs->Item(228);
$temp->Execute();
$numwords = $temp->Words();
echo $numwords;
$word->Quit();

либо так

echo $word->ActiveDocument->Words->Count;


т.е. через $word->Dialogs->Item(228); можно получить доступ к нужному объекту, но как узнать нужный номер?

Никак не могу найти описания методов класса COM. Покажите идиоту пальцем в ссылку, плз.
Rumata:
leonnash, а почему вы не делаете просто в jscript+wsh?
leonnash:
подробнее пожалуйста ;)

пока решил проблему так. надо было вывести на сайте даты утвеждения документов, которые пользователи прописывают в свойства документа на вкладке "прочие" как новый элемент "дата утверждения":


<?
$word = new COM("word.application") or die("Unable to instanciate Word");
$word->Visible = 0;
$path="d:/root_web/htdocs/docz/";
$dir = dir($path);

while (false !== ($entry = $dir->read())) {if ($entry[0]!=".") {
$word->Documents->Open($path.$entry);
echo $path.$entry." /дата утверждения: ";
echo $word->Documents[1]->CustomDocumentProperties("Дата утверждения");
$word->Documents[1]->Close();
echo "<br>";
}
}
$dir->close();
$word->Quit();
$word = null;
?>
leonnash:
правда не устраивает слишком долгое время обработки, на один документ уходит около 1-2 секунд, и если их сто штук, то оочень нехорошо это работает
Rumata:
не устраивает слишком долгое время обработки
определяйте время утверждения в момент получения/обновления документа и кешируйте результат (в файл или базу данных)

описания методов класса COM
наверно МСДН знает об этом

я выходил из положения следующим образом
открываю оффисное приложение, включаю запись макрокоманды, выполняю команды, завершаю запись макро
запускаю VBA и смотрю результат

http://forum.dklab.ru/js/advises/ConvertingDocInHtmlHurriedlyWin32Only.html сделано именно так
leonnash:
получаю свойство "Проверено"

echo $word->Documents[1]->CustomDocumentProperties("Проверено");

Если оно есть в документе, то отображается. Но если нету - то вываливается с ошибкой:

Fatal error: Uncaught exception 'com_exception' with message 'Source: Unknown
Description: Unknown' in D:\root_web\htdocs\1\appz\docz\word.php:22 Stack trace: #0 D:\root_web\htdocs\1\appz\docz\word.php(22): variant->CustomDocumentProperties('?????????') #1 {main} thrown in D:\root_web\htdocs\1\appz\docz\word.php on line 22

Как сделать, что б он не вываливался, а просто печатал пустую строку ?

Эта тема на forum.dklab.ru