chore: initialize math-tasks project
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
import puppeteer from 'puppeteer';
|
||||
import { resolve, basename } from 'path';
|
||||
import { existsSync, mkdirSync } from 'fs';
|
||||
import { fileURLToPath } from 'url';
|
||||
|
||||
const OUTPUT_DIR = resolve(fileURLToPath(import.meta.url), '../../../output/pdf');
|
||||
|
||||
async function generatePdf(htmlPath) {
|
||||
const absolutePath = resolve(htmlPath);
|
||||
if (!existsSync(absolutePath)) {
|
||||
console.error(`File not found: ${absolutePath}`);
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
mkdirSync(OUTPUT_DIR, { recursive: true });
|
||||
|
||||
const pdfName = basename(absolutePath, '.html') + '.pdf';
|
||||
const pdfPath = resolve(OUTPUT_DIR, pdfName);
|
||||
|
||||
const browser = await puppeteer.launch({ headless: true });
|
||||
const page = await browser.newPage();
|
||||
|
||||
await page.goto(`file://${absolutePath}`, { waitUntil: 'networkidle0' });
|
||||
|
||||
await page.pdf({
|
||||
path: pdfPath,
|
||||
format: 'A4',
|
||||
printBackground: true,
|
||||
margin: { top: 0, right: 0, bottom: 0, left: 0 },
|
||||
preferCSSPageSize: true,
|
||||
});
|
||||
|
||||
await browser.close();
|
||||
console.log(`PDF generated: ${pdfPath}`);
|
||||
return pdfPath;
|
||||
}
|
||||
|
||||
const htmlFile = process.argv[2];
|
||||
if (!htmlFile) {
|
||||
console.error('Usage: node generate-pdf.mjs <html-file>');
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
generatePdf(htmlFile);
|
||||
Reference in New Issue
Block a user