from fpdf import FPDF
# สร้าง PDF class พร้อมตั้งค่าฟอนต์ภาษาไทย (ใช้ THSarabun)
class PDF(FPDF):
self.set_font("THSarabun", "B", 20)
self.cell(0, 10, "ตารางข้อมูลที่ดินและการผ่อนชำระ", 0, 1, "C")
def chapter_title(self, title):
self.set_font("THSarabun", "B", 18)
self.cell(0, 10, title, 0, 1, "L")
self.ln(2)
def chapter_body(self, body):
self.set_font("THSarabun", "", 16)
self.multi_cell(0, 8, body)
self.ln()
def add_table(self, data, col_widths):
self.set_font("THSarabun", "B", 16)
for col in data[0]:
self.cell(col_widths, 10, col, 1, 0, "C")
self.ln()
self.set_font("THSarabun", "", 16)
for row in data[1:]:
for col in row:
self.cell(col_widths, 10, str(col), 1, 0, "C")
self.ln()
# สร้าง PDF และเพิ่มฟอนต์ภาษาไทย
pdf = PDF()
pdf.add_page()
pdf.add_font("THSarabun", "", "/usr/share/fonts/truetype/thai/Sarabun-Regular.ttf", uni=True)
pdf.add_font("THSarabun", "B", "/usr/share/fonts/truetype/thai/Sarabun-Bold.ttf", uni=True)
# เนื้อหาตาราง 1: รายละเอียดราคาที่ดิน
pdf.chapter_title("รายละเอียดราคาที่ดิน")
land_info = (
"ขนาดที่ดิน: 64.7 ตร.วา (2 แปลง)\n"
"ราคาตารางวาละ: 9,000 บาท\n"
"ราคาต่อแปลง: 582,300 บาท\n"
"ทำสัญญา: 10,000 บาท ต่อแปลง\n"
"เงินดาวน์: 48,300 บาท ต่อแปลง\n"
"ค่าโอนกรรมสิทธิ์รวม (2 แปลง): ประมาณ 9,000 บาท\n"
"ค่าจดจำนอง 1% ของยอดกู้ (10,963 บาท ต่อแปลง)"
)
pdf.chapter_body(land_info)
# เนื้อหาตาราง 2: ผ่อนรายเดือน
pdf.chapter_title("ตารางผ่อนรายเดือน (หลังจดจำนอง)")
table_data = [
["ระยะเวลาผ่อน", "แปลงที่ 1", "แปลงที่ 2", "หมายเหตุ"],
["5 ปี", "11,665", "12,731", "ผ่อนสั้น ดอกเบี้ยน้อย"],
["10 ปี", "7,518", "8,211", "ผ่อนกลาง"],
["15 ปี", "6,290", "6,869", "ยอดผ่อนต่ำ"],
["20 ปี", "5,770", "6,302", "วางแผนระยะยาว"],
["25 ปี", "5,519", "6,027", "ภาระเบา"],
["30 ปี", "5,390", "5,887", "ผ่อนยาว ค่างวดต่ำสุด"]
]
pdf.add_table(table_data, 45)
# คำอธิบายเพิ่มเติม
explanation = (
"หมายเหตุ:\n"
"- ตัวเลขเป็นการประมาณจากยอดหลังดาวน์ โดยรวมค่าจดจำนองไว้แล้ว\n"
"- ลูกค้าสามารถเลือกผ่อนระยะเวลาได้ตามรายได้\n"
"- ผ่อนครบ รับโฉนดทันที\n"
"- ทำสัญญาที่สำนักงาน ถูกต้องตามกฎหมาย พร้อมพาไปดูที่จริง"
)
pdf.chapter_body(explanation)
# บันทึกไฟล์ PDF
output_path = "/mnt/data/ตารางที่ดินและการผ่อน.pdf"
pdf.output(output_path)
output_path
ZnJvbSBmcGRmIGltcG9ydCBGUERGCgojIOC4quC4o+C5ieC4suC4hyBQREYgY2xhc3Mg4Lie4Lij4LmJ4Lit4Lih4LiV4Lix4LmJ4LiH4LiE4LmI4Liy4Lif4Lit4LiZ4LiV4LmM4Lig4Liy4Lip4Liy4LmE4LiX4LiiICjguYPguIrguYkgVEhTYXJhYnVuKQpjbGFzcyBQREYoRlBERik6CiAgICBkZWYgaGVhZGVyKHNlbGYpOgogICAgICAgIHNlbGYuc2V0X2ZvbnQoIlRIU2FyYWJ1biIsICJCIiwgMjApCiAgICAgICAgc2VsZi5jZWxsKDAsIDEwLCAi4LiV4Liy4Lij4Liy4LiH4LiC4LmJ4Lit4Lih4Li54Lil4LiX4Li14LmI4LiU4Li04LiZ4LmB4Lil4Liw4LiB4Liy4Lij4Lic4LmI4Lit4LiZ4LiK4Liz4Lij4LiwIiwgMCwgMSwgIkMiKQoKICAgIGRlZiBjaGFwdGVyX3RpdGxlKHNlbGYsIHRpdGxlKToKICAgICAgICBzZWxmLnNldF9mb250KCJUSFNhcmFidW4iLCAiQiIsIDE4KQogICAgICAgIHNlbGYuY2VsbCgwLCAxMCwgdGl0bGUsIDAsIDEsICJMIikKICAgICAgICBzZWxmLmxuKDIpCgogICAgZGVmIGNoYXB0ZXJfYm9keShzZWxmLCBib2R5KToKICAgICAgICBzZWxmLnNldF9mb250KCJUSFNhcmFidW4iLCAiIiwgMTYpCiAgICAgICAgc2VsZi5tdWx0aV9jZWxsKDAsIDgsIGJvZHkpCiAgICAgICAgc2VsZi5sbigpCgogICAgZGVmIGFkZF90YWJsZShzZWxmLCBkYXRhLCBjb2xfd2lkdGhzKToKICAgICAgICBzZWxmLnNldF9mb250KCJUSFNhcmFidW4iLCAiQiIsIDE2KQogICAgICAgIGZvciBjb2wgaW4gZGF0YVswXToKICAgICAgICAgICAgc2VsZi5jZWxsKGNvbF93aWR0aHMsIDEwLCBjb2wsIDEsIDAsICJDIikKICAgICAgICBzZWxmLmxuKCkKICAgICAgICBzZWxmLnNldF9mb250KCJUSFNhcmFidW4iLCAiIiwgMTYpCiAgICAgICAgZm9yIHJvdyBpbiBkYXRhWzE6XToKICAgICAgICAgICAgZm9yIGNvbCBpbiByb3c6CiAgICAgICAgICAgICAgICBzZWxmLmNlbGwoY29sX3dpZHRocywgMTAsIHN0cihjb2wpLCAxLCAwLCAiQyIpCiAgICAgICAgICAgIHNlbGYubG4oKQoKIyDguKrguKPguYnguLLguIcgUERGIOC5geC4peC4sOC5gOC4nuC4tOC5iOC4oeC4n+C4reC4meC4leC5jOC4oOC4suC4qeC4suC5hOC4l+C4ogpwZGYgPSBQREYoKQpwZGYuYWRkX3BhZ2UoKQpwZGYuYWRkX2ZvbnQoIlRIU2FyYWJ1biIsICIiLCAiL3Vzci9zaGFyZS9mb250cy90cnVldHlwZS90aGFpL1NhcmFidW4tUmVndWxhci50dGYiLCB1bmk9VHJ1ZSkKcGRmLmFkZF9mb250KCJUSFNhcmFidW4iLCAiQiIsICIvdXNyL3NoYXJlL2ZvbnRzL3RydWV0eXBlL3RoYWkvU2FyYWJ1bi1Cb2xkLnR0ZiIsIHVuaT1UcnVlKQoKIyDguYDguJnguLfguYnguK3guKvguLLguJXguLLguKPguLLguIcgMTog4Lij4Liy4Lii4Lil4Liw4LmA4Lit4Li14Lii4LiU4Lij4Liy4LiE4Liy4LiX4Li14LmI4LiU4Li04LiZCnBkZi5jaGFwdGVyX3RpdGxlKCLguKPguLLguKLguKXguLDguYDguK3guLXguKLguJTguKPguLLguITguLLguJfguLXguYjguJTguLTguJkiKQpsYW5kX2luZm8gPSAoCiAgICAi4LiC4LiZ4Liy4LiU4LiX4Li14LmI4LiU4Li04LiZOiA2NC43IOC4leC4oy7guKfguLIgKDIg4LmB4Lib4Lil4LiHKVxuIgogICAgIuC4o+C4suC4hOC4suC4leC4suC4o+C4suC4h+C4p+C4suC4peC4sDogOSwwMDAg4Lia4Liy4LiXXG4iCiAgICAi4Lij4Liy4LiE4Liy4LiV4LmI4Lit4LmB4Lib4Lil4LiHOiA1ODIsMzAwIOC4muC4suC4l1xuIgogICAgIuC4l+C4s+C4quC4seC4jeC4jeC4sjogMTAsMDAwIOC4muC4suC4lyDguJXguYjguK3guYHguJvguKXguIdcbiIKICAgICLguYDguIfguLTguJnguJTguLLguKfguJnguYw6IDQ4LDMwMCDguJrguLLguJcg4LiV4LmI4Lit4LmB4Lib4Lil4LiHXG4iCiAgICAi4LiE4LmI4Liy4LmC4Lit4LiZ4LiB4Lij4Lij4Lih4Liq4Li04LiX4LiY4Li04LmM4Lij4Lin4LihICgyIOC5geC4m+C4peC4hyk6IOC4m+C4o+C4sOC4oeC4suC4kyA5LDAwMCDguJrguLLguJdcbiIKICAgICLguITguYjguLLguIjguJTguIjguLPguJnguK3guIcgMSUg4LiC4Lit4LiH4Lii4Lit4LiU4LiB4Li54LmJICgxMCw5NjMg4Lia4Liy4LiXIOC4leC5iOC4reC5geC4m+C4peC4hykiCikKcGRmLmNoYXB0ZXJfYm9keShsYW5kX2luZm8pCgojIOC5gOC4meC4t+C5ieC4reC4q+C4suC4leC4suC4o+C4suC4hyAyOiDguJzguYjguK3guJnguKPguLLguKLguYDguJTguLfguK3guJkKcGRmLmNoYXB0ZXJfdGl0bGUoIuC4leC4suC4o+C4suC4h+C4nOC5iOC4reC4meC4o+C4suC4ouC5gOC4lOC4t+C4reC4mSAo4Lir4Lil4Lix4LiH4LiI4LiU4LiI4Liz4LiZ4Lit4LiHKSIpCnRhYmxlX2RhdGEgPSBbCiAgICBbIuC4o+C4sOC4ouC4sOC5gOC4p+C4peC4suC4nOC5iOC4reC4mSIsICLguYHguJvguKXguIfguJfguLXguYggMSIsICLguYHguJvguKXguIfguJfguLXguYggMiIsICLguKvguKHguLLguKLguYDguKvguJXguLgiXSwKICAgIFsiNSDguJvguLUiLCAiMTEsNjY1IiwgIjEyLDczMSIsICLguJzguYjguK3guJnguKrguLHguYnguJkg4LiU4Lit4LiB4LmA4Lia4Li14LmJ4Lii4LiZ4LmJ4Lit4LiiIl0sCiAgICBbIjEwIOC4m+C4tSIsICI3LDUxOCIsICI4LDIxMSIsICLguJzguYjguK3guJnguIHguKXguLLguIciXSwKICAgIFsiMTUg4Lib4Li1IiwgIjYsMjkwIiwgIjYsODY5IiwgIuC4ouC4reC4lOC4nOC5iOC4reC4meC4leC5iOC4syJdLAogICAgWyIyMCDguJvguLUiLCAiNSw3NzAiLCAiNiwzMDIiLCAi4Lin4Liy4LiH4LmB4Lic4LiZ4Lij4Liw4Lii4Liw4Lii4Liy4LinIl0sCiAgICBbIjI1IOC4m+C4tSIsICI1LDUxOSIsICI2LDAyNyIsICLguKDguLLguKPguLDguYDguJrguLIiXSwKICAgIFsiMzAg4Lib4Li1IiwgIjUsMzkwIiwgIjUsODg3IiwgIuC4nOC5iOC4reC4meC4ouC4suC4pyDguITguYjguLLguIfguKfguJTguJXguYjguLPguKrguLjguJQiXQpdCnBkZi5hZGRfdGFibGUodGFibGVfZGF0YSwgNDUpCgojIOC4hOC4s+C4reC4mOC4tOC4muC4suC4ouC5gOC4nuC4tOC5iOC4oeC5gOC4leC4tOC4oQpleHBsYW5hdGlvbiA9ICgKICAgICLguKvguKHguLLguKLguYDguKvguJXguLg6XG4iCiAgICAiLSDguJXguLHguKfguYDguKXguILguYDguJvguYfguJnguIHguLLguKPguJvguKPguLDguKHguLLguJPguIjguLLguIHguKLguK3guJTguKvguKXguLHguIfguJTguLLguKfguJnguYwg4LmC4LiU4Lii4Lij4Lin4Lih4LiE4LmI4Liy4LiI4LiU4LiI4Liz4LiZ4Lit4LiH4LmE4Lin4LmJ4LmB4Lil4LmJ4LinXG4iCiAgICAiLSDguKXguLnguIHguITguYnguLLguKrguLLguKHguLLguKPguJbguYDguKXguLfguK3guIHguJzguYjguK3guJnguKPguLDguKLguLDguYDguKfguKXguLLguYTguJTguYnguJXguLLguKHguKPguLLguKLguYTguJTguYlcbiIKICAgICItIOC4nOC5iOC4reC4meC4hOC4o+C4miDguKPguLHguJrguYLguInguJnguJTguJfguLHguJnguJfguLVcbiIKICAgICItIOC4l+C4s+C4quC4seC4jeC4jeC4suC4l+C4teC5iOC4quC4s+C4meC4seC4geC4h+C4suC4mSDguJbguLnguIHguJXguYnguK3guIfguJXguLLguKHguIHguI7guKvguKHguLLguKIg4Lie4Lij4LmJ4Lit4Lih4Lie4Liy4LmE4Lib4LiU4Li54LiX4Li14LmI4LiI4Lij4Li04LiHIgopCnBkZi5jaGFwdGVyX2JvZHkoZXhwbGFuYXRpb24pCgojIOC4muC4seC4meC4l+C4tuC4geC5hOC4n+C4peC5jCBQREYKb3V0cHV0X3BhdGggPSAiL21udC9kYXRhL+C4leC4suC4o+C4suC4h+C4l+C4teC5iOC4lOC4tOC4meC5geC4peC4sOC4geC4suC4o+C4nOC5iOC4reC4mS5wZGYiCnBkZi5vdXRwdXQob3V0cHV0X3BhdGgpCm91dHB1dF9wYXRo
from fpdf import FPDF
# สร้าง PDF class พร้อมตั้งค่าฟอนต์ภาษาไทย (ใช้ THSarabun)
class PDF(FPDF):
def header(self):
self.set_font("THSarabun", "B", 20)
self.cell(0, 10, "ตารางข้อมูลที่ดินและการผ่อนชำระ", 0, 1, "C")
def chapter_title(self, title):
self.set_font("THSarabun", "B", 18)
self.cell(0, 10, title, 0, 1, "L")
self.ln(2)
def chapter_body(self, body):
self.set_font("THSarabun", "", 16)
self.multi_cell(0, 8, body)
self.ln()
def add_table(self, data, col_widths):
self.set_font("THSarabun", "B", 16)
for col in data[0]:
self.cell(col_widths, 10, col, 1, 0, "C")
self.ln()
self.set_font("THSarabun", "", 16)
for row in data[1:]:
for col in row:
self.cell(col_widths, 10, str(col), 1, 0, "C")
self.ln()
# สร้าง PDF และเพิ่มฟอนต์ภาษาไทย
pdf = PDF()
pdf.add_page()
pdf.add_font("THSarabun", "", "/usr/share/fonts/truetype/thai/Sarabun-Regular.ttf", uni=True)
pdf.add_font("THSarabun", "B", "/usr/share/fonts/truetype/thai/Sarabun-Bold.ttf", uni=True)
# เนื้อหาตาราง 1: รายละเอียดราคาที่ดิน
pdf.chapter_title("รายละเอียดราคาที่ดิน")
land_info = (
"ขนาดที่ดิน: 64.7 ตร.วา (2 แปลง)\n"
"ราคาตารางวาละ: 9,000 บาท\n"
"ราคาต่อแปลง: 582,300 บาท\n"
"ทำสัญญา: 10,000 บาท ต่อแปลง\n"
"เงินดาวน์: 48,300 บาท ต่อแปลง\n"
"ค่าโอนกรรมสิทธิ์รวม (2 แปลง): ประมาณ 9,000 บาท\n"
"ค่าจดจำนอง 1% ของยอดกู้ (10,963 บาท ต่อแปลง)"
)
pdf.chapter_body(land_info)
# เนื้อหาตาราง 2: ผ่อนรายเดือน
pdf.chapter_title("ตารางผ่อนรายเดือน (หลังจดจำนอง)")
table_data = [
["ระยะเวลาผ่อน", "แปลงที่ 1", "แปลงที่ 2", "หมายเหตุ"],
["5 ปี", "11,665", "12,731", "ผ่อนสั้น ดอกเบี้ยน้อย"],
["10 ปี", "7,518", "8,211", "ผ่อนกลาง"],
["15 ปี", "6,290", "6,869", "ยอดผ่อนต่ำ"],
["20 ปี", "5,770", "6,302", "วางแผนระยะยาว"],
["25 ปี", "5,519", "6,027", "ภาระเบา"],
["30 ปี", "5,390", "5,887", "ผ่อนยาว ค่างวดต่ำสุด"]
]
pdf.add_table(table_data, 45)
# คำอธิบายเพิ่มเติม
explanation = (
"หมายเหตุ:\n"
"- ตัวเลขเป็นการประมาณจากยอดหลังดาวน์ โดยรวมค่าจดจำนองไว้แล้ว\n"
"- ลูกค้าสามารถเลือกผ่อนระยะเวลาได้ตามรายได้\n"
"- ผ่อนครบ รับโฉนดทันที\n"
"- ทำสัญญาที่สำนักงาน ถูกต้องตามกฎหมาย พร้อมพาไปดูที่จริง"
)
pdf.chapter_body(explanation)
# บันทึกไฟล์ PDF
output_path = "/mnt/data/ตารางที่ดินและการผ่อน.pdf"
pdf.output(output_path)
output_path