使用fpdf库在pdf中创建表结构时遇到问题。当特定细胞的任何数据具有长字符串时,则细胞数据将与其他细胞数据重叠。 自动调整fpdf中的单元格宽度... PLZ帮助我...
我的代码:
<?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();
?>
?>
答案 0 :(得分:2)
对于带有
的单元格,请使用字符串宽度$string = fullname($USER);
$cellWidth = $pdf->GetStringWidth($string);
$pdf->Cell($cellWidth + 5, 0, $string, 0, 0, 'C', true);
答案 1 :(得分:0)
使用带有多单元的表来解决动态宽度和高度的问题。然后单击此链接查看插件here的示例。这对于非常有用 动态宽度和高度。
答案 2 :(得分:0)
例如,您可以使用此代码。你必须要求mysql_table.php。
首先定义列,大小,名称和对齐
AddCol(&lt; mysql表中列的名称&gt;,&lt;列大小&gt;,&lt;您喜欢的名称&gt;,&lt; align&gt;)
然后你可以打印表格
如果您认为第一列较小,请将其设置为10等。
$pdf->AddCol('code',20,'CODE','C');
$pdf->AddCol('name',40,'NAME');
$pdf->AddCol('price',40,'PRICE','R');
$pdf->Table('-----PUT YOUR SQL QUERY----');
$pdf->Output();
答案 3 :(得分:0)
您可以使用此代码来解决此问题... 这里的概念仅在字符串大小大于您的单元格宽度时,字体大小才会减小。
请注意,您不能将此代码用于多行字符串。为此,您必须使用MultiCell()
$pdf = new FPDFCellFit();
$pdf->FPDF('P','mm','A4');
$pdf->SetMargins(15,15,15);
$pdf->SetAutoPageBreak(true,15);
$pdf->AliasNbPages('{nb}');
$pdf->isFooter = true ;
$pdf->footerSchool=$college->COLLEGE_NAME;
$BodyX=15;$BodyY=25;
$table_head1=array(25,46,40,20,60);
$table_head2=array(25,20,26,20,20,16,24,40);
// some code remove from here for show actual code.
$pdf->CellFit($table_head2[7],$table_height,$item['remark'],1,0,'C',0,'',1,0);
检查此解决方案的日期为2020年1月20日。