Problem with Columns of SQL table on PHP FPDF - php

I've been having trouble creating a PDF using FPDF with PHP. I managed to fetch the data from my database and make the headers get right, but when the data gets posted it gets all chaotic, the script first puts all results from one column before starting the rest, making the positioning get really wrong.
I am using php 7
Here is one example of how data is being shown:
Column Error 1
Error 2
I can't understand why the first column is shown with the right Y position but all the other ones get like this
Here is the code as is.
$result = $mysqli->query("SELECT * FROM `tb_login`");
$number_of_rows = mysqli_num_rows($result);
//Inicializar as colunas
$column_idlogin = "";
$column_iduser = "";
$column_nome = "";
$column_snome = "";
$column_cpf = "";
$column_email = "";
$column_datahr = "";
//Adicionar a coluna para cada linha presente
while($row = mysqli_fetch_array($result))
{
$idlogin = $row["idLogin"];
$iduser = $row["idUsuario"];
$nome = $row["nmUsuario"];
$snome = $row["sobrenomeUsuario"];
$cpf = $row["cpfUsuario"];
$email = $row["emailUsuario"];
$datahr = $row["data_hora"];
$column_idlogin = $column_idlogin.$idlogin."\n";
$column_iduser = $column_iduser.$iduser."\n";
$column_nome = $column_nome.$nome."\n";
$column_snome = $column_snome.$snome."\n";
$column_cpf = $column_cpf.$cpf."\n";
$column_email = $column_email.$email."\n";
$column_datahr = $column_datahr.$datahr."\n";
}
$mysqli -> close();
//Create a new PDF file
$pdf=new FPDF();
$pdf->AddPage();
//Fields Name position
$Y_Fields_Name_position = 12;
//Table position, under Fields Name
$Y_Table_Position = 24;
//First create each Field Name
//Gray color filling each Field Name box
$pdf->SetFillColor(232,232,232);
//Bold Font for Field Name
$pdf->SetFont('Arial','B',10);
$pdf->SetY($Y_Fields_Name_position);
$pdf->SetX(20);
$pdf->Cell(18,12,'ID_LOGIN',1,0,'L',1);
$pdf->SetX(38);
$pdf->Cell(18,12,'ID_USER',1,0,'L',1);
$pdf->SetX(56);
$pdf->Cell(20,12,'NOME',1,0,'C',1);
$pdf->SetX(76);
$pdf->Cell(28,12,'SOBRENOME',1,0,'C',1);
$pdf->SetX(104);
$pdf->Cell(30,12,'CPF',1,0,'C',1);
$pdf->SetX(134);
$pdf->Cell(30,12,'EMAIL',1,0,'C',1);
$pdf->SetX(164);
$pdf->Cell(34,12,'DATA_ACESSO',1,0,'C',1);
$pdf->Ln();
//Agora mostre as colunas
$pdf->SetFont('Arial','',10);
$pdf->SetY($Y_Table_Position);
$pdf->SetX(20);
$pdf->MultiCell(18,12,$column_idlogin,1);
$pdf->SetY($Y_Table_Position);
$pdf->SetX(38);
$pdf->MultiCell(18,12,$column_iduser,1);
$pdf->SetY($Y_Table_Position);
$pdf->SetX(56);
$pdf->MultiCell(20,12,$column_nome,1);
$pdf->SetY($Y_Table_Position);
$pdf->SetX(76);
$pdf->MultiCell(28,12,$column_snome,1);
$pdf->SetY($Y_Table_Position);
$pdf->SetX(104);
$pdf->MultiCell(30,12,$column_cpf,1);
$pdf->SetY($Y_Table_Position);
$pdf->SetX(134);
$pdf->MultiCell(30,12,$column_email,1);
$pdf->SetY($Y_Table_Position);
$pdf->SetX(164);
$pdf->MultiCell(34,12,$column_datahr,1);
$pdf->Output()
I tried declaring Sety as $Y_Table_Position for each column, but it doesn't seem to work.

I never used this library and didn't test this code so take it with a grain of salt.
I used your one cell working example and tried to iterate on it.
I cleaned up a bit of your code.
That while loop was strange.
//Create a new PDF file
$pdf=new FPDF();
$pdf->AddPage();
//First create each Field Name
//Gray color filling each Field Name box
$pdf->SetFillColor(232,232,232);
//Bold Font for Field Name
$pdf->SetFont('Arial','B',10);
$pdf->SetY(12);
$pdf->SetX(20);
$pdf->Cell(18,12,'ID_LOGIN',1,0,'L',1);
$pdf->SetX(38);
$pdf->Cell(18,12,'ID_USER',1,0,'L',1);
$pdf->SetX(56);
$pdf->Cell(20,12,'NOME',1,0,'C',1);
$pdf->SetX(76);
$pdf->Cell(28,12,'SOBRENOME',1,0,'C',1);
$pdf->SetX(104);
$pdf->Cell(30,12,'CPF',1,0,'C',1);
$pdf->SetX(134);
$pdf->Cell(30,12,'EMAIL',1,0,'C',1);
$pdf->SetX(164);
$pdf->Cell(34,12,'DATA_ACESSO',1,0,'C',1);
$pdf->Ln();
//Agora mostre as colunas
$pdf->SetFont('Arial','',10);
$result = $mysqli->query("SELECT * FROM `tb_login`");
$number_of_rows = mysqli_num_rows($result);
//Lets just create array of rows first
$rows = [];
while($row = mysqli_fetch_array($result)) {
$rows[] = $row;
}
/**
* Custom cell width config
*/
$cells_config_arr = [
'idLogin' => ['x' => 20],
'idUsuario' => ['x' => 20],
'nmUsuario' => ['x' => 20],
'sobrenomeUsuario' => ['x' => 20],
'cpfUsuario' => ['x' => 20],
'emailUsuario' => ['x' => 20],
'data_hora' => ['x' => 20]
];
$cell_y = 24;
foreach($rows as $row){
$cell_x = 0;
foreach($row as $key => $value){
//Lets set coord of by with of last cells sumed
$cell_x = $cell_x + $cells_config_arr[ $key ]['x'];
$pdf->SetY($cell_y);
$pdf->SetX($cell_x);
$pdf->Cell($cells_config_arr[ $key ]['x'], 12, $value, 1, 0, 'L', 1);
}
$pdf->Ln();
$cell_y = $cell_y + $cell_y;
}
$pdf->Output();

Related

Database Details in PDF are not getting filled?

I am extracting data from MySQL database using php and exporting it as PDF. The columns are not getting filled due to the PDF page size. How do I push the unfilled columns to next line? So that first line has 4 columns and next line has another 4 columns, so on..
<?php
//include connection file
include_once "connection.php";
include_once 'fpdf/fpdf.php';
class PDF extends FPDF {
// Page header
function Header() {
}
// Page footer
function Footer() {
// Position at 1.5 cm from bottom
$this->SetY(-15);
// Arial italic 8
$this->SetFont('Arial', 'I', 8);
// Page number
$this->Cell(0, 10, 'Page '.$this->PageNo().'/{nb}', 0, 0, 'C');
}
}
$db = new dbObj();
$connString = $db->getConnstring();
$id = $_GET['id'];
$query = $connString->prepare("SELECT ID, Name, Wrongs, Rights, Percentage, Age FROM Datas WHERE ID=?");
$query->bind_param('s', $id);
$query->execute();
$result = $query->get_result();
$display_heading = array('ID' => 'ID', 'Name' => 'Name', 'Wrongs' => 'Wrongs', 'Rights' => 'Rights', 'Percentage' => 'Percentage', 'Age' => 'Age');
//$result = mysqli_query($connString, "SELECT ID, Name, Wrongs, Rights, Percentage, Age FROM Datas") or die("database error:". mysqli_error($connString));
$header = mysqli_query($connString, "SHOW columns FROM Datas");
$pdf = new PDF();
//header
$pdf->AddPage();
//foter page
$pdf->AliasNbPages();
$pdf->SetFont('Arial', 'B', 12);
foreach ($header as $heading) {
$pdf->Cell(45, 12, $display_heading[$heading['Field']], 1);
}
foreach ($result as $row) {
$pdf->Ln();
foreach ($row as $column) {
$pdf->Cell(45, 12, $column, 1);
}
}
$pdf->Output();

How to display images in pdf using fpdf library?

Currently I am working on opencart. And I have to display data in pdf for that I use FPDF.
my function looks like
public function exportPDF(){
require_once(DIR_SYSTEM . 'lib/fpdf.php');
$pdf = new fpdf();
$pdf->AliasNbPages();
$pdf->AddPage();
$pdf->SetFont('Times','',12);
$category_id = $this->request->get['id'];
$this->load->model('catalog/product');
$this->load->model('tool/image');
$temp_data = $this->model_catalog_product->getProductscsv($category_id);
foreach($temp_data as $data)
{
if ($data['image']) {
$image = $this->model_tool_image->resize($data['image'], 178, 276);
} else {
$image = $this->model_tool_image->resize('placeholder.png', 178, 276);
}
$data2[] = array(
'product_id' =>$data['product_id'],
'model' =>$data['model'],
'name' =>$data['name'],
'price' =>$data['price'],
'image' =>$image,
);
}
$row = array();
$pdf->SetFont('Arial','',12);
$pdf->Ln();
$pdf->Cell(35,10,'id',1);
$pdf->Cell(35,10,'model',1);
$pdf->Cell(35,10,'name',1);
$pdf->Cell(35,10,'price',1);
$pdf->Cell(35,10,'image',1);
foreach($data2 as $row)
{
$pdf->SetFont('Arial','',10);
$pdf->Ln();
foreach($row as $column)
$pdf->Cell(35,50,$column,1);
}
$pdf->Output();
}
And current output pdf looks like:
My need is I need to display the images in image column instead of link. how can it make possible. I am new to this, and trying for long time.
How to use $pdf->Image(); in the $data2 array. How to display images in image column in the pdf.
Try this,
foreach($data2 as $row)
{
$pdf->SetFont('Arial','',10);
$pdf->Ln();
foreach($row as $key=>$column)
{
if($key == "image"){
$pdf->Cell(35,50,$this->Image($column,$this->GetX(),$this->GetY()),1);
}else{
$pdf->Cell(35,50,$column,1);
}
}
}
and also read this : reference
Try this code
$this->Cell( 35,10, $pdf->Image($image, $pdf->GetX(), $pdf->GetY()), 0, 0, 'L', false );

In Multicell table how to draw border according to number of lines in each row and prevent data flowing into new page

I am creating a pdf table using Multicell() function in PHP/TCPDF. Two issues I face are
Each row of the table (3x3) has varying number of data lines, so how to draw horizontal line for each row considering the max lines of respective row.
How to account for a page break ? For instance, if row 2 data flows into the next page. How to re-write the complete table in new page, or start row 2 in new page with sub-headings of the table ?
Any inputs on these 2 scenarios is appreciated.
I tried the following with inputs from this article http://www.onemoretake.com/2009/03/27/revisited-tcpdf-variable-height-table-rows-with-multicell/
public function xyz($arr_1){
$f1 = $arr_1[f1];
$f2 = $arr_1[f2];
$f3 = $arr_1[f3];
$numL1 = substr_count($f1, "\n" );
$numL2 = substr_count($f2, "\n" );
$numL3 = substr_count($f3, "\n" );
$Maxrowlines = max($numL1, $numL2, $numL3)*6;
if($this->GetY() + $Maxrowlines > $this->PageBreakTrigger){
$this->AddPage();
}
$startx = $this->GetX();
$starty = $this->GetY();
$rowmaxy = $starty + $Maxrowlines;
$this->MultiCell(40,10,$txt = $arr_1[f1],'0','L',0, $ln =0);
$this->MultiCell(40,10,$txt = $arr_2[f2],'0','L',0, $ln =0);
$this->MultiCell(40,10,$txt = $arr_3[f3],'0','L',0, $ln =0);
$this ->SetXY($startx, $starty);
$tempy = $this->GetY();
$this->SetXY($startx, $tempy);
if($temp < $rowmaxy){
$diffy = $rowmaxy - $tempy;
$this->MultiCell(40,$diffy, '' , '0', 'C', 0);
} else {
$this->MultiCell(40,0,'','0','C',0);
}
$addx = $this->GetX();
$startx+= $addx;
}
$arr_1 = array(f1=> $apple , f2=> $oranges, f3=> $mangoes);
$pdf->xyz($arr_1);
Well the fix was easy. Took some time though, here is the fix.
# define methods and classes-----------------
# constructors....class...
public function xyz($arr_1){
$f1 = $arr_1[f1];
$f2 = $arr_1[f2];
$f3 = $arr_1[f3];
$numL1 = substr_count($f1, "\n" );
$numL2 = substr_count($f2, "\n" );
$numL3 = substr_count($f3, "\n" );
$Maxrowlines = max($numL1, $numL2, $numL3)*6;
$startx = $this->GetX();
$starty = $this->GetY();
$rowmaxy = $starty + $Maxrowlines;
$this ->SetXY($startx, $starty);
$this->MultiCell(40,10,$txt = $arr_1[f1],'0','L',0, $ln =0);
$this->MultiCell(40,10,$txt = $arr_2[f2],'0','L',0, $ln =0);
$this->MultiCell(40,10,$txt = $arr_3[f3],'0','L',0, $ln =0);
# Now, if the lines in a multicell are overflowing into next row
# get current Y position store it in a variable
# SetXY to the current Y and if the tempy is less than the rowmaxy we..
# calculate extend cell height with that difference
$tempy = $this->GetY();
$this->SetXY($startx, $tempy);
if($tempy < $rowmaxy){
$diffy = $rowmaxy - $tempy;
$this->MultiCell(40,$diffy, '' , '0', 'C', 0);
}
}
#--------------Call the functions.........
#..... invoke the main class and methods...
# main code as follows..
$arr_1 = array(f1=> $apple , f2=> $oranges, f3=> $mangoes);
$rowcount = max($pdf->getNumLines($arr_1 ['f1'],40),
$pdf->getNumLines($arr_1['f2'],40),
$pdf->getNumLines($arr_1 ['f3'],40));
$height_of_cell = $pdf->GetY()+($rowcount*6); # 6 is adjustment of the
# height to font you use. My case, `helvetica`
$dimensions = $pdf->getPageDimensions();
$page_height = $dimensions['hk'];# standard value 286;
$bottom_margin = $dimensions['bm'];# standard value of 20
if($height_of_cell > $page_height - $bottom_margin) {
$pdf->AddPage();
$pdf->your_TableHeader();# call table header if there is one
$pdf->Ln(10); # No. Line you want to start printing data below header
}
$pdf->xyz($arr_1);
Update, Looks like this answer does not address overflow of all the rows it is specific to 1 row. Any suggestion or improvements are accepted.On the other note, the page break works perfect.

Generating PDF dynamically through fpdf

I am trying to generate a PDF dynamically using fpdf, but I am finding it very difficult. Only half of the result I could get. I want to generate my PDF like this:
And now I get a result like this:
Here is the code for PDF:
<?php
require('../fpdf/fpdf.php');
error_reporting(-1);
$id = $_GET['order_id'];
$db = new mysqli('localhost','root','','dbnme'); // use your credentials
class INVPDF extends FPDF
{
var $id;
var $today;
var $widths;
var $heads;
var $aligns;
var $formats;
var $db;
var $invTotal = 0;
var $advancePaid = 0;
//constructor
function INVPDF($invno, $db)
{
parent::fpdf();
$this->id = $invno;
$this->db = $db;
$this->today = date('jS M Y');
$this->heads = array('Item', 'UOM', 'Price', 'Qty', 'Disc %', 'Tax', 'Frt', 'Total' );
$this->widths = array (45, 15, 35, 15, 15, 20, 25, 30);
$this->aligns = array ('L','C','L','C','C','R','C', 'C');
$this->formats = array (0,0,0,0,0,1,0,0);
}
//Page header
function Header()
{
//Arial bold 15
//Title
include("../connect.php");
$ss1 = "select orders.sales_order_id, orders.company_id, lead_address.address, lead_address.address_category, lead_address.country, lead_address.state, lead_address.company_id, lead_address.city,lead_address.pin from orders INNER JOIN lead_address ON orders.company_id=lead_address.company_id where lead_address.address_category='Billing' AND orders.sales_order_id='".$_GET['order_id']."'";
$mq1 = mysql_query($ss1) or die(mysql_error());
$rr1 = mysql_fetch_array($mq1);
$billing = $rr1['address'];
list($line1, $line2, $line3) = explode(',',$billing);
$country = $rr1['country'];
$state = $rr1['state'];
$city = $rr1['city'];
$pin = $rr1['pin'];
//list($line1, $line2, $country, $state, $city, $pin) = explode(',',$address);
$ss2 = "select orders.sales_order_id, orders.company_id, lead_address.address, lead_address.address_category, lead_address.country, lead_address.state, lead_address.company_id, lead_address.city,lead_address.pin from orders INNER JOIN lead_address ON orders.company_id=lead_address.company_id where lead_address.address_category='Shipping' AND orders.sales_order_id='".$_GET['order_id']."'";
$mq2 = mysql_query($ss2) or die(mysql_error());
$rr2 = mysql_fetch_array($mq2);
$shipping = $rr2['address'];
$country1 = $rr2['country'];
$state1 = $rr2['state'];
$city1 = $rr2['city'];
$pin1 = $rr2['pin'];
//$email = $rr1['email'];
// $phone = $rr1['phone'];
// $mobile = $rr1['mobile'];
// $this->SetFont('Arial','B',15);
$this->setXY(10,20);
// $this->Cell(0,10,'INVOICE '.$this->id,0,2,'L');
$this->Image('logo.png',20,6,15);
$this->setXY(12,20);
//
$this->SetFont('OpenSans','',7);
$this->Cell(0,10,'Company Name. ',0,2,'L');
$this->Cell(0,0,'Address1, address2',0,2,'L');
$this->Cell(0,8,'city, stte',0,2,'L');
$this->Cell(0,2,'sales#company.com',0,2,'L');
//$this->Image('images/logo.png',10,6,60);
$this->SetFont('OpenSans','',7);
$this->setXY(12,50);
$this->Cell(0,-2,'Shipping Address',$this->id,0,2,0,'L');
$this->SetFont('OpenSans','',7);
$this->setXY(12,52);
$this ->MultiCell(57,22,'', 'LRTB', 'L', 1);
//$this->Cell(0,8,$name,$this->id,0,2,0,'L');
$this->setXY(12,55);
$this->Cell(0,-1,$shipping,$this->id,0,2,0,'L');
$this->setXY(12,53);
$this->Cell(0,10,$country." , ".$state,$this->id,0,2,0,'L');
$this->setXY(12,52);
$this->Cell(0,20,$city." , ".$pin,$this->id,0,2,0,'L');
$this->SetFont('OpenSans','',7);
$this->setXY(140,52);
$this ->MultiCell(57,22,'', 'LRTB', 'L', 1);
$this->setXY(140,34);
$this->Cell(0,30,'Billing Address',$this->id,0,2,0,'L');
$this->SetFont('OpenSans','',7);
$this->setXY(140,35);
$this->Cell(0,40,$line1." , ".$line2, $this->id,0,2,0,'L');
$this->setXY(140,35);
$this->Cell(0,49,$line3, $this->id,0,2,0,'L');
$this->setXY(140,33);
$this->Cell(0,62,$city1." , ".$pin1,$this->id,0,2,0,'L');
$this->setXY(140,33);
$this->Cell(0,70,$country1." , ".$state1,$this->id,0,2,0,'L');
//$this->setXY(12,65);
// $this->Cell(0,60,$phone,$this->id,0,2,0,'L');
//$this->setXY(12,65);
//$this->Cell(0,70,$mobile,$this->id,0,2,0,'L');
$this->SetFont('OpenSans','',7);
$this->setXY(10,5);
$this->Cell(0,10,'QUOTATION: '.$this->id,0,2,'R');
$this->SetFont('OpenSans','',7);
$until = date ('jS F Y', strtotime($this->today));
$this->Cell(0,0,'Date: '.$until,0,2,'R');
$this->SetFont('OpenSans','',7);
$this->Cell(0,10,'Due Date: Due on receipt',0,2,'R');
//Line break
$this->Ln(60);
for ($i=0; $i<9; $i++)
{
$this->Cell ($this->widths[$i], 8, $this->heads[$i], 1, 0, 'C', 1);
}
$this->Ln(8);
}
//Page footer
function Footer()
{
# $this->SetY(-50); // Uncomment to position at 5 cm from bottom
//Arial italic 8
$this->SetFont('OpenSans','',8);
$w = array_sum(array_slice($this->widths,0,3));
$this->Cell($w,12,'',1);
$this->Cell($this->widths[3],12,'',1,0,'C');
$this->setLeftMargin(45 + array_sum(array_slice($this->widths,0,4)));
$this->Cell($this->widths[5],4,'Sub Total',1);
$this->Cell($this->widths[6],4,number_format($this->invTotal,2),1,0,'R');
$this->Cell($this->widths[7],4,'USD',1,1,'C');
$this->Cell($this->widths[5],4,'Tax',1);
$this->Cell($this->widths[6],4,number_format($this->advancePaid,2),1,0,'R');
$this->Cell($this->widths[7],4,'USD',1,1,'C');
$this->Cell($this->widths[5],4,'Freight',1);
$this->Cell($this->widths[6],4,number_format($this->freight,2),1,0,'R');
$this->Cell($this->widths[7],4,'USD',1,1,'C');
$this->setLeftMargin(10);
$this->Cell($this->widths[5],4,'Total',1);
$this->Cell($this->widths[6],4,number_format($this->invTotal+$this->advancePaid,2),1,0,'R');
$this->Cell($this->widths[7],4,'USD',1,1,'C');
$this->SetFont('OpenSans','',6);
$this->Cell($w,10,'',0,0,'L');
$this->Cell(30,4,'Private Limited Company - TIN: 345sddd - PAN: sf43534',0,0,'C');
//$this->Cell($w,10,'');
$this->Cell(-30,12,'SRVC TAX: gddddddddddd - CIN: sdgdgdgdfgfdgfg',0,0,'C');
$this->Cell(30,20,'This document has been electronically generated and requires no physical signature or stamp.',0,0,'C');
}
function makeInvoice()
{
$sql = "select before_order_line_items.item, before_order_line_items.description, before_order_line_items.uom, before_order_line_items.selling_price, before_order_line_items.quantity, before_order_line_items.discount, before_order_line_items.tax, before_order_line_items.freight, before_order_line_items.tax_amount, before_order_line_items.total, items.name as iname, taxes.tax_id, taxes.name as tname, taxes.rate from before_order_line_items inner join items on before_order_line_items.item=items.item_id inner join taxes on before_order_line_items.tax=taxes.tax_id where before_order_line_items.sales_order_id = '".$_GET['order_id']."' ";
//echo $sql;
$res = $this->db->query($sql) or die($this->db->error);
$this->SetFont('OpenSans','',8);
if ($res->num_rows > 0)
{
while ($r = $res->fetch_row())
{
$this->invTotal += $r[10];
foreach ($r as $c => $value) {
//echo $value;
if ($this->formats[$c]) {
$value = number_format($value);
// echo $value;
}
$this->Cell($this->widths[$c],10,$value,'LR',0, $this->aligns[$c]);
}
$this->Ln();
//$amount = number_format($amount+$value);
}
}
}
} # invpdf class
$invno = $_GET['order_id'];
//Instantiation of inherited class
$pdf = new INVPDF($invno, $db);
$pdf->Open();
$pdf->AliasNbPages();
$pdf->setLeftMargin(10);
$pdf->setRightMargin(10);
$pdf->AddFont('OpenSans','','Opensans-Regular.php');
$pdf->SetFont('OpenSans','',7);
$pdf->SetDrawColor(102);
$pdf->SetFillColor(220);
$pdf->AddPage();
$pdf->makeInvoice();
$pdf->Output();
?>
Can somebody please help me how to do it? or is there any example code for something similar to this?
Looking at your actual pdf and expected pdf.. you are missing the no. column in table header.
This line-
$this->heads = array('Item', 'UOM', 'Price', 'Qty', 'Disc %', 'Tax', 'Frt', 'Total' );
should be-
$this->heads = array('No.', 'Item', 'UOM', 'Price', 'Qty', 'Disc %', 'Tax', 'Frt', 'Total' );

Table MultiCell in FPDF

I am currently using FPDF to output data into a table, however i am running into issues with table cell wrapping.
My current table function is below:
function ImprovedTableCol2($header, $data, $cols ,$colWidth1, $colWidth2, $tableHeader, $closeTable, $fontSize, $icon)
{
// Table Header
if ($tableHeader==true) {
$this->SetFontSize(12);
$this->Cell(90,7,$header[0],1,0,'L');
$this->Cell(90,7,$header[1],1,0,'L');
$this->Ln();
}
// Table body
$this->SetFontSize($fontSize);
$this-> MultiCell(90,6,$data[0],'LRB');
$this->MultiCell(90,6,$data[1],'LRB');
$this->Ln();
}
My table page is as follows:
$pdf->AddPage();
$pdf->SetFont('Arial','B');
$pdf->SetFontSize(18);
$pdf->Cell(0,10,'Method Statement','B',1,'L');
$pdf->SetFont('');
$pdf->SetFontSize(10);
$pdf->Ln();
$header = array('', '');
$intTotalSCRows = "{method_statement:total_rows}";
$arrSafetyCheck = array();
array_push($arrSafetyCheck, array(
"day" => "{method_statement:day}",
"statement" => "{method_statement:statement}",
"engineer" => "{method_statement:engineer}",
"count" => "{method_statement:count}")
);
foreach ($arrSafetyCheck as $key => $list) {
if ($list['count']=="1") {
$data = array(utf8_decode($list['day']), $list['statement']);
$pdf->ImprovedTableCol2($header,$data,2,130,50,true,false,9,false);
} else if ($list['count']==$intTotalSCRows) {
$data = array(utf8_decode($list['day']), $list['statement']);
$pdf->ImprovedTableCol2($header,$data,2,130,50,false,true,9,false);
} else {
$data = array(utf8_decode($list['day']), $list['statement']);
$pdf->ImprovedTableCol2($header,$data,2,130,50,false,false,9,false);
}
}
The MultiCell function does wrap the text, but i cannot get the 2 table columns to sit side by side.
You will need to manually set the position of the cell (see the updated method below)
function ImprovedTableCol2($header, $data, $cols ,$colWidth1, $colWidth2, $tableHeader, $closeTable, $fontSize, $icon)
{
// Table Header
if ($tableHeader==true) {
$this->SetFontSize(12);
$this->Cell(90,7,$header[0],1,0,'L');
$this->Cell(90,7,$header[1],1,0,'L');
$this->Ln();
}
// Table body
$this->SetFontSize($fontSize);
// Get X,Y coordinates
$x = $this->GetX();
$y = $this->GetY();
$this->MultiCell(90,6,$data[0],'LRB');
// update the X coordinate to account for the previous cell width
$x += 90;
// set the XY Coordinates
$this->SetXY($x, $y);
$this->MultiCell(90,6,$data[1],'LRB');
$this->Ln();
}

Categories