PHP COM-объект для открытия Word 2013, количество страниц не WKG для .docm

0

Я использую PHP COM-объект для открытия файла Word 2013 и подсчета страниц. Мой код отлично подходит для файлов.docx, но не для файлов.docm. Я использую php 5.4 и IIS 7.5 в среде Windows 2008 R2. Любые рекомендации?

// Create an instance of the Word application
$word = new COM("word.application");
if ($word) {
    // Open the document
    $word->Documents->Open($file_dir . $filename);

    // Get the page count
    $pagecount = $word->Documents[1]->ComputeStatistics(2);
} 
Теги:
ms-word
com

2 ответа

0
Лучший ответ

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

 $word->AutomationSecurity = 3;   // disable all macros in the documents being opened
  • 0
    Большое спасибо за ответ. Это было решение!
  • 0
    Николай, есть ли ссылка, в которой перечислены другие варианты настройки AutomationSecurity? Можете ли вы предоставить ссылку? Спасибо еще раз за отличный отзыв.
0

Ну, не.docm означает, что в файле есть макросы или макросы событий?

Обычно, когда пользователь открывает файл.docm, пользователю предоставляется запрос безопасности. Если вы работаете под управлением PHP, вы можете работать под службой, и приглашение не отображается на скрытом рабочем столе, или в безопасности, которая препятствует ее запуску вообще. Я бы предложил вам написать код VBS, чтобы попытаться открыть тот же файл под консолью и посмотреть, какие результаты. Если вы получаете подсказки или их предупреждение, мы надеемся, что вы получите более эффективные сообщения об ошибках.

var word
set word = CreateObject("Word.Application")

word.documents.open("path to my file")

var pageCount
pageCount = word.Documents(1).ComputeStatistics(s)
  • 0
    Спасибо Джо за быстрый ответ и за дополнительную информацию о безопасности. Рекомендация Николая отключить макросы была самым простым решением.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню