首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHPWord -获取页数?

PHPWord -获取页数?
EN

Stack Overflow用户
提问于 2016-10-24 11:56:08
回答 3查看 2.5K关注 0票数 1

我使用PHPWord的模板解析器创建文档,然后使用命令行自动打印文档。文档必须在单页上,因为它是证书,并且要在特殊纸张上打印。

我正在添加人名,这样名字长的人就可以把一行加到两行上,然后把所有东西都推到第二页上。

PHPWord有没有办法计算页数,这样如果页数超过1,我就会抛出错误?

EN

回答 3

Stack Overflow用户

发布于 2016-10-25 06:00:14

在翻看源代码之后,看起来还不能这么做。

然而,在app.xml中有一个叫做" pages“的标记,应该包含页数。我不认为它是准确的,但它至少是某种程度的。

下面是一些示例代码:

代码语言:javascript
复制
  // 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];
  }

对于一个应该有2页的文档,这将为我返回1。PHPWord可以不计算页数,也可以只计算分页符,但至少这是一个开始。

编辑:使用Word命令行,我可以通过编程更新页数:

\path\to\winword.exe /mToolsWordCountRecount /mFileSave /mFileCloseOrExit myfile.docx

这会将生成时间增加一两秒,但至少现在我可以准确地检测页数

票数 0
EN

Stack Overflow用户

发布于 2018-06-24 18:42:59

这是一种替代方法(需要PhpOffice\PHPWord库)。

代码语言:javascript
复制
    $zip = new \PhpOffice\PhpWord\Shared\ZipArchive();
    $zip->open('Path/to/Doc/File');
    $xml = new \DOMDocument();
    $xml->loadXML($zip->getFromName("docProps/app.xml"));

    /* Echoes number of pages according to app.xml */
    echo $xml->getElementsByTagName('Pages')->item(0)->nodeValue);
票数 0
EN

Stack Overflow用户

发布于 2020-07-22 04:17:50

下面是我如何使用PHPWord库检索Word 2007+文档中的页数。它统计DOCX文件中刚刚测试并正常工作的页数。

代码语言:javascript
复制
require_once 'libs/phpword/bootstrap.php';//Path to PHPWord library
$zip = new \PhpOffice\PhpWord\Shared\ZipArchive();
$zip->open('docs/my_document_with_several_pages.docx');//relative path to DOCX file
$xml = new \DOMDocument();
$xml->loadXML($zip->getFromName("docProps/app.xml"));

// Returns the number of pages according to app.xml
echo $xml->getElementsByTagName('Pages')->item(0)->nodeValue;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40210468

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档