diff --git a/src/helpers/pdfExport.ts b/src/helpers/pdfExport.ts
index e59ba54..429f551 100644
--- a/src/helpers/pdfExport.ts
+++ b/src/helpers/pdfExport.ts
@@ -1,10 +1,47 @@
-import puppeteer from "puppeteer";
+import puppeteer, { Browser } from "puppeteer";
 import { TemplateHelper } from "./templateHelper";
 import { PermissionModule } from "../type/permissionTypes";
 import { FileSystemHelper } from "./fileSystemHelper";
 import { PDFDocument } from "pdf-lib";
+import { StringHelper } from "./stringHelper";
 
 export abstract class PdfExport {
+  private static browserInstance: undefined | Browser = undefined;
+  private static timeout: undefined | NodeJS.Timeout = undefined;
+  private static printing = new Map<string, string>();
+
+  private static async renderTemplate(
+    template: `${PermissionModule}` | `${PermissionModule}.${string}`,
+    title: string,
+    data: any,
+    customTemplate?: {
+      headerId?: number;
+      footerId?: number;
+      bodyId?: string | number;
+      headerHeight: number;
+      footerHeight: number;
+    }
+  ): Promise<{ header: string; footer: string; body: string; headerMargin?: number; footerMargin?: number }> {
+    if (!customTemplate) {
+      return await TemplateHelper.renderFileForModule({
+        module: template,
+        headerData: data,
+        bodyData: data,
+        footerData: data,
+        title: title,
+      });
+    } else {
+      return await TemplateHelper.renderFileForCustom({
+        module: template,
+        customTemplate,
+        headerData: data,
+        bodyData: data,
+        footerData: data,
+        title: title,
+      });
+    }
+  }
+
   static async renderFile({
     template,
     title = "pdf-export FF Admin",
@@ -28,33 +65,25 @@ export abstract class PdfExport {
       footerHeight: number;
     };
   }) {
+    try {
+      clearTimeout(this.timeout);
+    } catch (err) {}
+    let id = StringHelper.random(32);
+    this.printing.set(id, "printing");
+
     if (folder != "") FileSystemHelper.createFolder(folder);
 
-    let header: string, footer: string, body: string, headerMargin: number, footerMargin: number;
-    if (!customTemplate) {
-      ({ header, footer, body, headerMargin, footerMargin } = await TemplateHelper.renderFileForModule({
-        module: template,
-        headerData: data,
-        bodyData: data,
-        footerData: data,
-        title: title,
-      }));
-    } else {
-      ({ header, footer, body, headerMargin, footerMargin } = await TemplateHelper.renderFileForCustom({
-        module: template,
-        customTemplate,
-        headerData: data,
-        bodyData: data,
-        footerData: data,
-        title: title,
-      }));
+    const renderedTemplate = await this.renderTemplate(template, title, data, customTemplate);
+    let { header, footer, body, headerMargin, footerMargin } = renderedTemplate;
+
+    if (!this.browserInstance || !this.browserInstance.connected) {
+      this.browserInstance = await puppeteer.launch({
+        headless: true,
+        args: ["--no-sandbox", "--disable-gpu", "--disable-setuid-sandbox"],
+      });
     }
 
-    const browser = await puppeteer.launch({
-      headless: true,
-      args: ["--no-sandbox", "--disable-gpu", "--disable-setuid-sandbox"],
-    });
-    const page = await browser.newPage();
+    const page = await this.browserInstance.newPage();
     await page.setContent(body, { waitUntil: "domcontentloaded" });
 
     const exportPath = FileSystemHelper.formatPath(folder, `${filename}.pdf`);
@@ -74,7 +103,16 @@ export abstract class PdfExport {
       footerTemplate: footer,
     });
 
-    await browser.close();
+    await page.close();
+
+    this.printing.delete(id);
+
+    if (this.printing.size == 0) {
+      this.timeout = setTimeout(() => {
+        this.browserInstance.close();
+        this.browserInstance = undefined;
+      }, 5000);
+    }
 
     return pdf;
   }
diff --git a/src/helpers/templateHelper.ts b/src/helpers/templateHelper.ts
index 2aac38b..3dc5ad8 100644
--- a/src/helpers/templateHelper.ts
+++ b/src/helpers/templateHelper.ts
@@ -11,7 +11,9 @@ export abstract class TemplateHelper {
     try {
       tmpFile = FileSystemHelper.readTemplateFile(`/src/templates/${template}.template.html`);
     } catch (err) {
-      tmpFile = FileSystemHelper.readTemplateFile(`/src/templates/${template.split(".")[1]}.template.html`);
+      tmpFile = FileSystemHelper.readTemplateFile(
+        `/src/templates/${template.split(".")[template.split(".").length - 1]}.template.html`
+      );
     }
     return tmpFile;
   }