✅ คุณสมบัติของ Invoice นี้
- ใช้ HTML + Bootstrap 5
- มีการแสดงโลโก้, รายละเอียดบริษัท, ลูกค้า, ตารางสินค้า
- มีปุ่ม "พิมพ์ใบแจ้งหนี้"
- ใช้ CSS
@media print ซ่อนทุกอย่างที่ไม่เกี่ยวข้อง - รองรับลายน้ำแบบ background image
- ใช้
div พิมพ์เฉพาะส่วน
✅ โค้ด HTML
✅ โค้ด HTML แบบสมบูรณ์ (Invoice หลายหน้า):
<!DOCTYPE html>
<html lang="th">
<head>
<meta charset="UTF-8">
<title>ใบแจ้งหนี้หลายหน้า</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.7/dist/css/bootstrap.min.css" rel="stylesheet">
<style>
body {
font-family: 'Sarabun', sans-serif;
padding: 20px;
}
.invoice {
border: 1px solid #ccc;
padding: 30px;
margin-bottom: 30px;
position: relative;
}
table th, table td {
vertical-align: middle !important;
}
@media print {
body * {
visibility: hidden;
}
.print-area, .print-area * {
visibility: visible;
}
.print-area {
position: absolute;
top: 0;
left: 0;
width: 100%;
}
.page-break {
page-break-after: always;
}
.invoice {
page-break-inside: avoid;
}
button {
display: none !important;
}
}
</style>
</head>
<body>
<div id="invoiceContainer" class="print-area">
<!-- ใบแจ้งหนี้ (สามารถมีหลายใบ) -->
<div class="invoice">
<h2>ใบแจ้งหนี้ #INV001</h2>
<p>วันที่: 2025-08-08</p>
<p>ลูกค้า: บริษัท สมมุติ จำกัด</p>
<table class="table table-bordered">
<thead class="table-light">
<tr>
<th>#</th>
<th>รายการ</th>
<th>จำนวน</th>
<th>ราคา/หน่วย</th>
<th>รวม</th>
</tr>
</thead>
<tbody>
<!-- สร้างรายการแบบเยอะเพื่อทดสอบหลายหน้า -->
<!-- คุณสามารถใช้ loop ใน backend เพื่อแสดงรายการจริง -->
<!-- ตัวอย่างรายการจำนวนมาก -->
<script>
for (let i = 1; i <= 40; i++) {
document.write(`
<tr>
<td>${i}</td>
<td>สินค้า ${i}</td>
<td>1</td>
<td>100.00</td>
<td>100.00</td>
</tr>
`);
}
</script>
</tbody>
<tfoot>
<tr>
<td colspan="4" class="text-end">รวมทั้งหมด</td>
<td>4,000.00</td>
</tr>
</tfoot>
</table>
</div>
</div>
<div class="text-center">
<button class="btn btn-primary" onclick="window.print()">พิมพ์ใบแจ้งหนี้</button>
</div>
</body>
</html>
✅ จุดเด่น:
-
ใช้
@media print จัดรูปแบบสำหรับการพิมพ์ - รองรับรายการหลายรายการ กระจายหลายหน้าโดยอัตโนมัติ (ด้วย
page-break-inside: avoid) - มีปุ่มสั่งพิมพ์เฉพาะใบแจ้งหนี้