diff --git a/src/PdfCreator.ts b/src/PdfCreator.ts index 67ae4f8..81f1463 100644 --- a/src/PdfCreator.ts +++ b/src/PdfCreator.ts @@ -9,6 +9,7 @@ import path from 'path'; import { PDFDocument } from 'pdf-lib'; import puppeteer from "puppeteer"; import { awaitAsyncHandlebarHelpers, helpers } from './asyncHelpers'; +import { config } from './config'; import { Runner } from './models/Runner'; import { RunnerGroup } from './models/RunnerGroup'; @@ -93,7 +94,7 @@ export class PdfCreator { * @param runner The runner you want to generate the contracts for. * @param locale The locale used for the contracts (default:en) */ - public async generateSponsoringContract(runners: Runner[], locale: string = "en"): Promise { + public async generateSponsoringContract(runners: Runner[], locale: string = "en", codeformat: string = config.codeformat): Promise { if (runners.length == 1 && Object.keys(runners[0]).length == 0) { runners[0] = this.generateEmptyRunner(); } @@ -110,7 +111,7 @@ export class PdfCreator { await i18next.changeLanguage(locale); const template_source = fs.readFileSync(`${this.templateDir}/sponsoring_contract.html`, 'utf8'); const template = Handlebars.compile(template_source); - let result = template({ runners }); + let result = template({ runners, codeformat }); result = await awaitAsyncHandlebarHelpers(result); const pdf = await this.renderPdf(result, { format: "A5", landscape: true }); return pdf diff --git a/src/config.ts b/src/config.ts index 3b95934..00e6d6d 100644 --- a/src/config.ts +++ b/src/config.ts @@ -4,7 +4,8 @@ configDotenv(); export const config = { internal_port: parseInt(process.env.APP_PORT) || 4010, development: process.env.NODE_ENV === "production", - version: process.env.VERSION || require('../package.json').version + version: process.env.VERSION || require('../package.json').version, + codeformat: process.env.CODEFORMAT || "qrcode" } let errors = 0 if (typeof config.internal_port !== "number") { diff --git a/src/controllers/PdfController.ts b/src/controllers/PdfController.ts index affc7a4..2518692 100644 --- a/src/controllers/PdfController.ts +++ b/src/controllers/PdfController.ts @@ -15,7 +15,7 @@ export class PdfController { @Post('/contracts') @OpenAPI({ description: "Generate Sponsoring contract pdfs from runner objects.
You can choose your prefered locale by passing the 'locale' query-param.
If you provide more than 100 runenrs this could take a moment or two (we tested up to 1000 runners in about 70sec so far)." }) - async generateContracts(@Body({ validate: true, options: { limit: "500mb" } }) runners: Runner | Runner[], @Res() res: any, @QueryParam("locale") locale: string) { + async generateContracts(@Body({ validate: true, options: { limit: "500mb" } }) runners: Runner | Runner[], @Res() res: any, @QueryParam("locale") locale: string, @QueryParam("codeformat") codeformat: string) { if (!this.initialized) { await this.pdf.init(); this.initialized = true; @@ -23,7 +23,7 @@ export class PdfController { if (!Array.isArray(runners)) { runners = [runners]; } - const contracts = await this.pdf.generateSponsoringContract(runners, locale); + const contracts = await this.pdf.generateSponsoringContract(runners, locale, codeformat); res.setHeader('content-type', 'application/pdf'); return contracts; } diff --git a/src/templates/sponsoring_contract.html b/src/templates/sponsoring_contract.html index c22eb5e..b75d7f2 100644 --- a/src/templates/sponsoring_contract.html +++ b/src/templates/sponsoring_contract.html @@ -55,7 +55,7 @@
+ src="{{--bc this.id ../codeformat}}" />