Refactor code structure for improved readability and maintainability
This commit is contained in:
100
scripts/fill-sample-template.js
Normal file
100
scripts/fill-sample-template.js
Normal file
@@ -0,0 +1,100 @@
|
||||
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) })
|
||||
Reference in New Issue
Block a user