【问题标题】:TCPDF setPageRegions and multicellTCPDF setPageRegions 和多单元格
【发布时间】:2016-07-07 07:44:25
【问题描述】:

我正在尝试在我的多单元格文本的前三行添加一个无文本区域。问题是它将根据第一行的位置对齐所有文本,并且第 4 行不会在无文本区域下换行。如果我将无文本区域向下移动到第一行文本下方,则它将文本环绕在无文本区域周围。

$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 ....

【问题讨论】:

    标签: php tcpdf


    【解决方案1】:

    虽然这个问题已经有 2 年了,但我偶然发现了同样的问题。

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

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

    将“else”部分添加到从第 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);
        }
    }
    

    希望这有助于其他人寻找解决方案。

    【讨论】:

      猜你喜欢
      • 2016-03-08
      • 1970-01-01
      • 2015-10-02
      • 2013-05-20
      • 2011-10-09
      • 2011-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多