2014-02-11 174 views
0

TCPDF不斷創建我無法打開的損壞的PDF。任何解決方案我從HTML表單發佈。我不確定我的代碼是否錯誤,但我測試了tcpdf的例子,它們工作正常。TCPDF創建損壞的pdf

這是我的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會成爲問題嗎?

回答

2

您的代碼至少有兩個問題,其中一個或兩個都可能導致問題。

第一個問題是,你不應該試圖通過引用分配新的TCPDF實例。也就是說,你應該刪除符號,使得在這個行看起來是這樣的:

$pdf = new TCPDF("P","mm","A4",true,"UTF-8",false); 

的第二個問題是通過調用ob_clean()你實際上是刪除已創建(並存儲在輸出緩衝區非常輸出)當你撥打$pdf->Output()。如果您確實想明確管理輸出緩衝區,請改爲使用ob_end_flush()。話雖如此,你可能不需要管理代碼中的輸出緩衝,因爲PHP默認會緩存所有輸出,並在腳本完成時自動將其發送到客戶端。

爲了記錄,我複製了你的代碼,做了上面的兩個調整,它工作。

+0

謝謝!我無法找到這個問題的答案,現在它在這裏供任何人查看。 –

+0

太棒了!我很高興它有幫助。謝謝你接受我的回答 - 很多新手都忘了這麼做...... – JamesG