2016-07-16 14 views
0

Ich bin mit Node und versuchen, eine grundlegende Web-Server-Setup, die HTML akzeptieren und erhalten entweder ein PDF oder ein Bild abhängig von der Route verwendet versuchen.Node.js - Rendern Sie HTML als Bild oder PDF. Arbeitet lokal, fällt auf den Server

Das unten funktioniert, wenn es auf meinem lokalen Rechner läuft. Ich habe es auf zwei verschiedene Server gebracht, einen mit Apache und den anderen mit Nginx. In beiden Fällen gibt es kein Bild oder PDF zurück. Die PDF-Route gibt 502 zurück, und die Bildroute gibt ein leeres Bild zurück.

Es ist möglich, dass ich etwas in die falsche Richtung gehe, aber im Moment bin ich etwas verwirrt, was ich vermisse. Alle Hinweise würden sehr geschätzt werden.

var url = require('url'); 
var http = require('http'); 
var wkhtmltox = require('wkhtmltox'); 
var converter = new wkhtmltox(); 

// Locations of the binaries can be specified, but this is 
// only needed if the programs are located outside your PATH 
// converter.wkhtmltopdf = '/opt/local/bin/wkhtmltopdf'; 
// converter.wkhtmltoimage = '/opt/local/bin/wkhtmltoimage'; 

http.createServer(function (req, res) { 
    console.log(url.parse(req.url, true).query); 
    if (req.url == "/pdf") { 
    res.writeHead(200, {'Content-Type': 'application/pdf'}); 
    converter.pdf(req, url.parse(req.url, true).query).pipe(res); 
    } else if (req.url == "/image") { 
    res.writeHead(200, {'Content-Type': 'image/png'}); 
    converter.image(req, { format: "png" , quality: 75 }).pipe(res); 
    } else { 
    res.end('Control is an illusion.'); 
    } 
}).listen(1337, '127.0.0.1'); 

console.log('Server running at http://127.0.0.1:1337/'); 

Dies ist der auf dem Server für die PDF-Route protokollierte Fehler. Für die Image-Route wird kein Fehler protokolliert.

Error: This socket has been ended by the other party 
    at Socket.writeAfterFIN [as write] (net.js:285:12) 
    at performWork (/var/www/app_name/node_modules/wkhtmltox/lib/wkhtmltox.js:98:22) 
    at wkhtmltox.pdf (/var/www/app_name/node_modules/wkhtmltox/lib/wkhtmltox.js:113:16) 
    at Server.<anonymous> (/var/www/app_name/index.js:16:14) 
    at emitTwo (events.js:106:13) 
    at Server.emit (events.js:191:7) 
    at HTTPParser.parserOnIncoming [as onIncoming] (_http_server.js:543:12) 
    at HTTPParser.parserOnHeadersComplete (_http_common.js:105:23) 

Ich war testen mit Curl.

curl -d @file_to_render.html -s "http://localhost:1337/pdf" -o test.pdf 
curl -d @file_to_render.html -s "http://localhost:1337/image" -o test.png 

Antwort

0

Versuchen onError Ereignis Rohr hinzufügen