PDF gefixt !!

This commit is contained in:
Jens Cornelsen
2025-04-15 17:49:58 +02:00
parent c583229cc8
commit cdfdb6c001
2 changed files with 266 additions and 108 deletions

View File

@@ -4,14 +4,12 @@ import { Enums } from "#lib/server/prisma.js";
import * as fs from "fs" import * as fs from "fs"
import moment from "moment"; import moment from "moment";
import { PDFDocument, PDFFont, PDFImage, PDFPage, StandardFonts } from "pdf-lib"; import { PDFDocument, PDFFont, PDFImage, PDFPage, StandardFonts } from "pdf-lib";
import { addCheckMark } from "./utils/checkbox.js";
import { addText } from "./utils/text.js"; import { addText } from "./utils/text.js";
import { addAnsichtsausweisLabel, addDatumGEG, addRegistriernummer } from "./utils/helpers.js"; import { addAnsichtsausweisLabel, addDatumGEG, addRegistriernummer } from "./utils/helpers.js";
import { getS3File } from "#lib/s3.js"; import { getS3File } from "#lib/s3.js";
import { endEnergieVerbrauchVerbrauchsausweisGewerbe_2016_Server } from "#lib/Berechnungen/VerbrauchsausweisGewerbe/VerbrauchsausweisGewerbe_2016_Server.js"; import { endEnergieVerbrauchVerbrauchsausweisGewerbe_2016_Server } from "#lib/Berechnungen/VerbrauchsausweisGewerbe/VerbrauchsausweisGewerbe_2016_Server.js";
export async function pdfVerbrauchsausweisGewerbe(ausweis: VerbrauchsausweisGewerbeClient, aufnahme: AufnahmeClient, objekt: ObjektClient, bilder: BildClient[], user: BenutzerClient, vorschau = true) { export async function pdfVerbrauchsausweisGewerbe(ausweis: VerbrauchsausweisGewerbeClient, aufnahme: AufnahmeClient, objekt: ObjektClient, bilder: BildClient[], user: BenutzerClient, vorschau = true) {
const VerbrauchsausweisWohnenGEG2024PDF = fs.readFileSync(new URL("../../../public/pdf/templates/GEG24_Nichtwohngebaeude.pdf", import.meta.url), "base64"); const VerbrauchsausweisWohnenGEG2024PDF = fs.readFileSync(new URL("../../../public/pdf/templates/GEG24_Nichtwohngebaeude.pdf", import.meta.url), "base64");
const pdf = await PDFDocument.load(VerbrauchsausweisWohnenGEG2024PDF) const pdf = await PDFDocument.load(VerbrauchsausweisWohnenGEG2024PDF)
@@ -104,7 +102,7 @@ export async function pdfVerbrauchsausweisGewerbe(ausweis: VerbrauchsausweisGewe
}) })
if (ausweis.warmwasser_enthalten) { if (ausweis.warmwasser_enthalten) {
pages[0].drawText(`${ausweis.brennstoff_1}, ${ausweis.brennstoff_2 || ""}`, { pages[3].drawText(`${ausweis.brennstoff_1}, ${ausweis.brennstoff_2 || ""}`, {
x: 211, x: 211,
y: height - 299, y: height - 299,
size: 10 size: 10
@@ -113,30 +111,73 @@ export async function pdfVerbrauchsausweisGewerbe(ausweis: VerbrauchsausweisGewe
if (aufnahme.lueftung === Enums.Lueftungskonzept.Fensterlueftung) { if (aufnahme.lueftung === Enums.Lueftungskonzept.Fensterlueftung) {
addCheckMark(pages[0], 213, height - 334) pages[0].drawText("x", {
x: 214,
y: height - 342,
size: 10,
font: bold
})
} else if (aufnahme.lueftung === Enums.Lueftungskonzept.Schachtlueftung) { } else if (aufnahme.lueftung === Enums.Lueftungskonzept.Schachtlueftung) {
addCheckMark(pages[0], 213, height - 345) pages[0].drawText("x", {
x: 214,
y: height - 353,
size: 10,
font: bold
})
} else if (aufnahme.lueftung === Enums.Lueftungskonzept.LueftungsanlageMitWaermerueckgewinnung) { } else if (aufnahme.lueftung === Enums.Lueftungskonzept.LueftungsanlageMitWaermerueckgewinnung) {
addCheckMark(pages[0], 355, height - 334) pages[0].drawText("x", {
x: 356,
y: height - 342,
size: 10,
font: bold
})
} else if (aufnahme.lueftung === Enums.Lueftungskonzept.LueftungsanlageOhneWaermerueckgewinnung) { } else if (aufnahme.lueftung === Enums.Lueftungskonzept.LueftungsanlageOhneWaermerueckgewinnung) {
addCheckMark(pages[0], 355, height - 345) pages[0].drawText("x", {
x: 356,
y: height - 353,
size: 10,
font: bold
})
} }
// Kühlung // Kühlung
if (aufnahme.kuehlung === "1") { if (aufnahme.kuehlung === "1" && aufnahme.kuehlung !== null) {
addCheckMark(pages[0], 213, height - 362.5) pages[0].drawText("x", {
} else { x: 356,
addCheckMark(pages[0], 355, height - 373.5) y: height - 370.5,
size: 10,
font: bold
})
} }
if (ausweis.ausstellgrund === Enums.Ausstellgrund.Neubau) { if (ausweis.ausstellgrund === Enums.Ausstellgrund.Neubau) {
addCheckMark(pages[0], 213, height - 406) pages[0].drawText("x", {
x: 214,
y: height - 414,
size: 10,
font: bold
})
} else if (ausweis.ausstellgrund === Enums.Ausstellgrund.Vermietung) { } else if (ausweis.ausstellgrund === Enums.Ausstellgrund.Vermietung) {
addCheckMark(pages[0], 213, height - 417) pages[0].drawText("x", {
x: 214,
y: height - 425,
size: 10,
font: bold
})
} else if (ausweis.ausstellgrund === Enums.Ausstellgrund.Modernisierung) { } else if (ausweis.ausstellgrund === Enums.Ausstellgrund.Modernisierung) {
addCheckMark(pages[0], 344.5, height - 406) pages[0].drawText("x", {
x: 345.5,
y: height - 414,
size: 10,
font: bold
})
} else if (ausweis.ausstellgrund === Enums.Ausstellgrund.Sonstiges) { } else if (ausweis.ausstellgrund === Enums.Ausstellgrund.Sonstiges) {
addCheckMark(pages[0], 463, height - 417) pages[0].drawText("x", {
x: 464,
y: height - 425,
size: 10,
font: bold
})
} }
// Aushangpflicht // Aushangpflicht
// addCheckMark(pages[0], 463, height - 406) // addCheckMark(pages[0], 463, height - 406)
@@ -162,11 +203,21 @@ export async function pdfVerbrauchsausweisGewerbe(ausweis: VerbrauchsausweisGewe
} }
} }
// Checkmark Angabe energetische Qualität des Gebäudes. // Checkmark Verbrauchsausweis.
addCheckMark(pages[0], 40, height - 550) pages[0].drawText("x", {
x: 41,
y: height - 558,
size: 10,
font: bold
})
// Datenerhebung durch Eigentümer // Datenerhebung durch Eigentümer
addCheckMark(pages[0], 295, height - 580) pages[0].drawText("x", {
x: 296.5,
y: height - 587.5,
size: 10,
font: bold
})
// Ausstellungsdatum // Ausstellungsdatum
pages[0].drawText(moment().format("DD.MM.YYYY"), { pages[0].drawText(moment().format("DD.MM.YYYY"), {
@@ -187,7 +238,7 @@ export async function pdfVerbrauchsausweisGewerbe(ausweis: VerbrauchsausweisGewe
// Stempel und Unterschrift // Stempel und Unterschrift
if (ausweis.ausgestellt || !vorschau) { if (ausweis.ausgestellt || !vorschau) {
const stempel = await pdf.embedPng(fs.readFileSync(new URL("../../../public/pdf/images/stempel-unterschrift.png", import.meta.url), "base64")); const stempel = await pdf.embedPng(fs.readFileSync(new URL("../../../public/pdf/images/stempel-unterschrift.png", import.meta.url), "base64"));
const stempelHeight = 60 const stempelHeight = 65
pages[0].drawImage(stempel, { pages[0].drawImage(stempel, {
x: 450, x: 450,
@@ -426,35 +477,75 @@ export async function pdfVerbrauchsausweisGewerbe(ausweis: VerbrauchsausweisGewe
addEnergieverbrauchSkalaPfeile(pages[2]) addEnergieverbrauchSkalaPfeile(pages[2])
if (ausweis.warmwasser_enthalten) { if (ausweis.warmwasser_enthalten) {
addCheckMark(pages[2], 41, height - 293) pages[2].drawText("x", {
x: 42,
y: height - 301,
size: 10,
font: bold
})
} }
if (aufnahme.kuehlung === "1") { if (ausweis.kuehlung_enthalten) {
addCheckMark(pages[2], 41, height - 305) pages[2].drawText("x", {
x: 42,
y: height - 313,
size: 10,
font: bold
})
} }
if (ausweis.stromverbrauch_enthaelt_heizung) { if (ausweis.stromverbrauch_enthaelt_heizung) {
addCheckMark(pages[2], 41, height - 456) pages[2].drawText("x", {
x: 42,
y: height - 464,
size: 10,
font: bold
})
} }
if (ausweis.stromverbrauch_enthaelt_warmwasser) { if (ausweis.stromverbrauch_enthaelt_warmwasser) {
addCheckMark(pages[2], 131, height - 456) pages[2].drawText("x", {
x: 132,
y: height - 464,
size: 10,
font: bold
})
} }
if (ausweis.stromverbrauch_enthaelt_lueftung) { if (ausweis.stromverbrauch_enthaelt_lueftung) {
addCheckMark(pages[2], 218, height - 456) pages[2].drawText("x", {
x: 219,
y: height - 464,
size: 10,
font: bold
})
} }
if (ausweis.stromverbrauch_enthaelt_beleuchtung) { if (ausweis.stromverbrauch_enthaelt_beleuchtung) {
addCheckMark(pages[2], 281, height - 456) pages[2].drawText("x", {
x: 282,
y: height - 464,
size: 10,
font: bold
})
} }
if (ausweis.stromverbrauch_enthaelt_kuehlung) { if (ausweis.stromverbrauch_enthaelt_kuehlung) {
addCheckMark(pages[2], 422, height - 456) pages[2].drawText("x", {
x: 423,
y: height - 464,
size: 10,
font: bold
})
} }
if (ausweis.stromverbrauch_enthaelt_sonstige) { if (ausweis.stromverbrauch_enthaelt_sonstige) {
addCheckMark(pages[2], 492, height - 456) pages[2].drawText("x", {
x: 493,
y: height - 464,
size: 10,
font: bold
})
} }
addText(pages[2], berechnungen?.primaerEnergieVerbrauchGesamt.toString() || "", 475, height - 637, 10, font) addText(pages[2], berechnungen?.primaerEnergieVerbrauchGesamt.toString() || "", 475, height - 637, 10, font)
@@ -548,7 +639,7 @@ export async function pdfVerbrauchsausweisGewerbe(ausweis: VerbrauchsausweisGewe
const addVerbrauch = addVerbrauchGenerator(); const addVerbrauch = addVerbrauchGenerator();
if (ausweis.warmwasser_enthalten) { if (!ausweis.warmwasser_enthalten) {
// Mit Warmwasserzuschlag // Mit Warmwasserzuschlag
addVerbrauch( addVerbrauch(
moment(ausweis.startdatum).format("MM.YYYY"), moment(ausweis.startdatum).format("MM.YYYY"),
@@ -556,7 +647,7 @@ export async function pdfVerbrauchsausweisGewerbe(ausweis: VerbrauchsausweisGewe
ausweis.brennstoff_1 || "", ausweis.brennstoff_1 || "",
berechnungen?.brennstoff_1.primaerenergiefaktor.toString(), berechnungen?.brennstoff_1.primaerenergiefaktor.toString(),
Math.round(berechnungen?.energieVerbrauchGesamt_1 || 0).toString(), Math.round(berechnungen?.energieVerbrauchGesamt_1 || 0).toString(),
Math.round(berechnungen?.energieVerbrauchWarmwasser_1 || 0).toString(), "0",
berechnungen?.endEnergieVerbrauchKuehlungsZuschlag_1, berechnungen?.endEnergieVerbrauchKuehlungsZuschlag_1,
Math.round(berechnungen?.energieVerbrauchHeizung_1 || 0).toString(), Math.round(berechnungen?.energieVerbrauchHeizung_1 || 0).toString(),
berechnungen?.durchschnittsKlimafaktor.toString(), berechnungen?.durchschnittsKlimafaktor.toString(),
@@ -595,22 +686,22 @@ export async function pdfVerbrauchsausweisGewerbe(ausweis: VerbrauchsausweisGewe
// TODO // TODO
// if (!ausweis.warmwasser_enthalten) { if (!ausweis.warmwasser_enthalten) {
// /** /**
// * Dezentrale Warmwasserversorgung - Pauschale Erhöhung um 20kWh/m² * Dezentrale Warmwasserversorgung - Pauschale Erhöhung um 20kWh/m²
// * @link https://www.bundesanzeiger.de/pub/publication/MRYM4nI84Sdlr0EIvvW?2 * @link https://www.bundesanzeiger.de/pub/publication/MRYM4nI84Sdlr0EIvvW?2
// */ */
// addVerbrauch( addVerbrauch(
// moment(ausweis.startdatum).format("MM.YYYY"), moment(ausweis.startdatum).format("MM.YYYY"),
// moment(ausweis.startdatum).add(3, "years").format("MM.YYYY"), moment(ausweis.startdatum).add(3, "years").format("MM.YYYY"),
// "Warmwasserzuschlag", "Warmwasserzuschlag",
// berechnungen?.brennstoff_1.primaerenergiefaktor.toString(), berechnungen?.brennstoff_1.primaerenergiefaktor.toString(),
// Math.round(berechnungen?.energieVerbrauchWarmwasser_1 || 0).toString(), Math.round(berechnungen?.energieVerbrauchWarmwasser_1 || 0).toString(),
// Math.round(berechnungen?.energieVerbrauchWarmwasser_1 || 0).toString(), Math.round(berechnungen?.energieVerbrauchWarmwasser_1 || 0).toString(),
// 0, 0,
// "0" "0"
// ); );
// } }
if (aufnahme.leerstand && aufnahme.leerstand > 0) { if (aufnahme.leerstand && aufnahme.leerstand > 0) {
/** /**
@@ -642,7 +733,7 @@ export async function pdfVerbrauchsausweisGewerbe(ausweis: VerbrauchsausweisGewe
} }
} }
if (aufnahme.kuehlung === "1") { if (aufnahme.kuehlung) {
/** /**
* Kühlungszuschlag - Pauschale Erhöhung um 6kWh/m² * Kühlungszuschlag - Pauschale Erhöhung um 6kWh/m²
* Primärenergiefaktor Strom * Primärenergiefaktor Strom
@@ -655,7 +746,7 @@ export async function pdfVerbrauchsausweisGewerbe(ausweis: VerbrauchsausweisGewe
"", "",
// TODO // TODO
// berechnungen?.primaerfaktorww.toString(), // berechnungen?.primaerfaktorww.toString(),
Math.round(berechnungen?.kuehlungsZuschlag || 0).toString(), Math.round(berechnungen?.kuehlungsZuschlag_1 || 0).toString(),
"0", "0",
0, 0,
"" ""

View File

@@ -4,7 +4,6 @@ import { Enums } from "#lib/server/prisma.js";
import * as fs from "fs" import * as fs from "fs"
import moment from "moment"; import moment from "moment";
import { PDFDocument, PDFFont, PDFImage, PDFPage, StandardFonts } from "pdf-lib"; import { PDFDocument, PDFFont, PDFImage, PDFPage, StandardFonts } from "pdf-lib";
import { addCheckMark } from "./utils/checkbox.js";
import { addText } from "./utils/text.js"; import { addText } from "./utils/text.js";
import { addAnsichtsausweisLabel, addDatumGEG, addRegistriernummer } from "./utils/helpers.js"; import { addAnsichtsausweisLabel, addDatumGEG, addRegistriernummer } from "./utils/helpers.js";
import { getS3File } from "#lib/s3.js"; import { getS3File } from "#lib/s3.js";
@@ -12,7 +11,6 @@ import { endEnergieVerbrauchVerbrauchsausweis_2016_Server } from "#lib/Berechnun
/* -------------------------------- Pdf Tools ------------------------------- */ /* -------------------------------- Pdf Tools ------------------------------- */
export async function pdfVerbrauchsausweisWohnen(ausweis: VerbrauchsausweisWohnenClient, aufnahme: AufnahmeClient, objekt: ObjektClient, bilder: BildClient[], user: BenutzerClient, vorschau = true) { export async function pdfVerbrauchsausweisWohnen(ausweis: VerbrauchsausweisWohnenClient, aufnahme: AufnahmeClient, objekt: ObjektClient, bilder: BildClient[], user: BenutzerClient, vorschau = true) {
const VerbrauchsausweisWohnenGEG2024PDF = fs.readFileSync(new URL("../../../public/pdf/templates/GEG24_Wohngebaeude_ohne_pfeile.pdf", import.meta.url), "base64"); const VerbrauchsausweisWohnenGEG2024PDF = fs.readFileSync(new URL("../../../public/pdf/templates/GEG24_Wohngebaeude_ohne_pfeile.pdf", import.meta.url), "base64");
const pdf = await PDFDocument.load(VerbrauchsausweisWohnenGEG2024PDF) const pdf = await PDFDocument.load(VerbrauchsausweisWohnenGEG2024PDF)
@@ -29,6 +27,18 @@ export async function pdfVerbrauchsausweisWohnen(ausweis: VerbrauchsausweisWohne
const font = await pdf.embedFont(StandardFonts.Helvetica) const font = await pdf.embedFont(StandardFonts.Helvetica)
const bold = await pdf.embedFont(StandardFonts.HelveticaBold) const bold = await pdf.embedFont(StandardFonts.HelveticaBold)
for (let i = 0; i < pages.length; i++) {
const page = pages[i];
if (vorschau) {
addAnsichtsausweisLabel(page, font)
}
addDatumGEG(page, font)
if (i !== pages.length - 1) {
addRegistriernummer(page, font, ausweis.registriernummer || "")
}
}
pages[0].drawText(`ID: ${ausweis.id || ""}`, { pages[0].drawText(`ID: ${ausweis.id || ""}`, {
x: 211, x: 211,
y: height - 112.5, y: height - 112.5,
@@ -41,6 +51,23 @@ export async function pdfVerbrauchsausweisWohnen(ausweis: VerbrauchsausweisWohne
size: 10 size: 10
}) })
const bild = bilder && bilder.find(image => image.kategorie === Enums.BilderKategorie.Gebaeude);
if (bild) {
const file = await getS3File("ibc-images", `${bild.id}.jpg`);
if (file) {
let image: PDFImage;
image = await pdf.embedJpg(file)
pages[0].drawImage(image, {
x: 460.5,
y: height - 289,
width: 111,
height: 138
})
}
}
pages[0].drawText(objekt.adresse || "", { pages[0].drawText(objekt.adresse || "", {
x: 211, x: 211,
y: height - 194, y: height - 194,
@@ -76,7 +103,16 @@ export async function pdfVerbrauchsausweisWohnen(ausweis: VerbrauchsausweisWohne
y: height - 285, y: height - 285,
size: 10 size: 10
}) })
// Nach 82 aus Wohnfläche ermittelt
if (aufnahme.nutzflaeche == 0) {
pages[0].drawText("x", {
x: 275,
y: height - 285,
size: 10,
font: bold
})
}
pages[0].drawText(`${ausweis.brennstoff_1}, ${ausweis.brennstoff_2 || ""}`, { pages[0].drawText(`${ausweis.brennstoff_1}, ${ausweis.brennstoff_2 || ""}`, {
x: 211, x: 211,
@@ -84,6 +120,14 @@ export async function pdfVerbrauchsausweisWohnen(ausweis: VerbrauchsausweisWohne
size: 10 size: 10
}) })
if (ausweis.warmwasser_enthalten) {
pages[0].drawText(`${ausweis.brennstoff_1}, ${ausweis.brennstoff_2 || ""}`, {
x: 211,
y: height - 299,
size: 10
})
}
if (ausweis.warmwasser_enthalten) { if (ausweis.warmwasser_enthalten) {
pages[0].drawText(`${ausweis.brennstoff_1}, ${ausweis.brennstoff_2 || ""}`, { pages[0].drawText(`${ausweis.brennstoff_1}, ${ausweis.brennstoff_2 || ""}`, {
x: 211, x: 211,
@@ -93,6 +137,7 @@ export async function pdfVerbrauchsausweisWohnen(ausweis: VerbrauchsausweisWohne
} }
const erneuerbareEnergienVerwendung = [] const erneuerbareEnergienVerwendung = []
if (ausweis.alternative_heizung) { if (ausweis.alternative_heizung) {
@@ -117,67 +162,98 @@ export async function pdfVerbrauchsausweisWohnen(ausweis: VerbrauchsausweisWohne
size: 8 size: 8
}) })
if (ausweis.warmwasser_enthalten) {
pages[0].drawText(`${ausweis.brennstoff_1}, ${ausweis.brennstoff_2 || ""}`, {
x: 211,
y: height - 299,
size: 10
})
}
if (aufnahme.lueftung === Enums.Lueftungskonzept.Fensterlueftung) { if (aufnahme.lueftung === Enums.Lueftungskonzept.Fensterlueftung) {
addCheckMark(pages[0], 213, height - 347) pages[0].drawText("x", {
x: 214,
y: height - 293,
size: 10,
font: bold
})
} else if (aufnahme.lueftung === Enums.Lueftungskonzept.Schachtlueftung) { } else if (aufnahme.lueftung === Enums.Lueftungskonzept.Schachtlueftung) {
addCheckMark(pages[0], 213, height - 358) pages[0].drawText("x", {
x: 214,
y: height - 366,
size: 10,
font: bold
})
} else if (aufnahme.lueftung === Enums.Lueftungskonzept.LueftungsanlageMitWaermerueckgewinnung) { } else if (aufnahme.lueftung === Enums.Lueftungskonzept.LueftungsanlageMitWaermerueckgewinnung) {
addCheckMark(pages[0], 355, height - 347) pages[0].drawText("x", {
x: 356,
y: height - 355,
size: 10,
font: bold
})
} else if (aufnahme.lueftung === Enums.Lueftungskonzept.LueftungsanlageOhneWaermerueckgewinnung) { } else if (aufnahme.lueftung === Enums.Lueftungskonzept.LueftungsanlageOhneWaermerueckgewinnung) {
addCheckMark(pages[0], 355, height - 358) pages[0].drawText("x", {
x: 356,
y: height - 366,
size: 10,
font: bold
})
} }
// Kühlung // Kühlung
if (aufnahme.kuehlung === "1") { if (aufnahme.kuehlung === "1") {
addCheckMark(pages[0], 213, height - 375.5) pages[0].drawText("x", {
} x: 213,
y: height - 383.5,
size: 10,
font: bold
})
} else {
pages[0].drawText("x", {
x: 356,
y: height - 394.5,
size: 10,
font: bold
})
}
if (ausweis.ausstellgrund === Enums.Ausstellgrund.Neubau) { if (ausweis.ausstellgrund === Enums.Ausstellgrund.Neubau) {
addCheckMark(pages[0], 213, height - 419) pages[0].drawText("x", {
x: 214,
y: height - 427,
size: 10,
font: bold
})
} else if (ausweis.ausstellgrund === Enums.Ausstellgrund.Vermietung || ausweis.ausstellgrund === Enums.Ausstellgrund.Verkauf) { } else if (ausweis.ausstellgrund === Enums.Ausstellgrund.Vermietung || ausweis.ausstellgrund === Enums.Ausstellgrund.Verkauf) {
addCheckMark(pages[0], 213, height - 430) pages[0].drawText("x", {
x: 214,
y: height - 438,
size: 10,
font: bold
})
} else if (ausweis.ausstellgrund === Enums.Ausstellgrund.Modernisierung) { } else if (ausweis.ausstellgrund === Enums.Ausstellgrund.Modernisierung) {
addCheckMark(pages[0], 344.5, height - 419) pages[0].drawText("x", {
x: 345.5,
y: height - 427,
size: 10,
font: bold
})
} else if (ausweis.ausstellgrund === Enums.Ausstellgrund.Sonstiges) { } else if (ausweis.ausstellgrund === Enums.Ausstellgrund.Sonstiges) {
addCheckMark(pages[0], 463, height - 419) pages[0].drawText("x", {
x: 464,
y: height - 427,
size: 10,
font: bold
})
} }
const bild = bilder && bilder.find(image => image.kategorie === Enums.BilderKategorie.Gebaeude); // Checkmark Angabe Verbrauchsausweis
pages[0].drawText("x", {
if (bild) { x: 44,
const file = await getS3File("ibc-images", `${bild.id}.jpg`); y: height - 568,
size: 10,
if (file) { font: bold
let image: PDFImage; })
image = await pdf.embedJpg(file)
pages[0].drawImage(image, {
x: 460.5,
y: height - 289,
width: 111,
height: 138
})
}
}
// Nach 82 aus Wohnfläche ermittelt
if (aufnahme.nutzflaeche == 0) {
addCheckMark(pages[0], 274, height - 277)
}
// Checkmark Angabe energetische Qualität des Gebäudes.
addCheckMark(pages[0], 43, height - 560)
// Datenerhebung durch Eigentümer // Datenerhebung durch Eigentümer
addCheckMark(pages[0], 298, height - 590) pages[0].drawText("x", {
x: 299,
y: height - 598,
size: 10,
font: bold
})
// Ausstellungsdatum // Ausstellungsdatum
pages[0].drawText(moment().format("DD.MM.YYYY"), { pages[0].drawText(moment().format("DD.MM.YYYY"), {
@@ -198,7 +274,7 @@ export async function pdfVerbrauchsausweisWohnen(ausweis: VerbrauchsausweisWohne
// Stempel und Unterschrift // Stempel und Unterschrift
if (!vorschau) { if (!vorschau) {
const stempel = await pdf.embedPng(fs.readFileSync(new URL("../../../public/pdf/images/stempel-unterschrift.png", import.meta.url), "base64")); const stempel = await pdf.embedPng(fs.readFileSync(new URL("../../../public/pdf/images/stempel-unterschrift.png", import.meta.url), "base64"));
const stempelHeight = 60 const stempelHeight = 65
pages[0].drawImage(stempel, { pages[0].drawImage(stempel, {
x: 450, x: 450,
@@ -326,7 +402,7 @@ export async function pdfVerbrauchsausweisWohnen(ausweis: VerbrauchsausweisWohne
} }
} }
addEnergieverbrauchSkalaPfeile(pages[2])
// CO2 Emissionen // CO2 Emissionen
pages[2].drawText(berechnungen?.co2EmissionenGesamt.toString() || "", { pages[2].drawText(berechnungen?.co2EmissionenGesamt.toString() || "", {
@@ -336,6 +412,8 @@ export async function pdfVerbrauchsausweisWohnen(ausweis: VerbrauchsausweisWohne
size: 10 size: 10
}) })
addEnergieverbrauchSkalaPfeile(pages[2])
// Endenergieverbrauch // Endenergieverbrauch
pages[2].drawText(berechnungen?.endEnergieVerbrauchGesamt.toString() || "", { pages[2].drawText(berechnungen?.endEnergieVerbrauchGesamt.toString() || "", {
x: 455, x: 455,
@@ -593,16 +671,5 @@ export async function pdfVerbrauchsausweisWohnen(ausweis: VerbrauchsausweisWohne
addEmpfehlung(empfehlung.anlagenteil, empfehlung.description, true, empfehlung.amortisationszeit, empfehlung.kosten) addEmpfehlung(empfehlung.anlagenteil, empfehlung.description, true, empfehlung.amortisationszeit, empfehlung.kosten)
} }
for (let i = 0; i < pages.length; i++) {
const page = pages[i];
if (vorschau) {
addAnsichtsausweisLabel(page, font)
}
addDatumGEG(page, font)
if (i !== pages.length - 1) {
addRegistriernummer(page, font, ausweis.registriernummer || "")
}
}
return pdf.save(); return pdf.save();
} }