✅ Migration completed: - server.js: Complete rewrite using docxtemplater + pizzip - server-old.js: Backup of original docx-templates implementation - package.json: Added docxtemplater and pizzip dependencies - Removed docx-templates dependency 🚀 New features: - True dynamic tables with {#array}{field}{/array} syntax - Unlimited table rows (no more fixed array indices) - New API endpoints: /analyze, /generate, /demo - Simplified template creation scripts 🎯 Template improvements: - Updated template syntax examples - Added dynamic-template.docx with loop syntax - Enhanced template analysis functionality 📊 Benefits: - Real dynamic table generation - Better template flexibility - Cleaner API design - Preserved SSL and WebDAV functionality
86 lines
4.8 KiB
JavaScript
86 lines
4.8 KiB
JavaScript
const fs = require('fs');
|
|
const path = require('path');
|
|
const { Document, Packer, Paragraph, TextRun, Table, TableRow, TableCell } = require('docx');
|
|
|
|
async function createTableTemplate() {
|
|
const doc = new Document({
|
|
sections: [{
|
|
properties: {},
|
|
children: [
|
|
new Paragraph({
|
|
children: [
|
|
new TextRun({
|
|
text: "TABELLEN DEMO DOKUMENT",
|
|
bold: true,
|
|
size: 32,
|
|
}),
|
|
],
|
|
}),
|
|
new Paragraph({ children: [new TextRun({ text: "" })] }),
|
|
new Paragraph({ children: [new TextRun({ text: "Projekt: ++projekt++", bold: true })] }),
|
|
new Paragraph({ children: [new TextRun({ text: "Datum: ++datum++" })] }),
|
|
new Paragraph({ children: [new TextRun({ text: "Ersteller: ++ersteller++" })] }),
|
|
new Paragraph({ children: [new TextRun({ text: "" })] }),
|
|
new Paragraph({
|
|
children: [new TextRun({ text: "MITARBEITERLISTE:", bold: true, size: 24 })],
|
|
}),
|
|
new Table({
|
|
rows: [
|
|
new TableRow({
|
|
children: [
|
|
new TableCell({ children: [new Paragraph({ children: [new TextRun({ text: "Nr.", bold: true })] })] }),
|
|
new TableCell({ children: [new Paragraph({ children: [new TextRun({ text: "Name", bold: true })] })] }),
|
|
new TableCell({ children: [new Paragraph({ children: [new TextRun({ text: "Position", bold: true })] })] }),
|
|
new TableCell({ children: [new Paragraph({ children: [new TextRun({ text: "Abteilung", bold: true })] })] }),
|
|
new TableCell({ children: [new Paragraph({ children: [new TextRun({ text: "E-Mail", bold: true })] })] }),
|
|
],
|
|
}),
|
|
new TableRow({
|
|
children: [
|
|
new TableCell({ children: [new Paragraph("++INS mitarbeiterRows++Nr: ++nr++")] }),
|
|
new TableCell({ children: [new Paragraph("++name++")] }),
|
|
new TableCell({ children: [new Paragraph("++position++")] }),
|
|
new TableCell({ children: [new Paragraph("++abteilung++")] }),
|
|
new TableCell({ children: [new Paragraph("++email++++/INS++")] }),
|
|
],
|
|
}),
|
|
],
|
|
}),
|
|
new Paragraph({ children: [new TextRun({ text: "" })] }),
|
|
new Paragraph({ children: [new TextRun({ text: "PROJEKTAUFGABEN:", bold: true, size: 24 })] }),
|
|
new Table({
|
|
rows: [
|
|
new TableRow({
|
|
children: [
|
|
new TableCell({ children: [new Paragraph({ children: [new TextRun({ text: "Nr.", bold: true })] })] }),
|
|
new TableCell({ children: [new Paragraph({ children: [new TextRun({ text: "Aufgabe", bold: true })] })] }),
|
|
new TableCell({ children: [new Paragraph({ children: [new TextRun({ text: "Status", bold: true })] })] }),
|
|
new TableCell({ children: [new Paragraph({ children: [new TextRun({ text: "Deadline", bold: true })] })] }),
|
|
],
|
|
}),
|
|
new TableRow({
|
|
children: [
|
|
new TableCell({ children: [new Paragraph("++INS aufgabenRows++Nr: ++nr++")] }),
|
|
new TableCell({ children: [new Paragraph("++titel++")] }),
|
|
new TableCell({ children: [new Paragraph("++status++")] }),
|
|
new TableCell({ children: [new Paragraph("++deadline++++/INS++")] }),
|
|
],
|
|
}),
|
|
],
|
|
}),
|
|
new Paragraph({ children: [new TextRun({ text: "" })] }),
|
|
new Paragraph({ children: [new TextRun({ text: "Zusammenfassung: ++zusammenfassung++" })] }),
|
|
new Paragraph({ children: [new TextRun({ text: "Status: ++status++" })] }),
|
|
],
|
|
}],
|
|
});
|
|
|
|
const buffer = await Packer.toBuffer(doc);
|
|
const templatePath = path.join(__dirname, 'templates', 'tabellen-template.docx');
|
|
fs.writeFileSync(templatePath, buffer);
|
|
|
|
console.log('✅ Tabellen-Template mit LOOP-Syntax erstellt');
|
|
}
|
|
|
|
createTableTemplate().catch(console.error);
|