Lines 1-81javascript
3 * render_cover.js — Render cover.html → cover.pdf via Playwright.
6 * node render_cover.js --input cover.html --out cover.pdf
7 * node render_cover.js --input cover.html --out cover.pdf --wait 1200
9 * Exit codes: 0 success, 1 bad args, 2 dependency missing, 3 render error
12const path = require("path");
13const fs = require("fs");
MediumDynamic Require
Package source references dynamic require/import behavior.
bin/skills-assets/pdf/scripts/render_cover.jsView on unpkg · L11 16 console.error("Usage: node render_cover.js --input <file.html> --out <file.pdf> [--wait <ms>]");
20// ── Arg parsing ────────────────────────────────────────────────────────────────
21const args = process.argv.slice(2);
22let inputFile = null, outFile = null, waitMs = 800;
24for (let i = 0; i < args.length; i++) {
25 if (args[i] === "--input" && args[i + 1]) { inputFile = args[++i]; }
26 else if (args[i] === "--out" && args[i + 1]) { outFile = args[++i]; }
27 else if (args[i] === "--wait" && args[i + 1]) { waitMs = parseInt(args[++i], 10); }
30if (!inputFile || !outFile) usage();
31if (!fs.existsSync(inputFile)) {
32 console.error(JSON.stringify({ status: "error", error: `File not found: ${inputFile}` }));
36// ── Playwright loader (tolerates global npm installs) ─────────────────────────
37function loadPlaywright() {
38 const { execSync } = require("child_process");
39 try { return require("playwright"); } catch (_) {}
HighChild Process
Package source references child process execution.
bin/skills-assets/pdf/scripts/render_cover.jsView on unpkg · L37 41 const root = execSync("npm root -g", { stdio: ["ignore","pipe","ignore"] }).toString().trim();
42 return require(path.join(root, "playwright"));
44 console.error(JSON.stringify({
46 error: "playwright not found",
47 hint: "Run: npm install -g playwright && npx playwright install chromium"
48 }));
HighRuntime Package Install
Package source invokes a package manager install command at runtime.
bin/skills-assets/pdf/scripts/render_cover.jsView on unpkg · L37 52// ── Main ───────────────────────────────────────────────────────────────────────
54 const { chromium } = loadPlaywright();
58 browser = await chromium.launch();
60 // Chromium binary missing — try installing
61 const { spawnSync } = require("child_process");
62 const r = spawnSync("npx", ["playwright", "install", "chromium"], { stdio: "inherit", shell: true });
63 if (r.status !== 0) {
HighShell
Package source references shell execution.
bin/skills-assets/pdf/scripts/render_cover.jsView on unpkg · L61 64 console.error(JSON.stringify({
66 error: "Chromium not installed and auto-install failed",
67 hint: "Run: npx playwright install chromium"
71 browser = await chromium.launch();
75 const page = await browser.newPage();
76 const fileUrl = "file://" + path.resolve(inputFile);
77 await page.goto(fileUrl);
78 await page.waitForTimeout(waitMs); // let CSS + any JS settle