简体   繁体   中英

Fatal error: Uncaught Exception: FPDF error: Some data has already been output, can't send PDF file (output started at

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

BOM 字符检查

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

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