FPDF MultiCell为每列创建一行

时间:2016-11-23 09:27:56

标签: php fpdf

我使用FPDF和Cell方法创建了一个表。这很好用,但是每列都有一个设定的宽度,这会导致一些问题,因为表格超出了正确的页面边距,产品名称也会与产品价格重叠,从而无法阅读。

在Google和Stack上研究了这个问题后,我将代码更改为MultiCell,但现在每列都有一整行。我提供了Cell和MultiCell表的图片,并提供了每种方法的代码。

我希望你们中的一个可以提供帮助。

感谢。

多单元: enter image description here

细胞: enter image description here

Cell方法代码:

class PDF extends FPDF {    
    function LoadData($file) {
        $lines = file($file);
        $data = array();
        foreach($lines as $line)
        $data[] = explode(';', trim($line));
        return $data;
    }

    function BasicTable($header, $data) {
        $nameIndex =  array_search ('Name', $header);       

        foreach($header as $key => $col) {
            $width = ($key == $nameIndex) ? 80 : 40;
            $this->Cell($width, 7, $col, 1);            
        }

        $this->Ln();

        foreach($data as $row) {
            foreach($row as $key => $col) {
                $width = ($key == $nameIndex) ? 80 : 40;
                $this->Cell($width, 6, $col, 1);
            }

            $this->Ln();
        }
    }
}

MultiCell方法代码:

class PDF extends FPDF {    
    function LoadData($file) {
        $lines = file($file);
        $data = array();
        foreach($lines as $line)
        $data[] = explode(';', trim($line));
        return $data;
    }

    function BasicTable($header, $data) {
        $nameIndex =  array_search ('Name', $header);       

        foreach($header as $key => $col) {
            $this->MultiCell($width, 7, $col, 1);            
        }

        $this->Ln();

        foreach($data as $row) {
            foreach($row as $key => $col) {
                $this->MultiCell($width, 6, $col, 1);
            }

            $this->Ln();
        }
    }
}

2 个答案:

答案 0 :(得分:0)

我相信这个带有类似问题的帖子有助于解决您的问题:FPDF print MultiCell() adjacently

答案 1 :(得分:0)

如果可能的话,您可以参考FPDF linebreak in PHP。但它不是用于单元格或多单元格的。它用ROW。 ROW包含多单元格。