2012-06-07 79 views
10

Estoy generando archivos PDF usando la biblioteca mPDF, y mi encabezado y pie de página varían en tamaño dependiendo de un par de parámetros.Evite que el cuerpo se solape con el pie de página en mPDF

Una solución estática sería establecer el margen del pie de página, lo que resolverá la superposición, pero como el pie de página puede variar en tamaño, esta no es una solución con la que me sienta satisfecho. ¿Hay alguna manera de obtener las dimensiones del pie de página y aplicar el margen en consecuencia?

+0

Tengo el mismo problema ATM, si encuentra una solución, ¿puede por favor actualizar su pregunta? – Bogdan

+0

He actualizado mi respuesta a continuación. Espero que te ayude. Los márgenes del documento deben establecerse para margin_header/footer. Es posible que también deba deshabilitar la configuración 'setAutoTopMargin' en su archivo de configuración. – Daniel

Respuesta

18

El problema radica en la documentación de mpdf. Creo que margin_footer y margin_header es el margen entre el cuerpo del documento y estos. En cambio, margin_footer y margin_header son los márgenes del documento, como uno pensaría que serían margin_top y margin_bottom.

Por lo tanto, al cambiar el margen inferior y superior se decidirá dónde se inicia el cuerpo del documento. Y cambiando el margen del encabezado/pie de página decidirá los márgenes de impresión.

Espero que ayude!

respuesta Actualizado

documentación MPDF es un poco fuera de la llamada al constructor, supongo. El argumento margin_top/bottom es en realidad el margen de contenido y no se aplica a los argumentos margin_header/footer. (Si recuerdo correctamente). Margin_top/bottom es el margen absoluto desde la parte superior del documento y debe incluir la altura del encabezado/pie de página.

Aquí es la forma correcta de manejar los márgenes:

/** 
* Create a new PDF document 
* 
* @param string $mode 
* @param string $format 
* @param int $font_size 
* @param string $font 
* @param int $margin_left 
* @param int $margin_right 
* @param int $margin_top (Margin between content and header, not to be mixed with margin_header - which is document margin) 
* @param int $margin_bottom (Margin between content and footer, not to be mixed with margin_footer - which is document margin) 
* @param int $margin_header 
* @param int $margin_footer 
* @param string $orientation (P, L) 
*/ 
new mPDF($mode, $format, $font_size, $font, $margin_left, $margin_right, $margin_top, $margin_bottom, $margin_header, $margin_footer, $orientation); 
+10

gracias por la actualización, también las configuraciones "experimentales" '$ mpdf-> setAutoTopMargin = 'stretch' y $ mpdf-> setAutoBottomMargin = 'stretch'' se asegurarán de que el encabezado y el pie de página nunca se superpongan al cuerpo principal, sin que usted tenga para calcular manualmente los márgenes de encabezado y pie de página. Muy útil cuando se trata de encabezados y pie de página dinámicos creados por el usuario – Bogdan

+0

Woah! No sabía que eso fuera posible. Gracias por esa información, será útil muy pronto. – Daniel

+0

Probé $ mpdf-> setAutoBottomMargin = 'stretch' sin éxito, ¿alguna instrucción de cómo usarlo? – Aiphee

6
$mpdf->setAutoBottomMargin = 'stretch'; 

trabajado para mí. Todo lo que tenía que hacer era asegurarme de haber incluido la opción antes del pie de página.

+0

No funcionó para mí hasta que lo configuré antes que el pie de página. –

Cuestiones relacionadas