El texto se recorta al generar PDF usando FPDF / FPDI / TCPDF

Tengo un proyecto PHP en el que abro un PDF prefabricado y lo completé con datos a través de PHP. El problema que tengo es que uno de los elementos de texto no aparece. Lo estoy colocando hacia la parte inferior derecha de la página PDF. Si lo muevo un poco hacia la izquierda, aparece. Es como si hubiera algún recorte o algo así.

Estoy usando TCPDF y, dado que necesito modificar un PDF existente, también tengo que usar la clase FPDI. Me parece que FPDI normalmente está integrado con FPDF, por lo que he estado usando los métodos FPDF para construir mi PDF. Bien, aquí está parte de mi código (o las partes relevantes) ...

$pdf = new PDF();
$pdf->AddPage( 'L', 'Letter' );
$pdf->SetAutoPageBreak(false);
$pdf->SetXY(261,200);
$pdf->Write(5, 'test');

Hay al menos un centímetro de espacio en blanco a la derecha del texto cuando coloco el texto con un valor de 260. Si lo muevo solo una unidad más a 261, como en el código anterior, simplemente desaparece. Puedo colocar el texto tan lejos en la parte inferior de la página, que solo se muestra la mitad superior de las letras, sin embargo, ni siquiera puedo acercarme al lado derecho de la página, o el texto desaparecerá por completo. He configurado el SetAutoPageBreak a falso, por lo que no se crean nuevas páginas, y también he coqueteado con poner a cero los márgenes.

preguntado el 08 de noviembre de 11 a las 14:11

4 Respuestas

Podría ser un poco tarde en el juego ...

Eché un vistazo al archivo fpdf.php y parece que agrega un margen de 1 cm.

Si lo baja, puede acercar el texto al borde de la página. A continuación se muestra la línea original:

// Page margins (1 cm)
$margin = 28.35/$this->k;

Pero si lo cambias a algo como

$margin = 10/$this->k;

Esto lo acerca al borde de su documento.

Respondido el 19 de Septiembre de 13 a las 10:09

Tuve la mejor suerte al usar celdas para colocar el texto, por alguna razón, han demostrado ser más precisas y más fáciles de trabajar que simplemente escribir texto en el documento:

$pdf->SetXY(261,200);
$pdf->Cell(0,10,'My text',0,1, 'C');

Docs: http://www.fpdf.org/en/doc/cell.htm

respondido 08 nov., 11:19

De hecho, estoy usando celdas para otros objetos textuales en la página (generalmente cuando necesito asegurarme de que el texto esté justificado en el centro de un área). Una vez que convertí los objetos de texto en celdas, todo pareció funcionar bien. Todavía no estoy seguro de por qué el otro método no funcionaba. Gracias por la ayuda. - Mike McLin

Write () se usa para el flujo de texto (internamente usa varias llamadas Cell ()). Si llega al margen derecho, se realiza un salto de línea automático y la siguiente palabra / carácter comenzará una nueva línea en el margen izquierdo. La palabra no desaparecerá, pero se mostrará en el área inferior izquierda. Puedes ver a los personajes fluyendo con este sencillo guión:

$pdf = new FPDF();
$pdf->AddPage( 'L', 'Letter' );
$pdf->SetAutoPageBreak(false);
$pdf->SetFont('Helvetica');
$pdf->SetXY(261,200);
$pdf->Write(5, 't e s t');
$pdf->Output();

respondido 09 nov., 11:16

Intente lo siguiente:

$pdf->SetAutoPageBreak('auto',0);

Respondido el 10 de Septiembre de 13 a las 18:09

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.