简体   繁体   中英

Make text fit in a cell with fpdf

im making a pdf file using fpdf.. The fdf generated will show data in table form from the database. My problem is, when the data string is too long, it do not fit well in the table cell. Look below in column no 3:

在此处输入图片说明

Below is my full code:

<?php
require('fpdf17/fpdf.php');
require('db.php');

//create a FPDF object
$pdf=new FPDF();

$pdf->SetFont('Times','B',20); //set font for the whole page (font family, style, size)
$pdf->SetTextColor(0,0,0); //using RGB value

//set up a page
$pdf->AddPage('P');  //potrait orientation
$pdf->SetDisplayMode('default'); //using 100 percent zoom and the viewer's default layout

$icon = "files/icon.png";
$pdf->Cell (10);
$pdf->Cell(60, 60, $pdf->Image($icon, $pdf->GetX(), $pdf->GetY(), 33.78), 0, 0, 'L', false);

$pdf->SetFillColor(0,0,0);
$pdf->SetFont('Times', '', 12);
$pdf->SetXY(10, 30);
$pdf->Cell(10);
$pdf->Cell(30, 6, 'Retrieval Date' , 0, 0, '', 0);
date_default_timezone_set("Asia/Kuala_Lumpur"); //set default time zone
$pdf->Cell(30, 6, ': '.date("d/m/Y"), 0, 2, 'B', 0);

//Set x and y position for the main text, reduce font size and write content
$pdf->SetXY(20,40); //setting the position
$pdf->SetFont('Times', 'BU', 14);
$pdf->Write(12,'Absenteeism record for:');

$course_course_code = addslashes( filter_input( INPUT_GET,'course',FILTER_SANITIZE_STRING ) );
$data = "SELECT course_code, course_name FROM studentattendance 
                INNER JOIN course ON studentattendance.course_course_code=course.course_code WHERE course_course_code LIKE '$_GET[course]' GROUP BY course_code";

                $result = $conn->query($data)  or die("Error: ".mysqli_error($conn));
                while($ser=mysqli_fetch_array($result)){

                    $course_code = $ser['course_code'];
                    $course_name = $ser['course_name'];

$pdf->SetFillColor(0,0,0);
$pdf->SetFont('Times', '', 12);
$pdf->SetY(50);
$pdf->Cell(10);
$pdf->SetX(20);
$pdf->Cell(30, 6, 'COURSE' , 0, 0, '', 0);
$pdf->Cell(30, 6, ': '.$course_code. ' - '.$course_name, 0, 2, 'B', 0);
}

//start first table
$pdf->SetFillColor(255,255,255);
$pdf->SetFont('Times', 'B', 12);
$pdf->SetXY(21,58);
$pdf->Cell(10, 6, 'No.', 1, 0, 'L', 1);
$pdf->Cell(25, 6, 'Matric no', 1, 0, 'L', 1);
$pdf->Cell(75, 6, 'Name', 1, 0, 'L', 1);
$pdf->Cell(25, 6, 'GROUP', 1, 0, 'L', 1);
$pdf->Cell(30, 6, 'Absenteeism %', 1, 0, 'L', 1);

$row_height = 6;
$y1_axis = 58;
$y1_axis = $y1_axis + $row_height;
$counter = 1;
$course_course_code = addslashes( filter_input( INPUT_GET,'course',FILTER_SANITIZE_STRING ) );
$data = "SELECT stud_matric, stud_name, group_group_code, getid, 
                SUM(studAtt_endTime - studAtt_startTime)/(course_contacthour_perWeek * 14) AS 'sum' FROM studentattendance 
                INNER JOIN course ON studentattendance.course_course_code=course.course_code 
                INNER JOIN student ON studentattendance.student_stud_matric=student.stud_matric
                WHERE studAtt_status='0' AND course_course_code LIKE '$_GET[course]' GROUP BY getid ORDER BY sum DESC";

$result = $conn->query($data)  or die("Error: ".mysqli_error($conn));
while($ser=mysqli_fetch_array($result)){

    $stud_matric = $ser['stud_matric'];
    $stud_name = $ser['stud_name'];
    $group_group_code = $ser['group_group_code'];
    $per=number_format($ser['sum'] * 100, 2)." %";

$pdf->SetFont('Times', '', 12);
    $pdf->SetXY(21, $y1_axis);
    $pdf->Cell(10, 6, $counter, 1, 0, 'L', 1);
    $pdf->Cell(25, 6, $stud_matric, 1, 0, 'L', 1);
    $pdf->Cell(75, 6, $stud_name, 1, 0, 'L', 1);
    $pdf->Cell(25, 6, $group_group_code, 1, 0, 'L', 1);
    $pdf->Cell(30, 6, $per, 1, 0, 'L', 1);
    $pdf->Ln();


$y1_axis = $y1_axis + $row_height;
$counter++;
if ($counter % 34 === 0) {
    $pdf->AddPage();
    $y1_axis = 20;
}

}
//end first table

//Output the document
$pdf->Output("$course_code.pdf",'I'); 
?>

Please help me..

Change the size of the cell

$pdf->Cell(5, 6, 'No.', 1, 0, 'L', 1);
$pdf->Cell(25, 6, 'Matric no', 1, 0, 'L', 1);
$pdf->Cell(100, 6, 'Name', 1, 0, 'L', 1);
$pdf->Cell(25, 6, 'GROUP', 1, 0, 'L', 1);
$pdf->Cell(30, 6, 'Absenteeism %', 1, 0, 'L', 1);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM