发布于2022-11-10 20:41 阅读(471) 评论(0) 点赞(1) 收藏(4)
I am generating a PDF file based on the selected employee ID i was facing an error on the local system while still in development saying that Fatal error: Uncaught Exception: FPDF error: Some data has already been output, can't send PDF file (output started at the/path)
And then i added these two lines to the php script and it worked fine
ob_start();
and at the end
ob_end_flush();
But after hosting it to the live server the error is thrown again
Have reffered the FPDF documn**ob_end_clean();
** on the beginning of the php script Documentation Link
The complete code for this is as follows,
The empleavehis.php page
<?php
if (isset($_POST['pdfemployeeleave'])) {
ob_start();
require('mysql_table.php');
$link = mysqli_connect('localhost','root','','hr');
$empidinfo=$_REQUEST['empid'];
class PDF extends PDF_MySQL_Table
{
function Header()
{
// Title
$this->Image('img/prudentialshippinglines.png',15,6,15);
$this->SetFont('Arial','',18);
$this->Cell(0,6,'Short Summary ',0,1,'C');
$this->Cell(0,6,' ',0,1,'C');
$this->SetFont('Arial','',15);
$this->Cell(0,6,'History Of Leaves Taken By The Employee',0,1,'C');
$this->Ln(10);
// Ensure table header is printed
parent::Header();
}
}
// Connect to database
$pdf = new PDF('L','mm','A4');
//$pdf->AddPage();
// First table: output all columns
// $pdf->Table($link,'select * from employees where EMP_ID = 1');
$pdf->AddPage();
// Second table: specify 3 columns
$pdf->AddCol('Leave_Type',48,'Type');
$pdf->AddCol('LeaveSub_Type',48,'Sub Type');
$pdf->AddCol('Start',48,'Start');
$pdf->AddCol('End',48,'End');
$pdf->AddCol('Remarks',48,'Remarks');
$pdf->AddCol('Status',48,'Status');
$prop = array('HeaderColor'=>array(255,150,100),
'color1'=>array(210,245,255),
'color2'=>array(255,255,210),
'padding'=>2);
$pdf->Table($link,"select Leave_Type,LeaveSub_Type,Start,End,Remarks,Status from holiday where EMP_ID = '".$empidinfo."'",$prop);
//$pdf->Image('img/male.png',10,10,-300);
$fileName = "Leave Summary Of - ".$row['Name'].".pdf";
$pdf->Output($fileName, 'D');
}
ob_end_flush();
?>
The mysql_table.php file
<?php
require('fpdf.php');
class PDF_MySQL_Table extends FPDF
{
protected $ProcessingTable=false;
protected $aCols=array();
protected $TableX;
protected $HeaderColor;
protected $RowColors;
protected $ColorIndex;
function Header()
{
// Print the table header if necessary
if($this->ProcessingTable)
$this->TableHeader();
}
function TableHeader()
{
$this->SetFont('Arial','B',12);
$this->SetX($this->TableX);
$fill=!empty($this->HeaderColor);
if($fill)
$this->SetFillColor($this->HeaderColor[0],$this->HeaderColor[1],$this->HeaderColor[2]);
foreach($this->aCols as $col)
$this->Cell($col['w'],6,$col['c'],1,0,'C',$fill);
$this->Ln();
}
function Row($data)
{
$this->SetX($this->TableX);
$ci=$this->ColorIndex;
$fill=!empty($this->RowColors[$ci]);
if($fill)
$this->SetFillColor($this->RowColors[$ci][0],$this->RowColors[$ci][1],$this->RowColors[$ci][2]);
foreach($this->aCols as $col)
$this->Cell($col['w'],5,$data[$col['f']],1,0,$col['a'],$fill);
$this->Ln();
$this->ColorIndex=1-$ci;
}
function CalcWidths($width, $align)
{
// Compute the widths of the columns
$TableWidth=0;
foreach($this->aCols as $i=>$col)
{
$w=$col['w'];
if($w==-1)
$w=$width/count($this->aCols);
elseif(substr($w,-1)=='%')
$w=$w/100*$width;
$this->aCols[$i]['w']=$w;
$TableWidth+=$w;
}
// Compute the abscissa of the table
if($align=='C')
$this->TableX=max(($this->w-$TableWidth)/2,0);
elseif($align=='R')
$this->TableX=max($this->w-$this->rMargin-$TableWidth,0);
else
$this->TableX=$this->lMargin;
}
function AddCol($field=-1, $width=-1, $caption='', $align='L')
{
// Add a column to the table
if($field==-1)
$field=count($this->aCols);
$this->aCols[]=array('f'=>$field,'c'=>$caption,'w'=>$width,'a'=>$align);
}
function Table($link, $query, $prop=array())
{
// Execute query
$res=mysqli_query($link,$query) or die('Error: '.mysqli_error($link)."<br>Query: $query");
// Add all columns if none was specified
if(count($this->aCols)==0)
{
$nb=mysqli_num_fields($res);
for($i=0;$i<$nb;$i++)
$this->AddCol();
}
// Retrieve column names when not specified
foreach($this->aCols as $i=>$col)
{
if($col['c']=='')
{
if(is_string($col['f']))
$this->aCols[$i]['c']=ucfirst($col['f']);
else
$this->aCols[$i]['c']=ucfirst(mysqli_fetch_field_direct($res,$col['f'])->name);
}
}
// Handle properties
if(!isset($prop['width']))
$prop['width']=0;
if($prop['width']==0)
$prop['width']=$this->w-$this->lMargin-$this->rMargin;
if(!isset($prop['align']))
$prop['align']='C';
if(!isset($prop['padding']))
$prop['padding']=$this->cMargin;
$cMargin=$this->cMargin;
$this->cMargin=$prop['padding'];
if(!isset($prop['HeaderColor']))
$prop['HeaderColor']=array();
$this->HeaderColor=$prop['HeaderColor'];
if(!isset($prop['color1']))
$prop['color1']=array();
if(!isset($prop['color2']))
$prop['color2']=array();
$this->RowColors=array($prop['color1'],$prop['color2']);
// Compute column widths
$this->CalcWidths($prop['width'],$prop['align']);
// Print header
$this->TableHeader();
// Print rows
$this->SetFont('Arial','',11);
$this->ColorIndex=0;
$this->ProcessingTable=true;
while($row=mysqli_fetch_array($res))
$this->Row($row);
$this->ProcessingTable=false;
$this->cMargin=$cMargin;
$this->aCols=array();
}
}
?>
As far as I have checked I have not left any whitespaces or word spaces and also have tried setting the following
ob_clean();
ob_end_flush();
ini_set("session.auto_start", 0);
Error Image
The files also doesn't contain BOM characters
I shifted the whole fpdf code to the top of the php document and now it is getting downloaded. No changes to the code were done
作者:黑洞官方问答小能手
链接:http://www.phpheidong.com/blog/article/443971/57a45b4c648468aed68e/
来源:php黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 php黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-4
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!