Việc tạo hóa đơn PDF trong PHP là một nhu cầu phổ biến trong phát triển ứng dụng web, đặc biệt trong lĩnh vực thương mại điện tử và quản lý tài chính. Bài viết này sẽ hướng dẫn bạn cách viết một class đơn giản giúp bạn tạo hóa đơn PDF một cách dễ dàng và hiệu quả. Chúng ta sẽ sử dụng thư viện FPDF
, một thư viện phổ biến cho việc tạo PDF trong PHP.
FPDF cho phép chúng ta dễ dàng tạo và định dạng tài liệu PDF mà không cần phải sử dụng nhiều mã phức tạp. Sau khi cài đặt FPDF, bạn sẽ có khả năng tạo ra các hóa đơn với thông tin chi tiết như tên khách hàng, sản phẩm, giá cả, và ngày tháng.
Cài đặt FPDF
Trước tiên, bạn cần tải xuống thư viện FPDF. Bạn có thể tải nó từ trang chính thức: FPDF Download
Sau khi tải về, bạn hãy giải nén nó và đưa thư mục vào dự án PHP của bạn. Đảm bảo rằng bạn đã cấu hình đúng đường dẫn trong mã của bạn để sử dụng thư viện này.
Tạo Class Hóa Đơn PDF
Dưới đây là mã mẫu cho class Hóa Đơn PDF:
<?php
require('fpdf.php');
class InvoicePDF extends FPDF {
// Thuộc tính để lưu thông tin hóa đơn
private $invoiceData;
// Hàm khởi tạo
public function __construct($data) {
parent::__construct();
$this->invoiceData = $data;
}
// Hàm thiết lập trang
function Header() {
// Thiết lập font
$this->SetFont('Arial', 'B', 12);
// Tiêu đề hóa đơn
$this->Cell(0, 10, 'HÓA ĐƠN THANH TOÁN', 0, 1, 'C');
$this->Ln(10);
}
// Hàm tạo nội dung hóa đơn
function createInvoice() {
$this->AddPage();
$this->SetFont('Arial', '', 12);
// Thông tin khách hàng
$this->Cell(0, 10, 'Khách Hàng: ' . $this->invoiceData['customer_name'], 0, 1);
$this->Cell(0, 10, 'Địa chỉ: ' . $this->invoiceData['customer_address'], 0, 1);
$this->Cell(0, 10, 'Ngày: ' . date('d/m/Y'), 0, 1);
$this->Ln(10);
// Thông tin chi tiết hóa đơn
$this->Cell(80, 10, 'Tên sản phẩm', 1);
$this->Cell(40, 10, 'Đơn giá', 1);
$this->Cell(30, 10, 'Số lượng', 1);
$this->Cell(40, 10, 'Thành tiền', 1);
$this->Ln();
foreach ($this->invoiceData['items'] as $item) {
$this->Cell(80, 10, $item['name'], 1);
$this->Cell(40, 10, number_format($item['price'], 0, ',', '.') . ' VNĐ', 1);
$this->Cell(30, 10, $item['quantity'], 1);
$this->Cell(40, 10, number_format($item['price'] * $item['quantity'], 0, ',', '.') . ' VNĐ', 1);
$this->Ln();
}
// Tính tổng tiền
$total = 0;
foreach ($this->invoiceData['items'] as $item) {
$total += $item['price'] * $item['quantity'];
}
$this->Ln();
$this->Cell(150, 10, 'Tổng cộng', 1);
$this->Cell(40, 10, number_format($total, 0, ',', '.') . ' VNĐ', 1);
}
// Xuất PDF
public function outputPDF($filename) {
$this->createInvoice();
$this->Output($filename, 'D'); // D để tải xuống
}
}
// Dữ liệu hóa đơn mẫu
$invoiceData = [
'customer_name' => 'Nguyễn Văn A',
'customer_address' => '123 Đường Phố, Thành Phố',
'items' => [
['name' => 'Sản phẩm 1', 'price' => 100000, 'quantity' => 2],
['name' => 'Sản phẩm 2', 'price' => 150000, 'quantity' => 1],
]
];
// Tạo đối tượng hóa đơn và xuất PDF
$invoice = new InvoicePDF($invoiceData);
$invoice->outputPDF('hoa_don.pdf');
?>
Giải thích mã nguồn
- Đầu tiên, chúng ta yêu cầu thư viện FPDF bằng cách sử dụng
require('fpdf.php');
. - Tiếp theo, tạo một class
InvoicePDF
kế thừa từFPDF
, trong đó chúng ta định nghĩa các thuộc tính và phương thức cần thiết. - Trong phương thức khởi tạo, chúng ta nhận dữ liệu hóa đơn và lưu vào thuộc tính
$invoiceData
. - Phương thức
Header()
dùng để hiển thị tiêu đề hóa đơn trên đầu mỗi trang. - Phương thức
createInvoice()
xây dựng nội dung của hóa đơn, bao gồm thông tin khách hàng và chi tiết sản phẩm. - Cuối cùng, phương thức
outputPDF()
sẽ tạo hóa đơn PDF và xuất ra file.
Kết luận
Với class đã tạo, bạn có thể dễ dàng điều chỉnh và mở rộng để phù hợp với yêu cầu của riêng bạn. Ví dụ, bạn có thể thêm các phương thức kiểm tra dữ liệu trước khi tạo PDF hay tùy chỉnh định dạng cho từng phần trong hóa đơn.
Việc sử dụng thư viện FPDF trong PHP rất trực quan và dễ sử dụng, giúp bạn xử lý việc tạo tài liệu PDF một cách hiệu quả. Hy vọng rằng bài viết này sẽ giúp bạn trong quá trình phát triển ứng dụng của mình!
Comments