strength training pdf
from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle, PageBreak
from reportlab.lib import colors
from reportlab.lib.styles import getSampleStyleSheet
doc = SimpleDocTemplate("/mnt/data/fixed_progression_training_log.pdf")
styles = getSampleStyleSheet()
elements = []
# Fixed barbell progression
front_heavy = [92.5 + (i*2.5) for i in range(8)]
front_light = [70 for _ in range(8)]
front_medium = [82.5 + (i*2.5) for i in range(8)]
bench_heavy = [72.5 + (i*2.5) for i in range(8)]
bench_medium = [65 + (i*2.5) for i in range(8)]
press_light = [47.5 + (i*2.5) for i in range(8)]
deadlift_heavy = [130 + (i*5) for i in range(8)]
deadlift_light = [100 + (i*5) for i in range(8)]
# KB fixed plan
kb_plan = {
1: ("32 kg 10x10", "20 kg 5x1/side", "24 kg EMOM 10 min"),
2: ("32 kg 10x10", "20 kg 5x1/side", "24 kg EMOM 10 min"),
3: ("32 kg 12x10", "24 kg 4x1/side", "16-20 kg C&P 5x5"),
4: ("32 kg 12x10", "24 kg 4x1/side", "16-20 kg C&P 5x5"),
5: ("32 kg 8x10 + 48 kg 5x5", "24 kg 5x1/side", "32 kg EMOM 12 min"),
6: ("32 kg 8x10 + 48 kg 5x5", "24 kg 5x1/side", "32 kg EMOM 12 min"),
7: ("48 kg 10x5 + 32 kg 5x10", "24 kg 3x1/side", "16 kg C&P let"),
8: ("24 kg 5x10", "16-20 kg 3x1/side", "Fri / let")
}
for week in range(8):
w = week + 1
elements.append(Paragraph(f"<b>Uge {w}</b>", styles['Title']))
elements.append(Spacer(1,10))
# Sunday
elements.append(Paragraph("<b>Søndag – Heavy</b>", styles['Heading2']))
data = [
["Øvelse", "Plan", "Vægt", "✔ / Noter"],
["Front squat", "5x3", f"{front_heavy[week]} kg", ""],
["Incline bænk", "5x3", f"{bench_heavy[week]} kg", ""],
["Dødløft", "3x3", f"{deadlift_heavy[week]} kg", ""],
]
table = Table(data, colWidths=[140,90,90,140])
table.setStyle(TableStyle([
('GRID',(0,0),(-1,-1),0.5,colors.black),
('BACKGROUND',(0,0),(-1,0),colors.lightgrey)
]))
elements.append(table)
elements.append(Spacer(1,12))
# Monday KB
elements.append(Paragraph("<b>Mandag – KB</b>", styles['Heading2']))
data = [
["Øvelse", "Plan", "✔ / Noter"],
["Swings", kb_plan[w][0], ""],
["Get-ups", kb_plan[w][1], ""],
]
table = Table(data, colWidths=[180,180,100])
table.setStyle(TableStyle([
('GRID',(0,0),(-1,-1),0.5,colors.black),
('BACKGROUND',(0,0),(-1,0),colors.lightgrey)
]))
elements.append(table)
elements.append(Spacer(1,12))
# Tuesday
elements.append(Paragraph("<b>Tirsdag – Light</b>", styles['Heading2']))
data = [
["Øvelse", "Plan", "Vægt", "✔ / Noter"],
["Front squat", "3x5", f"{front_light[week]} kg", ""],
["Press", "3x5", f"{press_light[week]} kg", ""],
]
table = Table(data, colWidths=[140,90,90,140])
table.setStyle(TableStyle([
('GRID',(0,0),(-1,-1),0.5,colors.black),
('BACKGROUND',(0,0),(-1,0),colors.lightgrey)
]))
elements.append(table)
elements.append(Spacer(1,12))
# Wednesday KB
elements.append(Paragraph("<b>Onsdag – KB (let)</b>", styles['Heading2']))
data = [
["Øvelse", "Plan", "✔ / Noter"],
["Swings", "24 kg recovery swings", ""],
["Get-ups", "16-20 kg let", ""],
]
table = Table(data, colWidths=[180,180,100])
table.setStyle(TableStyle([
('GRID',(0,0),(-1,-1),0.5,colors.black),
('BACKGROUND',(0,0),(-1,0),colors.lightgrey)
]))
elements.append(table)
elements.append(Spacer(1,12))
# Thursday
elements.append(Paragraph("<b>Torsdag – Medium</b>", styles['Heading2']))
data = [
["Øvelse", "Plan", "Vægt", "✔ / Noter"],
["Front squat", "4x5", f"{front_medium[week]} kg", ""],
["Incline bænk", "4x5", f"{bench_medium[week]} kg", ""],
["Dødløft (let)", "3x5", f"{deadlift_light[week]} kg", ""],
]
table = Table(data, colWidths=[140,90,90,140])
table.setStyle(TableStyle([
('GRID',(0,0),(-1,-1),0.5,colors.black),
('BACKGROUND',(0,0),(-1,0),colors.lightgrey)
]))
elements.append(table)
elements.append(Spacer(1,12))
# Friday KB
elements.append(Paragraph("<b>Fredag – KB (valgfri)</b>", styles['Heading2']))
data = [
["Øvelse", "Plan", "✔ / Noter"],
["KB arbejde", kb_plan[w][2], ""],
]
table = Table(data, colWidths=[180,180,100])
table.setStyle(TableStyle([
('GRID',(0,0),(-1,-1),0.5,colors.black),
('BACKGROUND',(0,0),(-1,0),colors.lightgrey)
]))
elements.append(table)
elements.append(Spacer(1,12))
elements.append(PageBreak())
doc.build(elements)
"/mnt/data/fixed_progression_training_log.pdf"