1

PHPword用来创建一个docx文件。我需要一个可以获取创建的页面总数的方法/函数。

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

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

4

2 回答 2

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()来解决这个问题。所以是这样的:winword.exe/mToolsWordCountRecount

c:\path\to\winword.exe /mToolsWordCountRecount /mFileSave /mFileCloseOrExit yourfile.docx

这会强制 Word 重新计算页数,保存文档然后退出。然后您可以运行getPages以正确计算文档中的页数。

于 2016-10-24T22:03:55.183 回答
0

{PAGE} 和 {NUMPAGES} 是由 Word 而不是 phpword 处理的特定单词域代码,即 phpword 实际上并不知道页码值,它只是将这些域代码原样传递到生成的 word 文档中。

作为对原始问题的回答,我认为您无法从 phpword 获取页数信息。

有关单词字段值的更多信息

于 2015-06-02T11:39:32.180 回答