首頁  >  文章  >  後端開發  >  在 PHP 中建立 PDF

在 PHP 中建立 PDF

WBOY
WBOY轉載
2024-02-28 10:16:461083瀏覽

在 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() 方法的第二個參數中指定模式。不同的模式由 DIFS 選項表示。選項 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 變數與表格的主體連接起來。建立一個表頭為 IDNameAddress 的表。然後透過從 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>;
</span></span><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>;
</span></span><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><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">'</td><td>'</span><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">'</td><td>'</span><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">'</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">'</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.<strong class="keylink">JSON</strong>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中文網其他相關文章!

陳述:
本文轉載於:lsjlt.com。如有侵權,請聯絡admin@php.cn刪除