我正在使用PHP COM对象打开Word 2013文件并计算页数。我的代码适用于.docx文件,但不适用于.docm文件。我在Windows 2008 R2环境中使用php 5.4和IIS 7.5。有什么建议吗?
// 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);
}
答案 0 :(得分: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)
答案 1 :(得分:0)
您可以尝试在打开文件之前关闭所有这样的宏,这也会禁用安全提示:
$word->AutomationSecurity = 3; // disable all macros in the documents being opened