我有一个6列引用表单,我使用MultiCell功能使用fpdf构建。我的问题是,在第3列中,我的描述有多行需要换行的文本。您可以看到用\ n替换html实体只打印字符\ n。我在单引号和双引号中尝试了它并尝试了CHR(10),它将描述视为字符串并输出字符串并不重要。
“description”列的数据是html string:
$description = "205 - Base Cap 0.717 X 3.11<br>Cypress #2<br>Mill finish<br>Exact<br>Sand<br>Kerf<br>End dado 2.625" below dado.<br>Prepare for flush bolt HW-24EFB10B<br>10/10 80/3";
要创建行,我使用以下代码:
$description = str_replace('<br>','\n',$description);
$pdf->Row(array($itemNumber,$stk_code,$description,$quantity,$unit_price,$lineNet));
调用Row函数来创建MultiCell行:
var $widths;
var $aligns;
function SetWidths($w)
{
//Set the array of column widths
$this->widths=$w;
}
function SetAligns($a)
{
//Set the array of column alignments
$this->aligns=$a;
}
function Row($data)
{
//Calculate the height of the row
$nb=0;
for($i=0;$i<count($data);$i++)
$nb=max($nb,$this->NbLines($this->widths[$i],$data[$i]));
$h=15*$nb;
//Issue a page break first if needed
$this->CheckPageBreak($h);
//Draw the cells of the row
for($i=0;$i<count($data);$i++)
{
$w=$this->widths[$i];
$a=isset($this->aligns[$i]) ? $this->aligns[$i] : 'L';
//Save the current position
$x=$this->GetX();
$y=$this->GetY();
//Draw the border
$this->Rect($x,$y,$w,$h);
//Print the text
$this->MultiCell($w,15,$data[$i],0,$a);
//Put the position to the right of the cell
$this->SetXY($x+$w,$y);
}
//Go to the next line
$this->Ln($h);
}
我也尝试过WriteHTML,但它返回的文字少了屏幕上可见的任何html实体。
答案 0 :(得分:0)
您应该在"
周围使用双引号\n
而不是单引号'
。
来自docs:
指定字符串的最简单方法是将其用单引号括起来 (角色&#39;)。
要指定文字单引号,请使用反斜杠()对其进行转义。至 指定一个文字反斜杠,加倍(\)。所有其他实例 反斜杠将被视为字面反斜杠:这意味着 您可能习惯的其他转义序列,例如\ r或\ n,将是 按字面意思输出,而不是具有任何特殊含义。
如果字符串用双引号(&#34;)括起来,PHP将解释[转义序列,例如\ n]