37 php pdf carriage-return fpdf
我正在使用PHP生成一些PDF文件.我的问题是我需要在将插入PDF文件的文本的某些部分插入换行符.就像是:
$pdf->InsertText('Line one\n\nLine two');
Run Code Online (Sandbox Code Playgroud)
所以它打印:
第一行
第二行
我知道\n
不适用于PDF,但你们知道任何字符或代表这些文件换行符的东西吗?
tho*_*ter 42
如果您使用的是fpdf,为了能够使用换行符,您需要使用此处所述的多行文本单元格.
如果使用此选项,则应正确解释和转换文本中的换行符.
只是一个简单的例子:
$pdf->Multicell(0,2,"This is a multi-line text string\nNew line\nNew line");
Run Code Online (Sandbox Code Playgroud)
这里,2是多行文本框的高度.我不知道测量的单位是什么,或者你可以将它设置为0并忽略它.如果一开始它不起作用,也许可以尝试使用大量数字.
Dav*_*unt 17
你的代码读了
$pdf->InsertText('Line one\n\nLine two');
Run Code Online (Sandbox Code Playgroud)
我不知道您正在使用的PDF库,但通常如果您希望\n被解释为换行符,您必须在PHP中使用双引号,例如
$pdf->InsertText("Line one\n\nLine two");
Run Code Online (Sandbox Code Playgroud)
小智 12
我改变'\n'
了CHR(10)和它的工作:
$pdf->MultiCell(0,5,utf8_decode($variable1 . chr(10) . $variable2),1);
Run Code Online (Sandbox Code Playgroud)
小智 6
你陈述了
2是多行文本框的高度
不,这不对.2是文本行之间的距离.
我认为没有一种真正的方法可以计算实际结果文本框的高度,除非您使用GetY()
然后减去SetXY()
语句中用于放置Multicell 的原始Y值.
另一种选择是使用TCPDF::Ln()
.它为PDF添加了一行,可以选择设置高度.
如果新内容已经在您的内容中,那么MultiCell()
可能就像其他人提到的那样,但我发现我喜欢使用:
$pdf->Cell(0, 0, 'Line 1', 0, 0, 'C');
$pdf->Ln();
$pdf->Cell(0, 0, 'Line 2', 0, 0, 'C');
Run Code Online (Sandbox Code Playgroud)
它使我感到困惑,Cell()
并MultiCell()
采取不同的论点,所以我倾向于坚持Cell()
只使用.它也像PDF的\n
换行符一样读取,就像读取文本或<br>
HTML中的换行符一样.
在做了这么多噩梦之后,我找到了解决办法。
utf8_decode(chr(10))
Run Code Online (Sandbox Code Playgroud)
我想\n
,<br/>
和chr(10)
,但毫无效果。然后我意识到它是utf-8
并尝试了上面的一个。它适用于MultiCell
但不适用于Cell
.
我只是将" \n
" 替换为" <br>
"标签.工作得很好.似乎TCPDF将文本呈现为HTML
$strText = str_replace("\n","<br>",$strText);
$pdf->MultiCell($width, $height,$strText, 0, 'J', 0, 1, '', '', true, null, true);
Run Code Online (Sandbox Code Playgroud)