2

FPDI のブリッジで TCPDF を使用しています。私が抱えている問題は、を使用するとすぐにstartTransaction()次のエラーが発生することです。

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

そしてスクリプトは終了します (TCPDF::Error() メソッドのサイコロのため)。

私が使用しているコードは次のとおりです。

$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のトランザクションを使用する方法はありますか?

4

3 に答える 3

5

私が見つけた解決策は、PHP のオブジェクト クローンを使用することでした。これにより、トランザクションを実行し、いつでもロールバックできるようになりました。次に例を示します。

$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には「何とか何とか」しか含まれません。

于 2011-02-09T08:22:16.057 に答える
2

最初の例では、$pdf = $pdf->rollbackTransactionor$pdf->rollbackTransaction(true)の代わりに使用する必要があります$pdf->rollabackTransaction()

これは、rollbackTransactionが boolean パラメータ(デフォルトは false)を取り、rollbackvalueを返す必要があるか (false)、オブジェクトをロールバック状態に設定する必要があるか (true) を知るためです。

于 2011-01-06T09:59:14.643 に答える