from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import cm
def create_wirtschafts_pdf(filename="Arbeitsblatt_Wirtschaftskreislauf.pdf"):
# Seiteneinstellungen (A4 mit schlanken Rändern)
doc = SimpleDocTemplate(
filename,
pagesize=A4,
rightMargin=1.5*cm,
leftMargin=1.5*cm,
topMargin=1.5*cm,
bottomMargin=1.5*cm
)
styles = getSampleStyleSheet()
# Custom Styles
title_style = ParagraphStyle(
'DocTitle',
parent=styles['Normal'],
fontName='Helvetica-Bold',
fontSize=16,
leading=20,
textColor=colors.HexColor('#1F4E79'),
alignment=1, # Center
spaceAfter=2
)
subtitle_style = ParagraphStyle(
'DocSubTitle',
parent=styles['Normal'],
fontName='Helvetica-Oblique',
fontSize=10,
leading=12,
textColor=colors.HexColor('#555555'),
alignment=1, # Center
spaceAfter=10
)
section_heading = ParagraphStyle(
'SectionHeading',
parent=styles['Normal'],
fontName='Helvetica-Bold',
fontSize=11,
leading=14,
textColor=colors.HexColor('#1F4E79'),
spaceBefore=8,
spaceAfter=4
)
body_style = ParagraphStyle(
'BodyDark',
parent=styles['Normal'],
fontName='Helvetica',
fontSize=8.5,
leading=11,
textColor=colors.HexColor('#222222')
)
intro_style = ParagraphStyle(
'IntroText',
parent=styles['Normal'],
fontName='Helvetica',
fontSize=8.5,
leading=11,
textColor=colors.HexColor('#333333')
)
story = []
# Title & Subtitle
story.append(Paragraph("🎮 MISSION WIRTSCHAFT: Das Ökosystem des Geldes", title_style))
story.append(Paragraph("Arbeitsblatt: Der erweiterte Wirtschaftskreislauf", subtitle_style))
# Intro / Wortschatz Box
intro_html = """
<b>💡 Willkommen in der Wirtschaftssimulation!</b><br/>
Stell dir eine große Simulation wie <i>SimCity</i> vor: Alles hängt zusammen! Geld und Leistungen fließen ständig in einem ewigen Kreislauf zwischen den vier Hauptakteuren: <b>Staat</b>, <b>Unternehmen</b>, <b>Private Haushalte</b> und <b>Banken</b>. Fülle die Lücken aus, um das System stabil zu halten!<br/><br/>
<b>🔑 Wortschatz-Tresor:</b><br/>
<i>[ Güter • Dienstleistungen • Gehalt/Lohn • Steuern • Rahmenbedingungen • Gesetze • Geld • Beamte • Staatsaufträge • Einkommen • Privatem Verbrauch • sparen • Verfügung ]</i>
"""
intro_p = Paragraph(intro_html, intro_style)
intro_table = Table([[intro_p]], colWidths=[18*cm])
intro_table.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,-1), colors.HexColor('#F2F4F7')),
('PADDING', (0,0), (-1,-1), 8),
('BOX', (0,0), (-1,-1), 0.5, colors.HexColor('#D0D7DE')),
('VALIGN', (0,0), (-1,-1), 'MIDDLE'),
]))
story.append(intro_table)
story.append(Spacer(1, 8))
# Abschnitt 1
story.append(Paragraph("🧩 1. Die Logbücher der 4 Hauptakteure (Lückentext)", section_heading))
# Akteur-Box Generator
def make_actor_table(title, bg_color, border_color, text_html):
content = f"<b>{title}</b><br/>{text_html}"
p = Paragraph(content, body_style)
t = Table([[p]], colWidths=[18*cm])
t.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,-1), colors.HexColor(bg_color)),
('PADDING', (0,0), (-1,-1), 6),
('BOX', (0,0), (-1,-1), 0.5, colors.HexColor(border_color)),
('VALIGN', (0,0), (-1,-1), 'MIDDLE'),
]))
return t
# 1. Staat
staat_text = """
Legt die Spielregeln bzw. <b>_______________________</b> für das Handeln der Unternehmen und der privaten Haushalte fest. Dafür erlässt er <b>_______________________</b> und Bestimmungen. Um seine Aufgaben zu erfüllen, braucht der Staat <b>_______________________</b>. Diese bekommt er, indem er Abgaben in Form von Gebühren, Beiträgen und <b>_______________________</b> einhebt. Um seine Aufgaben auszuführen, beschäftigt der Staat Bürger als <b>_______________________</b> oder Angestellte im öffentlichen Dienst (z. B. Lehrer und Polizisten) und entlohnt diese. Der Staat erledigt nicht alle Aufgaben selbst. Stattdessen vergibt er <b>_______________________</b> an Unternehmen, etwa wenn ein neuer Autobahnabschnitt gebaut werden soll.
"""
story.append(make_actor_table("🏛️ Der Staat (Der Regelhüter & Versorger)", "#E6F0FA", "#B3CDE0", staat_text))
story.append(Spacer(1, 4))
# 2. Unternehmen
unternehmen_text = """
Die Hauptaufgabe ist die Herstellung von <b>_______________________</b> und <b>_______________________</b>. Um diese Leistungen zu erbringen, beschäftigen sie Mitarbeiter und zahlen ihnen für ihre Tätigkeit ein <b>_______________________</b>. An den Staat haben Unternehmen <b>_______________________</b> abzuführen.
"""
story.append(make_actor_table("🏢 Die Unternehmen (Die Macher & Produzenten)", "#EAF4EA", "#C2E0C2", unternehmen_text))
story.append(Spacer(1, 4))
# 3. Private Haushalte
haushalte_text = """
Unter privaten Haushalten versteht man eine Gemeinschaft von Personen, die eine wirtschaftliche Einheit bilden (Ein-Personen-Haushalte, Familien, WGs). Die einzelnen Mitglieder finden beim Staat oder bei den Unternehmen eine Beschäftigung. Für ihre Arbeit erhalten sie <b>_______________________</b>. An den Staat müssen sie Steuern bezahlen, von den Unternehmen kaufen sie, was sie zum Leben brauchen (<b>____________________________</b>). Wer arbeitslos ist, erhält staatliche Unterstützung (Sozialleistungen).
"""
story.append(make_actor_table("🏠 Private Haushalte (Die Konsumenten & Arbeitskräfte)", "#FFF4E6", "#FFE0B2", haushalte_text))
story.append(Spacer(1, 4))
# 4. Banken
banken_text = """
Nehmen finanzielle Mittel (Geld) von Haushalten und Unternehmen als Geldanlage entgegen, damit diese ihr Geld sicher <b>_______________________</b>. Sie stellen diesen aber auch finanzielle Mittel in Form von Krediten zur <b>_______________________</b>, damit z. B. Investitionen getätigt oder Häuser gebaut werden können.
"""
story.append(make_actor_table("🏦 Die Banken (Der Finanz-Motor)", "#F5E6FE", "#E1BEE7", banken_text))
story.append(Spacer(1, 8))
# Abschnitt 2: Quick-Check
story.append(Paragraph("⚡ 2. Quick-Check: Welcher Begriff passt?", section_heading))
qc_html = """
• 1. Du kaufst dir im Geschäft ein neues Ladekabel. ➡ <b>___________________________</b><br/>
• 2. Eine Lehrerin erhält Ende des Monats ihr Gehalt vom Staat. ➡ <b>___________________________</b><br/>
• 3. Die Gemeinde lässt eine neue Sporthalle von einer Baufirma errichten. ➡ <b>___________________________</b><br/>
• 4. Eine Familie nimmt bei der Sparkasse Geld für ein Haus auf. ➡ <b>___________________________</b>
"""
qc_p = Paragraph(qc_html, body_style)
qc_table = Table([[qc_p]], colWidths=[18*cm])
qc_table.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,-1), colors.HexColor('#FFFFFF')),
('PADDING', (0,0), (-1,-1), 6),
('BOX', (0,0), (-1,-1), 0.5, colors.HexColor('#CCCCCC')),
]))
story.append(qc_table)
# PDF erzeugen
doc.build(story)
print("PDF erfolgreich erstellt: Arbeitsblatt_Wirtschaftskreislauf.pdf")
if __name__ == "__main__":
create_wirtschafts_pdf()print('Hello world!')
To embed this project on your website, copy the following code and paste it into your website's HTML: