@@ -12,7 +12,7 @@ import { PERSISTENT_DIR } from "#lib/server/constants.js";
|
|||||||
|
|
||||||
/* -------------------------------- Pdf Tools ------------------------------- */
|
/* -------------------------------- Pdf Tools ------------------------------- */
|
||||||
|
|
||||||
export async function pdfDatenblattVerbrauchsausweisGewerbe(ausweis: VerbrauchsausweisGewerbeClient, aufnahme: AufnahmeClient, objekt: ObjektClient, benutzer: BenutzerClient, bilder: UploadedGebaeudeBild[]) {
|
export async function pdfDatenblattVerbrauchsausweisGewerbe(ausweis: VerbrauchsausweisGewerbeClient, aufnahme: AufnahmeClient, objekt: ObjektClient, benutzer: BenutzerClient, bilder: BildClient[]) {
|
||||||
const VerbrauchsausweisWohnenGEG2024PDF = fs.readFileSync(new URL("../../../public/pdf/templates/Leerseite_Datenblatt.pdf", import.meta.url), "base64");
|
const VerbrauchsausweisWohnenGEG2024PDF = fs.readFileSync(new URL("../../../public/pdf/templates/Leerseite_Datenblatt.pdf", import.meta.url), "base64");
|
||||||
const pdf = await PDFDocument.load(VerbrauchsausweisWohnenGEG2024PDF)
|
const pdf = await PDFDocument.load(VerbrauchsausweisWohnenGEG2024PDF)
|
||||||
const page3 = copyPage(pdf.getPages()[0]);
|
const page3 = copyPage(pdf.getPages()[0]);
|
||||||
@@ -365,8 +365,6 @@ export async function pdfDatenblattVerbrauchsausweisGewerbe(ausweis: Verbrauchsa
|
|||||||
|
|
||||||
if (bild.uid) {
|
if (bild.uid) {
|
||||||
image = `<img src="${fileURLToPath(new URL(`${PERSISTENT_DIR}/images/${bild.uid}.jpg`, import.meta.url))}" width="${(pages[2].getWidth() - 120) / 3.1}" height="${(pages[2].getHeight() - marginY * 2) / 4}" />`
|
image = `<img src="${fileURLToPath(new URL(`${PERSISTENT_DIR}/images/${bild.uid}.jpg`, import.meta.url))}" width="${(pages[2].getWidth() - 120) / 3.1}" height="${(pages[2].getHeight() - marginY * 2) / 4}" />`
|
||||||
} else if (bild.data) {
|
|
||||||
image = `<img data="${bild.data}" width="${(pages[2].getWidth() - 120) / 3.1}" height="180" />`
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (images.length > 0) {
|
if (images.length > 0) {
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ import { PERSISTENT_DIR } from "#lib/server/constants.js";
|
|||||||
|
|
||||||
/* -------------------------------- Pdf Tools ------------------------------- */
|
/* -------------------------------- Pdf Tools ------------------------------- */
|
||||||
|
|
||||||
export async function pdfDatenblattVerbrauchsausweisWohnen(ausweis: VerbrauchsausweisWohnenClient, aufnahme: AufnahmeClient, objekt: ObjektClient, benutzer: BenutzerClient, bilder: UploadedGebaeudeBild[]) {
|
export async function pdfDatenblattVerbrauchsausweisWohnen(ausweis: VerbrauchsausweisWohnenClient, aufnahme: AufnahmeClient, objekt: ObjektClient, benutzer: BenutzerClient, bilder: BildClient[]) {
|
||||||
const VerbrauchsausweisWohnenGEG2024PDF = fs.readFileSync(new URL("../../../public/pdf/templates/Leerseite_Datenblatt.pdf", import.meta.url), "base64");
|
const VerbrauchsausweisWohnenGEG2024PDF = fs.readFileSync(new URL("../../../public/pdf/templates/Leerseite_Datenblatt.pdf", import.meta.url), "base64");
|
||||||
const pdf = await PDFDocument.load(VerbrauchsausweisWohnenGEG2024PDF)
|
const pdf = await PDFDocument.load(VerbrauchsausweisWohnenGEG2024PDF)
|
||||||
const page3 = copyPage(pdf.getPages()[0]);
|
const page3 = copyPage(pdf.getPages()[0]);
|
||||||
@@ -308,8 +308,6 @@ export async function pdfDatenblattVerbrauchsausweisWohnen(ausweis: Verbrauchsau
|
|||||||
|
|
||||||
if (bild.uid) {
|
if (bild.uid) {
|
||||||
image = `<img src="${fileURLToPath(new URL(`${PERSISTENT_DIR}/images/${bild.uid}.jpg`, import.meta.url))}" width="${(pages[2].getWidth() - 120) / 3.1}" height="${(pages[2].getHeight() - marginY * 2) / 4}" />`
|
image = `<img src="${fileURLToPath(new URL(`${PERSISTENT_DIR}/images/${bild.uid}.jpg`, import.meta.url))}" width="${(pages[2].getWidth() - 120) / 3.1}" height="${(pages[2].getHeight() - marginY * 2) / 4}" />`
|
||||||
} else if (bild.data) {
|
|
||||||
image = `<img data="${bild.data}" width="${(pages[2].getWidth() - 120) / 3.1}" height="180" />`
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (images.length > 0) {
|
if (images.length > 0) {
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { AufnahmeClient, BenutzerClient, ObjektClient, UploadedGebaeudeBild, VerbrauchsausweisGewerbeClient } from "#components/Ausweis/types.js";
|
import { AufnahmeClient, BenutzerClient, BildClient, ObjektClient, UploadedGebaeudeBild, VerbrauchsausweisGewerbeClient } from "#components/Ausweis/types.js";
|
||||||
import { endEnergieVerbrauchVerbrauchsausweisGewerbe_2016 } from "#lib/Berechnungen/VerbrauchsausweisGewerbe/VerbrauchsausweisGewerbe_2016.js";
|
import { endEnergieVerbrauchVerbrauchsausweisGewerbe_2016 } from "#lib/Berechnungen/VerbrauchsausweisGewerbe/VerbrauchsausweisGewerbe_2016.js";
|
||||||
import { getEmpfehlungen } from "#lib/XML/getEmpfehlungen.js";
|
import { getEmpfehlungen } from "#lib/XML/getEmpfehlungen.js";
|
||||||
import { Enums } from "#lib/server/prisma.js";
|
import { Enums } from "#lib/server/prisma.js";
|
||||||
@@ -8,9 +8,11 @@ import { PDFDocument, PDFFont, PDFImage, PDFPage, StandardFonts } from "pdf-lib"
|
|||||||
import { addCheckMark } from "./utils/checkbox.js";
|
import { addCheckMark } from "./utils/checkbox.js";
|
||||||
import { addText } from "./utils/text.js";
|
import { addText } from "./utils/text.js";
|
||||||
import { addAnsichtsausweisLabel, addDatumGEG } from "./utils/helpers.js";
|
import { addAnsichtsausweisLabel, addDatumGEG } from "./utils/helpers.js";
|
||||||
|
import { PERSISTENT_DIR } from "#lib/server/constants.js";
|
||||||
|
import { fileURLToPath } from "url";
|
||||||
|
|
||||||
|
|
||||||
export async function pdfVerbrauchsausweisGewerbe(ausweis: VerbrauchsausweisGewerbeClient, aufnahme: AufnahmeClient, objekt: ObjektClient, bilder: UploadedGebaeudeBild[], user: BenutzerClient) {
|
export async function pdfVerbrauchsausweisGewerbe(ausweis: VerbrauchsausweisGewerbeClient, aufnahme: AufnahmeClient, objekt: ObjektClient, bilder: BildClient[], user: BenutzerClient) {
|
||||||
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)
|
||||||
const pages = pdf.getPages()
|
const pages = pdf.getPages()
|
||||||
@@ -137,20 +139,15 @@ export async function pdfVerbrauchsausweisGewerbe(ausweis: VerbrauchsausweisGewe
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
const gebaeudeBild = bilder.find(image => image.kategorie === Enums.BilderKategorie.Gebaeude);
|
const bild = bilder && bilder.find(image => image.kategorie === Enums.BilderKategorie.Gebaeude);
|
||||||
|
|
||||||
if (gebaeudeBild) {
|
if (bild) {
|
||||||
let image: PDFImage | null;
|
const path = `${PERSISTENT_DIR}/images/${bild.uid}.jpg`;
|
||||||
try {
|
|
||||||
image = await pdf.embedJpg(gebaeudeBild.data)
|
if (fs.existsSync(path)) {
|
||||||
} catch(e) {
|
const file = fs.readFileSync(fileURLToPath(new URL(path, import.meta.url)))
|
||||||
try {
|
let image: PDFImage;
|
||||||
image = await pdf.embedPng(gebaeudeBild.data)
|
image = await pdf.embedJpg(file)
|
||||||
} catch(e) {
|
|
||||||
image = null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (image) {
|
|
||||||
pages[0].drawImage(image, {
|
pages[0].drawImage(image, {
|
||||||
x: 460.5,
|
x: 460.5,
|
||||||
y: height - 289,
|
y: height - 289,
|
||||||
|
|||||||
@@ -48,40 +48,122 @@ export async function pdfVerbrauchsausweisWohnen(ausweis: VerbrauchsausweisWohne
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const gebaeudetyp = fillFormField("gebaeudetyp", aufnahme.gebaeudetyp || "")
|
pages[0].drawText(aufnahme.gebaeudetyp || "", {
|
||||||
|
x: 211,
|
||||||
|
y: height - 166,
|
||||||
|
size: 10
|
||||||
|
})
|
||||||
|
|
||||||
const adresse = fillFormField("adresse", objekt.adresse || "")
|
pages[0].drawText(objekt.adresse || "", {
|
||||||
|
x: 211,
|
||||||
|
y: height - 194,
|
||||||
|
size: 10
|
||||||
|
})
|
||||||
|
|
||||||
|
pages[0].drawText(aufnahme.gebaeudeteil || "", {
|
||||||
|
x: 211,
|
||||||
|
y: height - 214.5,
|
||||||
|
size: 10
|
||||||
|
})
|
||||||
|
|
||||||
const gebaeudeteil = fillFormField("gebaeudeteil", aufnahme.gebaeudeteil || "")
|
pages[0].drawText(aufnahme.baujahr_gebaeude?.toString() || "", {
|
||||||
|
x: 211,
|
||||||
|
y: height - 229.5,
|
||||||
|
size: 10
|
||||||
|
})
|
||||||
|
|
||||||
const baujahr_gebaeude = fillFormField("baujahr_gebaeude", aufnahme.baujahr_gebaeude?.toString())
|
pages[0].drawText(aufnahme.baujahr_heizung?.toString() || "", {
|
||||||
|
x: 211,
|
||||||
|
y: height - 250,
|
||||||
|
size: 10
|
||||||
|
})
|
||||||
|
|
||||||
const baujahr_heizung = fillFormField("baujahr_heizung", aufnahme.baujahr_heizung?.toString())
|
pages[0].drawText(aufnahme.einheiten?.toString() || "", {
|
||||||
|
x: 211,
|
||||||
|
y: height - 271.5,
|
||||||
|
size: 10
|
||||||
|
})
|
||||||
|
|
||||||
const einheiten = fillFormField("einheiten", (aufnahme.einheiten || 1).toString())
|
pages[0].drawText(aufnahme.nutzflaeche?.toString() || "", {
|
||||||
|
x: 211,
|
||||||
|
y: height - 285,
|
||||||
|
size: 10
|
||||||
|
})
|
||||||
|
|
||||||
const nutzflaeche = fillFormField("nutzflaeche", `${berechnungen?.energetischeNutzflaeche?.toString()}m²`)
|
pages[0].drawText(`${aufnahme.brennstoff_1}, ${aufnahme.brennstoff_2 || ""}`, {
|
||||||
|
x: 211,
|
||||||
fillFormField("energietraeger_heizung", `${aufnahme.brennstoff_1}, ${aufnahme.brennstoff_2 || ""}`)
|
y: height - 298.5,
|
||||||
|
size: 10
|
||||||
|
})
|
||||||
|
|
||||||
if (ausweis.warmwasser_enthalten) {
|
if (ausweis.warmwasser_enthalten) {
|
||||||
fillFormField("energietraeger_warmwasser", `${aufnahme.brennstoff_1}, ${aufnahme.brennstoff_2 || ""}`)
|
pages[0].drawText(`${aufnahme.brennstoff_1}, ${aufnahme.brennstoff_2 || ""}`, {
|
||||||
|
x: 211,
|
||||||
|
y: height - 312,
|
||||||
|
size: 10
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
if (aufnahme.durchlauf_erhitzer && !ausweis.warmwasser_enthalten) {
|
|
||||||
fillFormField("energietraeger_warmwasser", "Strommix");
|
const erneuerbareEnergienVerwendung = []
|
||||||
|
|
||||||
|
if (ausweis.alternative_heizung) {
|
||||||
|
erneuerbareEnergienVerwendung.push("Heizung")
|
||||||
}
|
}
|
||||||
|
|
||||||
toggleCheck("fensterlueftung", aufnahme.lueftung == Enums.Lueftungskonzept.Fensterlueftung)
|
if (ausweis.alternative_kuehlung) {
|
||||||
toggleCheck("schachtlueftung", aufnahme.lueftung == Enums.Lueftungskonzept.Schachtlueftung)
|
erneuerbareEnergienVerwendung.push("Kühlung")
|
||||||
toggleCheck("lueftungsanlage_ohne_waermerueckgewinnung", aufnahme.lueftung == Enums.Lueftungskonzept.LueftungsanlageOhneWaermerueckgewinnung)
|
}
|
||||||
toggleCheck("lueftungsanlage_waermerueckgewinnung", aufnahme.lueftung == Enums.Lueftungskonzept.LueftungsanlageMitWaermerueckgewinnung)
|
|
||||||
|
|
||||||
toggleCheck("anlass_neubau", ausweis.ausstellgrund == "Neubau")
|
if (ausweis.alternative_lueftung) {
|
||||||
toggleCheck("anlass_vermietung", ausweis.ausstellgrund == "Vermietung" || ausweis.ausstellgrund == "Verkauf")
|
erneuerbareEnergienVerwendung.push("Lüftung")
|
||||||
toggleCheck("anlass_modernisierung", ausweis.ausstellgrund == "Modernisierung")
|
}
|
||||||
toggleCheck("anlass_sonstiges", ausweis.ausstellgrund == "Sonstiges")
|
|
||||||
|
if (ausweis.alternative_warmwasser) {
|
||||||
|
erneuerbareEnergienVerwendung.push("Warmwasser")
|
||||||
|
}
|
||||||
|
|
||||||
|
pages[0].drawText(erneuerbareEnergienVerwendung.join(", "), {
|
||||||
|
x: 358,
|
||||||
|
y: height - 325,
|
||||||
|
size: 8
|
||||||
|
})
|
||||||
|
|
||||||
|
if (ausweis.warmwasser_enthalten) {
|
||||||
|
pages[0].drawText(`${aufnahme.brennstoff_1}, ${aufnahme.brennstoff_2 || ""}`, {
|
||||||
|
x: 211,
|
||||||
|
y: height - 299,
|
||||||
|
size: 10
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (aufnahme.lueftung === Enums.Lueftungskonzept.Fensterlueftung) {
|
||||||
|
addCheckMark(pages[0], 213, height - 347)
|
||||||
|
} else if (aufnahme.lueftung === Enums.Lueftungskonzept.Schachtlueftung) {
|
||||||
|
addCheckMark(pages[0], 213, height - 358)
|
||||||
|
} else if (aufnahme.lueftung === Enums.Lueftungskonzept.LueftungsanlageMitWaermerueckgewinnung) {
|
||||||
|
addCheckMark(pages[0], 355, height - 347)
|
||||||
|
} else if (aufnahme.lueftung === Enums.Lueftungskonzept.LueftungsanlageOhneWaermerueckgewinnung) {
|
||||||
|
addCheckMark(pages[0], 355, height - 358)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Kühlung
|
||||||
|
if (aufnahme.kuehlung) {
|
||||||
|
addCheckMark(pages[0], 213, height - 375.5)
|
||||||
|
} else {
|
||||||
|
addCheckMark(pages[0], 355, height - 386.5)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ausweis.ausstellgrund === Enums.Ausstellgrund.Neubau) {
|
||||||
|
addCheckMark(pages[0], 213, height - 419)
|
||||||
|
} else if (ausweis.ausstellgrund === Enums.Ausstellgrund.Vermietung || ausweis.ausstellgrund === Enums.Ausstellgrund.Verkauf) {
|
||||||
|
addCheckMark(pages[0], 213, height - 430)
|
||||||
|
} else if (ausweis.ausstellgrund === Enums.Ausstellgrund.Modernisierung) {
|
||||||
|
addCheckMark(pages[0], 344.5, height - 419)
|
||||||
|
} else if (ausweis.ausstellgrund === Enums.Ausstellgrund.Sonstiges) {
|
||||||
|
addCheckMark(pages[0], 463, height - 419)
|
||||||
|
}
|
||||||
|
|
||||||
const bild = bilder && bilder.find(image => image.kategorie === Enums.BilderKategorie.Gebaeude);
|
const bild = bilder && bilder.find(image => image.kategorie === Enums.BilderKategorie.Gebaeude);
|
||||||
|
|
||||||
@@ -150,35 +232,6 @@ export async function pdfVerbrauchsausweisWohnen(ausweis: VerbrauchsausweisWohne
|
|||||||
height: 50
|
height: 50
|
||||||
})
|
})
|
||||||
|
|
||||||
const erneuerbareEnergienVerwendung = []
|
|
||||||
|
|
||||||
if (ausweis.alternative_heizung) {
|
|
||||||
erneuerbareEnergienVerwendung.push("Heizung")
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ausweis.alternative_kuehlung) {
|
|
||||||
erneuerbareEnergienVerwendung.push("Kühlung")
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ausweis.alternative_lueftung) {
|
|
||||||
erneuerbareEnergienVerwendung.push("Lüftung")
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ausweis.alternative_warmwasser) {
|
|
||||||
erneuerbareEnergienVerwendung.push("Warmwasser")
|
|
||||||
}
|
|
||||||
|
|
||||||
pages[0].drawText(erneuerbareEnergienVerwendung.join(", "), {
|
|
||||||
x: 358,
|
|
||||||
y: height - 337,
|
|
||||||
size: 8
|
|
||||||
})
|
|
||||||
|
|
||||||
// Kühlung
|
|
||||||
if (aufnahme.kuehlung) {
|
|
||||||
addCheckMark(pages[0], 354, height - 376.5)
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* -------------------------------- Seite 2 -------------------------------- */
|
/* -------------------------------- Seite 2 -------------------------------- */
|
||||||
|
|
||||||
|
|||||||
@@ -31,9 +31,9 @@ export async function getAnsichtsausweis(ausweis: VerbrauchsausweisWohnenClient
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (ausweisart === Enums.Ausweisart.VerbrauchsausweisWohnen) {
|
if (ausweisart === Enums.Ausweisart.VerbrauchsausweisWohnen) {
|
||||||
return await pdfVerbrauchsausweisWohnen(ausweis, aufnahme, objekt, bilder, user)
|
return await pdfVerbrauchsausweisWohnen(ausweis as VerbrauchsausweisWohnenClient, aufnahme, objekt, bilder, user)
|
||||||
} else if (ausweisart === Enums.Ausweisart.VerbrauchsausweisGewerbe) {
|
} else if (ausweisart === Enums.Ausweisart.VerbrauchsausweisGewerbe) {
|
||||||
return await pdfVerbrauchsausweisGewerbe(ausweis, aufnahme, objekt, bilder, user)
|
return await pdfVerbrauchsausweisGewerbe(ausweis as VerbrauchsausweisGewerbeClient, aufnahme, objekt, bilder, user)
|
||||||
}
|
}
|
||||||
|
|
||||||
return null
|
return null
|
||||||
@@ -49,9 +49,9 @@ export async function getDatenblatt(ausweis: VerbrauchsausweisWohnenClient | Ver
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (ausweisart === Enums.Ausweisart.VerbrauchsausweisWohnen) {
|
if (ausweisart === Enums.Ausweisart.VerbrauchsausweisWohnen) {
|
||||||
return await pdfDatenblattVerbrauchsausweisWohnen(ausweis, aufnahme, objekt, bilder, user)
|
return await pdfDatenblattVerbrauchsausweisWohnen(ausweis as VerbrauchsausweisWohnenClient, aufnahme, objekt, user, bilder)
|
||||||
} else if (ausweisart === Enums.Ausweisart.VerbrauchsausweisGewerbe) {
|
} else if (ausweisart === Enums.Ausweisart.VerbrauchsausweisGewerbe) {
|
||||||
return await pdfDatenblattVerbrauchsausweisGewerbe(ausweis, aufnahme, objekt, bilder, user)
|
return await pdfDatenblattVerbrauchsausweisGewerbe(ausweis as VerbrauchsausweisGewerbeClient, aufnahme, objekt, user, bilder)
|
||||||
}
|
}
|
||||||
|
|
||||||
return null
|
return null
|
||||||
|
|||||||
Reference in New Issue
Block a user