提交 eaf27af2 编写于 作者: W wizardforcel

2020-02-26 15:12:50

上级 5833af45
......@@ -21,13 +21,19 @@ function writeEpub(articles, imgs, name, path) {
path = path || fnameEscape(name) + '.epub'
if(!path.endsWith('.epub')) path += '.epub'
var zip = new jszip();
zip.file('mimetype', fs.readFileSync(d('./assets/mimetype')));
zip.file('META-INF/container.xml', fs.readFileSync(d('./assets/container.xml')));
zip.file('OEBPS/Styles/Style.css', fs.readFileSync(d('./assets/Style.css')));
var mimetype = fs.readFileSync(d('./assets/mimetype'))
var container = fs.readFileSync(d('./assets/container.xml'))
var style = fs.readFileSync(d('./assets/Style.css'))
var articleTemp = fs.readFileSync(d('assets/article.ejs'), 'utf-8')
var contentTemp = fs.readFileSync(d('assets/content.ejs'), 'utf-8')
var tocTemp = fs.readFileSync(d('assets/toc.ejs'), 'utf-8')
var articleTemp = ejs.compile(fs.readFileSync(d('assets/article.ejs'), 'utf-8'))
var zip = new jszip();
zip.file('mimetype', mimetype);
zip.file('META-INF/container.xml', container);
zip.file('OEBPS/Styles/Style.css', style);
articleTemp = ejs.compile(articleTemp)
for(var [i, art] of articles.entries()) {
zip.file(`OEBPS/Text/${+i+1}.html`, articleTemp(art));
}
......@@ -37,7 +43,6 @@ function writeEpub(articles, imgs, name, path) {
}
var uuid = uuidGenerator.uuid();
var htmlToc = articles.map((art, i) => ({
title: art.title,
file: `${+i+1}.html`,
......@@ -45,22 +50,24 @@ function writeEpub(articles, imgs, name, path) {
var imgToc = Array.from(imgs.keys())
.map(fname => ({file: fname}))
var opf = ejs.render(fs.readFileSync(d('assets/content.ejs'), 'utf-8'), {
var co = ejs.render(contentTemp, {
date: moment().format('YYYY-MM-DD'),
imgToc: imgToc,
htmlToc: htmlToc,
uuid: uuid,
name: name,
});
zip.file('OEBPS/content.opf', opf);
zip.file('OEBPS/content.opf', co);
var ncx = ejs.render(fs.readFileSync(d('assets/toc.ejs'), 'utf-8'), {
var toc = ejs.render(tocTemp, {
toc: htmlToc,
uuid: uuid,
});
zip.file('OEBPS/toc.ncx', ncx);
zip.file('OEBPS/toc.ncx', toc);
var data = zip.generate({base64: false, 'compression':'DEFLATE'})
if(!zip.generate)
throw ReferenceError('please install the sync version of jszip')
var data = zip.generate({base64: false, compression:'DEFLATE'})
fs.writeFileSync(path, data, 'binary')
}
......
{
"name": "gen-epub",
"version": "0.1.0",
"version": "0.1.5",
"description": "",
"main": "index.js",
"scripts": {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册