2010-03-31 27 views
1

我正在使用TCPDF和FPDI的橋接器。我遇到的問題是,當我使用startTransaction()我得到以下錯誤:有沒有辦法在使用FPDI進行擴展時使用TCPDF中的事務?

TCPDF ERROR: Cannot access protected property FPDI:$numpages/Undefined property: FPDI::$numpages 

和腳本結束(因爲TCPDF ::錯誤()方法的模具)。

這裏是我使用的代碼:

$pdf = new FPDI(); 

// add a page 
$pdf->AddPage(); 

$pdf->startTransaction(); 
$pdf->Cell(0, 0, 'blah blah blah'); 
$pdf->rollbackTransaction(); 

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

如果我將其更改爲:

$pdf = new FPDI(); 

// add a page 
$pdf->AddPage(); 

$pdf->Cell(0, 0, 'blah blah blah'); 

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

它工作正常。

無論如何要讓它們一起使用並使用TCPDF的事務嗎?

回答

5

我找到的解決方案是使用PHP's object cloning,它允許我進行交易並在需要時進行回滾。這裏是一個例子:

$pdf = new FPDI(); 

// add a page 
$pdf->AddPage(); 

$pdf->Cell(0, 0, 'blah blah blah'); 

$_pdf = clone $pdf; 

// do stuff that you may want to revert 
$pdf->Cell(0, 0, 'PDFs suck!'); 

// revert the PDF 
$pdf = $_pdf; 

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

該PDF將只包含「等等等等等等」。

0

在你的第一個例子中,你應該使用$pdf = $pdf->rollbackTransaction$pdf->rollbackTransaction(true)而不是僅僅$pdf->rollabackTransaction()

這是因爲rollbackTransaction需要一個布爾參數(默認爲false),知道它是否有返回rollbackvalue(假)或將對象設置爲回滾狀態(true)。

1
$pdf = new FPDI(); 

$pdf->AddPage(); 

$pdf->startTransaction(true); 

$pdf->Cell(0, 0, 'blah blah blah'); 

$pdf->rollbackTransaction(true); 

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

添加真正作爲交易方法調用參數,解決了這個問題對我來說。

相關問題