Monorepo for Aesthetic.Computer aesthetic.computer
at main 31 lines 992 B view raw
1#!/usr/bin/env node 2 3// Generate the SO SOFT proposal PDF from proposal.html using Puppeteer. 4// Usage: node sosoft/generate-pdf.mjs 5 6import puppeteer from "puppeteer"; 7import { fileURLToPath } from "url"; 8import path from "path"; 9 10const __dirname = path.dirname(fileURLToPath(import.meta.url)); 11const htmlPath = path.join(__dirname, "proposal.html"); 12const outputPath = path.join(__dirname, "proposal.pdf"); 13 14const browser = await puppeteer.launch({ 15 headless: true, 16 executablePath: process.env.PUPPETEER_EXECUTABLE_PATH || "/usr/sbin/chromium-browser", 17 args: ["--no-sandbox", "--disable-setuid-sandbox"], 18}); 19 20const page = await browser.newPage(); 21await page.goto(`file://${htmlPath}`, { waitUntil: "networkidle0" }); 22 23await page.pdf({ 24 path: outputPath, 25 format: "Letter", 26 printBackground: true, 27 margin: { top: "0.65in", bottom: "0.65in", left: "0.75in", right: "0.75in" }, 28}); 29 30await browser.close(); 31console.log(`PDF written to ${outputPath}`);