Опитвам се да създам PDF от един от моите изгледи.
Този изглед се изобразява с помощта на Jade и Express, зарежда някои Javascript, някои CSS файлове, разширява някои изгледи на Jade и прави заявки към база данни за попълване на различни графики. Процесът на изобразяване отнема около 7 секунди, защото не е много добре оптимизиран.
Освен това GET заявката за изгледа използва passport
и connect-ensure-login
, за да провери дали потребителят е влязъл преди рендиране и предава някои променливи, които Jade да използва при рендиране. Това е кодът на манипулатора:
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;
Това е Jade файлът, който трябва да бъде преобразуван в PDF:
extends layout
block content
.container-fluid
#banner
.chart#chart1
.chart#chart2
.chart#chart3
script(type='text/javascript', src='/javascripts/summary.js')
И това е Jade файлът (оформление), който е разширен:
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='/bg/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
Как да заредя страницата и да направя екранна снимка и да я конвертирам в PDF или да я изобразя като PDF от Jade файла?
Чувал съм за PhantomJS, но не мога да намеря информация, която да е актуална.
Ако някой може да ми помогне, ще съм много благодарен.