laravel - 尝试使用所有形式的实例化来实现 FPDF,但只有一种形式有效。别人给错误
问题描述
按照说明安装了crabley/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 自述文件中获得了这个工作示例。“用法”说明还提供了另一种实例化方式,即:$pdf = new Crabbly\FPDF\FPDF;
教程示例再次使用稍微不同的东西,即
require('fpdf.php');
x=new FPDF();
因此有点不同。当我将其更改为与教程相同时,我更改的只是实例化行
$pdf= app('FPDF');
至
$pdf = new FPDF('L', 'mm','A4');
我收到错误“找不到类'App\Http\Controllers\FPDF'”。我不明白不同形式的实例化之间的区别,也不知道发生了什么,但我需要后一种格式,所以我可以设置页面方向等。我还尝试了上述使用格式,但出现了同样的错误,即未找到新的 Crabbly\FPDF\FPDF。我已经尝试过 require 语句,但没有找到 FPDF,我不确定将“require”指向哪里。
安装包括: composer require crawlbly/fpdf-laravel add Crabbly\FPDF\FpdfServiceProvider::class to config/app.php in the providers section
任何建议将不胜感激。
解决方案
您正在使用 Laravel 框架的实现,它将 FPDF 的实例绑定到服务容器。Usingapp('FPDF')
会返回一个新的 FPDF 实例,这与执行的操作几乎相同new FPDF()
。
使用它的require
方式与框架无关,如果您只是使用普通的 PHP 脚本,这将是使用 FPDF 的方式。虽然你也可以在 Laravel 中使用这种方式,但你为什么要这样做呢?
require
顺便说一句,不起作用的原因是在您调用它的位置找不到 fpdf.php 文件。除非您给它一个路径,否则它将被要求位于同一目录中。考虑到您是使用 composer 安装的,fpdf.php 脚本(如果有的话)应该位于 vendor 目录中。
但是,只需使用服务容器即可。该行$pdf = new FPDF('L', 'mm','A4');
只是创建 FPDF 类的一个新实例,并通过将参数传递给构造函数来初始化它,这些参数是横向方向的“L”、测量单位的“mm”和页面大小的“A4”。在不知道您使用的包并对其进行测试的情况下,您还应该能够通过调用来等效地设置它们:
$pdf = app('FPDF', ['L', 'mm', 'A4']);
希望有帮助!
推荐阅读
- javascript - 使用 javascript 在服务器上流水线化 1M 请求
- regex - Clojure routing , bidi ,我用于路由的正则表达式没有完美匹配
- javascript - 错误“无法读取未定义的属性‘颜色’”
- reactjs - 在组件中使用调度
- c++ - 可根据窗口大小扩展 wxSizer
- c - C中的printf和printf_s有什么区别?
- ruby-on-rails - Rails 5:循环遍历两个具有关联的表
- angular - 可以在生产模式下查看角度文件吗?目录源
- android - 如何从 JSONArray 中获取数据
- javascript - 无法使用 XMLHttpRequest 从数组中检索元素