import fs from 'fs' import { PDFDocument, StandardFonts, rgb } from 'pdf-lib' async function fill() { const templatePath = 'server/templates/mitgliedschaft-fillable.pdf' if (!fs.existsSync(templatePath)) { console.error('Template not found:', templatePath) process.exit(1) } const existingPdfBytes = fs.readFileSync(templatePath) const pdfDoc = await PDFDocument.load(existingPdfBytes) const form = pdfDoc.getForm() // Simple sample data const sample = { nachname: 'Müller', vorname: 'Anna', strasse: 'Hauptstr. 12', plz_ort: '60389 Frankfurt', geburtsdatum: '01.01.1990', telefon: '069 123456', email: 'anna.mueller@example.de', telefon_mobil: '0151 2345678', mitglied_aktiv: true, mitglied_passiv: false, sepa_mitglied: 'Anna Müller', sepa_kontoinhaber: 'Anna Müller', sepa_strasse: 'Hauptstr. 12', sepa_plz_ort: '60389 Frankfurt', sepa_bank: 'Sparkasse', sepa_iban: 'DE00123456781234567890', sepa_bic: 'PBNKDEFF', sepa_datum: '23.10.2025', sign_datum: '23.10.2025', page3_name: 'Müller', page3_vorname: 'Anna', page3_anschrift: 'Hauptstr. 12, 60389 Frankfurt', page3_telefon: '069 123456', page3_fax: '069 654321', page3_email: 'anna.mueller@example.de', page3_datum: '23.10.2025' } function safeSetText(name, value) { try { const f = form.getTextField(name) f.setText(value) } catch (e) { // ignore missing fields } } safeSetText('nachname', sample.nachname) safeSetText('vorname', sample.vorname) safeSetText('strasse', sample.strasse) safeSetText('plz_ort', sample.plz_ort) safeSetText('geburtsdatum', sample.geburtsdatum) safeSetText('telefon', sample.telefon) safeSetText('email', sample.email) safeSetText('telefon_mobil', sample.telefon_mobil) try { const cbA = form.getCheckBox('mitglied_aktiv') if (sample.mitglied_aktiv) cbA.check(); else cbA.uncheck() } catch(e) {} try { const cbP = form.getCheckBox('mitglied_passiv') if (sample.mitglied_passiv) cbP.check(); else cbP.uncheck() } catch(e) {} safeSetText('sepa_mitglied', sample.sepa_mitglied) safeSetText('sepa_kontoinhaber', sample.sepa_kontoinhaber) safeSetText('sepa_strasse', sample.sepa_strasse) safeSetText('sepa_plz_ort', sample.sepa_plz_ort) safeSetText('sepa_bank', sample.sepa_bank) safeSetText('sepa_iban', sample.sepa_iban) safeSetText('sepa_bic', sample.sepa_bic) safeSetText('sepa_datum', sample.sepa_datum) safeSetText('sign_datum', sample.sign_datum) // page3 fields safeSetText('page3_name', sample.page3_name) safeSetText('page3_vorname', sample.page3_vorname) safeSetText('page3_anschrift', sample.page3_anschrift) safeSetText('page3_telefon', sample.page3_telefon) safeSetText('page3_fax', sample.page3_fax) safeSetText('page3_email', sample.page3_email) safeSetText('page3_datum', sample.page3_datum) // flatten all fields try { form.flatten() } catch (e) {} const out = await pdfDoc.save() if (!fs.existsSync('temp')) fs.mkdirSync('temp') fs.writeFileSync('temp/mitgliedschaft-sample-filled.pdf', out) console.log('Wrote temp/mitgliedschaft-sample-filled.pdf') } fill().catch(e => { console.error(e); process.exit(1) })