30 พฤษภาคม 2558

Published พฤษภาคม 30, 2558 by with 0 comment

สร้างเอกสาร PDF ด้วย Reportlab ในภาษา Python

สวัสดีผู้อ่านทุกท่านครับ บทความผมจะพาผู้อ่านไปเริ่มต้นสร้างเอกสาร PDF ด้วย Reportlab ในภาษา Python กันครับ :D

โมดูล 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

สร้างเอกสาร PDF ด้วย Reportlab ในภาษา Python

ต่อมาผมอยากลองใช้ภาษาไทยดูครับ ผมลองเปลี่ยนข้อความในโค้ด

[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

สร้างเอกสาร PDF ด้วย Reportlab ในภาษา Python

อ่านเอกสารการใช้งานเพิ่มเติมได้ที่ http://www.reportlab.com/docs/reportlab-userguide.pdf
หน้าเว็บ Reportlab http://www.reportlab.com/
ติดตามบทความต่อไปนะครับ
ขอบคุณครับ

0 ความคิดเห็น:

แสดงความคิดเห็น

แสดงความคิดเห็นได้ครับ :)