2011-03-30 46 views
9

Estoy usando TCPDF para generar un pdf.TCPDF - Número de páginas no exactamente alineado a la derecha

Mi problema es el siguiente línea a partir del método de pie de página():

$this->Cell(0, 10, 'Page '.$this->getAliasNumPage().'/'.$this->getAliasNbPages(), 'T', false, 'R'); 

Ésta es la línea estándar para insertar el número de página en el pie de página del documento, pero hay un espacio litte a derecha en la salida. Se puede ver en el ejemplo 1 de la página web: http://www.tcpdf.org/examples/example_001.pdf

si inserto el texto normal como esto:

$this->Cell(0, 10, 'Foobar', 'T', false, 'R'); 

el texto está perfectamente alineado a la derecha sin ningún problema.

He cavado en la fuente, parece ser algo con la codificación, pero realmente no entiendo el punto ... ¿alguien puede ayudar?

respecto

Respuesta

0

Creo que el problema está dentro de los alias. Estas son solo piezas de texto cuyo ancho se calcula en el momento de la inserción, y no el momento de reemplazarlos con números.

Por lo tanto, el ancho del texto se calcula para la cadena (literalmente) {np}/{nb}. Y cuando se reemplaza con números justo al final 1/9 es más pequeño que eso, mientras que 23/109 es más grande.

Puede reemplazar el alias NbPages utilizado (setAliasNbPages()?), Con algo que refleja el ancho de the total number of pages íf puede estimar cuántos serán. Y creo que puede usar directamente el número de página actual sin usar un alias, por lo que el problema al menos no aparece para ese alias.

1

Desafortunadamente TCPDF alinear el alias y no el número final que reemplaza el alias. Usar $ this-> AliasNbPages ('{p}') y $ this-> AliasNumPAge ('{n}') no ayudará mucho. El relleno adicional permanecerá en su lugar.

La única solución es poner números de página en lugar de alias.

Original bug at SourceForge.net (TCPDF bug tracker)

4

i resuelto de esta manera:

$this->Cell(0, 0, $this->getAliasRightShift().$this->PageNo().'/'.$this->getAliasNbPages(), 1, 0, 'R'); 

si usted tiene más de 99 páginas, se le volverá a tener problemas de alineación! ¡Usa algo más para generar un pdf de tu tesis de grado!:)

3

He resuelto usando:

$txt='Page '.$this->PageNo().' of '.$this->getNumPages() 

en lugar de:

$txt='Page '.$this->getAliasNumPage().' of '.$this->getAliasNbPages() 

traducción y actualizaciones italiano en Isotypelab.org

+4

Esto realmente no funciona, ya que imprime "Página 1 de 1" y "Página 2 de 2" –

+0

No funciona, la solución para mí es poner esta información de página para alinear IZQUIERDA :) – Jawaad

-2

Prueba este trabajo

$txt='Page '.$this->PageNo().' of '.$this->getNumPages() 

ing para mí

+0

repitió un solución que no funciona: Esto realmente no funciona, ya que se imprime "Página 1 de 1" y "Página 2 de 2" – user2345998

0

getNumPages no lo hará. Si tiene 3 páginas, getNumPages() dará como resultado 1/1, 2/2 y 3/3 getAliasNbPages() dará como resultado 1/3, 2/3 y 3/3 ¡así que el problema persiste!

+0

debe publicarse como un comentario, que podrá hacer una vez que tenga suficientes representantes :-) – kleopatra

1

Como mi documento es no más de 10 páginas tengo 2 soluciones, darle más anchura (260 en mi caso porque tengo PDF_PAGE_ORIENTATION = 'L') y alinear 'R':

$this->Cell(260, 6, 'Page '.$this->getAliasNumPage().' of '.$this->getAliasNbPages(), 0, 0, 'R', 0, '', 0, false, 'T', 'C'); 

o dos células con WIDTH = 0, se alinean 'C' y segunda célula con algunos espacios:

$this->Cell(0, 6, '', 0, 0, 'C', 0, '', 0, false, 'T', 'C'); 
$this->Cell(0, 6, 'Page '.$this->getAliasNumPage().' of '.$this->getAliasNbPages().'  ', 0, 0, 'C', 0, '', 0, false, 'T', 'C'); 

así jugar con ANCHO y espacios si usted tiene más de 10 páginas.

Esto alineó los números de página a la derecha en mi caso.

Cuestiones relacionadas