PHP 语言 实现发票生成功能

PHP阿木 发布于 2025-07-02 8 次阅读


摘要:

发票生成是商业活动中不可或缺的一环,它不仅能够记录交易信息,还能作为税务凭证。本文将围绕PHP语言,详细解析并实现一个简单的发票生成功能,包括发票模板设计、数据填充、PDF生成等步骤。

一、

随着电子商务的快速发展,发票生成功能在网站和应用程序中变得越来越重要。PHP作为一种广泛使用的服务器端脚本语言,非常适合实现发票生成功能。本文将介绍如何使用PHP实现发票生成,包括设计发票模板、填充数据以及生成PDF文件。

二、发票模板设计

在设计发票模板时,我们需要考虑以下要素:

1. 发票基本信息:公司名称、地址、电话、发票号码、开票日期等。

2. 交易信息:商品名称、数量、单价、金额等。

3. 税费信息:税率、税额、价税合计等。

4. 结算信息:付款方式、收款人、备注等。

以下是一个简单的发票模板HTML代码示例:

html

<!DOCTYPE html>


<html lang="zh-CN">


<head>


<meta charset="UTF-8">


<title>发票模板</title>


<style>


body { font-family: Arial, sans-serif; }


.invoice { width: 21cm; margin: 0 auto; padding: 20px; }


.invoice-header { text-align: center; }


.invoice-table { width: 100%; border-collapse: collapse; }


.invoice-table th, .invoice-table td { border: 1px solid ccc; padding: 8px; text-align: left; }


.invoice-table th { background-color: f2f2f2; }


.invoice-footer { text-align: right; }


</style>


</head>


<body>


<div class="invoice">


<div class="invoice-header">


<h1>发票</h1>


<p>公司名称:XXX科技有限公司</p>


<p>地址:XX省XX市XX区XX路XX号</p>


<p>电话:1234567890</p>


</div>


<table class="invoice-table">


<thead>


<tr>


<th>商品名称</th>


<th>数量</th>


<th>单价</th>


<th>金额</th>


</tr>


</thead>


<tbody>


<!-- 商品信息将在此处动态填充 -->


</tbody>


</table>


<div class="invoice-footer">


<p>付款方式:支付宝</p>


<p>收款人:张三</p>


<p>备注:无</p>


</div>


</div>


</body>


</html>


三、数据填充

在发票模板中,我们需要将商品信息、税费信息等动态填充到相应的位置。以下是一个PHP代码示例,用于填充发票模板中的商品信息:

php

<?php


// 假设商品信息存储在数组中


$products = [


['name' => '商品1', 'quantity' => 2, 'price' => 100.00],


['name' => '商品2', 'quantity' => 1, 'price' => 200.00],


// ... 更多商品信息


];

// 计算税费


$taxRate = 0.13; // 假设税率为13%


$totalAmount = 0;


foreach ($products as $product) {


$totalAmount += $product['quantity'] $product['price'];


}


$taxAmount = $totalAmount $taxRate;


$grandTotal = $totalAmount + $taxAmount;

// 填充发票模板


$invoiceTemplate = file_get_contents('invoice.html');


$invoiceTemplate = str_replace('<!-- 商品信息将在此处动态填充 -->', '', $invoiceTemplate);

foreach ($products as $product) {


$invoiceTemplate .= "<tr>


<td>{$product['name']}</td>


<td>{$product['quantity']}</td>


<td>{$product['price']}</td>


<td>{$product['quantity'] $product['price']}</td>


</tr>";


}

$invoiceTemplate = str_replace('XX省XX市XX区XX路XX号', '公司地址', $invoiceTemplate);


$invoiceTemplate = str_replace('1234567890', '公司电话', $invoiceTemplate);


$invoiceTemplate = str_replace('XXX科技有限公司', '公司名称', $invoiceTemplate);


$invoiceTemplate = str_replace('支付宝', '付款方式', $invoiceTemplate);


$invoiceTemplate = str_replace('张三', '收款人', $invoiceTemplate);


$invoiceTemplate = str_replace('无', '备注', $invoiceTemplate);


$invoiceTemplate = str_replace('0', number_format($taxAmount, 2), $invoiceTemplate);


$invoiceTemplate = str_replace('0', number_format($grandTotal, 2), $invoiceTemplate);

// 输出或保存发票模板


echo $invoiceTemplate;


?>


四、生成PDF文件

在PHP中,我们可以使用FPDF或TCPDF等库来生成PDF文件。以下是一个使用FPDF库生成PDF文件的示例:

php

<?php


require_once 'fpdf.php';

// 创建FPDF对象


$pdf = new FPDF();


$pdf->AddPage();

// 设置字体


$pdf->SetFont('Arial', 'B', 16);

// 添加发票标题


$pdf->Cell(0, 10, '发票', 0, 1, 'C');

// 添加发票基本信息


$pdf->Cell(0, 10, '公司名称:XXX科技有限公司', 0, 1);


$pdf->Cell(0, 10, '地址:XX省XX市XX区XX路XX号', 0, 1);


$pdf->Cell(0, 10, '电话:1234567890', 0, 1);

// 添加商品信息


$pdf->Cell(0, 10, '商品名称', 1, 0, 'C');


$pdf->Cell(0, 10, '数量', 1, 0, 'C');


$pdf->Cell(0, 10, '单价', 1, 0, 'C');


$pdf->Cell(0, 10, '金额', 1, 1, 'C');

foreach ($products as $product) {


$pdf->Cell(0, 10, $product['name'], 1, 0, 'L');


$pdf->Cell(0, 10, $product['quantity'], 1, 0, 'L');


$pdf->Cell(0, 10, $product['price'], 1, 0, 'L');


$pdf->Cell(0, 10, $product['quantity'] $product['price'], 1, 1, 'L');


}

// 添加税费信息


$pdf->Cell(0, 10, '税额:', 0, 0);


$pdf->Cell(0, 10, number_format($taxAmount, 2), 0, 1);


$pdf->Cell(0, 10, '价税合计:', 0, 0);


$pdf->Cell(0, 10, number_format($grandTotal, 2), 0, 1);

// 保存PDF文件


$pdf->Output('F', 'invoice.pdf');


?>


五、总结

本文介绍了使用PHP语言实现发票生成功能的方法,包括设计发票模板、填充数据以及生成PDF文件。通过以上步骤,我们可以轻松地实现一个简单的发票生成系统。在实际应用中,可以根据需求对发票模板进行扩展,增加更多功能,如二维码生成、电子签名等。