Ich versuche, eine PDF aus einer meiner Ansichten zu erstellen.Erstellen Sie PDF mit Node.js, Jade und Express
Diese Ansicht wird mit Jade und Express gerendert, lädt einige Javascript, einige CSS-Dateien, erweitert einige Jade-Ansichten und fragt eine Datenbank ab, um verschiedene Graphen zu füllen. Der Rendervorgang dauert ca. 7 Sekunden, da er nicht sehr gut optimiert ist.
Die GET-Anforderung für die Ansicht verwendet außerdem passport
und connect-ensure-login
, um zu überprüfen, ob der Benutzer vor dem Rendern angemeldet ist, und übergibt einige Variablen, die Jade beim Rendern verwenden soll. Dies ist der Handler-Code:
var express = require('express');
var router = express.Router();
var moment = require('moment');
router.get('/', require('connect-ensure-login').ensureLoggedIn(), function (req, res, next) {
res.render('summary', {
title: 'Summary',
day: moment().format('D'),
month: moment().locale('es').format('MMMM'),
year: moment().format('YYYY')
});
});
module.exports = router;
Dies ist die Jade-Datei, die in PDF konvertiert werden muss:
extends layout
block content
.container-fluid
#banner
.chart#chart1
.chart#chart2
.chart#chart3
script(type='text/javascript', src='/javascripts/summary.js')
und dies ist die Jade-Datei (Layout), die erweitert wird:
doctype html
html
head
meta(charset='utf-8')
meta(http-equiv='X-UA-Compatible', content='IE=edge')
meta(http-equiv='content-type', content='text/html; charset=UTF-8')
meta(content='width=device-width, initial-scale=1', name='viewport')
title=title
link(rel='stylesheet', type='text/css', href='/stylesheets/styles.css')
script(type='text/javascript', src='/assets/jquery-3.1.1/jquery-3.1.1.min.js')
script(type='text/javascript', src='/assets/bootstrap-3.3.7/js/bootstrap.min.js')
body
.page-wrapper
block content
Wie würde ich das Laden der Seite und das Erstellen eines Screenshots und das Konvertieren in ein PDF oder das Rendern als PDF aus der Jade-Datei starten?
Ich habe von PhantomJS gehört, aber ich kann keine Informationen finden, die auf dem neuesten Stand sind.
Wenn mir jemand helfen könnte wäre ich sehr dankbar.