✅ คุณสมบัติของ 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
) - มีปุ่มสั่งพิมพ์เฉพาะใบแจ้งหนี้