有没有办法在使用FPDI扩展它时使用TCPDF中的事务?

时间:2010-03-31 21:57:44

标签: fpdf tcpdf fpdi

我正在使用带有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的交易?

3 个答案:

答案 0 :(得分: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只包含“等等等等”。

答案 1 :(得分:2)

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

这是因为 rollbackTransaction 采用布尔参数(默认为false),以确定是否必须返回rollbackvalue(false)或将对象设置为回滚州(真)。

答案 2 :(得分:1)

# grabbing input
input1 = dict,list,ect

# creating a phantom variable
Phantom = 'variable_name =  ' + input1

# executing the phantom
phenomenon = exec(Phantom)

# storing the phantom variable in a live one
output = variable_name

# printing the stored phantom variable
print(output)

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