diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index afd8760..dcaab09 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -11,9 +11,8 @@ before_script: sandbox: script: - - hugo --quiet - - node tools/pdf.js - hugo -F + - node tools/pdf.js - node tools/minify.js - firebase use default - firebase deploy --token "$FIREBASE_SANDBOX_TOKEN" @@ -27,9 +26,8 @@ prod: variables: HUGO_ENV: production script: - - hugo --quiet - - node tools/pdf.js - hugo --baseURL https://2019.devfesttoulouse.fr/ + - node tools/pdf.js - node tools/minify.js - firebase use prod - firebase deploy --token "$FIREBASE_PROD_TOKEN" diff --git a/content/schedule/_index.fr.md b/content/schedule/_index.fr.md index 1912030..3ae1467 100644 --- a/content/schedule/_index.fr.md +++ b/content/schedule/_index.fr.md @@ -15,7 +15,7 @@ horizontal: false ICal - + PDF diff --git a/content/schedule/_index.md b/content/schedule/_index.md index eb2d210..3d72e8b 100644 --- a/content/schedule/_index.md +++ b/content/schedule/_index.md @@ -14,7 +14,7 @@ horizontal: false ICal - + PDF diff --git a/tools/pdf.js b/tools/pdf.js index cfd1ae9..879b3b2 100644 --- a/tools/pdf.js +++ b/tools/pdf.js @@ -9,7 +9,10 @@ Logger.config.defaultLevel = LogLevel.Debug; const logger = Logger.getLogger('pdf'); // Configuration -const output = 'static/schedule/schedule.pdf'; +const outputs = { + 'schedule/index.html': 'public/schedule/schedule-en.pdf', + 'fr/schedule/index.html': 'public/schedule/schedule-fr.pdf', +}; const serverConf = { port: 8765, options: { @@ -70,13 +73,28 @@ async function cleanupBeforePrint(page) { await page.$$eval(toHide.join(','), elts => elts.forEach(elt => - elt.parentNode.removeChild(elt))); + elt && elt.parentNode ? elt.parentNode.removeChild(elt) : elt)); await page.addStyleTag({ content: '@page { size: auto; }', }); } +async function renderPdf(page, file, output) { + const url = `http://localhost:${serverConf.port}/${file}`; + logger.info("go to", url); + const pageResponse = await page.goto(url, {waitUntil: 'networkidle2'}); + logger.debug("done", pageResponse.statusText()); + + await cleanupBeforePrint(page); + + logger.info('export pdf', output); + const format = 'A3'; + const scale = .4; + const printBackground = true; + return page.pdf({path: output, format, scale, printBackground}); +} + (async () => { const server = await startServer(serverConf); @@ -87,18 +105,10 @@ async function cleanupBeforePrint(page) { const page = await browser.newPage(); logger.debug("opened new page"); - const file = 'fr/schedule/index.html'; - const url = `http://localhost:${serverConf.port}/${file}`; - logger.info("go to", url); - const pageResponse = await page.goto(url, {waitUntil: 'networkidle2'}); - logger.debug("done", pageResponse.statusText()); - - await cleanupBeforePrint(page); - logger.info('export pdf', output); - const format = 'A3'; - const scale = .4; - const printBackground = true; - await page.pdf({path:output, format, scale, printBackground}); + for (let [file, output] of Object.entries(outputs)) { + await renderPdf(page, file, output); + } + logger.debug("pdf done"); } catch (e) {