Php TCPDF创建损坏的pdf

Php TCPDF创建损坏的pdf,php,pdf,tcpdf,Php,Pdf,Tcpdf,TCPDF不断创建一个损坏的pdf,我无法打开。有什么解决办法吗?我是从一个html表单发布的。我不确定我的代码是否错误,但我测试了tcpdf的示例,它们工作正常 这是我的php: ob_start(); require_once('tcpdf.php'); $pdf = & new TCPDF("P","mm","A4",true,"UTF-8",false); $pdf->setPrintHeader(false); $pdf->setPrintFooter(fals

TCPDF不断创建一个损坏的pdf,我无法打开。有什么解决办法吗?我是从一个html表单发布的。我不确定我的代码是否错误,但我测试了tcpdf的示例,它们工作正常

这是我的php:

ob_start();

require_once('tcpdf.php');

$pdf = & new TCPDF("P","mm","A4",true,"UTF-8",false);
$pdf->setPrintHeader(false);
$pdf->setPrintFooter(false);
$pdf->SetAutoPageBreak(false);
$pdf->SetMargins(15,20,15);
$pdf->AddPage();
$pdf->SetFont('helvetica','B',12);
$pdf->SetFillColor(255,255,255);

// set image scale factor

$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);

// IMPORTANT: disable font subsetting to allow users editing the document

$pdf->setFontSubsetting(false);

//data

$pdf->writeHTMLCell(0,0,0,0, "Job Number ". $_POST["jobnum"], $border=0, $ln=0, $fill=false, $reseth=true, $align='', $autopadding=true);
$pdf->writeHTMLCell(0,0,0,5, "Program ". $_POST["program"], $border=0, $ln=0, $fill=false, $reseth=true, $align='', $autopadding=true);
$pdf->writeHTMLCell(0,0,0,10, "Ship Date ". $_POST["shipdate"], $border=0, $ln=0, $fill=false, $reseth=true, $align='', $autopadding=true);
$pdf->writeHTMLCell(0,0,0,15, "Description ". $_POST["description"], $border=0, $ln=0, $fill=false, $reseth=true, $align='', $autopadding=true);
$pdf->writeHTMLCell(0,0,0,20, "Proto Verified By ". $_POST["name"], $border=0, $ln=0, $fill=false, $reseth=true, $align='', $autopadding=true);
$pdf->writeHTMLCell(0,0,0,25, "Additional Notes ". $_POST["notes"], $border=0, $ln=0, $fill=false, $reseth=true, $align='', $autopadding=true);
$pdf->writeHTMLCell(0,0,0,30, "File Name". $_POST["filename1"], $border=0, $ln=0, $fill=false, $reseth=true, $align='', $autopadding=true);
$pdf->writeHTMLCell(0,0,0,35, "Doc Siize ". $_POST["Docsize1"], $border=0, $ln=0, $fill=false, $reseth=true, $align='', $autopadding=true);
$pdf->Cell(35, 5, 'FC ');
$pdf->CheckBox('fc1', 5, true, array(), array(), 'OK');
$pdf->Ln(40);
$pdf->Cell(35, 5, 'DC ');
$pdf->CheckBox('dc1', 5, true, array(), array(), 'OK');
$pdf->Ln(45);
$pdf->Cell(35, 5, 'Flip ');
$pdf->CheckBox('flip1', 5, true, array(), array(), 'OK');
$pdf->Ln(50);
$pdf->writeHTMLCell(0,0,0,55, "Quantity ". $_POST["quantity1"], $border=0, $ln=0, $fill=false, $reseth=true, $align='', $autopadding=true);
$pdf->writeHTMLCell(0,0,0,60, "Flip Quantity ". $_POST["flipqty1"], $border=0, $ln=0,   $fill=false, $reseth=true, $align='', $autopadding=true);

//Close and output PDF document

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


ob_clean();
edit1 有人能帮忙吗

edit2 我已经得出结论,我的代码没有问题。我测试了一个基本的“hello world”,但仍然收到一个损坏的pdf,我无法打开?我做了一些广泛的研究,没有人得到这个问题的答案,尽管这似乎很普遍。如果有人能帮我,那就太棒了


edit3我也用“hellow world”尝试了FPDF,但我还是遇到了同样的问题,一个损坏的pdf?adobe acrobat reader会成为问题吗?

您的代码中至少有两个问题,其中一个或两个可能是问题的原因

第一个问题是,您不应该试图通过引用来分配新的TCPDF实例。也就是说,您应该删除符号AND,使相关行如下所示:

$pdf = new TCPDF("P","mm","A4",true,"UTF-8",false);
第二个问题是,通过调用
ob_clean()
实际上删除了在调用
$pdf->output()
时创建(并存储在输出缓冲区中)的输出。如果确实要显式管理输出缓冲区,请改用
ob\u end\u flush()
。话虽如此,您可能不需要在代码中管理输出缓冲,因为PHP默认缓冲所有输出,并在脚本完成时自动将其发送给客户端


为了记录在案,我复制了你的代码,做了上面的两个调整,结果成功了。

谢谢!我找不到这个问题的答案,现在任何人都可以看到。太棒了!我很高兴这有帮助。谢谢你接受我的回答-很多新手都忘了这么做。。。