parent
e92820e12f
commit
140fda11cc
@ -32,6 +32,41 @@ export class PdfCreator {
|
|||||||
* Initializes i18n(ext), Handlebars and puppeteer.
|
* Initializes i18n(ext), Handlebars and puppeteer.
|
||||||
*/
|
*/
|
||||||
public async init() {
|
public async init() {
|
||||||
|
const minimal_args = [
|
||||||
|
'--autoplay-policy=user-gesture-required',
|
||||||
|
'--disable-background-networking',
|
||||||
|
'--disable-background-timer-throttling',
|
||||||
|
'--disable-backgrounding-occluded-windows',
|
||||||
|
'--disable-breakpad',
|
||||||
|
'--disable-client-side-phishing-detection',
|
||||||
|
'--disable-component-update',
|
||||||
|
'--disable-default-apps',
|
||||||
|
'--disable-dev-shm-usage',
|
||||||
|
'--disable-domain-reliability',
|
||||||
|
'--disable-extensions',
|
||||||
|
'--disable-features=AudioServiceOutOfProcess',
|
||||||
|
'--disable-hang-monitor',
|
||||||
|
'--disable-ipc-flooding-protection',
|
||||||
|
'--disable-notifications',
|
||||||
|
'--disable-offer-store-unmasked-wallet-cards',
|
||||||
|
'--disable-popup-blocking',
|
||||||
|
'--disable-print-preview',
|
||||||
|
'--disable-prompt-on-repost',
|
||||||
|
'--disable-renderer-backgrounding',
|
||||||
|
'--disable-speech-api',
|
||||||
|
'--disable-sync',
|
||||||
|
'--hide-scrollbars',
|
||||||
|
'--ignore-gpu-blacklist',
|
||||||
|
'--metrics-recording-only',
|
||||||
|
'--mute-audio',
|
||||||
|
'--no-default-browser-check',
|
||||||
|
'--no-first-run',
|
||||||
|
'--no-pings',
|
||||||
|
'--no-zygote',
|
||||||
|
'--password-store=basic',
|
||||||
|
'--use-gl=swiftshader'
|
||||||
|
];
|
||||||
|
|
||||||
await i18next
|
await i18next
|
||||||
.use(Backend)
|
.use(Backend)
|
||||||
.init({
|
.init({
|
||||||
@ -46,7 +81,7 @@ export class PdfCreator {
|
|||||||
return i18next.t(str, PdfCreator.interpolations).toString();
|
return i18next.t(str, PdfCreator.interpolations).toString();
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
this.browser = await puppeteer.launch({ headless: true });
|
this.browser = await puppeteer.launch({ headless: true, args: minimal_args });
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -58,24 +93,21 @@ export class PdfCreator {
|
|||||||
if (runners.length == 1 && Object.keys(runners[0]).length == 0) {
|
if (runners.length == 1 && Object.keys(runners[0]).length == 0) {
|
||||||
runners[0] = this.generateEmptyRunner();
|
runners[0] = this.generateEmptyRunner();
|
||||||
}
|
}
|
||||||
if (runners.length > 100) {
|
if (runners.length > 50) {
|
||||||
let pdf_promises = new Array<Promise<Buffer>>();
|
let pdf_promises = new Array<Promise<Buffer>>();
|
||||||
let i, j;
|
let i, j;
|
||||||
for (i = 0, j = runners.length; i < j; i += 100) {
|
for (i = 0, j = runners.length; i < j; i += 50) {
|
||||||
let chunk = runners.slice(i, i + 100);
|
let chunk = runners.slice(i, i + 50);
|
||||||
pdf_promises.push(this.generateSponsoringContract(chunk, locale));
|
pdf_promises.push(this.generateSponsoringContract(chunk, locale));
|
||||||
}
|
}
|
||||||
const pdfs = await Promise.all(pdf_promises);
|
const pdfs = await Promise.all(pdf_promises);
|
||||||
return await this.mergePdfs(pdfs);
|
return await this.mergePdfs(pdfs);
|
||||||
}
|
}
|
||||||
console.log("triggered")
|
|
||||||
await i18next.changeLanguage(locale);
|
await i18next.changeLanguage(locale);
|
||||||
const template_source = fs.readFileSync(`${this.templateDir}/sponsoring_contract.html`, 'utf8');
|
const template_source = fs.readFileSync(`${this.templateDir}/sponsoring_contract.html`, 'utf8');
|
||||||
const template = Handlebars.compile(template_source);
|
const template = Handlebars.compile(template_source);
|
||||||
const result = template({ runners })
|
const result = template({ runners })
|
||||||
console.log("finished: bars")
|
|
||||||
const pdf = await this.renderPdf(result, { format: "A5", landscape: true });
|
const pdf = await this.renderPdf(result, { format: "A5", landscape: true });
|
||||||
console.log("finished: puppet")
|
|
||||||
return pdf
|
return pdf
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user