Кто-нибудь знает, как получить количество сгенерированных страниц, если документ PDF с использованием библиотеки mPDF?
Как получить количество страниц в документе mPDF?
Ответы (6)
Я искал ту же функциональность при использовании EYiiPdf (оболочка для mPDF на Yii), и следующее работало как шарм:
$mPDF->setFooter('{PAGENO} / {nb}');
Я проверил источник mPDF и нашел его по адресу mpdf.php:1656 (версия 5.4):
function AliasNbPages($alias='{nb}') {
//Define an alias for total number of pages
$this->aliasNbPg=$alias;
}
Надеюсь, поможет!
Вы можете использовать {nbpg}, например
<div align="center"><b>{PAGENO} / {nbpg}</b></div>
resetpagenum
, {nbpg}
показывает текущий номер страницы, начиная с вашего последнего сброса. Если вы хотите показать общее количество страниц, вы можете использовать {nb}
.
- person Mandy Schoep; 12.06.2014
Если вы пытаетесь вернуть количество страниц, чтобы вы могли сохранить это в базе данных или какой-либо другой операции за пределами mpdf, это легко сделать таким образом.
После того, как вы напишете свой контент:
$mpdf->WriteHTML($html);
$page_count = $mpdf -> page;
$mpdf->Output();
добавьте это в основной класс mPDF:
function getPageCount() {
return count($this->pages);
}
затем добавьте в html-парсер такую строку:
$html = str_replace('{PAGECNT}', $this->getPageCount(), $html);
после этих действий вы можете вставить {PAGECNT} прямо в ваш проанализированный HTML, чтобы получить результат. Это полезно, если вам нужно указать страницу:
- замена псевдонимов {nb} и {nbpg} для общего числа
- {PAGENO} для номера текущей страницы
ОБНОВЛЕНИЕ
Обратите внимание, что этот ответ относится к библиотеке mdf v4, которая была текущей версией на момент написания.
Минимальный рабочий пример от @aiao
<?php
$pagenumber= '<!--mpdf Page {PAGENO} of {nbpg}mpdf--> $mpdf->WriteHTML($pagenumber);
$mpdf->Output();
?>
<?php
$pagenumber= '<!--mpdf Page {PAGENO} of {nbpg}mpdf--> $mpdf->WriteHTML($pagenumber);
$mpdf->Output();
?>
Следите за строкой:
preg_replace('/\{DATE\s+(.*?)\}/e',"date('\\1')",$hd);
в функции mpdf.php Footer() Это может привести к тому, что ваш "{PAGENO} / {nb}" не будет отображаться. Просто закомментируйте его или используйте strpos('{DATE' > -1)
, чтобы проверить, доступен ли он. Также вам может понадобиться добавить:
$mpdf->ignore_invalid_utf8 = true;
а также, если вам не нужна строка нижнего колонтитула:
$mpdf->defaultfooterline = false;
После этих изменений у меня наконец-то заработала нумерация страниц.