From 47a05facb33c178e9bf3f99c25049abc010361c4 Mon Sep 17 00:00:00 2001 From: Nicolai Ort Date: Sat, 6 Feb 2021 21:30:18 +0100 Subject: [PATCH] Moved pdf creatior initialization to new function ref #5 --- src/PdfCreator.ts | 17 ++++++++++------- src/controllers/PdfController.ts | 5 +---- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/PdfCreator.ts b/src/PdfCreator.ts index c527ab9..9c9cdff 100644 --- a/src/PdfCreator.ts +++ b/src/PdfCreator.ts @@ -20,7 +20,13 @@ export class PdfCreator { * Initializes i18n(ext), Handlebars and puppeteer. */ constructor() { - i18next + this.init().then(() => { + return this; + }) + } + + public async init() { + await i18next .use(Backend) .init({ fallbackLng: 'en', @@ -29,14 +35,12 @@ export class PdfCreator { loadPath: path.join(__dirname, '/locales/{{lng}}.json') } }); - Handlebars.registerHelper('__', + await Handlebars.registerHelper('__', function (str) { return i18next.t(str, PdfCreator.interpolations).toString(); } ); - puppeteer.launch({ headless: true }).then(browser => { - this.browser = browser; - }); + this.browser = await puppeteer.launch({ headless: true }); } /** @@ -49,7 +53,6 @@ export class PdfCreator { const template_source = fs.readFileSync(`${this.templateDir}/sponsoring_contract.html`, 'utf8'); const template = Handlebars.compile(template_source); const result = template({ runners }) - console.log(template) return await this.renderPdf(result, { format: "A5", landscape: true }); } @@ -59,7 +62,7 @@ export class PdfCreator { * @param options Puppeteer PDF option (eg: {format: "A4"}) */ public async renderPdf(html: string, options): Promise { - const page = await this.browser.newPage(); + let page = await this.browser.newPage(); await page.setContent(html); const pdf = await page.pdf(options); await page.close(); diff --git a/src/controllers/PdfController.ts b/src/controllers/PdfController.ts index 0190235..0f6ac16 100644 --- a/src/controllers/PdfController.ts +++ b/src/controllers/PdfController.ts @@ -10,10 +10,7 @@ import { PdfCreator } from '../PdfCreator'; */ @JsonController() export class PdfController { - private pdf: PdfCreator; - constructor() { - this.pdf = new PdfCreator(); - } + private pdf: PdfCreator = new PdfCreator(); @Post('/contracts') @OpenAPI({ description: "Generate Sponsoring contract pdfs from runner objects.
You can choose your prefered locale by passing the 'locale' query-param." })