Nicely Presented Misnomer

    iobroker.phantomjs

    1.1.3 • Public • Published

    Logo

    ioBroker.phantomjs

    Number of Installations Number of Installations NPM version Downloads Tests

    NPM

    This adapter allows you to create the screen shots of web pages (e.g. flot) and save it as png file or share it via internal WEB-server.

    User can later send this file in email or per telegram or whatever.

    Slow web clients can display the charts if the charts will be automatically generated every x minutes.

    Prerequire

    It is used prebuild package of phantomjs. If for your system the prebuild does not exist, you cannot use this adapter. On some linux systems the additional library "libfontconfig" is required. It can be installed as follow:

    sudo apt-get install libfontconfig
    

    Install Errors

    If you get an error like

    Unexpected platform or architecture: linux/armIt seems there is no binary available for your platform/architecture Try to install PhantomJS globally
    

    during install then we are sorry. You need to Google and search on how to install phantomjs globally on your system.

    Usage

    There are two ways how to create images.

    Via states

    By creation of the instance for states will be created:

    • filename - file name, where the picture will be saved. If path is not absolute, it will be relative to .../iobroker/node_modules/iobroker.phantomjs.
    • width - width of the picture. Default value 800px.
    • height - height of the picture. Default value 600px.
    • paging - Format of the PDF page. File name must end with ".pdf"
    • renderTime - Interval in ms to wait till the page will be rendered.
    • online - If requested URL picture must be uploaded to internal web server. It could be accessed then via http://ip:8082/state/phantomjs.0.pictures.filename_png
    • clipTop - top position of the clip rectangle. Default value 0px.
    • clipLeft - left position of the clip rectangle. Default value 0px.
    • clipWidth - width of the clip rectangle. Default value is equal with width. Attention this value will be overwritten every time by the width change.
    • clipHeight - height position of the clip rectangle. Default value is equal with height. Attention this value will be overwritten every time by the height change.
    • scrollTop - Scroll top position. Default value 0px.
    • scrollLeft - Scroll left position. Default value 0px.

    After the url state is written, the adapter tries to create the picture and as it created changes the ack flag of url state to true.

    Via messages

    With the script code, like this:

    sendTo('phantomjs.0', 'send', {
        url:                    'http://localhost:8082/flot/index.html?l%5B0%5D%5Bid%5D=system.adapter.admin.0.memHeapTotal&l%5B0%5D%5Boffset%5D=0&l%5B0%5D%5Bart%5D=average&l%5B0%5D%5Bcolor%5D=%23FF0000&l%5B0%5D%5Bthickness%5D=3&l%5B0%5D%5Bshadowsize%5D=3&timeArt=relative&relativeEnd=now&range=10&live=false&aggregateType=step&aggregateSpan=300&hoverDetail=false&useComma=false&zoom=false',
        output:                 'picture.png',  // default value
        width:                  800,            // default value
        height:                 600,            // default value
        timeout:                2000,           // default value
        zoom:                   1,              // default value
    
        'clip-top':             0,              // default value
        'clip-left':            0,              // default value
        'clip-width':           800,            // default value is equal to width
        'clip-height':          600,            // default value is equal to height
        'scroll-top':           0,              // default value
        'scroll-left':          0,              // default value
    
        online:                 false           // default value
    }, function (result) {
        if (result.error) {
            console.error(JSON.stringify(result.error));
        }
        if (result.stderr) {
            console.error(result.stderr);
        }
        if (result.stdout) {
            console.log(result.stdout);
        }
        console.log(result.output);
    });
    

    you can create a screen shot of some URL. Only url field is mandatory all others are optional and will be filled from current settings.

    PDF Generation

    sendTo('phantomjs.0', 'send', {
        url:                    'http://localhost:8082/flot/index.html?l%5B0%5D%5Bid%5D=system.adapter.admin.0.memHeapTotal&l%5B0%5D%5Boffset%5D=0&l%5B0%5D%5Bart%5D=average&l%5B0%5D%5Bcolor%5D=%23FF0000&l%5B0%5D%5Bthickness%5D=3&l%5B0%5D%5Bshadowsize%5D=3&timeArt=relative&relativeEnd=now&range=10&live=false&aggregateType=step&aggregateSpan=300&hoverDetail=false&useComma=false&zoom=false',
        output:                 'document.pdf',
    
        'paper-margin':         '0cm',          // paper-margin or paper-margin-top/paper-margin-left
        'paper-margin-top':     0,
        'paper-margin-left':    0,
    
        // only one of
        // 1.
        'paper-format':         'A4',           // 'A3', 'A4', 'A5', 'Legal', 'Letter', 'Tabloid': 'paper-format' should be used with 'paper-orientation'
        'paper-orientation':    'portrait',     // 'portrait', 'landscape'
    
        // 2.
        'paper-width':          200,            // '5in',   '10cm': 'paper-width' should be used 'paper-height'
        'paper-height':         300,            // '7.5in', '20cm'
    
        timeout:                2000            // default value
    }, function (result) {
        if (result.error) {
            console.error(JSON.stringify(result.error));
        }
        if (result.stderr) {
            console.error(result.stderr);
        }
        if (result.stdout) {
            console.log(result.stdout);
        }
        console.log(result.output);
    });
    

    Supported dimension units are: 'mm', 'cm', 'in', 'px'. No unit means 'px'.

    You can read more about phantomJS here.

    Changelog

    1.1.3 (2022-03-26)

    • (Apollon77) fix default values of some objects

    1.1.2 (2020-07-28)

    • (Apollon77) added ssl handling to ignore self signed ssl certificates

    1.1.1 (2020-07-27)

    • (Apollon77) libfontconfig automatically installed

    1.0.2 (2020-07-24)

    • (Apollon77) Add config to automatically install libfontconfig when js-controller 3+ is used
    • (Apollon77) Add ignore-ssl-errors=true to parameters to prevent error with self signed ssl certs
    • (Apollon77) Adjust state description to not confuse witha static port number :-)

    1.0.1 (2018-05-04)

    • (bluefox) Problem with page size fixed

    1.0.0 (2018-02-19)

    • (bluefox) clipping support
    • (bluefox) IMPORTANT: paging is replaces by 'paper-xxx' options.

    0.1.3 (2017-09-24)

    • (bluefox) add pdf support

    0.1.2 (2016-04-30)

    • (bluefox) change package name from phantomjs to phantomjs-prebuilt

    0.1.0 (2016-04-30)

    • (bluefox) add renderTime
    • (bluefox) add upload to local web-server

    0.0.1 (2016-04-28)

    • (bluefox) initial commit

    License

    Copyright 2016-2022 bluefox dogafox@gmail.com.

    Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

    Install

    npm i iobroker.phantomjs

    DownloadsWeekly Downloads

    10

    Version

    1.1.3

    License

    Apache-2.0

    Unpacked Size

    63.4 kB

    Total Files

    14

    Last publish

    Collaborators

    • foxriver76
    • iobluefox
    • bluefox
    • apollon77
    • ldittmar
    • alcalzone