src/hdalab/scripts/capture-phantomjs.js
author ymh <ymh.work@gmail.com>
Fri, 03 Apr 2015 18:41:01 +0200
changeset 618 cb8b833ad122
parent 492 19220d52bce7
permissions -rw-r--r--
correct celery errors
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
492
19220d52bce7 add preview calculation
ymh <ymh.work@gmail.com>
parents:
diff changeset
     1
//from https://github.com/makinacorpus/django-screamshot
19220d52bce7 add preview calculation
ymh <ymh.work@gmail.com>
parents:
diff changeset
     2
19220d52bce7 add preview calculation
ymh <ymh.work@gmail.com>
parents:
diff changeset
     3
var page = require('webpage').create(),
19220d52bce7 add preview calculation
ymh <ymh.work@gmail.com>
parents:
diff changeset
     4
    system = require('system');
19220d52bce7 add preview calculation
ymh <ymh.work@gmail.com>
parents:
diff changeset
     5
19220d52bce7 add preview calculation
ymh <ymh.work@gmail.com>
parents:
diff changeset
     6
/** 
19220d52bce7 add preview calculation
ymh <ymh.work@gmail.com>
parents:
diff changeset
     7
 * arguments:
19220d52bce7 add preview calculation
ymh <ymh.work@gmail.com>
parents:
diff changeset
     8
 * [1] => URL
19220d52bce7 add preview calculation
ymh <ymh.work@gmail.com>
parents:
diff changeset
     9
 * [2] => output. Use /dev/stdout if you want to capture.
19220d52bce7 add preview calculation
ymh <ymh.work@gmail.com>
parents:
diff changeset
    10
 * [3] => size
19220d52bce7 add preview calculation
ymh <ymh.work@gmail.com>
parents:
diff changeset
    11
 */
19220d52bce7 add preview calculation
ymh <ymh.work@gmail.com>
parents:
diff changeset
    12
19220d52bce7 add preview calculation
ymh <ymh.work@gmail.com>
parents:
diff changeset
    13
var address = system.args[1],
19220d52bce7 add preview calculation
ymh <ymh.work@gmail.com>
parents:
diff changeset
    14
    output  = system.args[2];
19220d52bce7 add preview calculation
ymh <ymh.work@gmail.com>
parents:
diff changeset
    15
19220d52bce7 add preview calculation
ymh <ymh.work@gmail.com>
parents:
diff changeset
    16
config = {}
19220d52bce7 add preview calculation
ymh <ymh.work@gmail.com>
parents:
diff changeset
    17
system.args.forEach(function(arg, i) {
19220d52bce7 add preview calculation
ymh <ymh.work@gmail.com>
parents:
diff changeset
    18
    if (i > 2) {
19220d52bce7 add preview calculation
ymh <ymh.work@gmail.com>
parents:
diff changeset
    19
        namev = arg.split('=');
19220d52bce7 add preview calculation
ymh <ymh.work@gmail.com>
parents:
diff changeset
    20
        config[namev[0].replace('--', '')] = namev[1];
19220d52bce7 add preview calculation
ymh <ymh.work@gmail.com>
parents:
diff changeset
    21
    }
19220d52bce7 add preview calculation
ymh <ymh.work@gmail.com>
parents:
diff changeset
    22
});
19220d52bce7 add preview calculation
ymh <ymh.work@gmail.com>
parents:
diff changeset
    23
19220d52bce7 add preview calculation
ymh <ymh.work@gmail.com>
parents:
diff changeset
    24
var method = config.method || 'get',
19220d52bce7 add preview calculation
ymh <ymh.work@gmail.com>
parents:
diff changeset
    25
     width = config.width || 1400,
19220d52bce7 add preview calculation
ymh <ymh.work@gmail.com>
parents:
diff changeset
    26
    height = config.height || 1,
19220d52bce7 add preview calculation
ymh <ymh.work@gmail.com>
parents:
diff changeset
    27
      wait = config.wait || 200;
19220d52bce7 add preview calculation
ymh <ymh.work@gmail.com>
parents:
diff changeset
    28
19220d52bce7 add preview calculation
ymh <ymh.work@gmail.com>
parents:
diff changeset
    29
/**
19220d52bce7 add preview calculation
ymh <ymh.work@gmail.com>
parents:
diff changeset
    30
 * please note: the default height is intentionaly left as 1.
19220d52bce7 add preview calculation
ymh <ymh.work@gmail.com>
parents:
diff changeset
    31
 * the thing is, if you skip the height, phantomjs falls back
19220d52bce7 add preview calculation
ymh <ymh.work@gmail.com>
parents:
diff changeset
    32
 * to some default viewport. and that's not what we want. we
19220d52bce7 add preview calculation
ymh <ymh.work@gmail.com>
parents:
diff changeset
    33
 * want to set the width, and let the height auto-calculate.
19220d52bce7 add preview calculation
ymh <ymh.work@gmail.com>
parents:
diff changeset
    34
 */
19220d52bce7 add preview calculation
ymh <ymh.work@gmail.com>
parents:
diff changeset
    35
page.viewportSize = {width: width, height: height}
19220d52bce7 add preview calculation
ymh <ymh.work@gmail.com>
parents:
diff changeset
    36
19220d52bce7 add preview calculation
ymh <ymh.work@gmail.com>
parents:
diff changeset
    37
format = config.format || 'png';
19220d52bce7 add preview calculation
ymh <ymh.work@gmail.com>
parents:
diff changeset
    38
19220d52bce7 add preview calculation
ymh <ymh.work@gmail.com>
parents:
diff changeset
    39
if (format == 'pdf') {
19220d52bce7 add preview calculation
ymh <ymh.work@gmail.com>
parents:
diff changeset
    40
    page.paperSize = {
19220d52bce7 add preview calculation
ymh <ymh.work@gmail.com>
parents:
diff changeset
    41
        format: 'A4',
19220d52bce7 add preview calculation
ymh <ymh.work@gmail.com>
parents:
diff changeset
    42
        orientation: config.orientation || 'portrait',
19220d52bce7 add preview calculation
ymh <ymh.work@gmail.com>
parents:
diff changeset
    43
        margin: config.margin || '0cm'
19220d52bce7 add preview calculation
ymh <ymh.work@gmail.com>
parents:
diff changeset
    44
    }
19220d52bce7 add preview calculation
ymh <ymh.work@gmail.com>
parents:
diff changeset
    45
}
19220d52bce7 add preview calculation
ymh <ymh.work@gmail.com>
parents:
diff changeset
    46
19220d52bce7 add preview calculation
ymh <ymh.work@gmail.com>
parents:
diff changeset
    47
page.settings.resourceTimeout = 10000;
19220d52bce7 add preview calculation
ymh <ymh.work@gmail.com>
parents:
diff changeset
    48
19220d52bce7 add preview calculation
ymh <ymh.work@gmail.com>
parents:
diff changeset
    49
page.open(address, function(status){
19220d52bce7 add preview calculation
ymh <ymh.work@gmail.com>
parents:
diff changeset
    50
    if (status == 'success') {
19220d52bce7 add preview calculation
ymh <ymh.work@gmail.com>
parents:
diff changeset
    51
        setTimeout(function(){
19220d52bce7 add preview calculation
ymh <ymh.work@gmail.com>
parents:
diff changeset
    52
            page.render(output, {format: format});
19220d52bce7 add preview calculation
ymh <ymh.work@gmail.com>
parents:
diff changeset
    53
            phantom.exit();
19220d52bce7 add preview calculation
ymh <ymh.work@gmail.com>
parents:
diff changeset
    54
        }, wait);
19220d52bce7 add preview calculation
ymh <ymh.work@gmail.com>
parents:
diff changeset
    55
    }
19220d52bce7 add preview calculation
ymh <ymh.work@gmail.com>
parents:
diff changeset
    56
});