有些数据已经输出,无法发送PDF文件

时间:2015-01-14 07:27:05

标签: php pdf-form

我正在使用fpdf在php中创建pdf而我在运行时遇到此错误:

Notice: Undefined index: id in C:\xampp1\htdocs\arvin2\public\pdf2\id.php on line 3
FPDF error: Some data has already been output, can't send PDF file

这是我的php代码(report.php):

<form action="http://localhost/pdf2/id.php" method="post" target="_blank">
<input type="text" name="id">
<input type="submit" name="submitpdf" value="Print"/>
</form>

另一个(eto.php):

<?php
require('mysql_table.php');
$id=$_POST['id'];

class PDF extends PDF_MySQL_Table
{
function Header()
{
//Title
$this->SetFont('Arial','',18);
$this->Cell(0,6,'Type of Leave',0,1,'C');
$this->Ln(10);
//Ensure table header is output
parent::Header();
}
}

mysql_connect('localhost','root','');
mysql_select_db('auth');


$pdf=new PDF();
//First table: put all columns automatically
$pdf->AddPage();
//Second table: specify 3 columns
$pdf->AddCol('leave_id',20,'','C');
$pdf->AddCol('fullname',40,'Fullname');
$pdf->AddCol('type_of_leave',40,'Type of Leave','R');
$prop=array('HeaderColor'=>array(255,150,100),
        'color1'=>array(210,245,255),
        'color2'=>array(255,255,210),
        'padding'=>2);
$pdf->Table('select leave_id, fullname, type_of_leave from application where     id_no="$_POST[id]"',$prop);
$pdf->Output();

?>

我放的时候:

if(isset($_POST['submitpdf']))
{
    $id=$_POST['id'];
    //your code goes here
}

错误说:

Parse error: syntax error, unexpected '$pdf' (T_VARIABLE) in C:\xampp1\htdocs\arvin2\public\pdf2\id.php on line 34

输出应该是以pdf格式打印的文本字段中输入的ID号的所有信息。

4 个答案:

答案 0 :(得分:0)

将if设置为代码。即

if(isset($_POST['submitpdf']))
{
//$id=$_POST['id'];
//your code goes here
}

这是为了确保您的代码只能在读取表单数据后运行

编辑:

我猜你的新错误来自选择字符串。

$pdf->Table('select leave_id, fullname, type_of_leave from application where     id_no="$_POST[id]"',$prop);

将其更改为:

$pdf->Table("select leave_id, fullname, type_of_leave from application where id_no=".$_POST[id],$prop);

答案 1 :(得分:0)

错误: 某些数据已输出,无法发送PDF文件

您可以使用2行代码修复此问题

  1. 您应该在页面顶部写
  2.   

    ob_start()

    1. 在您的PDF输出行 $ pdf-&gt;输出(); 之前添加新行
    2.   

      ob_end_flush()函数;

           

      $ PDF-&GT;输出();

      我想你可以解决这个问题&amp;享受更多!

        

      由于

           

      Md Salahuddin Khan

           

      MegamindIT

答案 2 :(得分:0)

我有同样的错误。

Data has already been sent to output, unable to output PDF file

这意味着在使用mPDF创建pdf之前,一些数据存储在缓冲区中,然后发送到浏览器。因此,它无法创建PDF。

只需执行此操作即可。如果您正在准备pdf数据,请在页面第一行的php内置函数下方添加此代码。

op_start();

并在mPDF代码之前(在调用mpdf之前)在php内置函数下面添加此代码

ob_end_flush();

require_once __DIR__ . '/vendor/autoload.php';

$mpdf = new \Mpdf\Mpdf();
$mpdf->WriteHTML($html);
$mpdf->Output();

以便在处理mPDF之前清除所有缓冲区输出。

答案 3 :(得分:0)

您应该在要输出为pdf的数据之前使用。

ob_start();

然后使用ob_end_clean()。

ob_end_clean();
$pdf->Output(time().'.pdf', 'D')