how to auto adjust cell width in fpdf using php and mysql

23,699

Use string width for cell with

$string = fullname($USER);
$cellWidth = $pdf->GetStringWidth($string);
$pdf->Cell($cellWidth + 5, 0, $string, 0, 0, 'C', true);

String width doc http://www.fpdf.org/en/doc/getstringwidth.htm

Cell docs http://www.fpdf.org/en/doc/cell.htm

Share:
23,699
Mohamed Musthafa
Author by

Mohamed Musthafa

Updated on February 01, 2020

Comments

  • Mohamed Musthafa
    Mohamed Musthafa over 4 years

    I have a problem in creating table structure in pdf using fpdf library. when any data of perticular cell have a long string then the cell data will overlap with other cell data.. auto adjust cell width in fpdf... plz help me...

    My code:

                    <?php
        require("fpdf/fpdf.php");
    
        //Connect to your database
        $mysqli = new mysqli('localhost', 'root', '', 'mus');
    
                /*
                * This is the "official" OO way to do it,
                */
                if (mysqli_connect_error()) {
                    die('Connect Error (' . mysqli_connect_errno() . ') '
                    . mysqli_connect_error());
                    }
    
        //Create new pdf file
        $pdf=new FPDF();
    
        //Open file
        $pdf->Open();
    
        //Disable automatic page break
        $pdf->SetAutoPageBreak(false);
    
        //Add first page
        $pdf->AddPage();
    
        //set initial y axis position per page
        $y_axis_initial = 25;
    
        //print column titles for the actual page
        $pdf->SetFillColor(232, 232, 232);
        $pdf->SetFont('Arial', 'B', 10);
        $pdf->SetY($y_axis_initial);
        $pdf->SetX(5);
        $pdf->Cell(10, 6, 'CODE', 1, 0, 'L', 1);
        $pdf->Cell(40, 6, 'NAME', 1, 0, 'L', 1);
        $pdf->Cell(40, 6, 'PRICE', 1, 0, 'L', 1);
        $row_height = 6;
        $y_axis = $y_axis_initial + $row_height;
    
        //Select the Products you want to show in your PDF file
        $sql = 'SELECT WaiterPckey, WaiterName, WaiterShortName FROM `waitermaster`';
        $result= $mysqli->query($sql); 
    
        //initialize counter
        $i = 0;
    
        //Set maximum rows per page
        $max = 25;
    
        //Set Row Height
        ;
    
        while($row = $result->fetch_row())
        {
            //If the current row is the last one, create new page and print column title
            if ($i == $max)
            {
                $pdf->AddPage();
    
                //print column titles for the current page
                $pdf->SetY($y_axis_initial);
                $pdf->SetX(4);
                $pdf->Cell(10, 6, 'CODE', 1, 0, 'L', 1);
                $pdf->Cell(40, 6, 'NAME', 1, 0, 'L', 1);
                $pdf->Cell(40, 6, 'PRICE', 1, 0, 'L', 1);
    
                //Go to next row
                $y_axis = $y_axis + $row_height;
    
                //Set $i variable to 0 (first row)
                $i = 0;
            }
    
            $code = $row[0];
            $price = $row[1];
            $name = $row[2];
    
            $pdf->SetY($y_axis);
            $pdf->SetX(5);
            $pdf->Cell(10, 6, $code, 1, 0, 'L', 1);
            $pdf->Cell(40, 6, $name, 1, 0, 'L', 1);
            $pdf->Cell(40, 6, $price, 1, 0, 'L', 1);
    
            //Go to next row
            $y_axis = $y_axis + $row_height;
            $i = $i + 1;
        }
    
    
        //Create file
        $pdf->Output();
        ?>
        ?>