在 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