📄 การใช้งาน 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 ในแท็บใหม่แทนการบันทึกทันที
***************************************************