Я пытаюсь создать 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='/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, но не могу найти актуальную информацию.
Если бы кто-нибудь мог мне помочь, я был бы очень благодарен.