template header & footer margins

This commit is contained in:
Julian Krauser 2025-01-01 13:21:28 +01:00
parent b5760202f7
commit cfefcd81d7
10 changed files with 72 additions and 17 deletions

View file

@ -11,7 +11,6 @@ export abstract class PdfExport {
filename = null,
data = {},
saveToDisk = true,
margins = { top: "15mm", bottom: "15mm" },
folder = "",
}: {
template: PermissionModule;
@ -19,12 +18,11 @@ export abstract class PdfExport {
filename?: string;
data?: any;
saveToDisk?: boolean;
margins?: { top: string; bottom: string };
folder?: string;
}) {
if (folder != "") FileSystemHelper.createFolder(folder);
const { header, footer, body } = await TemplateHelper.renderFileForModule({
const { header, footer, body, headerMargin, footerMargin } = await TemplateHelper.renderFileForModule({
module: template,
headerData: data,
bodyData: data,
@ -46,8 +44,8 @@ export abstract class PdfExport {
format: "A4",
printBackground: false,
margin: {
top: margins.top,
bottom: margins.bottom,
top: (headerMargin ?? 15) + "mm",
bottom: (footerMargin ?? 15) + "mm",
left: "10mm",
right: "10mm",
},

View file

@ -1,7 +1,7 @@
import TemplateService from "../service/templateService";
import { PermissionModule } from "../type/permissionTypes";
import TemplateUsageService from "../service/templateUsageService";
import Handlebars from "handlebars";
import Handlebars, { template } from "handlebars";
import { FileSystemHelper } from "./fileSystemHelper";
export abstract class TemplateHelper {
@ -39,27 +39,27 @@ export abstract class TemplateHelper {
headerData?: any;
bodyData?: any;
footerData?: any;
}): Promise<{ header: string; body: string; footer: string; margins?: { top: string; bottom: string } }> {
const moduleTemplates = await TemplateUsageService.getByScope(module);
}): Promise<{ header: string; body: string; footer: string; headerMargin?: number; footerMargin?: number }> {
const moduleTemplate = await TemplateUsageService.getByScope(module);
let header = `<h1 style="font-size:10px; text-align:center; width:100%;">${title}</h1>`;
let footer = "";
let body = "";
if (moduleTemplates.headerId) {
header = await this.getTemplateFromStore(moduleTemplates.headerId);
if (moduleTemplate.headerId) {
header = await this.getTemplateFromStore(moduleTemplate.headerId);
header = this.applyDataToTemplate(header, { title, ...headerData });
}
if (moduleTemplates.footerId) {
footer = await this.getTemplateFromStore(moduleTemplates.footerId);
if (moduleTemplate.footerId) {
footer = await this.getTemplateFromStore(moduleTemplate.footerId);
} else {
footer = this.getTemplateFromFile(module + ".footer");
}
footer = this.applyDataToTemplate(footer, footerData);
if (moduleTemplates.bodyId) {
body = await this.getTemplateFromStore(moduleTemplates.bodyId);
if (moduleTemplate.bodyId) {
body = await this.getTemplateFromStore(moduleTemplate.bodyId);
} else {
body = this.getTemplateFromFile(module + ".body");
}
@ -69,6 +69,8 @@ export abstract class TemplateHelper {
header,
footer,
body,
headerMargin: moduleTemplate.headerHeight,
footerMargin: moduleTemplate.footerHeight,
};
}
}