我正在使用带有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的交易?
答案 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 作为参数为我解决了问题。