Я использую парсер PHPWord для создания документа, а затем в командной строке для автоматической печати документа. Документ ДОЛЖЕН быть на одной странице, потому что это сертификат и должен быть напечатан на специальной бумаге.
Я добавляю имена людей, поэтому люди с более длинными именами могут перебрасывать одну строку на две части и все нажимать на вторую страницу.
У PHPWord есть способ подсчитать количество страниц, поэтому я могу поднять ошибку, если количество страниц превышает одно?
После лапания через источник, похоже, что это еще нельзя сделать.
Однако в app.xml есть тег под названием «Страницы», который должен содержать количество страниц. Я не думаю, что это точно, но это хоть что-то.
Вот пример кода:
// 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]; }
Это возвращает 1
для меня в документе, который должен иметь 2 страницы. Возможно, PHPWord не потрудился рассчитать количество страниц или подсчитывать только разрывы страниц, но, по крайней мере, это начало.
EDIT: Используя командную строку Word, я могу обновить число страниц программно:
\path\to\winword.exe /mToolsWordCountRecount /mFileSave /mFileCloseOrExit myfile.docx
Это добавляет второй или два к поколению, но по крайней мере теперь я могу точно определить количество страниц