38 lines
1.0 KiB
JavaScript
38 lines
1.0 KiB
JavaScript
const ejs = require("ejs");
|
|
const fs = require("fs");
|
|
const path = require("path");
|
|
const puppeteer = require("puppeteer");
|
|
|
|
// File paths
|
|
const dataPath = path.join(__dirname, "content.json");
|
|
const templatePath = path.join(__dirname, "template.ejs");
|
|
const outputPath = path.join(__dirname, "generated_resume.html");
|
|
|
|
// Read data and template
|
|
const jsonData = JSON.parse(fs.readFileSync(dataPath, "utf-8"));
|
|
const template = fs.readFileSync(templatePath, "utf-8");
|
|
|
|
// Render HTML
|
|
const html = ejs.render(template, jsonData);
|
|
|
|
// Write the output
|
|
fs.writeFileSync(outputPath, html, "utf-8");
|
|
|
|
console.log(`Successfully generated resume at ${outputPath}`);
|
|
|
|
async function generatePdf(htmlPath) {
|
|
const browser = await puppeteer.launch();
|
|
const page = await browser.newPage();
|
|
await page.goto(`file://${htmlPath}`, {
|
|
waitUntil: "networkidle2",
|
|
});
|
|
// Saves the PDF to hn.pdf.
|
|
await page.pdf({
|
|
path: "resume.pdf",
|
|
});
|
|
|
|
await browser.close();
|
|
}
|
|
|
|
generatePdf(outputPath).then(() => console.log("Generated PDF version"));
|