我更新了我的tcpdf库,我现在面临这种奇怪的行为,显然maxheight
参数会覆盖minimum height
参数,即使单元格内容不是那么高。
来自docs它说:
- $ h:(float)单元格最小高度。如果需要,单元格会自动扩展。
- $ maxh :(浮动)最大高度。它应该是> = $ h并且小于页面底部的剩余空间,或者0表示禁用它 特征。此功能仅在$ ishtml = false时有效。
我的$maxh
高于$h
,$ishtml
为false
:
$pdf->MultiCell(59, 5, "short", 1, 'L', true, 0, 45, 154, true, 0, false, false, 11, 'T', true);
因此height
为5
而max height
为11
。即使内容非常短,单元格也始终为11
。
如何将单元格高度设置为最小值5,最大值为11,并且只有当内容实际上足以达到新行时才将其展开?
电流:
所需:
并且:
答案 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();
<强>渲染:强>
你在评论中说:
如果文字在没有收缩的情况下不合适,我想缩小文本,允许单元格扩展到最大高度。在你的答案中,一行和獾..是相同的字体大小
如果您想实现这一目标,则需要停用$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);
<强>渲染:强>
但是,现在包含“短”的单元格不会缩小。
注意强>
在玩这两个例子后,我意识到了这个问题。目前我没有看到如何同时使用带有“short”的收缩盒和包含具有较小字体大小的长文本的框的方法。但是,我会保留我的答案,可能这对其他人来说是一个很好的起点。