首页 > 解决方案 > FPDF - 无法显示带下划线的变量而不导致换行

问题描述

我正在使用位于http://www.fpdf.org/en/script/script41.php的 FPDF WriteHTML() 扩展。居中效果很好。但是,当我包含下划线标签时,PDF 会显示与开始和结束标签一致的换行符。当我输入

$this->WriteHTML("<p align='center'>IN THE CIRCUIT COURT OF THE <u>$CircuitCourtNumber</u> JUDICIAL CIRCUIT, IN AND FOR _______________________ COUNTY FLORIDA,</p>");

PDF 输出分三行。 在此处输入图像描述

它应该只有两行。

我试过改变

$this->Cell(0,5,$e,0,1,'C');

$this->MultiCell(0,5,$e,0,'C');

效果是一样的。在开始和结束标签所在的位置仍然呈现新行。

我尝试使用http://www.fpdf.org/en/script/script42.php上的 WriteHTML() 扩展。它几乎可以工作,但它左对齐文本,我正在制作的表格应该居中对齐文本。我认为这是因为在扩展中使用了 Write()。

在此处输入图像描述

有什么方法可以使行居中并允许在句子中间添加下划线而无需开始新行?只有当一行到达右边距时,才会出现新行。我已经玩了几天了,但无济于事。

标签: phpnewlinefpdfline-breaksunderline

解决方案


用户编写的脚本,包括WriteHTML您尝试使用的脚本,不能正确处理字符串中标签内的标签(正如您所发现的那样)。正确解析和处理带有标签内标签的字符串是非常困难的。

最简单的解决方案是简单地输出字符串的“片段”,并切换到使用字体的下划线属性来处理需要它的部分,然后返回常规字体样式。

下面显示的内容可以满足您的要求。请注意,我必须使用较小的字体大小才能使您的整个字符串适合一行。我将您的巡回法院编号保留为一个单独的变量,因为它是在打开所使用字体的下划线样式后单独输出的。

$CircuitCourtNumber = '1234567890';
$theString = 'IN THE CIRCUIT COURT OF THE ' . $CircuitCourtNumber . ' JUDICIAL CIRCUIT, IN AND FOR _______________________ COUNTY FLORIDA,';

require('fpdf.php');
$pdf = new fpdf('P','mm','Letter');
$pdf->AddPage();
$pdf->SetFont('Arial','',9);
$totalWidth = $pdf->GetStringWidth($theString);
$pdf->SetX(($pdf->GetPageWidth() - $totalWidth)/2);
$pdf->Write(5,'IN THE CIRCUIT COURT OF THE ');
$pdf->SetFont('','U');
$pdf->Write(5,$CircuitCourtNumber);
$pdf->SetFont('','');
$pdf->Write(5,' JUDICIAL CIRCUIT, IN AND FOR _______________________ COUNTY FLORIDA,');
$pdf->Ln();
$pdf->SetY($pdf->GetY() + 10);
$pdf->Cell(0,5,'The next line of your PDF goes here');
$pdf->Output();

推荐阅读