在 PHP 中建立 PDF

Subodh Poudel 2023年1月30日
  1. 在 PHP 中使用 mpdf 庫建立 PDF
  2. 在 PHP 中使用 dompdf 庫建立 PDF
在 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() 方法的第二個引數中指定模式。不同的模式由 DIFS 選項表示。選項 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 變數與表的主體連線起來。建立一個表頭為 IDNameAddress 的表。然後通過從 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.jsoncomposer.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 Poudel
Subodh Poudel avatar Subodh Poudel avatar

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

相關文章 - PHP PDF