【发布时间】:2016-08-18 06:45:08
【问题描述】:
我正在尝试使用 laravel 5.2 生成 pdf 文件。我已经成功地将 fpdf 安装到我的 laravel 中,因为它可以生成一个简单的 pdf。代码是这样的:
<?php
namespace App\Helpers;
use Fpdf;
class ReportHelper{
public static $elementPerPage = 10;
public static function generatePDF()
{
Fpdf::AddPage();
Fpdf::SetFont('Arial','B',16);
Fpdf::Cell(40,10,'Hello World!');
Fpdf::Output();
exit;
}
}
?>
然后我将按照教程 2 中 http://www.fpdf.org/ 中的示例进行操作。如果我们想创建一个新的页眉或页脚,我们需要这样编写代码:
<?php
require('fpdf.php');
class PDF extends FPDF
{
// Page header
function Header()
{
// Logo
$this->Image('logo.png',10,6,30);
// Arial bold 15
$this->SetFont('Arial','B',15);
// Move to the right
$this->Cell(80);
// Title
$this->Cell(30,10,'Title',1,0,'C');
// Line break
$this->Ln(20);
}
// Page footer
function Footer()
{
// Position at 1.5 cm from bottom
$this->SetY(-15);
// Arial italic 8
$this->SetFont('Arial','I',8);
// Page number
$this->Cell(0,10,'Page '.$this->PageNo().'/{nb}',0,0,'C');
}
}
// Instanciation of inherited class
$pdf = new PDF();
$pdf->AliasNbPages();
$pdf->AddPage();
$pdf->SetFont('Times','',12);
for($i=1;$i<=40;$i++)
$pdf->Cell(0,10,'Printing line number '.$i,0,1);
$pdf->Output();
?>
所以,我在我的 reportHelper 文件 {class is below ReportHelper} 中创建了一个新类,如下所示:
class PDF extends Fpdf
{
//Header
function Header()
{
//Logo
$this->Image('mangekyo2.JPG',18,6,25,20,'JPG'); //posisi (x,y), image size
// Arial bold 15
$this->SetFont('Arial','B',15);
// Move to the right
$this->Cell(70); //title position
// Title
$this->Cell(60,10,'Hisoka PDF Title',1,0,'C');//box size
// Line break
$this->Ln(20);
}
// Page footer
function Footer()
{
// Position at 1.5 cm from bottom
$this->SetY(-15);
// Arial italic 8
$this->SetFont('Arial','I',8);
// Page number
$this->Cell(0,10,'Page '.$this->PageNo().'/{nb}',0,0,'C');
}
}
然后在 generatePDF 方法 {inside of ReportHelper class} 中,我将代码更改为:
class ReportHelper{
public static $elementPerPage = 10;
public static function generatePDF()
{
// Fpdf::AddPage();
// Fpdf::SetFont('Arial','B',16);
// Fpdf::Cell(40,10,'Hello World!');
// Fpdf::Output();
// exit;
//Instanciation of inherited class
$pdf = new PDF();
$pdf->AliasNbPages();
$pdf->AddPage();
$pdf->SetFont('Times','',12);
for($i=1;$i<=60;$i++){
$pdf->Cell(0,10,'Printing line number '.$i,0,1);
if($i == 10 || $i== 20 || $i == 30) {
$pdf->Cell(0,10,'Hisokaline... '.$i,0,1);
$pdf->Cell(0,10,'X : '.$pdf->GetX().', Y : '.$pdf->GetY(),0,1);
$pdf->Image('mangekyo2.JPG',48,$pdf->GetY(),25,20,'JPG');
}
}
$pdf->Output();
}
}
当我浏览/运行这个页面时,它给出了一个错误
Call to undefined method App\Helpers\PDF::AliasNbPages()
我知道 AliasNbPages() 是 Fpdf 的一个方法,但是为什么不能识别呢?不只是 AliasNbPages(),而且 AddPages 和 SetFont 也是未定义的,有没有办法在 laravel 中调用这个方法...?? 我试过了
public static function generatePDF()
{
Fpdf::Header()
{
$this->SetFont('Arial','B',15);
// Move to the right
$this->Cell(70); //title position
// Title
$this->Cell(60,10,'Hisoka PDF Title',1,0,'C');//box size
// Line break
$this->Ln(20);
};
}
也不行……
【问题讨论】:
标签: php laravel-5.2