Act

matthewgall/url-to-png

  • Builds
  • latest 0.0.1 / 2017-11-02
  • Created 2017-11-02
  • Last modified 2017-11-03
  • grade 2

Description

Sadly, this act has no description.


API

To run the act, send a HTTP POST request to:

https://api.apify.com/v2/acts/matthewgall~url-to-png/runs?token=<YOUR_API_TOKEN>

The POST payload will be passed as input for the act. For more information, read the docs.


Example input

Content type: application/json; charset=utf-8

{ "url": "http://wikipedia.com" }

Source code

Based on the apify/actor-node-puppeteer Docker image (see docs).

const Apify = require('apify');

Apify.main(async () => {
    const input = await Apify.getValue('INPUT');
    
    if (!input || !input.url) throw new Error('Invalid input, must be a JSON object with the "url" field!');
    
    console.log('Launching Puppeteer...');
    const browser = await Apify.launchPuppeteer();
    
    console.log(`Opening URL: ${input.url}`);  
    const page = await browser.newPage();
    await page.goto(input.url);
    
    // Get the "viewport" of the page, as reported by the page.
    console.log('Determining page dimensions...');
    const dimensions = await page.evaluate(() => ({
        width: document.documentElement.clientWidth,
        height: document.documentElement.clientHeight,
        deviceScaleFactor: window.devicePixelRatio
    }));
    console.log(`Dimension: ${JSON.stringify(dimensions)}`);
    
    // Grab a screenshot
    console.log('Saving screenshot...');
    const screenshotBuffer = await page.screenshot();
    await Apify.setValue('screenshot.png', screenshotBuffer, { contentType: 'image/png' });
    
    console.log('Closing Puppeteer...');
    await browser.close();
    
    console.log('Done.');
    console.log('You can check the output in the key-value on the following URLs:');
    const storeId = process.env.APIFY_DEFAULT_KEY_VALUE_STORE_ID;
    console.log(`- https://api.apify.com/v2/key-value-stores/${storeId}/records/screenshot.png`);
});