私のビューからPDFを作成しようとしています。Node.js、Jade、Expressを使用して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;
これは、PDFに変換する必要がありジェイドファイルです:
extends layout
block content
.container-fluid
#banner
.chart#chart1
.chart#chart2
.chart#chart3
script(type='text/javascript', src='/javascripts/summary.js')
を、これはジェイドは(レイアウト)ファイルで拡張されています。これは、ハンドラのコードである
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としてレンダリングしたりするにはどうすればいいですか?
PhantomJSについて聞いたことがありますが、最新の情報は見つかりませんでした。
誰かが私を助けることができたら、私はとても感謝しています。あなたは何ができるか