From cec190e797347e89e83c9cd446ff6f1afd07591c Mon Sep 17 00:00:00 2001 From: Alexandros Georgantas <alexgeorg86@gmail.com> Date: Thu, 11 Oct 2018 18:41:22 +0300 Subject: [PATCH] feat: download html for pagedJS --- packages/components/Epub/EpubBackend.js | 21 +++++++++++++++++++ .../Epub/converters/wax-paged-default.js | 10 +++++++++ .../Epub/converters/wax-paged-ucp.js | 10 ++++++++- .../converters/wax-vivliostyle-default.js | 10 +++++++++ .../Epub/converters/wax-vivliostyle-ucp.js | 11 ++++++++++ packages/components/Epub/pagednation.js | 4 +++- 6 files changed, 64 insertions(+), 2 deletions(-) diff --git a/packages/components/Epub/EpubBackend.js b/packages/components/Epub/EpubBackend.js index 6b4d6d24a..9d5d74ae8 100644 --- a/packages/components/Epub/EpubBackend.js +++ b/packages/components/Epub/EpubBackend.js @@ -148,6 +148,20 @@ const EpubBackend = app => { res.status(500).json({ error: error.message }) } }) + app.use('/api/pagedStyler/exportHTML/:id/', async (req, res, next) => { + const { id } = req.params + const path = `${process.cwd()}/uploads/paged/${id}/index.html` + + try { + const file = await readFile(path) + res.setHeader('Content-Type', 'text/html') + res.setHeader('Content-Disposition', `attachment; filename=${id}.html`) + res.write(file, 'binary') + res.end() + } catch (error) { + res.status(500).json({ error: error.message }) + } + }) } const writeFile = (location, content) => @@ -157,5 +171,12 @@ const writeFile = (location, content) => return resolve() }) }) +const readFile = location => + new Promise((resolve, reject) => { + fs.readFile(location, 'binary', (err, data) => { + if (err) return reject(err) + return resolve(data) + }) + }) module.exports = EpubBackend diff --git a/packages/components/Epub/converters/wax-paged-default.js b/packages/components/Epub/converters/wax-paged-default.js index 3cf747bcb..99fcb1874 100644 --- a/packages/components/Epub/converters/wax-paged-default.js +++ b/packages/components/Epub/converters/wax-paged-default.js @@ -144,6 +144,16 @@ module.exports = ( } }) + $('highlighter').each((i, elem) => { + const $elem = $(elem) + $elem.replaceWith($elem.text()) + }) + $('ornament').each((i, elem) => { + const $elem = $(elem) + const hr = $('<hr>') + $elem.replaceWith(hr) + }) + // replace inline notes with endnotes $('note').each((i, elem) => { const $elem = $(elem) diff --git a/packages/components/Epub/converters/wax-paged-ucp.js b/packages/components/Epub/converters/wax-paged-ucp.js index 97215b934..5257a2278 100644 --- a/packages/components/Epub/converters/wax-paged-ucp.js +++ b/packages/components/Epub/converters/wax-paged-ucp.js @@ -144,7 +144,15 @@ module.exports = ( $elem.remove() } }) - + $('highlighter').each((i, elem) => { + const $elem = $(elem) + $elem.replaceWith($elem.text()) + }) + $('ornament').each((i, elem) => { + const $elem = $(elem) + const hr = $('<hr>') + $elem.replaceWith(hr) + }) const hasNotes = $('note').length > 0 if (hasNotes) { diff --git a/packages/components/Epub/converters/wax-vivliostyle-default.js b/packages/components/Epub/converters/wax-vivliostyle-default.js index 4198412e5..15f19d6b7 100644 --- a/packages/components/Epub/converters/wax-vivliostyle-default.js +++ b/packages/components/Epub/converters/wax-vivliostyle-default.js @@ -168,6 +168,16 @@ module.exports = ( } }) + $('highlighter').each((i, elem) => { + const $elem = $(elem) + $elem.replaceWith($elem.text()) + }) + $('ornament').each((i, elem) => { + const $elem = $(elem) + const hr = $('<hr>') + $elem.replaceWith(hr) + }) + // replace inline notes with endnotes $('note').each((i, elem) => { const $elem = $(elem) diff --git a/packages/components/Epub/converters/wax-vivliostyle-ucp.js b/packages/components/Epub/converters/wax-vivliostyle-ucp.js index 77107b4f5..79bad790a 100644 --- a/packages/components/Epub/converters/wax-vivliostyle-ucp.js +++ b/packages/components/Epub/converters/wax-vivliostyle-ucp.js @@ -164,6 +164,17 @@ module.exports = ( $elem.remove() } }) + + $('highlighter').each((i, elem) => { + const $elem = $(elem) + $elem.replaceWith($elem.text()) + }) + $('ornament').each((i, elem) => { + const $elem = $(elem) + const hr = $('<hr>') + $elem.replaceWith(hr) + }) + const hasNotes = $('note').length > 0 if (hasNotes) { diff --git a/packages/components/Epub/pagednation.js b/packages/components/Epub/pagednation.js index 7a3f9cb3a..a76df87a3 100644 --- a/packages/components/Epub/pagednation.js +++ b/packages/components/Epub/pagednation.js @@ -3,7 +3,9 @@ const cheerio = require('cheerio') const create = async (book, parts, resourceRoot, stylesRoot, fontsRoot) => { const output = cheerio.load( `<!DOCTYPE html><html><head><title>${book.title}</title> - <meta charset="UTF-8"></head><body class="hyphenate" lang="en-us"></body></html>`, + <meta charset="UTF-8"></head><body class="hyphenate" lang="en-us"><section class="titlepage"><header><h1 class="booktitle">${ + book.title + }</h1></header></section></body></html>`, ) const TOC = createTOC(parts) output('body').append(TOC.html()) -- GitLab