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});