TCPDF MultiCell maxheight参数是否会覆盖height参数,即使它不是必须的?

时间:2015-02-25 20:54:00

标签: php pdf tcpdf fpdi

我更新了我的tcpdf库,我现在面临这种奇怪的行为,显然maxheight参数会覆盖minimum height参数,即使单元格内容不是那么高。

来自docs它说:

  
      
  • $ h:(float)单元格最小高度。如果需要,单元格会自动扩展。
  •   
  • $ maxh :(浮动)最大高度。它应该是> = $ h并且小于页面底部的剩余空间,或者0表示禁用它   特征。此功能仅在$ ishtml = false时有效。
  •   

我的$maxh高于$h$ishtmlfalse

$pdf->MultiCell(59, 5, "short", 1, 'L', true, 0, 45, 154, true, 0, false, false, 11, 'T', true);

因此height5max height11。即使内容非常短,单元格也始终为11

如何将单元格高度设置为最小值5,最大值为11,并且只有当内容实际上足以达到新行时才将其展开?

电流:

enter image description here

所需:

enter image description here
并且:

enter image description here

1 个答案:

答案 0 :(得分:1)

在文档中可能看起来有点不清楚,但您需要禁用$fitcell选项(它是MultiCell()的最后一个参数)才能实现预期的行为。该行应如下所示:

$pdf->MultiCell(59, 5, "short", 1, 'L', true, 0, 45, 154, true, 0, false, false, 11, 'T', false);

(注意最后的false而不是true

如果启用$fitcell,TCPDF会通过应用较小的字体大小缩小较大的文本以适合单元格,但如果文本小于单元格,则不会尝试缩小单元格。

由于TCPDF在$fitcell被禁用时也不会尝试放大单元格,因此您需要增加最大高度参数以允许更多内容。


这是一个简短的例子:

require_once 'tcpdf/tcpdf.php';

// Create new pdf
$pdf = new TCPDF();

// Add a page
$pdf->AddPage();

// Set color for background
$pdf->SetFillColor(255, 255, 127);

// Add 2 cells
$pdf->MultiCell(59, 5, "one line", 1, 'L', true, 0, 50, 50, true, 0, false, false, 21, 'T', false);
$pdf->MultiCell(59, 5, "badger badger badger badger badger badger badger badger - mushroom! mushroom!", 1, 'L', true, 0, 50, 60, true, 0, false, false, 21, 'T', false);

$pdf->Output();

<强>渲染:

enter image description here


你在评论中说:

  

如果文字在没有收缩的情况下不合适,我想缩小文本,允许单元格扩展到最大高度。在你的答案中,一行和獾..是相同的字体大小

如果您想实现这一目标,则需要停用$maxh功能并启用$fitcell功能,例如:

require_once 'tcpdf/tcpdf.php';

// Create new pdf
$pdf = new TCPDF();

// Add a page
$pdf->AddPage();

// Set color for background
$pdf->SetFillColor(255, 255, 127);

// Add 2 cells
$pdf->MultiCell(59, 11, "short", 1, 'L', true, 0, 50, 50, true, 0, false, false, 0, 'T', true);
$pdf->MultiCell(59, 11, "badger badger badger badger badger badger badger badger - mushroom! mushroom!", 1, 'L', true, 0, 50, 60, true, 0, false, false, 0, 'T', true);

<强>渲染:

enter image description here

但是,现在包含“短”的单元格不会缩小。

注意

在玩这两个例子后,我意识到了这个问题。目前我没有看到如何同时使用带有“short”的收缩盒和包含具有较小字体大小的长文本的框的方法。但是,我会保留我的答案,可能这对其他人来说是一个很好的起点。