在 PHP 中创建 PDF
本文将介绍在 PHP 中创建 PDF 的方法。我们将从数据库中检索数据,将其放入 PDF 中,然后下载。
在 PHP 中使用 mpdf
库创建 PDF
我们可以使用外部库 mpdf
在 PHP 中创建 PDF。我们可以从数据库中检索数据,将它们存储在 PDF 中,然后下载 PDF。使用这个库,我们可以从 HTML 文档创建 PDF。HTML 文档应以 UTF-8 编码。我们可以从数据库中以 HTML 格式检索要添加到 PDF 的数据。我们可以通过命令 composer require mpdf/mpd
从项目目录下载它以使用库。该命令将在项目目录中安装 mpdf
库。将创建一个 vendor
文件,我们需要使用 require()
函数来包含位于 vendor
文件夹内的文件 autoload.php
。我们必须确保安装库的目录应该有写权限。
我们将从 Mpdf()
构造函数创建一个对象,并使用 WriteHTML()
和 output()
等方法来创建 PDF。我们可以在不同的模式下输出 PDF。我们可以在 output()
方法的第二个参数中指定模式。不同的模式由 D
、I
、F
和 S
选项表示。选项 D
将在脚本运行后强制下载 PDF。脚本运行后,选项 I
将在浏览器中显示 PDF。同时,选项 F
将下载 PDF 保存在相对于 PHP 文件的文件夹中。最后,仅当将 output()
方法分配给变量时,选项 F
才会在浏览器中输出 pdf。
例如,我们有一个名为 phprow
的数据库,其中包含一个名为 Persons
的表。表 Persons
包含以下数据。
+----------+----------+-----------+
| PersonID | Name | Address |
+----------+----------+-----------+
| 22 | Harry M | England |
| 32 | Paul P | France |
+----------+----------+-----------+
首先,使用 require()
函数来包含 vender/autoload.php
文件。然后,创建并建立数据库连接,运行 SQL 查询以从数据库中选择数据,并在 $html
变量中创建一个表。使用 .
运算符将 $html
变量与表的主体连接起来。创建一个表头为 ID
、Name
和 Address
的表。然后通过从 Persons
表中检索上述数据来填充该表。
示例代码:
require('vendor/autoload.php');
$con=mysqli_connect('localhost','root','','phprow');
$res=mysqli_query($con,"select * from Persons");
if(mysqli_num_rows($res)>0){
$html='<table>';
$html.='<tr><td>ID</td><td>Name</td><td>Address</td>';
while($row=mysqli_fetch_assoc($res)){
$html.='<tr><td>'.$row['PersonID'].'</td><td>'.$row['Name'].'</td><td>'.$row['Address'].'</td></tr>';
}
$html.='</table>';
}
在上面的示例中,我们将数据库中的数据存储在变量 $html
中。我们使用了 .
运算符连接所有表格元素。因此,我们准备好将 HTML 文档写入 PDF。
接下来,创建一个名为 $mpdf
的变量。使用 new
关键字将 Mpdf()
构造函数的对象分配给变量。使用 $html
变量作为对象的参数调用 WriteHTML()
函数。然后创建另一个变量 $file
来存储 PDF。将 files/
与 time()
函数连接起来,并再次将其与 .pdf
连接起来以创建文件名。将其存储在 $file
变量中。最后,使用 $file
作为第一个参数和选项 I
作为第二个参数调用 output()
函数。
因此,我们从数据库中检索数据并使用这些数据创建了 PDF。下面的示例在 files
文件夹中创建了一个以当前时间为名称且扩展名为 .pdf
的文件。脚本运行后,PDF 将显示在浏览器中。我们可以从浏览器下载 PDF。
示例代码:
$mpdf=new \Mpdf\Mpdf();
$mpdf->WriteHTML($html);
$file='files/'.time().'.pdf';
$mpdf->output($file,'I');
在 PHP 中使用 dompdf
库创建 PDF
dompdf
库也是在 PHP 中创建和下载 PDF 的一个选项。它让我们将 HTML 加载到 PDF。这个库与 mpdf
库非常相似;只是方法不同。我们将使用 loadHtml()
、render()
和 stream()
等方法。我们需要使用命令 composer require dompdf/dompdf
将库下载到我们的工作目录。它将像第一种方法一样创建 vendor
文件夹以及 composer.json
和 composer.lock
文件。
例如,要求 vendor/autoload.php
作为程序中代码的第一行。然后编写 use
关键字以将 Dompdf
类导入为 use Dompdf/Dompdf
。我们可以使用与上述方法相同的 HTML 表来加载 PDF。
require 'vendor/autoload.php';
use Dompdf\Dompdf;
将 HTML 存储在变量 $html
中后,创建另一个变量 $dompdf
以创建类 Dompdf
的对象。然后使用 $html
作为参数调用 loadHtml()
方法。接下来,调用 render()
函数,然后使用 $dompdf
对象调用 stream()
函数。
下面的示例将使用第一种方法中的表格创建 PDF。render()
方法将 HTML 呈现为 PDF 文件,而 stream()
方法将呈现的 HTML 输出到浏览器。因此,我们可以使用 PHP 中的 dompdf
库创建 PDF。
示例代码:
$dompdf = new Dompdf();
$dompdf->loadHtml($html);
$dompdf->render();
$dompdf->stream();
Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.
LinkedIn