windows fix #1

Open
dominikri wants to merge 5 commits from windows into main
Showing only changes of commit e2855e9161 - Show all commits

View file

@ -10,11 +10,11 @@ from fillpdf import fillpdfs
from pdfrw import PdfReader, PdfWriter
# Change to your needs
start_date = "2024-10-30"
end_date = "2024-11-03"
start_date = "2025-10-29"
end_date = "2025-11-02"
event_org = "Verein der Freunde und Förderer der Bundesfachschaftentagung Elektrotechnik e.V."
event_name = "95. Bundesfachschaftentagung Elektrotechnik"
attendees_csv = "95_teilnehmer.csv"
event_name = "97. Bundesfachschaftentagung Elektrotechnik"
attendees_csv = "97_teilnehmer.csv"
empty_sheets = 1
template_form = "Teilnehmendenliste_FR_22_23_final.pdf"
@ -22,7 +22,7 @@ template_form = "Teilnehmendenliste_FR_22_23_final.pdf"
start = datetime.date.fromisoformat(start_date)
end = datetime.date.fromisoformat(end_date)
event_period = f'{start.strftime("%d.%m")} - {end.strftime("%d.%m.%y")}'
event_period = f'{start.strftime("%d.%m.%y")} - {end.strftime("%d.%m.%y")}'
days = int((end - start).days)
date_list = [(start + datetime.timedelta(days=i)).strftime('%d.%m.%y') for i in range(days + 1)]
@ -34,7 +34,7 @@ form_mapping = [("6", "20", "21"), ("19", "40", "41"), ("18", "39", "22"),
def read_csv(csv_path):
try:
csvfile = open(csv_path, newline='')
csvfile = open(csv_path, newline='', encoding='utf-8')
except FileNotFoundError:
print("[X] File {} not found!".format(csv_path))
sys.exit(1)
@ -44,24 +44,23 @@ def read_csv(csv_path):
persons = [{"Name": f"{t['Amtlicher Vorname'] if t['Amtlicher Vorname'] else t['Vorname']} {t['Nachname']}", "Hochschule": f"{t['Standort']}"} for t in reader if
t['Status'] == "Immatrikuliert"]
persons.sort(key=itemgetter("Hochschule", "Name"))
for idx, p in enumerate(persons):
p["Position"] = str(idx + 1)
return persons
def fill_template(template_path, persons_list, headers, output_path):
def fill_template(template_path, persons_list, headers, output_path, start_index=1):
fields = {}
for person, mapping in zip(persons_list, form_mapping):
fields[mapping[0]] = person["Position"]
for idx, (person, mapping) in enumerate(zip(persons_list, form_mapping), start=start_index):
fields[mapping[0]] = str(idx)
fields[mapping[1]] = person["Name"]
fields[mapping[2]] = person["Hochschule"]
fields = {**headers, **fields}
fillpdfs.write_fillable_pdf(input_pdf_path=template_path, output_pdf_path=output_path, data_dict=fields,
flatten=True)
flatten=False)
def create_pdf(output_pdf, form, persons_chunks, zeitraum, form_date, org_name, name, add_sheets):
@ -72,11 +71,13 @@ def create_pdf(output_pdf, form, persons_chunks, zeitraum, form_date, org_name,
form_reader = PdfReader(template_form)
writer.trailer.Info = form_reader.Info
person_index = 1 # Fortlaufende Nummerierung über alle Seiten
with tempfile.TemporaryDirectory() as workdir:
for persons_list in persons_chunks + [[] for i in range(add_sheets)]:
output_file_path = os.path.join(workdir, f'{output_file_name}{page}.pdf')
headers = {"1": page, "2": zeitraum, "3": form_date, "4": org_name, "5": name}
fill_template(template_path=form, persons_list=persons_list, headers=headers, output_path=output_file_path)
fill_template(template_path=form, persons_list=persons_list, headers=headers, output_path=output_file_path, start_index=person_index)
person_index += len(persons_list) # Erhöhe den Index für die nächste Seite
reader = PdfReader(output_file_path)
writer.addpages(reader.pages)
page += 1