PHPword,得到的总页数(PHPword, get total number of pages)

2019-10-23 01:38发布

我使用PHPword创建docx文件。 我需要一个方法/函数,可以让所创建的页面总数。

我知道PHPword不支持页面编号这是很容易做到使用$footer->addPreserveText('Page {PAGE} of {NUMPAGES}.');

一旦我得到的总页数,我可以创建额外页,如果文档有少20页。

Answer 1:

我也问过这个问题。 虽然没有内置的本身,你可以通过内手动打开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正确计算的文档的页数。



Answer 2:

该{PAGE}和{NUMPAGES}是由Word而不是比phpword,即phpword处理实际上并不知道页码值的特定词域代码,它只是通过这些域代码,因为他们是到生成的Word文档。

作为一个答案,原来的问题,我不认为你可以得到从phpword网页信息的数量。

这个字字段值的更多信息



文章来源: PHPword, get total number of pages
标签: phpword