import { VerbrauchsausweisWohnenClient } from "#components/Ausweis/types.js"; import { endEnergieVerbrauchVerbrauchsausweis_2016 } from "#lib/Berechnungen/VerbrauchsausweisWohnen/VerbrauchsausweisWohnen_2016.js"; import * as fs from "fs" import { PDFDocument, rgb, StandardFonts, TextAlignment } from "pdf-lib"; import { checkbox, flex, text } from "./elements/index.js"; import { xml2pdf } from "./elements/xml2pdf.js"; /* -------------------------------- Pdf Tools ------------------------------- */ export async function pdfDatenblatt(ausweis: VerbrauchsausweisWohnenClient) { const VerbrauchsausweisWohnenGEG2024PDF = fs.readFileSync(new URL("./templates/Leerseite_Datenblatt.pdf", import.meta.url), "base64"); const pdf = await PDFDocument.load(VerbrauchsausweisWohnenGEG2024PDF) const pages = pdf.getPages() // const template = VerbrauchsausweisWohnen2016Template as Template; const berechnungen = await endEnergieVerbrauchVerbrauchsausweis_2016(ausweis); const height = pages[0].getHeight() const width = pages[0].getWidth() const font = await pdf.embedFont(StandardFonts.Helvetica) const bold = await pdf.embedFont(StandardFonts.HelveticaBold) const form = pdf.getForm() form.updateFieldAppearances(font) const marginX = 45; const marginY = 150; const benutzer: typeof ausweis.benutzer = ausweis.benutzer || { vorname: "Max", name: "Mustermann", adresse: "Musterstraße 123", plz: "12345", ort: "Beispielhausen" }; const layout = xml2pdf(` ${benutzer.vorname} ${benutzer.name} ${benutzer.adresse} ${benutzer.plz} ${benutzer.ort} Datenblatt Energieausweis Ausweis ID: ${ausweis.uid} Gebäudedaten Adresse: ${ausweis.gebaeude_aufnahme_allgemein.adresse}, ${ausweis.gebaeude_aufnahme_allgemein.plz} ${ausweis.gebaeude_aufnahme_allgemein.ort} Neubau Vermietung/Verkauf Modernisierung Sonstiges Gebäudetyp: ${ausweis.gebaeude_aufnahme_allgemein.gebaeudetyp} Wohnfläche: DIN Wohnfläche innen ${ausweis.gebaeude_aufnahme_allgemein.flaeche} m² Leerstand: ${ausweis.gebaeude_aufnahme_allgemein.leerstand || 0}% Wohnungen: ${ausweis.gebaeude_aufnahme_allgemein.einheiten} Dachgeschoss: ${ausweis.gebaeude_aufnahme_allgemein.dachgeschoss} Keller: ${ausweis.gebaeude_aufnahme_allgemein.keller} `, { "default": font, bold: bold }) layout.draw(pages[0], 0, pages[0].getHeight()) // const containerWidth = width - marginX; // const layout = flex([ // flex([ // checkbox(8, 8), text("Neubau", { // color: rgb(0,0,0), // font, // fontSize: 12 // }) // ], { // align: "center", // justify: "center", // gap: 5, // height: 12, // page: pages[0] // }), // flex([ // checkbox(8, 8), text("Vermietung/Verkauf", { // color: rgb(0,0,0), // font, // fontSize: 12 // }) // ], { // align: "center", // justify: "center", // gap: 5, // height: 12, // page: pages[0] // }), // flex([ // checkbox(8, 8), text("Modernisierung", { // color: rgb(0,0,0), // font, // fontSize: 12 // }) // ], { // align: "center", // justify: "center", // gap: 5, // height: 12, // page: pages[0] // }), // flex([ // checkbox(8, 8), text("Sonstiges", { // color: rgb(0,0,0), // font, // fontSize: 12 // }) // ], { // align: "center", // justify: "center", // gap: 5, // height: 12, // page: pages[0] // }) // ], { // align: "center", // justify: "space-between", // gap: 15, // x: marginX, // y: height - marginY - 165, // height: 12, // width: containerWidth // }) // layout.draw(pages[0]) // pdf.getForm().flatten() return pdf.save(); }