2

我正在将 TCPDF 与 FPDI 的网桥一起使用。我遇到的问题是,一旦我使用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 将仅包含“blah blah blah”。

于 2011-02-09T08:22:16.057 回答
2

在您的第一个示例中,您应该使用$pdf = $pdf->rollbackTransactionor$pdf->rollbackTransaction(true)而不是$pdf->rollabackTransaction()

这是因为rollbackTransaction需要一个布尔参数(默认为 false),以了解它是否必须返回回滚值(false)或将对象设置为回滚状态(true)。

于 2011-01-06T09:59:14.643 回答
1
$pdf = new FPDI(); 

$pdf->AddPage();

$pdf->startTransaction(true);

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

$pdf->rollbackTransaction(true);

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

在事务方法调用中添加true作为参数为我解决了问题。

于 2018-02-07T13:30:33.007 回答