Files
harheimertc/scripts/fill-sample-template.js
2025-10-23 09:15:46 +02:00

101 lines
3.2 KiB
JavaScript

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) })