Skip to content

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

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

โมดูล Reportlab เป็นเครื่องมือหนึ่งสำหรับใช้สร้างไฟล์ PDF ในภาษา Python โดยมีทั้งรุ่น ReportLab open-source และรุ่น ReportLab PLUS (มีค่าใช่จ่าย)
ในบทความนี้ผมใช้ ReportLab open-source โดยรองรับทั้ง Python 2 , Python 3 และใช้ BSD license ครับ
สามารถติดตั้งได้โดยใช้คำสั่ง pip :

pip install reportlab

ต่อไปเราจะมาลองสร้างเอกสาร PDF ด้วย Reportlab แบบง่าย ๆ กันครับ

 

สร้างเอกสารง่าย ๆ

from reportlab.pdfgen import canvas
c = canvas.Canvas("1.pdf") # ไฟล์ที่จะเขียน
c.drawString(100,750,"PDF by Python.") # กำหนดพิกัดที่เขียนและข้อความที่เขียน
c.save() # บันทึกไฟล์

ผลลัพธ์

ไฟล์ 1.pdf

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

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

c.drawString(100,750,"PDF by Python.")

เป็น

c.drawString(100,750,"สวัสดีจร้าาา :D")

พบว่าไม่มีข้อความปรากฏขึ้นเมื่อเปิดไฟล์ เพราะฟอนต์ที่ Reportlab กำหนดค่าเริ่มต้นมาไม่รองรับภาษาไทย ผมจึงต้องกำหนดฟอนต์ให้เป็นฟอนต์ที่รองรับภาษาไทย โดยฟอนต์ที่นำมาใช้กับ Reportlab ต้องเป็น TrueType Font เท่านั้นครับ
ผมใช้ฟอนต์ TH Sarabun PSK ซึ่งเป็นฟอนต์ฟรีจากโครงการฟอนต์มาตรฐานราชการไทย โหลดได้จาก http://www.sipa.or.th/th/articles/1555 ผมเอาไฟล์ THSarabunNew.ttf วางไว้ในโฟลเลอร์เดียวกันกับไฟล์ font-thai.py

โค้ดไฟล์ font-thai.py

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() # บันทึกไฟล์

ผลลัพธ์

ไฟล์ hello.pdf

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

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

Published on Categories ไม่มีหมวดหมู่

About wannaphong

วรรณพงษ์ ภัททิยไพบูลย์ ผู้ดูแลเว็บ wannaphong.com และผู้เขียนบทความบล็อกนี้ นักศึกษาชั้นปีที่ 1 สาขาวิทยาการคอมพิวเตอร์และสารสนเทศ คณะวิทยาศาสตร์ประยุกต์และวิศวกรรมศาสตร์ มหาวิทยาลัยขอนแก่น วิทยาเขตหนองคาย

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

  1. TP

    ใน userguide ตั้งแต่ section ที่ 2.7
    ที่เป็น def ... ไรแบบนี้อะครับ
    เวลาจะใช้สร้าง pdf ไฟล์มันใช้ยังไงเหรอครับ

    พอดีผมเพิ่งหัดเขียนโปรแกรม เลยยังใช้ไม่ถูก
    อยากทำได้ครับ รบกวนช่วยแนะนำหน่อยนะครับ

    Reply

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องที่ต้องการถูกทำเครื่องหมาย *