1const Apify = require('apify');
2
3Apify.main(async () => {
4 const input = await Apify.getValue('INPUT');
5
6 if (!input || !input.url) throw new Error('Invalid input, must be a JSON object with the "url" field!');
7
8 console.log('Launching Puppeteer...');
9 const browser = await Apify.launchPuppeteer();
10
11 console.log(`Opening URL: ${input.url}`);
12 const page = await browser.newPage();
13 await page.goto(input.url);
14
15
16 console.log('Determining page dimensions...');
17 const dimensions = await page.evaluate(() => ({
18 width: document.documentElement.clientWidth,
19 height: document.documentElement.clientHeight,
20 deviceScaleFactor: window.devicePixelRatio
21 }));
22 console.log(`Dimension: ${JSON.stringify(dimensions)}`);
23
24
25 console.log('Saving screenshot...');
26 const screenshotBuffer = await page.screenshot({ fullPage: true });
27 await Apify.setValue('screenshot.png', screenshotBuffer, { contentType: 'image/png' });
28
29 console.log('Saving PDF snapshot...');
30 const pdfBuffer = await page.pdf({ format: 'A4'});
31 await Apify.setValue('page.pdf', pdfBuffer, { contentType: 'application/pdf' });
32
33 console.log('Closing Puppeteer...');
34 await browser.close();
35
36 console.log('Done.');
37 console.log('You can check the output in the key-value on the following URLs:');
38 const storeId = process.env.APIFY_DEFAULT_KEY_VALUE_STORE_ID;
39 console.log(`- https://api.apify.com/v2/key-value-stores/${storeId}/records/screenshot.png`);
40
41
42 console.log(`- https://api.apify.com/v2/key-value-stores/${storeId}/records/page.pdf?disableRedirect=1`);
43});