parent
d1577cd08d
commit
955e11846b
@ -10,6 +10,7 @@ import { PDFDocument } from 'pdf-lib';
|
|||||||
import puppeteer from "puppeteer";
|
import puppeteer from "puppeteer";
|
||||||
import { awaitAsyncHandlebarHelpers, helpers } from './asyncHelpers';
|
import { awaitAsyncHandlebarHelpers, helpers } from './asyncHelpers';
|
||||||
import { config } from './config';
|
import { config } from './config';
|
||||||
|
import { CertificateRunner } from './models/CertificateRunner';
|
||||||
import { Runner } from './models/Runner';
|
import { Runner } from './models/Runner';
|
||||||
import { RunnerCard } from './models/RunnerCard';
|
import { RunnerCard } from './models/RunnerCard';
|
||||||
import { RunnerGroup } from './models/RunnerGroup';
|
import { RunnerGroup } from './models/RunnerGroup';
|
||||||
@ -153,13 +154,38 @@ export class PdfCreator {
|
|||||||
await i18next.changeLanguage(locale);
|
await i18next.changeLanguage(locale);
|
||||||
const template_source = fs.readFileSync(`${this.templateDir}/runner_card.html`, 'utf8');
|
const template_source = fs.readFileSync(`${this.templateDir}/runner_card.html`, 'utf8');
|
||||||
const template = Handlebars.compile(template_source);
|
const template = Handlebars.compile(template_source);
|
||||||
let result = template({ cards, cards_swapped, eventname: "LfK! 2069", codeformat: "qrcode" })
|
let result = template({ cards, cards_swapped, eventname: config.eventname, codeformat: codeformat })
|
||||||
result = await awaitAsyncHandlebarHelpers(result);
|
result = await awaitAsyncHandlebarHelpers(result);
|
||||||
fs.writeFileSync("lelelelele.tmp", result);
|
|
||||||
const pdf = await this.renderPdf(result, { format: "A4", landscape: false });
|
const pdf = await this.renderPdf(result, { format: "A4", landscape: false });
|
||||||
return pdf
|
return pdf
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generate sponsoring contract pdfs.
|
||||||
|
* @param runner The runner you want to generate the contracts for.
|
||||||
|
* @param locale The locale used for the contracts (default:en)
|
||||||
|
*/
|
||||||
|
public async generateRunnerCertficates(runners: CertificateRunner[], locale: string = "en"): Promise<Buffer> {
|
||||||
|
if (runners.length > 50) {
|
||||||
|
let pdf_promises = new Array<Promise<Buffer>>();
|
||||||
|
let i, j;
|
||||||
|
for (i = 0, j = runners.length; i < j; i += 50) {
|
||||||
|
let chunk = runners.slice(i, i + 50);
|
||||||
|
pdf_promises.push(this.generateRunnerCertficates(chunk, locale));
|
||||||
|
}
|
||||||
|
const pdfs = await Promise.all(pdf_promises);
|
||||||
|
return await this.mergePdfs(pdfs);
|
||||||
|
}
|
||||||
|
await i18next.changeLanguage(locale);
|
||||||
|
const template_source = fs.readFileSync(`${this.templateDir}/runner_certificate.html`, 'utf8');
|
||||||
|
const template = Handlebars.compile(template_source);
|
||||||
|
let result = template({ runners, eventname: config.eventname });
|
||||||
|
result = await awaitAsyncHandlebarHelpers(result);
|
||||||
|
const pdf = await this.renderPdf(result, { format: "A5", landscape: true });
|
||||||
|
fs.writeFileSync("lelelelele.tmp", pdf);
|
||||||
|
return pdf;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Converts all images in html to base64.
|
* Converts all images in html to base64.
|
||||||
* Works with image files in the template directory or images from urls.
|
* Works with image files in the template directory or images from urls.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user