📄 การใช้งาน html2pdf.js แปลง HTML เป็น PDF บนเว็บ
1. html2pdf.js คืออะไร?
html2pdf.js เป็นไลบราโรี JavaScript ที่ช่วยให้เราสามารถ แปลงเนื้อหา HTML เป็นไฟล์ PDF ได้ง่าย โดยผสมความสามารถของ:
- html2canvas → แปลง HTML เป็นภาพ
- jsPDF → แปลงภาพเป็น PDF
ข้อดีคือใช้ง่าย ไม่ต้องติดตั้ง Server Side และทำงานได้บน Browser โดยตรง
2. วิธีติดตั้ง
คุณสามารถโหลดผ่าน CDN ได้เลย:
ใช้
html2pdf.bundle.min.jsเพราะรวมทั้งhtml2canvasและjsPDFไว้แล้ว
3. ตัวอย่างการใช้งานพื้นฐาน
4. อธิบาย Option หลัก
| Option | ความหมาย |
|---|---|
margin | ระยะขอบ PDF |
filename | ชื่อไฟล์ PDF |
image.type | ประเภทภาพ (jpeg/png) |
image.quality | คุณภาพ (0–1) |
html2canvas.scale | ค่าขยาย (scale) ยิ่งมากยิ่งคม |
html2canvas.useCORS | โหลดรูปจากต่างโดเมนได้ |
jsPDF.unit | หน่วยวัด (mm, cm, pt, in) |
jsPDF.format | ขนาดกระดาษ (a4, letter, หรือ [กว้าง,สูง]) |
jsPDF.orientation | แนวตั้ง (portrait) หรือแนวนอน (landscape) |
pagebreak | ตั้งค่าแบ่งหน้า |
5. การบังคับขึ้นหน้าใหม่ (Page Break)
นอกจาก Option แล้ว html2pdf.js ยังรองรับ CSS สำหรับตัดหน้า:
และใน HTML:
หรือใช้ใน JS:
6. เคล็ดลับให้ PDF ชัดและพอดี
-
ตั้ง
html2canvas.scale≥ 2 เพื่อให้ภาพคม - ใช้
marginให้พอดี A4 เช่น10หรือ[10, 15, 10, 15] - ถ้ารูปไม่ขึ้น ให้ตั้ง
useCORS: true - ถ้าเนื้อหายาว ให้ใช้
pagebreakช่วยตัดหน้า
7. สรุป
html2pdf.js เป็นตัวช่วยที่ดีมากในการทำ รายงาน, ใบเสร็จ, เกียรติบัตร, สัญญา ในเว็บโดยตรง ไม่ต้องพึ่ง Server และสามารถปรับแต่งได้หลายอย่าง
📄 ตัวอย่างโค้ดสร้าง PDF มากกว่า 1 หน้า
🔹 อธิบายจุดสำคัญของ Demo
#contentคือส่วน HTML ที่จะถูกแปลงเป็น PDFmargin: 10กำหนดระยะขอบ PDFhtml2canvas.scale: 2ทำให้ PDF คมชัดขึ้น.page-breakใช้บังคับให้ขึ้นหน้าใหม่ใน PDF- ปุ่ม "📥 ดาวน์โหลด PDF" เรียกฟังก์ชัน
html2pdf().set(opt).from(element).save()เพื่อบันทึกไฟล์ทันที
🔹 เคล็ดลับ
1. ถ้า HTML ยาวเกิน 1 หน้า ให้ใช้.page-break หรือ pagebreak option2. ถ้ารูปไม่ขึ้นให้เพิ่ม
useCORS: true และรูปต้องรองรับ CORS3. ถ้าต้องการเปลี่ยนแนวนอน ให้เปลี่ยนเป็น:
📄 HTML2PDF เปิด PDF Preview แทนการดาวน์โหลด
🔹 ความแตกต่างจากเวอร์ชันดาวน์โหลดทันที
-
ใช้
.toPdf().get('pdf')เพื่อดึง object PDF - แปลงเป็น Blob แล้วสร้าง URL ชั่วคราว ด้วย
URL.createObjectURL(blob) - ใช้
window.open(url)เพื่อเปิด PDF ในแท็บใหม่แทนการบันทึกทันที
***************************************************