¿Cómo obtener un recuento de páginas en un documento mPDF?

3 minutos de lectura

¿Alguien sabe cómo obtener la cantidad de páginas generadas si un documento PDF usa la biblioteca mPDF?

  • stackoverflow.com/questions/1098156/… – puede que te ayude

    – Rikesh

    23 de abril de 2012 a las 12:40

  • agregue esto a una clase mPDF principal: function getPageCount() { return count($this->pages); } luego agregue un analizador html de este tipo: $html = str_replace(‘{PAGECNT}’, $this->getPageCount(), $html); después de estas acciones, puede insertar {PAGECNT} directamente en su HTML analizado para obtener el resultado. Esto es útil si necesita indicar una página, como: “página 2 de 5”.

    – Nikita Gopkalo

    23 de abril de 2012 a las 13:23

Estaba buscando la misma funcionalidad mientras usaba EYiiPdf (un contenedor para mPDF en Yii) y lo siguiente funcionó de maravilla:

$mPDF->setFooter('{PAGENO} / {nb}');

Revisé la fuente de mPDF y encontré esto en mpdf.php:1656 (versión 5.4):

function AliasNbPages($alias="{nb}") {
    //Define an alias for total number of pages
    $this->aliasNbPg=$alias;
}

¡Espero eso ayude!

  • ¡La respuesta realmente aceptada no funcionó para mí! Y tu solución funcionó 🙂

    – sravis

    13 de junio de 2013 a las 9:58


  • Estoy creando archivos PDF usando mpdf (dentro de Yii), los archivos PDF se crean a partir de html, y usé setfooter para el pie de página, ¡pero solo se muestra en la última página! ¿Cómo obtener eso en cada página? $mPDF1->setFooter(‘{FECHA jmY}|{PAGENO}/{nb}’,’O|E’);

    – arun

    7 de marzo de 2014 a las 6:57

Puedes usar {nbpg}me gusta

<div align="center"><b>{PAGENO} / {nbpg}</b></div>

  • Esta es una respuesta muy útil. Si estás usando resetpagenum, {nbpg}muestra el número de página actual contando desde su último restablecimiento. Si desea mostrar el recuento total de páginas, puede utilizar {nb}.

    – Mandy Schoep

    12 de junio de 2014 a las 15:02


avatar de usuario
Juan F.

Si está intentando devolver el número de páginas para poder guardarlo en una base de datos o alguna otra operación fuera de mpdf, es fácil extraerlo de esta manera.

Después de escribir su contenido:

$mpdf->WriteHTML($html);
$page_count = $mpdf -> page;

$mpdf->Output();

  • Estuve buscando esto durante EDADES, revisando los documentos durante horas y finalmente encontré la respuesta. ¡Muchas gracias!

    -Aleksandar Bencun

    07/08/2016 a las 19:54

  • ¡No pude encontrar esto en ningún otro lado! ¡Gracias!

    – axelra82

    28 mayo 2018 a las 20:54

agregue esto a una clase mPDF principal:

function getPageCount() {
    return count($this->pages);
}

luego agregue un html-parser tal cadena:

$html = str_replace('{PAGECNT}', $this->getPageCount(), $html);

después de estas acciones, puede insertar {PAGECNT} directamente en su HTML analizado para obtener el resultado. Esto es útil si necesita indicar una página:

avatar de usuario
sr9yar

  • alias de reemplazo {nótese bien} y {nbpg} para el número total
  • {PÁGINO} para el número de página actual

ACTUALIZAR

Tenga en cuenta que esta respuesta se refiere a la biblioteca mdf v4, que era una versión actual en el momento de escribir este artículo.

Ejemplo de trabajo mínimo por @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();
?>

  • Por favor, explique cómo se debe usar. ¿Cómo devuelven un recuento de páginas a la aplicación?

    –Nico Haase

    7 de noviembre de 2019 a las 11:08

  • Aunque puedo responder tu pregunta, la pregunta del OP no tiene nada que ver con devolver el número de páginas a la aplicación. Esos son alias de reemplazo, se colocan en su plantilla html y la instancia de clase mdf los analiza. Esta es una respuesta para la biblioteca v4, si no recuerdo mal, vea el año. Faltaba la documentación de esta biblioteca (quizás todavía lo esté), lo que dificulta encontrar los nombres de marcador de posición correctos de inmediato.

    – sr9yar

    7 de noviembre de 2019 a las 13:07

  • Incluya un MWE (ejemplo mínimo de trabajo). No tienes que probarlo, aunque sería bueno… instanciar un objeto, usar el parámetro ..etc $mpdf->WriteHTML($número de página); $mpdf->Salida();?>

    – aiao

    7 de noviembre de 2019 a las 15:01


  • @aiao En realidad, siéntete libre de editar mi respuesta. Escribí esa respuesta porque tuve que dedicar un tiempo a encontrar esos marcadores de posición (de hecho, no sabía que existían desde el principio). En mi humilde opinión, si el OP llegó al punto de hacer esta pregunta, sabe muy bien cómo iniciar la biblioteca y crear un pdf básico desde html. La última versión con la que trabajé fue la 6, probablemente haya una versión más nueva ahora. No creo que debamos dedicar tanto tiempo a mejorar esta respuesta.

    – sr9yar

    7 de noviembre de 2019 a las 15:13

avatar de usuario
Goce Dimkovski

Esté atento a la línea:

preg_replace('/\{DATE\s+(.*?)\}/e',"date('\\1')",$hd);

en mpdf.php function Footer() Puede causar que su “{PAGENO} / {nb}” no se muestre. Solo coméntalo o usa strpos('{DATE' > -1) para comprobar si está disponible. También es posible que deba agregar:

$mpdf->ignore_invalid_utf8 = true;

y también si no quieres una línea de pie de página:

$mpdf->defaultfooterline = false;

Después de estos cambios, la paginación funcionó para mí por fin.

  • Por favor, explique cómo se debe usar. ¿Cómo devuelven un recuento de páginas a la aplicación?

    –Nico Haase

    7 de noviembre de 2019 a las 11:08

  • Aunque puedo responder tu pregunta, la pregunta del OP no tiene nada que ver con devolver el número de páginas a la aplicación. Esos son alias de reemplazo, se colocan en su plantilla html y la instancia de clase mdf los analiza. Esta es una respuesta para la biblioteca v4, si no recuerdo mal, vea el año. Faltaba la documentación de esta biblioteca (quizás todavía lo esté), lo que dificulta encontrar los nombres de marcador de posición correctos de inmediato.

    – sr9yar

    7 de noviembre de 2019 a las 13:07

  • Incluya un MWE (ejemplo mínimo de trabajo). No tienes que probarlo, aunque sería bueno… instanciar un objeto, usar el parámetro ..etc $mpdf->WriteHTML($número de página); $mpdf->Salida();?>

    – aiao

    7 de noviembre de 2019 a las 15:01


  • @aiao En realidad, siéntete libre de editar mi respuesta. Escribí esa respuesta porque tuve que dedicar un tiempo a encontrar esos marcadores de posición (de hecho, no sabía que existían desde el principio). En mi humilde opinión, si el OP llegó al punto de hacer esta pregunta, sabe muy bien cómo iniciar la biblioteca y crear un pdf básico desde html. La última versión con la que trabajé fue la 6, probablemente haya una versión más nueva ahora. No creo que debamos dedicar tanto tiempo a mejorar esta respuesta.

    – sr9yar

    7 de noviembre de 2019 a las 15:13

¿Ha sido útil esta solución?