在 php 中创建 pdf 是一项非常有用的技能,可以帮助网站开发人员生成各种类型的动态 pdf 文件,如发票、报告、证书等。通过使用 php 中的库和扩展,开发人员可以轻松地将数据转换为 pdf 格式,并在网站上提供给用户进行下载或打印。本文将介绍如何在 php 中使用常见的库和扩展来创建 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
包含以下数据。
<code> <code class="language-sql hljs" data-lang="sql"><span style="display:flex;"><span><span style="color:#666">+</span><span style="color:#408080;font-style:italic">----------+----------+-----------+ </span></span></span><span style="display:flex;"><span><span style="color:#666">|</span><span style="color:#bbb"> </span>PersonID<span style="color:#bbb"> </span><span style="color:#666">|</span><span style="color:#bbb"> </span>Name<span style="color:#bbb"> </span><span style="color:#666">|</span><span style="color:#bbb"> </span>Address<span style="color:#bbb"> </span><span style="color:#666">|</span><span style="color:#bbb"> </span></span></span><span style="display:flex;"><span><span style="color:#666">+</span><span style="color:#408080;font-style:italic">----------+----------+-----------+ </span></span></span><span style="display:flex;"><span><span style="color:#666">|</span><span style="color:#bbb"> </span><span style="color:#666">22</span><span style="color:#bbb"> </span><span style="color:#666">|</span><span style="color:#bbb"> </span>Harry<span style="color:#bbb"> </span>M<span style="color:#bbb"></span><span style="color:#666">|</span><span style="color:#bbb"> </span>England<span style="color:#bbb"> </span><span style="color:#666">|</span><span style="color:#bbb"> </span></span></span><span style="display:flex;"><span><span style="color:#666">|</span><span style="color:#bbb"> </span><span style="color:#666">32</span><span style="color:#bbb"> </span><span style="color:#666">|</span><span style="color:#bbb"> </span>Paul<span style="color:#bbb"> </span>P<span style="color:#bbb"> </span><span style="color:#666">|</span><span style="color:#bbb"> </span>France<span style="color:#bbb"></span><span style="color:#666">|</span><span style="color:#bbb"> </span></span></span><span style="display:flex;"><span><span style="color:#666">+</span><span style="color:#408080;font-style:italic">----------+----------+-----------+ </span></span></span></code></code>
首先,使用 require()
函数来包含 vender/autoload.php
文件。然后,创建并建立数据库连接,运行 sql 查询以从数据库中选择数据,并在 $html
变量中创建一个表。使用 .
运算符将 $html
变量与表的主体连接起来。创建一个表头为 ID
、Name
和 Address
的表。然后通过从 Persons
表中检索上述数据来填充该表。
示例代码:
<code> <code class="language-php hljs" data-lang="php"><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">require</span>(<span style="color:#ba2121">'vendor/autoload.php'</span>); </span></span><span style="display:flex;"><span><span style="color:#19177c">$con</span><span style="color:#666">=</span><strong class="keylink">Mysql</strong>i_connect(<span style="color:#ba2121">'localhost'</span>,<span style="color:#ba2121">'root'</span>,<span style="color:#ba2121">''</span>,<span style="color:#ba2121">'phprow'</span>); </span></span><span style="display:flex;"><span><span style="color:#19177c">$res</span><span style="color:#666">=</span><strong class="keylink">mysql</strong>i_query(<span style="color:#19177c">$con</span>,<span style="color:#ba2121">"select * from Persons"</span>); </span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">if</span>(mysqli_num_rows(<span style="color:#19177c">$res</span>)<span style="color:#666">></span><span style="color:#666">0</span>){ </span></span><span style="display:flex;"><span><span style="color:#19177c">$html</span><span style="color:#666">=</span><span style="color:#ba2121">'<table>'; <span style="display:flex;"><span><span style="color:#19177c">$html</span><span style="color:#666">.=</span><span style="color:#ba2121">'<tr> <td>ID</td> <td>Name</td> <td>Address</td>'; <span style="display:flex;"><span><span style="color:#008000;font-weight:bold">while</span>(<span style="color:#19177c">$row</span><span style="color:#666">=</span>mysqli_fetch_assoc(<span style="color:#19177c">$res</span>)){ </span></span><span style="display:flex;"><span><span style="color:#19177c">$html</span><span style="color:#666">.=</span><span style="color:#ba2121">'<tr> <td>'<span style="color:#666">.</span><span style="color:#19177c">$row</span>[<span style="color:#ba2121">'PersonID'</span>]<span style="color:#666">.</span><span style="color:#ba2121">'</span> </td> <td>'<span style="color:#666">.</span><span style="color:#19177c">$row</span>[<span style="color:#ba2121">'Name'</span>]<span style="color:#666">.</span><span style="color:#ba2121">'</span> </td> <td>'<span style="color:#666">.</span><span style="color:#19177c">$row</span>[<span style="color:#ba2121">'Address'</span>]<span style="color:#666">.</span><span style="color:#ba2121">'</span> </td> </tr>'</span>; </span></span><span style="display:flex;"><span>} </span></span><span style="display:flex;"><span><span style="color:#19177c">$html</span><span style="color:#666">.=</span><span style="color:#ba2121">'</span></span></span> </tr></span></span></span> </table>'</span>; </span></span><span style="display:flex;"><span>} </span></span></code></code>
在上面的示例中,我们将数据库中的数据存储在变量 $html
中。我们使用了 .
运算符连接所有表格元素。因此,我们准备好将 HTML 文档写入 PDF。
接下来,创建一个名为 $mpdf
的变量。使用 new
关键字将 Mpdf()
构造函数的对象分配给变量。使用 $html
变量作为对象的参数调用 WriteHTML()
函数。然后创建另一个变量 $file
来存储 PDF。将 files/
与 time()
函数连接起来,并再次将其与 .pdf
连接起来以创建文件名。将其存储在 $file
变量中。最后,使用 $file
作为第一个参数和选项 I
作为第二个参数调用 output()
函数。
因此,我们从数据库中检索数据并使用这些数据创建了 PDF。下面的示例在 files
文件夹中创建了一个以当前时间为名称且扩展名为 .pdf
的文件。脚本运行后,PDF 将显示在浏览器中。我们可以从浏览器下载 PDF。
示例代码:
<code> <code class="language-php hljs" data-lang="php"><span style="display:flex;"><span><span style="color:#19177c">$mpdf</span><span style="color:#666">=</span><span style="color:#008000;font-weight:bold">new</span> /Mpdf/Mpdf(); </span></span><span style="display:flex;"><span><span style="color:#19177c">$mpdf</span><span style="color:#666">-></span><span style="color:#7d9029">WriteHTML</span>(<span style="color:#19177c">$html</span>); </span></span><span style="display:flex;"><span><span style="color:#19177c">$file</span><span style="color:#666">=</span><span style="color:#ba2121">'files/'</span><span style="color:#666">.</span>time()<span style="color:#666">.</span><span style="color:#ba2121">'.pdf'</span>; </span></span><span style="display:flex;"><span><span style="color:#19177c">$mpdf</span><span style="color:#666">-></span><span style="color:#7d9029">output</span>(<span style="color:#19177c">$file</span>,<span style="color:#ba2121">'I'</span>); </span></span></code></code>
在 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。
<code> <code class="language-php hljs" data-lang="php"><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">require</span> <span style="color:#ba2121">'vendor/autoload.php'</span>; </span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">use</span> Dompdf/Dompdf; </span></span></code></code>
将 HTML 存储在变量 $html
中后,创建另一个变量 $dompdf
以创建类 Dompdf
的对象。然后使用 $html
作为参数调用 loadHtml()
方法。接下来,调用 render()
函数,然后使用 $dompdf
对象调用 stream()
函数。
下面的示例将使用第一种方法中的表格创建 PDF。render()
方法将 HTML 呈现为 PDF 文件,而 stream()
方法将呈现的 HTML 输出到浏览器。因此,我们可以使用 PHP 中的 dompdf
库创建 PDF。
示例代码:
<code> <code class="language-php hljs" data-lang="php"><span style="display:flex;"><span><span style="color:#19177c">$dompdf</span> <span style="color:#666">=</span> <span style="color:#008000;font-weight:bold">new</span> Dompdf(); </span></span><span style="display:flex;"><span><span style="color:#19177c">$dompdf</span><span style="color:#666">-></span><span style="color:#7d9029">loadHtml</span>(<span style="color:#19177c">$html</span>); </span></span><span style="display:flex;"><span><span style="color:#19177c">$dompdf</span><span style="color:#666">-></span><span style="color:#7d9029">render</span>(); </span></span><span style="display:flex;"><span><span style="color:#19177c">$dompdf</span><span style="color:#666">-></span><span style="color:#7d9029">stream</span>(); </span></span></code></code>
以上就是在 PHP 中创建 PDF的详细内容,更多请关注php中文网其它相关文章!