尝试使用所有形式的实例化来实现 FPDF,但只有一种形式有效。别人给Error

Trying to implement FPDF with all forms of instantiation but only one form works. Others give Error

已按照说明安装 crabbley/fpdf-laravel。尝试了一些示例代码如下:

$pdf= app('FPDF');
$pdf->AddPage();
$pdf->SetFont('Arial','B',16);
$pdf->Cell(40,10,'Swordsmen Class Times');
$pdf->Output();

虽然 fpdf 的实例化与教程中的示例不同,但一切正常,pdf 显示在浏览器中。我从 crabbley packagist 那里得到了这个工作示例。org/packages/crabbly/fpdf-laravel 自述文件在 'usage' 下。 'usage' 指令还提供了另一种实例化,即:$pdf = new Crabbly\FPDF\FPDF; 教程示例再次使用了一些略有不同的东西,即

require('fpdf.php');
x=new FPDF();

因此有点不同。当我将其更改为与教程相同时,我更改的只是

中的实例化行
$pdf= app('FPDF');

$pdf = new FPDF('L', 'mm','A4');

我收到错误“Class 'App\Http\Controllers\FPDF' 未找到”。我不明白不同形式的实例化之间的区别,也不确定发生了什么,但我需要后一种格式,这样我就可以设置页面方向等。我也尝试了如上所述的使用格式,但出现了同样的错误,即未找到新的 Crabbly\FPDF\FPDF。 我已经尝试了 require 语句,但没有找到 FPDF,我不确定将 'require' 指向哪里。

安装包括: 作曲家需要 crabbly/fpdf-laravel 将 Crabbly\FPDF\FpdfServiceProvider::class 添加到供应商部分 config/app.php

如有任何建议,我们将不胜感激。

您正在使用 Laravel 框架的实现,该框架将 FPDF 实例绑定到服务容器。使用 app('FPDF') returns 你是一个新的 FPDF 实例,这与 new FPDF() 所做的几乎相同。

require 使用它的方式与框架无关,如果您只是使用普通的 PHP 脚本,这将是使用 FPDF 的方式。虽然您也可以将这种方式与 Laravel 一起使用,但您为什么要那样做?

顺便说一下,require 不起作用的原因是在您调用它的地方找不到 fpdf.php 文件。除非您给它一个路径,否则它需要位于同一目录中。考虑到您使用 Composer 安装它,fpdf.php 脚本(如果有)应该位于供应商目录中。

但是,请继续使用服务容器。 $pdf = new FPDF('L', 'mm','A4'); 行只是创建了 FPDF class 的一个新实例,并通过将参数传递给构造函数来初始化它,这些 'L' 用于横向,'mm' 用于测量单位, 页面大小为 'A4'。在不知道您使用的包并对其进行测试的情况下,您也应该能够通过调用来等效地设置它们:

$pdf = app('FPDF', ['L', 'mm', 'A4']);

希望对您有所帮助!