CodeIgniter 套件
CodeIgniter · LGPL-3.0CodeIgniter 套件提供 TCPDF-Next 的 CodeIgniter 4 整合 — 服務註冊、供控制器使用的 Library 類別、基於佇列的非同步生成,以及附帶 OWASP 安全標頭的 HTTP 回應輔助方法。
安裝
bash
composer require yeeefang/tcpdf-next-codeigniter需求: CodeIgniter ^4.0、PHP ^8.5
設定
發佈設定檔:
bash
php spark tcpdf-next:publishphp
// app/Config/TcpdfNext.php
namespace Config;
use CodeIgniter\Config\BaseConfig;
class TcpdfNext extends BaseConfig
{
public string $fontsDirectory = WRITEPATH . 'fonts';
public string $defaultPageSize = 'A4';
public string $defaultOrientation = 'portrait';
public bool $autoPageBreak = true;
public float $marginBottom = 25.0;
}使用 Service
在控制器中使用服務:
php
namespace App\Controllers;
use Yeeefang\TcpdfNext\CodeIgniter\Services\TcpdfNextService;
class InvoiceController extends BaseController
{
public function download(int $id)
{
$invoice = model('InvoiceModel')->find($id);
$pdf = service('tcpdfnext')->create()
->setTitle("Invoice #{$invoice->number}")
->addPage()
->setFont('Helvetica', '', 12)
->cell(0, 10, "Invoice #{$invoice->number}");
return service('tcpdfnext')->response($pdf, "invoice-{$invoice->number}.pdf");
}
}使用 Library
或者使用 Library 類別:
php
namespace App\Controllers;
use Yeeefang\TcpdfNext\CodeIgniter\Libraries\PdfLibrary;
class ReportController extends BaseController
{
public function generate()
{
$pdfLib = new PdfLibrary();
$pdf = $pdfLib->create()
->setTitle('Monthly Report')
->addPage()
->setFont('Helvetica', 'B', 16)
->cell(0, 10, 'Monthly Report', newLine: true);
return $pdfLib->inline($pdf, 'report.pdf');
}
}HTTP 回應
回應輔助方法包含 OWASP 建議的安全標頭:
php
// 行內顯示(瀏覽器預覽)
return service('tcpdfnext')->inline($pdf, 'report.pdf');
// 強制下載
return service('tcpdfnext')->download($pdf, 'report.pdf');佇列整合
將 PDF 生成任務分派到 CodeIgniter 的任務排程器:
php
use Yeeefang\TcpdfNext\CodeIgniter\Queue\GeneratePdfJob;
$job = new GeneratePdfJob([
'template' => 'invoice',
'data' => ['invoice_id' => $invoice->id],
'output_path' => WRITEPATH . "pdfs/invoice-{$invoice->id}.pdf",
]);
service('queue')->push($job);套件內容
| 類別 | 說明 |
|---|---|
TcpdfNextService | 服務註冊與工廠 |
PdfLibrary | 供控制器使用的 Library 類別 |
PdfResponse | 附帶安全標頭的 HTTP 回應 |
GeneratePdfJob | 背景生成的佇列任務 |
