【问题标题】:FPDF in Laravel 5.2Laravel 5.2 中的 FPDF
【发布时间】: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


    【解决方案1】:

    首先,使用 Composer 命令安装库 Anouar FPDF

    composer require anouar/fpdf

    配置

    然后打开文件/config/app.php,添加下面一行:

    providers' => [
    /*
    * Laravel Framework Service Providers...
    */
    …….
    Anouar\Fpdf\FpdfServiceProvider::class,<br>
    **and**
    
    
    'aliases' => [
    …
    'Fpdf' => Anouar\Fpdf\Facades\Fpdf::class,
    

    控制器

    要导出 pdf,请将此源代码添加到控制器:

    public function exportpdf() {
     $pdf = new Fpdf();
     $pdf::AddPage();
     $pdf::SetFont('Arial','B',18);
     $pdf::Cell(0,10,"Title",0,"","C");
     $pdf::Ln();
     $pdf::Ln();
     $pdf::SetFont('Arial','B',12);
     $pdf::cell(25,8,"ID",1,"","C");
     $pdf::cell(45,8,"Name",1,"","L");
     $pdf::cell(35,8,"Address",1,"","L");
     $pdf::Ln();
     $pdf::SetFont("Arial","",10);
     $pdf::cell(25,8,"1",1,"","C");
     $pdf::cell(45,8,"John",1,"","L");
     $pdf::cell(35,8,"New York",1,"","L");
     $pdf::Ln();
     $pdf::Output();
     exit;
    }
    

    路由

    不要忘记添加路由,在文件 /app/Http/routes.php 中添加这一行:

    Route::get('exportpdf', 'YourController@exportpdf');
    

    【讨论】:

      猜你喜欢
      • 2021-01-27
      • 2017-08-21
      • 2017-10-29
      • 2016-06-17
      • 1970-01-01
      • 1970-01-01
      • 2016-08-31
      • 2018-01-13
      • 1970-01-01
      相关资源
      最近更新 更多