我使用PHPword
创建docx
文件。 我需要一个方法/函数,可以让所创建的页面总数。
我知道PHPword
不支持页面编号这是很容易做到使用$footer->addPreserveText('Page {PAGE} of {NUMPAGES}.');
一旦我得到的总页数,我可以创建额外页,如果文档有少20页。
我使用PHPword
创建docx
文件。 我需要一个方法/函数,可以让所创建的页面总数。
我知道PHPword
不支持页面编号这是很容易做到使用$footer->addPreserveText('Page {PAGE} of {NUMPAGES}.');
一旦我得到的总页数,我可以创建额外页,如果文档有少20页。
我也问过这个问题。 虽然没有内置的本身,你可以通过内手动打开ZIP文件并查看app.xml文件获取信息
看看我的答案和代码示例在这里: https://stackoverflow.com/a/40228208/6247265
下面是相关的代码:
// Include PHPWord and other stuff before here
function getPages() {
$zip = new \PhpOffice\PhpWord\Shared\ZipArchive();
$zip->open("/path/to/your/document.docx");
preg_match("/\<Pages>(.*)\<\/Pages\>/", $zip->getFromName("docProps/app.xml"), $var);
return $var[0];
}
这里有一个问题,以这样的:页码将是错误的。 我解决此得到由exec()
ING到winword.exe
使用/m
开关来运行ToolsWordCountRecount
宏。 因此,像这样:
c:\path\to\winword.exe /mToolsWordCountRecount /mFileSave /mFileCloseOrExit yourfile.docx
这迫使话语述说的页面,然后保存文件退出。 然后你可以运行getPages
正确计算的文档的页数。
该{PAGE}和{NUMPAGES}是由Word而不是比phpword,即phpword处理实际上并不知道页码值的特定词域代码,它只是通过这些域代码,因为他们是到生成的Word文档。
作为一个答案,原来的问题,我不认为你可以得到从phpword网页信息的数量。
这个字字段值的更多信息