โมดูล Reportlab เป็นเครื่องมือหนึ่งสำหรับใช้สร้างไฟล์ PDF ในภาษา Python โดยมีทั้งรุ่น ReportLab open-source และรุ่น ReportLab PLUS (มีค่าใช่จ่าย)
ในบทความนี้ผมใช้ ReportLab open-source โดยรองรับทั้ง Python 2 , Python 3 และใช้ BSD license ครับ
สามารถติดตั้งได้โดยใช้คำสั่ง pip :
pip install reportlab
ต่อไปเราจะมาลองสร้างเอกสาร PDF ด้วย Reportlab แบบง่าย ๆ กันครับ
สร้างเอกสารง่าย ๆ
[python]
from reportlab.pdfgen import canvas
c = canvas.Canvas("1.pdf") # ไฟล์ที่จะเขียน
c.drawString(100,750,"PDF by Python.") # กำหนดพิกัดที่เขียนและข้อความที่เขียน
c.save() # บันทึกไฟล์
[/python]
ผลลัพธ์
ไฟล์ 1.pdf
ต่อมาผมอยากลองใช้ภาษาไทยดูครับ ผมลองเปลี่ยนข้อความในโค้ด
[python]
c.drawString(100,750,"PDF by Python.")
[/python]
เป็น
[python]
c.drawString(100,750,"สวัสดีจร้าาา :D")
[/python]
พบว่าไม่มีข้อความปรากฏขึ้นเมื่อเปิดไฟล์ เพราะฟอนต์ที่ Reportlab กำหนดค่าเริ่มต้นมาไม่รองรับภาษาไทย ผมจึงต้องกำหนดฟอนต์ให้เป็นฟอนต์ที่รองรับภาษาไทย โดยฟอนต์ที่นำมาใช้กับ Reportlab ต้องเป็น TrueType Font เท่านั้นครับ
ผมใช้ฟอนต์ TH Sarabun PSK ซึ่งเป็นฟอนต์ฟรีจากโครงการฟอนต์มาตรฐานราชการไทย โหลดได้จาก http://www.sipa.or.th/th/articles/1555 ผมเอาไฟล์ THSarabunNew.ttf วางไว้ในโฟลเลอร์เดียวกันกับไฟล์ font-thai.py
โค้ดไฟล์ font-thai.py
[python]
from reportlab.pdfgen import canvas
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont
pdfmetrics.registerFont(TTFont('THSarabunNew', 'THSarabunNew.ttf')) # ดึงไฟล์ THSarabunNew.ttf มาลงทะเบียนฟอนต์ในโค้ด
c = canvas.Canvas("hello.pdf") # ไฟล์ที่จะเขียน
c.setFont("THSarabunNew", 30) # กำหนดฟอนต์ที่ใช้ และขนาดคือ 30
c.drawString(100,750,"สวัสดีจร้าาา :D") # กำหนดพิกัดที่เขียนและข้อความที่เขียน
c.save() # บันทึกไฟล์
[/python]
ผลลัพธ์
ไฟล์ hello.pdf
อ่านเอกสารการใช้งานเพิ่มเติมได้ที่ http://www.reportlab.com/docs/reportlab-userguide.pdf
หน้าเว็บ Reportlab http://www.reportlab.com/
ติดตามบทความต่อไปนะครับ
ขอบคุณครับ
0 ความคิดเห็น:
แสดงความคิดเห็น
แสดงความคิดเห็นได้ครับ :)