Skip to content

CodeIgniter Package

TCPDF-Next CodeIgniter
CodeIgniter · LGPL-3.0

CodeIgniter package cung cấp tích hợp CodeIgniter 4 cho TCPDF-Next — đăng ký service, class Library cho controller, tạo PDF bất đồng bộ qua queue, và helper HTTP response với OWASP security header.

Cài đặt

bash
composer require yeeefang/tcpdf-next-codeigniter

Yêu cầu: CodeIgniter ^4.0, PHP ^8.5

Cấu hình

Publish file cấu hình:

bash
php spark tcpdf-next:publish
php
// 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;
}

Sử dụng Service

Dùng service trong controller:

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");
    }
}

Sử dụng Library

Ngoài ra, dùng class 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 Response

Helper response bao gồm OWASP security header được khuyến nghị:

php
// Hiển thị inline (xem trước trong trình duyệt)
return service('tcpdfnext')->inline($pdf, 'report.pdf');

// Bắt buộc download
return service('tcpdfnext')->download($pdf, 'report.pdf');

Tích hợp Queue

Dispatch việc tạo PDF tới task scheduler của 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);

Nội dung Package

ClassMô tả
TcpdfNextServiceĐăng ký service và factory
PdfLibraryClass Library cho sử dụng trong controller
PdfResponseHTTP response với security header
GeneratePdfJobQueue job cho tạo PDF background

Phân phối theo giấy phép LGPL-3.0-or-later.