J'utilise Nightmare.js pour imprimer des pdf. J'envoie une requête au serveur de noeud et construit la page, en utilisant Nightmare pour m'assurer que la page est chargée, puis j'imprime un pdf. Mais pour chaque demande, je crée une nouvelle fenêtre d'électrons, comment réutiliser la même fenêtre, ou un groupe de fenêtres d'électrons max X, pour gérer mon impression pdf?Réutiliser une session électronique avec un cauchemar
var nightmare = require('nightmare'),
http = require('http');
function createPage(o, final) {
var page = nightmare()
.goto('file:\\\\' + __dirname + '\\index.html');
.wait(function() {
return !!(window.App && App.app); //Check Javascript has loaded
})
page.evaluate(function (template, form, lists, printOptions) {
App.pdf.Builder.create({
//args for building pages
});
}, o.template, o.form, o.lists, o.printOptions);
page.wait(function() {
return App.pdf.Builder.ready;
})
.pdf(form.filename, { "pageSize": "A4", "marginsType": 1 })
.end()
.then(function() {
console.log('Pdf printed');
final(true);
})
.catch(function (err) {
console.log('Print Error: ' + err.message);
});
}
http.createServer(function (request, response) {
var body = [];
request.on('data', function (chunk) {
body.push(chunk);
}).on('end', function() {
body = Buffer.concat(body).toString();
var json = JSON.parse(body);
createPage(json, function (status) {
if (status === true) {
response.writeHead(200, { 'Content-Length': 0 });
} else {
response.writeHead(500, { 'Content-Type': 'text/html' });
response.write(' ' + status);
console.log('status error: ' + status);
}
response.end('End of Request \n'); //return status msg, if any
});
});
}).listen(8007);
Je suis au courant de toutes les questions de concurrence qui pourraient survenir en utilisant éventuellement la même fenêtre électronique à nouveau avant une impression précédente est terminée, donc je voudrais que la réponse à préciser comment cela est évité.