Я использую 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);
}
Вы можете попытаться отключить все макросы следующим образом, прежде чем открывать файл, это также отключит запросы безопасности:
$word->AutomationSecurity = 3; // disable all macros in the documents being opened
Ну, разве .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)