/**
* 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);