require('inc/fpdf.php');
require('inc/mem_image.php');
class PDF extends FPDF
{
// Colored table
function FancyTable()
{
$this->SetFont('Helvetica','B');
$this->Cell(27, 4, 'Other Title', 1, 0);
}
}
$pdf = new PDF_MemImage();
//$pdf = new PDF();
$pdf->SetFont('Helvetica','',7);
$pdf->AddPage();
$img = file_get_contents('logo.jpg');
$pdf->MemImage($img, 50, 30);
$pdf->Cell(20,10,'Title',1,1,'C');
//$pdf->FancyTable();
$pdf->Output();
我正在尝试将mem_image脚本合并到现有的FPDF页面中。我正在使用一个名为fancyTable的方法来设置我的表数据/布局。不幸的是,尝试调用fancyTable打破了页面(空白)。如果我评论出来,那很好。如果我将$ pdf声明转换为新的PDF()而不是新的PDF_memimage()fancyTable,但显然我的图像不会加载。我认为这可能只是与班级的冲突,但我并不精通OO语法。
答案 0 :(得分:1)
对此的解决方案实际上非常直接:你扩展了错误的类。
你需要做的就是改变它:
class PDF extends FPDF
......对此:
class PDF extends PDF_MemImage
...然后改变这个:
$pdf = new PDF_MemImage();
......对此:
$pdf = new PDF();
通过扩展FPDF
,您已在继承树中基于 trunk (FPDF
)创建了一个新分支,而您想要做的是基于它现有分支PDF_MemImage
。
对于记录,命名您的类PDF
可能不是一个好主意 - 首先它不是非常具有描述性(它并不表示它继承自FPDF或MemImage),其次它非常短并且会运行如果用作较大应用程序的一部分,则与另一个类发生冲突的风险。我个人称之为FPDF_MemImage_FancyTable
,YMMV。
此外,在这个时代,确实没有必要编写兼容PHP4的类。 (说这个,我实际上做需要偶尔这样做,但我怀疑你这样做)
修改强>
如果从上面的描述中不清楚,最终的代码将如下所示:
require('inc/fpdf.php');
require('inc/mem_image.php');
class FPDF_MemImage_FancyTable extends PDF_MemImage
{
// Colored table
function FancyTable()
{
$this->SetFont('Helvetica','B');
$this->Cell(27, 4, 'Other Title', 1, 0);
}
}
$pdf = new FPDF_MemImage_FancyTable();
$pdf->SetFont('Helvetica','',7);
$pdf->AddPage();
$img = file_get_contents('logo.jpg');
$pdf->MemImage($img, 50, 30);
$pdf->Cell(20,10,'Title',1,1,'C');
$pdf->FancyTable();
$pdf->Output();