|
1 //from https://github.com/makinacorpus/django-screamshot |
|
2 |
|
3 var page = require('webpage').create(), |
|
4 system = require('system'); |
|
5 |
|
6 /** |
|
7 * arguments: |
|
8 * [1] => URL |
|
9 * [2] => output. Use /dev/stdout if you want to capture. |
|
10 * [3] => size |
|
11 */ |
|
12 |
|
13 var address = system.args[1], |
|
14 output = system.args[2]; |
|
15 |
|
16 config = {} |
|
17 system.args.forEach(function(arg, i) { |
|
18 if (i > 2) { |
|
19 namev = arg.split('='); |
|
20 config[namev[0].replace('--', '')] = namev[1]; |
|
21 } |
|
22 }); |
|
23 |
|
24 var method = config.method || 'get', |
|
25 width = config.width || 1400, |
|
26 height = config.height || 1, |
|
27 wait = config.wait || 200; |
|
28 |
|
29 /** |
|
30 * please note: the default height is intentionaly left as 1. |
|
31 * the thing is, if you skip the height, phantomjs falls back |
|
32 * to some default viewport. and that's not what we want. we |
|
33 * want to set the width, and let the height auto-calculate. |
|
34 */ |
|
35 page.viewportSize = {width: width, height: height} |
|
36 |
|
37 format = config.format || 'png'; |
|
38 |
|
39 if (format == 'pdf') { |
|
40 page.paperSize = { |
|
41 format: 'A4', |
|
42 orientation: config.orientation || 'portrait', |
|
43 margin: config.margin || '0cm' |
|
44 } |
|
45 } |
|
46 |
|
47 page.settings.resourceTimeout = 10000; |
|
48 |
|
49 page.open(address, function(status){ |
|
50 if (status == 'success') { |
|
51 setTimeout(function(){ |
|
52 page.render(output, {format: format}); |
|
53 phantom.exit(); |
|
54 }, wait); |
|
55 } |
|
56 }); |