2012-07-27 18 views
6

Ich weiß, dass es eine Reihe von Bibliotheken gibt, aber keine scheint genau zu meinem Szenario zu passen. So hoffe ich, hier einen Rat zu bekommen ...HTML und CSS zu PDF in JavaScript

Technologien: Ich verwende Node.js auf Express.js für das Back-End und html/css/js für das Front-End. Browser-Unterstützung ist IE8 und höher, Chrome, FF und andere moderne Browser.

Was ich tun muss, ist: eine Schaltfläche "zu PDF" für den Benutzer zu klicken, die dann einen Teil des DOM in PDF konvertieren würde. Dieser Teil des Html von DOM wird dynamisch generiert, wenn das Back-End API-Aufrufe an eine andere App sendet. Das CSS ist statisch.

Anders als diese, ich habe eine Menge Freiheit zu tun, was ich will, solange ich habe keine klaren Textdaten an Dritte senden und etc.

Jede empfohlene Möglichkeiten, es zu tun?


Update: Blick in wkhtmltopdf

+0

Welche Bibliotheken haben Sie gefunden und warum passen sie nicht zu Ihrem Fall? – Bergi

+0

Nun, zum Beispiel, jspdf sieht gut aus, aber es dauert nicht in CSS – Max

Antwort

5

Im Grunde ist es das, was ich

console.log("before"); 
fs.writeFile(html_filename, html, function (err) { 
    if (err) {res.writeHead(400); res.end("" + err); return;} 

    console.log("wrote html fine; now converting"); 
    exec('wkhtmltopdf ' + html_filename + ' ' + pdf_filename, function (err, stdout, stderr) { 
    if (err) {res.writeHead(400); res.end("" + err); return;} 

    console.log("converted; now reading"); 
    fs.readFile(pdf_filename, function (err, data) { 
     if (err) {res.writeHead(400); res.end("" + err); return;} 

     console.log("read fine; now serving"); 
     res.writeHead(200, {"content-type" : "application/pdf"}); 
     res.end(data); 
    }); 
    }); 
}); 

IMO tun endete es ein bisschen hässlich, da es eine Datei erfordert es, dann ist es die Umwandlung, und dann dient, und schließlich die beiden löschen. Ich vermute hier Skalierbarkeitsprobleme. Auch wkhtmltopdf scheint nicht gut mit osx zu spielen. Unter Linux gibt es kein Problem.

0

Try wkhtmltopdf. Sie können sich die aktuelle Implementierung des Treibers für Ruby on Rails leicht ansehen und sie auf Knoten und Express anwenden. Sie rufen im Grunde eine Befehlszeilen-App auf, die mit Ihrem Druck-CSS in eine PDF konvertiert wird.

+0

Ich habe versucht, wkhtmltopdf zu arbeiten, aber mit großen Problemen. – Max

+0

Derzeit, wenn ich wkhtmltopdf manuell entweder vom Terminal oder vom Knoten ausführen, erscheint ein neuer Prozess in meinem Mac-Dock und ich muss darauf klicken, um fortzufahren. Sonst hängt es einfach. – Max