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输出为三行。

enter image description here

只能在两行上。

我尝试过更改

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

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

效果是一样的。在开始标记和结束标记所在的位置仍显示新行。

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

enter image description here

是否有任何方法可以使行居中并允许在句子中间加下划线而无需重新开始行?仅当行到达右边距时才应出现新行。我已经玩了两天了,无济于事。

解决方法

用户编写的脚本(包括您尝试使用的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,');
$pdf->Ln();
$pdf->SetY($pdf->GetY() + 10);
$pdf->Cell(0,5,'The next line of your PDF goes here');
$pdf->Output();

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...