fpdf多单元问题

gir*_*esh 14 fpdf

我们如何以相同的高度显示具有不同内容量的fpdf多单元

Jos*_*ter 16

好问题.

我通过遍历您的行中将被多线化的每个数据单元来解决它,并确定所有这些单元格的最大高度.这是您在行中创建第一个单元格之前发生的,并且当您实际渲染它时它将成为行的新高度.

以下是为一个单元实现此目的的一些步骤,但您需要为每个多单元执行此操作:

这假定一个$row带有String属性的数据被调用description.

  1. 首先,获取单元格内容并设置单元格的列宽.

    $description = $row['desciption'];           // MultiCell (multi-line) content.
    
    $column_width = 50;
    
    Run Code Online (Sandbox Code Playgroud)
  2. description使用以下GetStringWidth()函数获取String 的宽度FPDF:

    $total_string_width = $pdf->GetStringWidth($description);
    
    Run Code Online (Sandbox Code Playgroud)
  3. 确定此单元格的行数:

    $number_of_lines = $total_string_width / ($column_width - 1);
    
    $number_of_lines = ceil( $number_of_lines );  // Round it up.
    
    Run Code Online (Sandbox Code Playgroud)

    我从$column_width作为一种细胞填充减去1 .它产生了更好的结果.

  4. 确定生成的多行单元格的高度:

    $line_height = 5;                             // Whatever your line height is.
    
    $height_of_cell = $number_of_lines * $line_height; 
    
    $height_of_cell = ceil( $height_of_cell );    // Round it up.
    
    Run Code Online (Sandbox Code Playgroud)
  5. 对任何其他MultiCell单元重复此方法,将其设置$row_height为最大$height_of_cell.

  6. 最后,使用$row_heightfor行的高度渲染行.

  7. 舞蹈.