我正在使用 FPDF 将频道数据从 ExpressionEngine 导出到 PDF 文件。我使用的 FPDF-stuff 是我之前在另一个项目中使用的代码,所以它应该可以工作。FPDF 对象的普通方法可以工作,但是一旦它们被包装在一个函数中,我就会得到:
Fatal error: Call to a member function MultiCell() on a non-object
所以这有效:
include '../apps/assets/fpdf.php';
// setup the PDF object:
$pdf = new FPDF();
$pdf->SetMargins(0,0,0);
$pdf->SetAuthor("Author");
$pdf->addPage("P", "A4");
$pdf->SetTextColor(82,82,82);
// write something to the PDF:
$pdf->MultiCell(80, 6, "some text here", 0, "L");
但这不会:
include '../apps/assets/fpdf.php';
// setup the PDF object:
$pdf = new FPDF();
$pdf->SetMargins(0,0,0);
$pdf->SetAuthor("Author");
$pdf->addPage("P", "A4");
$pdf->SetTextColor(82,82,82);
writeStuff("some stuff to write");
function writeStuff($stuff) {
global $pdf;
$pdf->MultiCell(80, 6, $stuff, 0, "L");
}
最后一段代码抛出上面发布的错误。
这很奇怪,因为之前完全相同的设置确实有效。主要区别在于这一次,PHP 被包装在一个 ExpressionEngine 模板中。该模板确实启用了 PHP 解析,并且我在同一个应用程序中使用了许多其他模板,其中有很多可以工作的 PHP。
它与ExpressionEngine的解析顺序有关吗?是否在创建 $pdf 对象之前调用了方法“writeStuff”?
有任何想法吗?