@@ -9,6 +9,7 @@ import path from 'path';
 | 
			
		||||
import { PDFDocument } from 'pdf-lib';
 | 
			
		||||
import puppeteer from "puppeteer";
 | 
			
		||||
import { Runner } from './models/Runner';
 | 
			
		||||
import { RunnerCard } from './models/RunnerCard';
 | 
			
		||||
import { RunnerGroup } from './models/RunnerGroup';
 | 
			
		||||
/**
 | 
			
		||||
 * This class is responsible for all things pdf creation.
 | 
			
		||||
@@ -112,6 +113,30 @@ export class PdfCreator {
 | 
			
		||||
        return pdf
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Generate runner card pdfs.
 | 
			
		||||
     * @param cards The runner cars you want to generate the cards for.
 | 
			
		||||
     * @param locale The locale used for the cards (default:en)
 | 
			
		||||
     */
 | 
			
		||||
    public async generateRunnerCards(cards: RunnerCard[], locale: string = "en"): Promise<Buffer> {
 | 
			
		||||
        if (cards.length > 10) {
 | 
			
		||||
            let pdf_promises = new Array<Promise<Buffer>>();
 | 
			
		||||
            let i, j;
 | 
			
		||||
            for (i = 0, j = cards.length; i < j; i += 10) {
 | 
			
		||||
                let chunk = cards.slice(i, i + 10);
 | 
			
		||||
                pdf_promises.push(this.generateRunnerCards(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_card.html`, 'utf8');
 | 
			
		||||
        const template = Handlebars.compile(template_source);
 | 
			
		||||
        const result = template({ cards })
 | 
			
		||||
        const pdf = await this.renderPdf(result, { format: "A4", landscape: false });
 | 
			
		||||
        return pdf
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Converts all images in html to base64.
 | 
			
		||||
     * Works with image files in the template directory or images from urls.
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user