from fpdf import FPDF
# สร้าง PDF ตารางฝึกวอลเลย์บอล
class PDF(FPDF):
self.set_font("Arial", "B", 14)
self.cell(0, 10, "ตารางฝึกวอลเลย์บอลคนเดียว (เน้นแก้ไม่ยกแขนตอนกระโดดตบ)", 0, 1, "C")
self.ln(5)
def chapter_title(self, day, title):
self.set_font("Arial", "B", 12)
self.cell(0, 10, f"{day}: {title}", 0, 1, "L")
def chapter_body(self, activities):
self.set_font("Arial", "", 11)
for act, amount in activities:
self.multi_cell(0, 8, f"- {act} ({amount})")
self.ln(3)
# สร้างข้อมูลสำหรับ 7 วัน
training_schedule = [
("Day 1", "เริ่มต้นเบา ๆ", [
("วอร์มร่างกาย + ยืดกล้ามเนื้อ", "5 นาที"),
("ชูแขนท่าตบเฉย ๆ", "20 ครั้ง"),
("เดาะบอลด้วยปลายนิ้ว", "50 ครั้ง"),
("กระโดดยกแขน (ไม่มีบอล)", "10 ครั้ง"),
("เซตใส่ผนัง", "30 ครั้ง")
]),
("Day 2", "ฝึกจังหวะเข้าตบ", [
("วิ่ง 3 ก้าว + กระโดดยกแขน", "10 รอบ"),
("เดาะบอลด้วยแขน", "30 ครั้ง"),
("เซตบอลเอง + ตบเบา ๆ", "10 ครั้ง"),
("เสิร์ฟใส่เป้า", "20 ครั้ง")
]),
("Day 3", "เสริมกล้ามเนื้อ", [
("กระโดดยกแขนสวิงเร็ว", "10 ครั้ง"),
("ท่าตบช้า ๆ หน้ากระจก", "10 รอบ"),
("กระโดดตบใส่กำแพง", "15 ครั้ง"),
("Plank + Sit-up", "2 เซต")
]),
("Day 4", "พักฟื้นเบา ๆ", [
("เดาะบอลด้วยปลายนิ้ว", "100 ครั้ง"),
("เซตบอลขึ้นสูง", "50 ครั้ง"),
("รับบอลจากกำแพง", "30 ครั้ง"),
("ยกแขนหมุนตัวกลางอากาศ", "10 ครั้ง")
]),
("Day 5", "ทบทวนท่าตบ", [
("วิ่งเข้า + กระโดดตบเบา", "15 รอบ"),
("กระโดดตบจริง", "5 ครั้ง × 3 เซต"),
("ท่าตบหน้ากระจก", "20 ครั้ง"),
("เสิร์ฟใส่เป้า", "30 ครั้ง")
]),
("Day 6", "เพิ่มความเร็ว", [
("เข้าจังหวะเร็ว + กระโดด", "10 ครั้ง"),
("กระโดดตบจริง", "20 ครั้ง"),
("เดาะบอล + ยกแขนตบ", "20 ครั้ง"),
("เซต + วิ่งเข้าตบ", "10 รอบ")
]),
("Day 7", "ประเมินและรวมทุกทักษะ", [
("วอร์ม + ยืด", "5 นาที"),
("เดาะบอล (แขน/นิ้ว)", "50 ครั้ง"),
("กระโดดยกแขนตบ", "20 ครั้ง"),
("ถ่ายวิดีโอตัวเอง", "1 คลิป"),
("สรุปข้อดี-ข้อปรับปรุง", "10 นาที")
]),
]
# สร้าง PDF และใส่ข้อมูล
pdf = PDF()
pdf.add_page()
for day, title, activities in training_schedule:
pdf.chapter_title(day, title)
pdf.chapter_body(activities)
# บันทึกไฟล์
output_path = "/mnt/data/ตารางฝึกวอลเลย์บอลคนเดียว_7วัน.pdf"
pdf.output(output_path)
output_path
}
ZnJvbSBmcGRmIGltcG9ydCBGUERGCgojIOC4quC4o+C5ieC4suC4hyBQREYg4LiV4Liy4Lij4Liy4LiH4Lid4Li24LiB4Lin4Lit4Lil4LmA4Lil4Lii4LmM4Lia4Lit4LilCmNsYXNzIFBERihGUERGKToKICAgIGRlZiBoZWFkZXIoc2VsZik6CiAgICAgICAgc2VsZi5zZXRfZm9udCgiQXJpYWwiLCAiQiIsIDE0KQogICAgICAgIHNlbGYuY2VsbCgwLCAxMCwgIuC4leC4suC4o+C4suC4h+C4neC4tuC4geC4p+C4reC4peC5gOC4peC4ouC5jOC4muC4reC4peC4hOC4meC5gOC4lOC4teC4ouC4pyAo4LmA4LiZ4LmJ4LiZ4LmB4LiB4LmJ4LmE4Lih4LmI4Lii4LiB4LmB4LiC4LiZ4LiV4Lit4LiZ4LiB4Lij4Liw4LmC4LiU4LiU4LiV4LiaKSIsIDAsIDEsICJDIikKICAgICAgICBzZWxmLmxuKDUpCgogICAgZGVmIGNoYXB0ZXJfdGl0bGUoc2VsZiwgZGF5LCB0aXRsZSk6CiAgICAgICAgc2VsZi5zZXRfZm9udCgiQXJpYWwiLCAiQiIsIDEyKQogICAgICAgIHNlbGYuY2VsbCgwLCAxMCwgZiJ7ZGF5fToge3RpdGxlfSIsIDAsIDEsICJMIikKCiAgICBkZWYgY2hhcHRlcl9ib2R5KHNlbGYsIGFjdGl2aXRpZXMpOgogICAgICAgIHNlbGYuc2V0X2ZvbnQoIkFyaWFsIiwgIiIsIDExKQogICAgICAgIGZvciBhY3QsIGFtb3VudCBpbiBhY3Rpdml0aWVzOgogICAgICAgICAgICBzZWxmLm11bHRpX2NlbGwoMCwgOCwgZiItIHthY3R9ICh7YW1vdW50fSkiKQogICAgICAgIHNlbGYubG4oMykKCiMg4Liq4Lij4LmJ4Liy4LiH4LiC4LmJ4Lit4Lih4Li54Lil4Liq4Liz4Lir4Lij4Lix4LiaIDcg4Lin4Lix4LiZCnRyYWluaW5nX3NjaGVkdWxlID0gWwogICAgKCJEYXkgMSIsICLguYDguKPguLTguYjguKHguJXguYnguJnguYDguJrguLIg4LmGIiwgWwogICAgICAgICgi4Lin4Lit4Lij4LmM4Lih4Lij4LmI4Liy4LiH4LiB4Liy4LiiICsg4Lii4Li34LiU4LiB4Lil4LmJ4Liy4Lih4LmA4LiZ4Li34LmJ4LitIiwgIjUg4LiZ4Liy4LiX4Li1IiksCiAgICAgICAgKCLguIrguLnguYHguILguJnguJfguYjguLLguJXguJrguYDguInguKIg4LmGIiwgIjIwIOC4hOC4o+C4seC5ieC4hyIpLAogICAgICAgICgi4LmA4LiU4Liy4Liw4Lia4Lit4Lil4LiU4LmJ4Lin4Lii4Lib4Lil4Liy4Lii4LiZ4Li04LmJ4LinIiwgIjUwIOC4hOC4o+C4seC5ieC4hyIpLAogICAgICAgICgi4LiB4Lij4Liw4LmC4LiU4LiU4Lii4LiB4LmB4LiC4LiZICjguYTguKHguYjguKHguLXguJrguK3guKUpIiwgIjEwIOC4hOC4o+C4seC5ieC4hyIpLAogICAgICAgICgi4LmA4LiL4LiV4LmD4Liq4LmI4Lic4LiZ4Lix4LiHIiwgIjMwIOC4hOC4o+C4seC5ieC4hyIpCiAgICBdKSwKICAgICgiRGF5IDIiLCAi4Lid4Li24LiB4LiI4Lix4LiH4Lir4Lin4Liw4LmA4LiC4LmJ4Liy4LiV4LiaIiwgWwogICAgICAgICgi4Lin4Li04LmI4LiHIDMg4LiB4LmJ4Liy4LinICsg4LiB4Lij4Liw4LmC4LiU4LiU4Lii4LiB4LmB4LiC4LiZIiwgIjEwIOC4o+C4reC4miIpLAogICAgICAgICgi4LmA4LiU4Liy4Liw4Lia4Lit4Lil4LiU4LmJ4Lin4Lii4LmB4LiC4LiZIiwgIjMwIOC4hOC4o+C4seC5ieC4hyIpLAogICAgICAgICgi4LmA4LiL4LiV4Lia4Lit4Lil4LmA4Lit4LiHICsg4LiV4Lia4LmA4Lia4LiyIOC5hiIsICIxMCDguITguKPguLHguYnguIciKSwKICAgICAgICAoIuC5gOC4quC4tOC4o+C5jOC4n+C5g+C4quC5iOC5gOC4m+C5ieC4siIsICIyMCDguITguKPguLHguYnguIciKQogICAgXSksCiAgICAoIkRheSAzIiwgIuC5gOC4quC4o+C4tOC4oeC4geC4peC5ieC4suC4oeC5gOC4meC4t+C5ieC4rSIsIFsKICAgICAgICAoIuC4geC4o+C4sOC5guC4lOC4lOC4ouC4geC5geC4guC4meC4quC4p+C4tOC4h+C5gOC4o+C5h+C4pyIsICIxMCDguITguKPguLHguYnguIciKSwKICAgICAgICAoIuC4l+C5iOC4suC4leC4muC4iuC5ieC4siDguYYg4Lir4LiZ4LmJ4Liy4LiB4Lij4Liw4LiI4LiBIiwgIjEwIOC4o+C4reC4miIpLAogICAgICAgICgi4LiB4Lij4Liw4LmC4LiU4LiU4LiV4Lia4LmD4Liq4LmI4LiB4Liz4LmB4Lie4LiHIiwgIjE1IOC4hOC4o+C4seC5ieC4hyIpLAogICAgICAgICgiUGxhbmsgKyBTaXQtdXAiLCAiMiDguYDguIvguJUiKQogICAgXSksCiAgICAoIkRheSA0IiwgIuC4nuC4seC4geC4n+C4t+C5ieC4meC5gOC4muC4siDguYYiLCBbCiAgICAgICAgKCLguYDguJTguLLguLDguJrguK3guKXguJTguYnguKfguKLguJvguKXguLLguKLguJnguLTguYnguKciLCAiMTAwIOC4hOC4o+C4seC5ieC4hyIpLAogICAgICAgICgi4LmA4LiL4LiV4Lia4Lit4Lil4LiC4Li24LmJ4LiZ4Liq4Li54LiHIiwgIjUwIOC4hOC4o+C4seC5ieC4hyIpLAogICAgICAgICgi4Lij4Lix4Lia4Lia4Lit4Lil4LiI4Liy4LiB4LiB4Liz4LmB4Lie4LiHIiwgIjMwIOC4hOC4o+C4seC5ieC4hyIpLAogICAgICAgICgi4Lii4LiB4LmB4LiC4LiZ4Lir4Lih4Li44LiZ4LiV4Lix4Lin4LiB4Lil4Liy4LiH4Lit4Liy4LiB4Liy4LioIiwgIjEwIOC4hOC4o+C4seC5ieC4hyIpCiAgICBdKSwKICAgICgiRGF5IDUiLCAi4LiX4Lia4LiX4Lin4LiZ4LiX4LmI4Liy4LiV4LiaIiwgWwogICAgICAgICgi4Lin4Li04LmI4LiH4LmA4LiC4LmJ4LiyICsg4LiB4Lij4Liw4LmC4LiU4LiU4LiV4Lia4LmA4Lia4LiyIiwgIjE1IOC4o+C4reC4miIpLAogICAgICAgICgi4LiB4Lij4Liw4LmC4LiU4LiU4LiV4Lia4LiI4Lij4Li04LiHIiwgIjUg4LiE4Lij4Lix4LmJ4LiHIMOXIDMg4LmA4LiL4LiVIiksCiAgICAgICAgKCLguJfguYjguLLguJXguJrguKvguJnguYnguLLguIHguKPguLDguIjguIEiLCAiMjAg4LiE4Lij4Lix4LmJ4LiHIiksCiAgICAgICAgKCLguYDguKrguLTguKPguYzguJ/guYPguKrguYjguYDguJvguYnguLIiLCAiMzAg4LiE4Lij4Lix4LmJ4LiHIikKICAgIF0pLAogICAgKCJEYXkgNiIsICLguYDguJ7guLTguYjguKHguITguKfguLLguKHguYDguKPguYfguKciLCBbCiAgICAgICAgKCLguYDguILguYnguLLguIjguLHguIfguKvguKfguLDguYDguKPguYfguKcgKyDguIHguKPguLDguYLguJTguJQiLCAiMTAg4LiE4Lij4Lix4LmJ4LiHIiksCiAgICAgICAgKCLguIHguKPguLDguYLguJTguJTguJXguJrguIjguKPguLTguIciLCAiMjAg4LiE4Lij4Lix4LmJ4LiHIiksCiAgICAgICAgKCLguYDguJTguLLguLDguJrguK3guKUgKyDguKLguIHguYHguILguJnguJXguJoiLCAiMjAg4LiE4Lij4Lix4LmJ4LiHIiksCiAgICAgICAgKCLguYDguIvguJUgKyDguKfguLTguYjguIfguYDguILguYnguLLguJXguJoiLCAiMTAg4Lij4Lit4LiaIikKICAgIF0pLAogICAgKCJEYXkgNyIsICLguJvguKPguLDguYDguKHguLTguJnguYHguKXguLDguKPguKfguKHguJfguLjguIHguJfguLHguIHguKnguLAiLCBbCiAgICAgICAgKCLguKfguK3guKPguYzguKEgKyDguKLguLfguJQiLCAiNSDguJnguLLguJfguLUiKSwKICAgICAgICAoIuC5gOC4lOC4suC4sOC4muC4reC4pSAo4LmB4LiC4LiZL+C4meC4tOC5ieC4pykiLCAiNTAg4LiE4Lij4Lix4LmJ4LiHIiksCiAgICAgICAgKCLguIHguKPguLDguYLguJTguJTguKLguIHguYHguILguJnguJXguJoiLCAiMjAg4LiE4Lij4Lix4LmJ4LiHIiksCiAgICAgICAgKCLguJbguYjguLLguKLguKfguLTguJTguLXguYLguK3guJXguLHguKfguYDguK3guIciLCAiMSDguITguKXguLTguJsiKSwKICAgICAgICAoIuC4quC4o+C4uOC4m+C4guC5ieC4reC4lOC4tS3guILguYnguK3guJvguKPguLHguJrguJvguKPguLjguIciLCAiMTAg4LiZ4Liy4LiX4Li1IikKICAgIF0pLApdCgojIOC4quC4o+C5ieC4suC4hyBQREYg4LmB4Lil4Liw4LmD4Liq4LmI4LiC4LmJ4Lit4Lih4Li54LilCnBkZiA9IFBERigpCnBkZi5hZGRfcGFnZSgpCgpmb3IgZGF5LCB0aXRsZSwgYWN0aXZpdGllcyBpbiB0cmFpbmluZ19zY2hlZHVsZToKICAgIHBkZi5jaGFwdGVyX3RpdGxlKGRheSwgdGl0bGUpCiAgICBwZGYuY2hhcHRlcl9ib2R5KGFjdGl2aXRpZXMpCgojIOC4muC4seC4meC4l+C4tuC4geC5hOC4n+C4peC5jApvdXRwdXRfcGF0aCA9ICIvbW50L2RhdGEv4LiV4Liy4Lij4Liy4LiH4Lid4Li24LiB4Lin4Lit4Lil4LmA4Lil4Lii4LmM4Lia4Lit4Lil4LiE4LiZ4LmA4LiU4Li14Lii4LinXzfguKfguLHguJkucGRmIgpwZGYub3V0cHV0KG91dHB1dF9wYXRoKQoKb3V0cHV0X3BhdGgKCn0=
from fpdf import FPDF
# สร้าง PDF ตารางฝึกวอลเลย์บอล
class PDF(FPDF):
def header(self):
self.set_font("Arial", "B", 14)
self.cell(0, 10, "ตารางฝึกวอลเลย์บอลคนเดียว (เน้นแก้ไม่ยกแขนตอนกระโดดตบ)", 0, 1, "C")
self.ln(5)
def chapter_title(self, day, title):
self.set_font("Arial", "B", 12)
self.cell(0, 10, f"{day}: {title}", 0, 1, "L")
def chapter_body(self, activities):
self.set_font("Arial", "", 11)
for act, amount in activities:
self.multi_cell(0, 8, f"- {act} ({amount})")
self.ln(3)
# สร้างข้อมูลสำหรับ 7 วัน
training_schedule = [
("Day 1", "เริ่มต้นเบา ๆ", [
("วอร์มร่างกาย + ยืดกล้ามเนื้อ", "5 นาที"),
("ชูแขนท่าตบเฉย ๆ", "20 ครั้ง"),
("เดาะบอลด้วยปลายนิ้ว", "50 ครั้ง"),
("กระโดดยกแขน (ไม่มีบอล)", "10 ครั้ง"),
("เซตใส่ผนัง", "30 ครั้ง")
]),
("Day 2", "ฝึกจังหวะเข้าตบ", [
("วิ่ง 3 ก้าว + กระโดดยกแขน", "10 รอบ"),
("เดาะบอลด้วยแขน", "30 ครั้ง"),
("เซตบอลเอง + ตบเบา ๆ", "10 ครั้ง"),
("เสิร์ฟใส่เป้า", "20 ครั้ง")
]),
("Day 3", "เสริมกล้ามเนื้อ", [
("กระโดดยกแขนสวิงเร็ว", "10 ครั้ง"),
("ท่าตบช้า ๆ หน้ากระจก", "10 รอบ"),
("กระโดดตบใส่กำแพง", "15 ครั้ง"),
("Plank + Sit-up", "2 เซต")
]),
("Day 4", "พักฟื้นเบา ๆ", [
("เดาะบอลด้วยปลายนิ้ว", "100 ครั้ง"),
("เซตบอลขึ้นสูง", "50 ครั้ง"),
("รับบอลจากกำแพง", "30 ครั้ง"),
("ยกแขนหมุนตัวกลางอากาศ", "10 ครั้ง")
]),
("Day 5", "ทบทวนท่าตบ", [
("วิ่งเข้า + กระโดดตบเบา", "15 รอบ"),
("กระโดดตบจริง", "5 ครั้ง × 3 เซต"),
("ท่าตบหน้ากระจก", "20 ครั้ง"),
("เสิร์ฟใส่เป้า", "30 ครั้ง")
]),
("Day 6", "เพิ่มความเร็ว", [
("เข้าจังหวะเร็ว + กระโดด", "10 ครั้ง"),
("กระโดดตบจริง", "20 ครั้ง"),
("เดาะบอล + ยกแขนตบ", "20 ครั้ง"),
("เซต + วิ่งเข้าตบ", "10 รอบ")
]),
("Day 7", "ประเมินและรวมทุกทักษะ", [
("วอร์ม + ยืด", "5 นาที"),
("เดาะบอล (แขน/นิ้ว)", "50 ครั้ง"),
("กระโดดยกแขนตบ", "20 ครั้ง"),
("ถ่ายวิดีโอตัวเอง", "1 คลิป"),
("สรุปข้อดี-ข้อปรับปรุง", "10 นาที")
]),
]
# สร้าง PDF และใส่ข้อมูล
pdf = PDF()
pdf.add_page()
for day, title, activities in training_schedule:
pdf.chapter_title(day, title)
pdf.chapter_body(activities)
# บันทึกไฟล์
output_path = "/mnt/data/ตารางฝึกวอลเลย์บอลคนเดียว_7วัน.pdf"
pdf.output(output_path)
output_path
}