Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
1.3k views
in Technique[技术] by (71.8m points)

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

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();
    ?>
    ?>
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

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


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...