【问题标题】:Is TCPDF MultiCell maxheight parameter overriding the height parameter even if it wouldn't have to?即使不需要,TCPDF MultiCell maxheight 参数是否会覆盖 height 参数?
【发布时间】:2015-04-28 01:22:19
【问题描述】:

我更新了我的 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,并且仅在内容实际上太多以至于要到达新行时才展开?

当前:

期望:


和:

【问题讨论】:

    标签: php pdf tcpdf fpdi


    【解决方案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 将通过应用较小的字体大小来缩小较大的文本以适应单元格,但如果文本小于单元格,它不会尝试缩小单元格。

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


    这里有一个简短的例子:

    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();
    

    渲染:


    在你告诉的 cmets 中:

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

    如果你想实现这一点,你需要禁用$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”的单元格不会缩小。

    注意

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

    【讨论】:

    • 我没有尝试您的答案,但如果文本不适合不缩小,我确实想缩小文本,允许单元格扩展到最大高度。在您的回答中,one linebadger.. 的字体大小相同
    • @Alex 现在我遇到了问题。目前我看不到它是如何实现的。将阅读文档和相关的源代码。或许我能找到办法。
    • 不客气。您在问题中显示的代码是否适用于旧版本的 TCPDF?如果是,您之前使用的是哪个版本?
    猜你喜欢
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-19
    • 1970-01-01
    • 2015-10-07
    • 2022-08-18
    • 2018-12-05
    • 1970-01-01
    相关资源
    最近更新 更多