diff --git a/src/lib/pdf/pdfVerbrauchsausweisWohnen.ts b/src/lib/pdf/pdfVerbrauchsausweisWohnen.ts index 53e426d8..6c1985c9 100644 --- a/src/lib/pdf/pdfVerbrauchsausweisWohnen.ts +++ b/src/lib/pdf/pdfVerbrauchsausweisWohnen.ts @@ -6,6 +6,7 @@ import * as fs from "fs" import moment from "moment"; import { PDFDocument, PDFFont, PDFImage, PDFPage, RotationTypes, StandardFonts, TextAlignment } from "pdf-lib"; import { addCheckMark } from "./utils/checkbox.js"; +import { addText } from "./utils/text.js"; /* -------------------------------- Pdf Tools ------------------------------- */ @@ -46,7 +47,7 @@ export async function pdfVerbrauchsausweisWohnen(ausweis: VerbrauchsausweisWohne const gebaeudetyp = fillFormField("gebaeudetyp", aufnahme.gebaeudetyp || "") - const adresse = fillFormField("adresse", objekt.adresse) + const adresse = fillFormField("adresse", objekt.adresse || "") const gebaeudeteil = fillFormField("gebaeudeteil", aufnahme.gebaeudeteil || "") @@ -55,7 +56,7 @@ export async function pdfVerbrauchsausweisWohnen(ausweis: VerbrauchsausweisWohne const baujahr_heizung = fillFormField("baujahr_heizung", aufnahme.baujahr_heizung?.toString()) - const einheiten = fillFormField("einheiten", aufnahme.einheiten?.toString()) + const einheiten = fillFormField("einheiten", (aufnahme.einheiten || 1).toString()) const nutzflaeche = fillFormField("nutzflaeche", `${aufnahme.nutzflaeche?.toString()}m²`) @@ -153,6 +154,22 @@ export async function pdfVerbrauchsausweisWohnen(ausweis: VerbrauchsausweisWohne const pfeilWidth = 20 const margin = 5; + // Buchstaben hinzufügen und hervorheben + const klassen: [string, number][] = [ + ["A+", 94], + ["A", 136.5], + ["B", 175], + ["C", 215], + ["D", 264], + ["E", 320], + ["F", 382], + ["G", 447], + ["H", 495], + ] + for (const klasse of klassen) { + addText(page, klasse[0], klasse[1], height - 227, 12, berechnungen?.energieEffizienzKlasse === klasse[0] ? bold : font) + } + page.drawImage(pfeilNachUnten, { x: endenergieverbrauchTranslationX, y: height - 212, @@ -319,11 +336,11 @@ export async function pdfVerbrauchsausweisWohnen(ausweis: VerbrauchsausweisWohne addVerbrauch( moment(ausweis.startdatum).format("MM.YYYY"), moment(ausweis.startdatum).add(3, "years").format("MM.YYYY"), - aufnahme.brennstoff_1, + aufnahme.brennstoff_1 || "", berechnungen?.brennstoff_1.primaerenergiefaktor.toString(), - Math.round(berechnungen?.energieVerbrauchGesamt_1).toString(), + Math.round(berechnungen?.energieVerbrauchGesamt_1 || 0).toString(), "0", - Math.round(berechnungen?.energieVerbrauchHeizung_1).toString(), + Math.round(berechnungen?.energieVerbrauchHeizung_1 || 0).toString(), berechnungen?.durchschnittsKlimafaktor.toString() ); } else { @@ -331,11 +348,11 @@ export async function pdfVerbrauchsausweisWohnen(ausweis: VerbrauchsausweisWohne addVerbrauch( moment(ausweis.startdatum).format("MM.YYYY"), moment(ausweis.startdatum).add(3, "years").format("MM.YYYY"), - aufnahme.brennstoff_1, + aufnahme.brennstoff_1 || "", berechnungen?.brennstoff_1.primaerenergiefaktor.toString(), - Math.round(berechnungen?.energieVerbrauchGesamt_1).toString(), - Math.round(berechnungen?.energieVerbrauchWarmwasser_1).toString(), - Math.round(berechnungen?.energieVerbrauchHeizung_1).toString(), + Math.round(berechnungen?.energieVerbrauchGesamt_1 || 0).toString(), + Math.round(berechnungen?.energieVerbrauchWarmwasser_1 || 0).toString(), + Math.round(berechnungen?.energieVerbrauchHeizung_1 || 0).toString(), berechnungen?.durchschnittsKlimafaktor.toString() ); } @@ -344,11 +361,11 @@ export async function pdfVerbrauchsausweisWohnen(ausweis: VerbrauchsausweisWohne addVerbrauch( moment(ausweis.startdatum).format("MM.YYYY"), moment(ausweis.startdatum).add(3, "years").format("MM.YYYY"), - aufnahme.brennstoff_2, + aufnahme.brennstoff_2 || "", berechnungen?.brennstoff_2.primaerenergiefaktor.toString(), - Math.round(berechnungen?.energieVerbrauchGesamt_2).toString(), - Math.round(berechnungen?.energieVerbrauchWarmwasser_2).toString(), - Math.round(berechnungen?.energieVerbrauchHeizung_2).toString(), + Math.round(berechnungen?.energieVerbrauchGesamt_2 || 0).toString(), + Math.round(berechnungen?.energieVerbrauchWarmwasser_2 || 0).toString(), + Math.round(berechnungen?.energieVerbrauchHeizung_2 || 0).toString(), berechnungen?.durchschnittsKlimafaktor.toString() ); } @@ -363,8 +380,8 @@ export async function pdfVerbrauchsausweisWohnen(ausweis: VerbrauchsausweisWohne moment(ausweis.startdatum).add(3, "years").format("MM.YYYY"), "Warmwasserzuschlag", berechnungen?.primaerfaktorww.toString(), - Math.round(berechnungen?.energieVerbrauchWarmwasser_1).toString(), - Math.round(berechnungen?.energieVerbrauchWarmwasser_1).toString(), + Math.round(berechnungen?.energieVerbrauchWarmwasser_1 || 0).toString(), + Math.round(berechnungen?.energieVerbrauchWarmwasser_1 || 0).toString(), "0", "0" ); @@ -381,9 +398,9 @@ export async function pdfVerbrauchsausweisWohnen(ausweis: VerbrauchsausweisWohne moment(ausweis.startdatum).add(3, "years").format("MM.YYYY"), "Leerstandszuschlag", berechnungen?.brennstoff_1.primaerenergiefaktor.toString(), - Math.round(berechnungen?.leerstandsZuschlagHeizung + berechnungen?.leerstandsZuschlagWarmwasser).toString(), - Math.round(berechnungen?.leerstandsZuschlagWarmwasser).toString(), - Math.round(berechnungen?.leerstandsZuschlagHeizung).toString(), + Math.round((berechnungen?.leerstandsZuschlagHeizung || 0) + (berechnungen?.leerstandsZuschlagWarmwasser || 0)).toString(), + Math.round((berechnungen?.leerstandsZuschlagWarmwasser || 0)).toString(), + Math.round((berechnungen?.leerstandsZuschlagHeizung || 0)).toString(), berechnungen?.durchschnittsKlimafaktor.toString() ); } else { @@ -392,7 +409,7 @@ export async function pdfVerbrauchsausweisWohnen(ausweis: VerbrauchsausweisWohne moment(ausweis.startdatum).add(3, "years").format("MM.YYYY"), "Leerstandszuschlag", berechnungen?.brennstoff_1.primaerenergiefaktor.toString(), - Math.round(berechnungen?.leerstandsZuschlagHeizung + berechnungen?.leerstandsZuschlagWarmwasser).toString(), + Math.round((berechnungen?.leerstandsZuschlagHeizung || 0) + (berechnungen?.leerstandsZuschlagWarmwasser || 0)).toString(), "0", "0", berechnungen?.durchschnittsKlimafaktor.toString() @@ -411,7 +428,7 @@ export async function pdfVerbrauchsausweisWohnen(ausweis: VerbrauchsausweisWohne moment(ausweis.startdatum).add(3, "years").format("MM.YYYY"), "Leerstandszuschlag", berechnungen?.primaerfaktorww.toString(), - Math.round(berechnungen?.kuehlungsZuschlag).toString(), + Math.round(berechnungen?.kuehlungsZuschlag || 0).toString(), "0", "0", "1.8" diff --git a/src/lib/pdf/utils/text.ts b/src/lib/pdf/utils/text.ts new file mode 100644 index 00000000..1a175e2e --- /dev/null +++ b/src/lib/pdf/utils/text.ts @@ -0,0 +1,7 @@ +import { PDFField, PDFFont, PDFPage } from "pdf-lib"; + +export function addText(page: PDFPage, text: string, x: number, y: number, size: number, font: PDFFont) { + page.drawText(text, { + font, x, y, size + }) +} \ No newline at end of file