1.slate.js + slate-react初始化项目
2.keydown事件绑定
command指令
特点的选择域
当前的选择域
选择操作
在特定节点上
在顶级节点上
历史记录
执行命令
在slate事件中:onKeyDown onPaste
自定义node的事件中
自定义规则中
slate编辑器最外层,通过ref获取editor执行
查询命令
查询与命令类似,但是它们不操纵编辑器的当前值,而是返回有关当前值或特定节点等的信息。
复用及组合命令
'use strict';
const Controller = require('egg').Controller;
const fs = require('fs');
const path = require('path');
const puppeteer = require('puppeteer');
const moment = require('moment');
class ReportController extends Controller {
async index() {
const { ctx } = this;
// 启动pupeteer,加载页面
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.setViewport({
width: 1920,
height: 1080
});
// 打开页面
await page.goto('http://localhost:8080', {
waitUntil: 'networkidle0'
});
// 生成pdf
let pdfFileName = `体检报告_${moment(new Date()).format('YYYYMMDDHHmm') + '.pdf'}`
let pdfFilePath = path.join(__dirname, '../../temp/', pdfFileName);
await page.pdf({
path: pdfFilePath,
format: 'A4',
scale: 1,
printBackground: true,
landscape: false,
displayHeaderFooter: false
});
browser.close();
// 返回文件路径
ctx.status = 200
ctx.body = {
url: `${ctx.request.protocol}://${ctx.request.host}/resource/${pdfFileName}`
}
}
}
module.exports = ReportController;