/** * Quick PDF Generator for Markdown Files * Uses Puppeteer to generate PDFs directly from markdown files */ const puppeteer = require('puppeteer'); const marked = require('marked'); const fs = require('fs').promises; const path = require('path'); async function generatePdfFromMarkdown(markdownPath, outputPath, title) { const markdown = await fs.readFile(markdownPath, 'utf-8'); const html = marked.parse(markdown); const fullHtml = ` ${title}

${title}

${html} `; const browser = await puppeteer.launch({ headless: true, args: ['--no-sandbox', '--disable-setuid-sandbox'] }); const page = await browser.newPage(); await page.setContent(fullHtml, { waitUntil: 'networkidle0' }); await page.pdf({ path: outputPath, format: 'A4', printBackground: true, margin: { top: '2cm', right: '2cm', bottom: '2cm', left: '2cm' } }); await browser.close(); console.log(`āœ“ Generated: ${path.basename(outputPath)}`); } async function main() { const files = [ { input: 'docs/research/pluralistic-values-research-foundations.md', output: 'public/downloads/pluralistic-values-research-foundations.pdf', title: 'Pluralistic Values: Research Foundations' }, { input: 'docs/value-pluralism-faq.md', output: 'public/downloads/value-pluralism-faq.pdf', title: 'Value Pluralism in Tractatus: FAQ' }, { input: 'docs/pluralistic-values-deliberation-plan-v2.md', output: 'public/downloads/pluralistic-values-deliberation-plan-v2.pdf', title: 'Pluralistic Values Deliberation Enhancement Plan' } ]; for (const file of files) { await generatePdfFromMarkdown(file.input, file.output, file.title); } console.log('\nāœ“ All PDFs generated successfully'); } main().catch(console.error);