Home » Php » php – FPDF error: Some data has already been output, can't send PDF

php – FPDF error: Some data has already been output, can't send PDF

Posted by: admin April 23, 2020 Leave a comment

Questions:

I am using the fpdf library for my project, and I’m using this to extend one of the drupal module. These lines

$pdf = new FPDF();
$pdf->AddPage();
$pdf->SetFont('Arial','B',16);
$pdf->Cell(40,10,'Hello World!');
$pdf->Output();

give me an error: FPDF error: Some data has already been output, can’t send PDF

I tried creating this in a separate file outside the drupal area name test.php and when viewed it worked. Anyone here know why this don’t work? Or anyone here can point me a right pdf library which I can use in drupal to view HTML to PDF format.

How to&Answers:

For fpdf to work properly, there cannot be any output at all beside what fpdf generates. For example, this will work:

<?php
$pdf = new FPDF();
$pdf->AddPage();
$pdf->SetFont('Arial','B',16);
$pdf->Cell(40,10,'Hello World!');
$pdf->Output();
?>

While this will not (note the leading space before the opening <? tag)

 <?php
$pdf = new FPDF();
$pdf->AddPage();
$pdf->SetFont('Arial','B',16);
$pdf->Cell(40,10,'Hello World!');
$pdf->Output();
?>

Also, this will not work either (the echo will break it):

<?php
echo "About to create pdf";
$pdf = new FPDF();
$pdf->AddPage();
$pdf->SetFont('Arial','B',16);
$pdf->Cell(40,10,'Hello World!');
$pdf->Output();
?>

I’m not sure about the drupal side of things, but I know that absolutely zero non-fpdf output is a requirement for fpdf to work.

Answer:

add ob_start (); at the top and at the end add ob_end_flush();

<?php
    ob_start();
    require('fpdf.php');
    $pdf = new FPDF();
    $pdf->AddPage();
    $pdf->SetFont('Arial','B',16);
    $pdf->Cell(40,10,'Hello World!');
    $pdf->Output();
    ob_end_flush(); 
?>

Answer:

give me an error as below:
FPDF error: Some data has already been output, can't send PDF

to over come this error:
go to fpdf.php in that,goto line number 996

function Output($name='', $dest='')

after that make changes like this:

function Output($name='', $dest='') {   
    ob_clean();     //Output PDF to so

Answer:

Try to save the file without the option: “BOM comment”, i.e. in Adobe Dreamweaver, you Save File As…, uncheck the box below the filename that says, “Include Unicode signature(BOM)“.

On Notepad++ you should select the menu: Encoding, “Encode in UTF-8 without BOM“.

And make it default for other files you create, it will spare you a lot of headaches in future.

Answer:

Hi do you have a session header on the top of your page.
or any includes
If you have then try to add this codes on top pf your page it should works fine.

<?

while (ob_get_level())
ob_end_clean();
header("Content-Encoding: None", true);

?>

cheers 🙂

Answer:

The FPDF Error Message will point you to the PHP Line that is sending some content.

If you get no hint what File & Line send some content you probably have an encoding mismatch in your include / require Files.

For me

  • fpdf.php was ANSI-encoded,
  • my pdf-generator.php was UTF-8-encoded and
  • my database-connect-inlude was UTF-8-encoded (this UTF-8-encoding did raise the FPDF error. I had to switch it back to ANSI)

Answer:

In my case i had set:

ini_set('display_errors', 'on');
error_reporting(E_ALL | E_STRICT);

When i made the request to generate the report, some warnings were displayed in the browser (like the usage of deprecated functions).
Turning off the display_errors option, the report was generated successfully.

Answer:

First step
check the permissions on the folders
second step
put this

ob_start(); 

before the line

$pdf->Output();

Answer:

if you’re code outputs notices/warnings before the PDF generation, try turning them off. error_reporting(0). Then work on the warnings there-after

Answer:

I used the following and it worked for me

require_once ('pdf/fpdf.php');

$pdf = new FPDF();
$pdf->AddPage();
$pdf->SetFont('Arial','B',16);
$pdf->Cell(40,10,'Hello World!');
$pdf->Output(F,'/var/www/html/PATH/filename.pdf');
ob_end_flush();

Answer:

You need to call the library

require (‘fpdf.php’);

<?php
require('fpdf.php');

$pdf = new FPDF();
$pdf->AddPage();
$pdf->SetFont('Arial','B',16);
$pdf->Cell(40,10,'¡Hola, Mundo!');
$pdf->Output();
?>

http://www.fpdf.org/

http://www.fpdf.org/es/tutorial/tuto1.htm

Answer:

Add to the beginning of the script

ob_start();
require ('fpdf.php');

and at the end, after output()

ob_end_flush();

It worked for me! =)