TCPDF setPageRegions和multicell

时间:2016-07-07 07:44:26

标签: php tcpdf

我正在尝试在我的多单元文本的前三行添加无文本区域。问题是它将根据第一行的位置对齐所有文本,第四行不会在无文本区域下包装。如果我向下移动第一行文本下面的无文本区域,那么它将文本包裹在无文本区域周围。

$x = 0;
$y = 0;
$img_width = 5;
$img_height = 10;
$text = 'alot of text';
$regions = array(
    array(
        'page' => '',
        'xt' => $x + $img_width,
        'yt' => $y,
        'xb' => $x + $img_width,
        'yb' => $y + $img_height,
        'side' => 'L'
    )
);
$this->setPageRegions($regions);
$this->MultiCell($text...$x,$y...);

预期结果

     row 1 ....
     row 2 ....
     row 3 ....
row 4 ....
row 5 ....
row 6 ....

实际结果

     row 1 ....
     row 2 ....
     row 3 ....
     row 4 ....
     row 5 ....
     row 6 ....

如果无文字区域向下移动

,则结果为

row 1 ....
     row 2 ....
     row 3 ....
     row 4 ....
row 5 ....
row 6 ....

1 个答案:

答案 0 :(得分:0)

尽管这个问题已经2岁了,但我还是偶然发现了同一个问题。

当页面区域的y值与文本部分的开头相同的y值时,左侧的pageRegions不能按预期工作。

解决方案(使用从左到右的文本进行测试;从右到左可能需要更多调整)是tcpdf.php中checkPageRegions函数的“修复”。

从22630行开始,向区域边界检查添加“其他”部分,

if (($y >= ($regdata['yt'] - $h)) AND ($y <= $regdata['yb'])) {

...

} else {
    if ($this->rtl) {
        $x = min($this->clMargin, $this->original_lMargin);
    } else {
        $x = min($this->crMargin, $this->original_rMargin);
    }
}

希望这可以帮助其他人寻找解决方案。