fpdf在multiCell或WriteHTML

时间:2017-05-16 18:43:03

标签: php pdf pdf-generation fpdf

我有一个6列引用表单,我使用MultiCell功能使用fpdf构建。我的问题是,在第3列中,我的描述有多行需要换行的文本。您可以看到用\ n替换html实体只打印字符\ n。我在单引号和双引号中尝试了它并尝试了CHR(10),它将描述视为字符串并输出字符串并不重要。

enter image description here

enter image description here “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&emsp;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实体。

1 个答案:

答案 0 :(得分:0)

您应该在"周围使用双引号\n而不是单引号'

来自docs

  

指定字符串的最简单方法是将其用单引号括起来   (角色&#39;)。

     

要指定文字单引号,请使用反斜杠()对其进行转义。至   指定一个文字反斜杠,加倍(\)。所有其他实例   反斜杠将被视为字面反斜杠:这意味着   您可能习惯的其他转义序列,例如\ r或\ n,将是   按字面意思输出,而不是具有任何特殊含义。

     

如果字符串用双引号(&#34;)括起来,PHP将解释[转义序列,例如\ n]