Я использую 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)