una texto salto retorno parrafos pagina linea insertar ejemplos como carro php pdf fpdf carriage-return

php - texto - Insertar saltos de línea en PDF



salto de linea html (12)

Estoy generando un archivo PDF sobre la marcha usando PHP. Mi problema es que necesito insertar saltos de línea en alguna parte del texto que se insertará en el archivo PDF. Algo como:

$pdf->InsertText(''Line one/n/nLine two'');

Entonces imprime:

Línea uno

Línea dos

Sé que /n no funciona en PDF, pero ¿conocen algún personaje o algo que represente un salto de línea en estos archivos?


Cambié ''/n'' por chr (10) y funcionó:

$pdf->MultiCell(0,5,utf8_decode($variable1 . chr(10) . $variable2),1);


Después de tener tantas pesadillas, encontré una solución.

utf8_decode(chr(10))

Intenté /n , <br/> y chr(10) pero nada funcionó. Luego me di cuenta de que era utf-8 y solo intenté con el anterior. Funciona bien con MultiCell pero no con Cell .


O simplemente intente esto después de cada pasaje de texto para una nueva línea.

$pdf->Write(0, '' '', ''*'', 0, ''C'', TRUE, 0, false, false, 0) ;


Otra opción es usar TCPDF::Ln() . Agrega una línea al PDF con la opción de establecer la altura.

Si las nuevas líneas ya están dentro de su contenido, entonces MultiCell() es probablemente el camino a seguir, como otros lo han mencionado, pero me parece que me gusta usar:

$pdf->Cell(0, 0, ''Line 1'', 0, 0, ''C''); $pdf->Ln(); $pdf->Cell(0, 0, ''Line 2'', 0, 0, ''C'');

Me confunde que Cell() y MultiCell() toman diferentes argumentos, por lo que tiendo a usar solo Cell() . También se lee como un carácter de línea nueva para el PDF igual que /n lee como un carácter de línea nueva en texto o texto en HTML.


Otra solución (funciona con TCPDF)

Use HEREDOC para una cadena larga. Ponga HERDOC para un CONST por ejemplo (defina diferentes idiomas)

$_prepare_const_EN = <<<EOT this is a long string and new line as well ... EOT; $define(''STR_EN'', $_prepare_const_EN); $pdf->InsertText(STR_EN);

funciona bien para mí ...


Quizás es demasiado tarde pero resolví este problema de una manera muy simple, estoy usando la opción Multicell y el texto proviene de un formulario, si utilizo un campo de entrada para obtener el texto, no puedo insertar saltos de línea en ningún manera, pero si usa un campo textarea, los saltos de línea en el área de texto son saltos de línea en el multicell ... y eso es todo, funciona incluso si uso la utf8_encode($text) para conservar los acentos


Si está utilizando fpdf, para poder utilizar saltos de línea necesitará usar una celda de texto de varias líneas como se describe aquí .

Si usa esto, los saltos de línea en su texto deben interpretarse y convertirse correctamente.

Solo un rápido ejemplo:

$pdf->Multicell(0,2,"This is a multi-line text string/nNew line/nNew line");

Aquí, 2 es la altura del cuadro de texto multilínea. No sé en qué unidades se mide o si puede simplemente configurarlo en 0 e ignorarlo. Tal vez intente con un gran número si al principio no funciona.


Simplemente reemplacé la etiqueta " /n " por " <br> ". Funcionó bien. Parece que TCPDF renderiza el texto como HTML

$strText = str_replace("/n","<br>",$strText); $pdf->MultiCell($width, $height,$strText, 0, ''J'', 0, 1, '''', '''', true, null, true);


Tu código dice

$pdf->InsertText(''Line one/n/nLine two'');

No sé acerca de la biblioteca PDF que está utilizando, pero normalmente, si desea / n interpretarse como un salto de línea, debe usar comillas dobles en PHP, por ejemplo

$pdf->InsertText("Line one/n/nLine two");


Usted dice eso

2 es la altura del cuadro de texto multilínea

No, no es. 2 es la distancia entre las líneas de texto.

No creo que haya una forma real de calcular la altura del cuadro de texto resultante real, a menos que use GetY() y restar el valor Y original utilizado en su declaración SetXY() para colocar el Multicell en primer lugar.


$pdf->SetY($Y_Fields_Name_position); $pdf->SetX(#); $pdf->MultiCell($height,$width,"Line1 /nLine2 /nLine3",1,''C'',1);

En cada columna, antes de establecer la posición X, indique primero la posición Y, así fue como esto

Columna 1

$pdf->SetY($Y_Fields_Name_position); $pdf->SetX(#); $pdf->MultiCell($height,$width,"Line1 /nLine2 /nLine3",1,''C'',1);

Columna 2

$pdf->SetY($Y_Fields_Name_position); $pdf->SetX(#); $pdf->MultiCell($height,$width,"Line1 /nLine2 /nLine3",1,''C'',1);

Espero eso ayude..


MultiCell($w, $h, ''text<br />'', $border=0, $align=''L'', $fill=1, $ln=0, $x='''', $y='''', $reseth=true, $reseth=0, $ishtml=true, $autopadding=true, $maxh=0);

Puede configurar MultiCell para leer html en un nivel básico.