PhantomJS - captura de tela
O PhantomJS é muito útil para fazer uma captura de tela de uma página da web e convertê-la em PDF. Demos aqui um exemplo simples para demonstrar como funciona.
Exemplo
var page = require('webpage').create();
page.open('http://phantom.org/',function(status){
page.render('phantom.png');
phantom.exit();
});
Execute o programa acima e a saída será salva como phantom.png.
Converter páginas da web em PDFs
O PhantomJS também ajuda a converter páginas da web em PDFs com cabeçalho e rodapé adicionados a ele. Dê uma olhada no exemplo a seguir para entender como funciona.
var wpage = require('webpage').create();
var url = "https://en.wikipedia.org/wiki/Main_Page";
var output = "test.pdf";
wpage.paperSize = {
width: screen.width+'px',
height: '1500px',
margin: {
'top':'50px',
'left':'50px',
'rigtht':'50px'
},
orientation:'portrait',
header: {
height: "1cm",
contents: phantom.callback(function(pageNumber, nPages) {
return "<h5>Header <b>" + pageNumber + " / " + nPages + "</b></h5>";
})
},
footer: {
height: "1cm",
contents: phantom.callback(function(pageNumber, nPages) {
return "<h5>Footer <b>" + pageNumber + " / " + nPages + "</b></h5>";
})
}
}
wpage.open(url, function (status) {
if (status !== 'success') {
console.log('Page is not opening');
phantom.exit();
} else {
wpage.render(output);
phantom.exit();
}
});
O programa acima gera o seguinte output.
The above will convert the page into pdf and will be saved in test.pdf
Converter uma tela em uma imagem
Phantomjs pode facilmente converter uma tela em uma imagem. Dê uma olhada no exemplo a seguir para entender como funciona.
var page = require('webpage').create();
page.content = '<html><body><canvas id="surface" width="400" height="400"></canvas></body></html>';
page.evaluate(function() {
var context,e1;
el = document.getElementById('surface');
context = el.getContext('2d');
context.font = "30px Comic Sans MS";
context.fillStyle = "red";
context.textAlign = "center";
context.fillText("Welcome to PhantomJS ", 200, 200);
document.body.style.backgroundColor = 'white';
document.body.style.margin = '0px';
});
page.render('canvas.png');
phantom.exit();
O programa acima gera o seguinte output.