takeSnap
Suvodip 2025-03-11 18:06:25 +05:30
parent 6d380c6cbb
commit dc6194f7e7
1 changed files with 11 additions and 9 deletions

View File

@ -1,36 +1,38 @@
const puppeteer = require('puppeteer');
const takeSnap = async (req, res) => {
console.log('req.body.url', req.body.url);
// Set CORS headers
res.setHeader('Access-Control-Allow-Origin', '*'); // Allow all origins
res.setHeader('Access-Control-Allow-Methods', 'POST, OPTIONS'); // Allow POST and OPTIONS methods
res.setHeader('Access-Control-Allow-Methods', 'POST, OPTIONS'); // Allow POST and OPTIONS
res.setHeader('Access-Control-Allow-Headers', 'Content-Type'); // Allow Content-Type header
// Handle preflight request (OPTIONS)
if (req.method === 'OPTIONS') {
res.status(200).end();
res.status(200).end(); // Respond to preflight request
return;
}
try {
const url = req.body.url;
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto(url, { waitUntil: 'networkidle2' });
await page.screenshot({ path: 'screenshot.png', fullPage: true });
// Take screenshot and convert to base64
const screenshot = await page.screenshot({ encoding: 'base64', fullPage: true });
await browser.close();
console.log('Screenshot saved as screenshot.png');
console.log('Screenshot taken');
// Send a response back to the client
res.status(200).json({ message: 'Screenshot saved as screenshot.png' });
// Send the base64-encoded image in the response
res.status(200).json({ image: screenshot });
} catch (error) {
console.error('Error taking screenshot:', error);
res.status(500).json({ error: 'Failed to take screenshot' });
}
};
module.exports = takeSnap;
module.exports = takeSnap;