summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/output/ebook.js42
1 files changed, 27 insertions, 15 deletions
diff --git a/lib/output/ebook.js b/lib/output/ebook.js
index cd5e960..0cd1807 100644
--- a/lib/output/ebook.js
+++ b/lib/output/ebook.js
@@ -96,22 +96,34 @@ EbookOutput.prototype.getPDFTemplate = function(tpl) {
});
};
+// Locate the cover file to use
+// Use configuration or search a "cover.jpg" file
+// For multi-lingual book, it can use the one from the main book
+EbookOutput.prototype.locateCover = function() {
+ var cover = this.book.config.get('cover', 'cover.jpg');
+
+ // Resolve to absolute
+ cover = this.resolve(cover);
+
+ // Cover doesn't exist and multilingual?
+ if (!fs.existsSync(cover) && this.parent) {
+ return this.parent.locateCover();
+ }
+
+ return cover;
+};
+
// Generate options for ebook-convert
EbookOutput.prototype.ebookConvertOption = function() {
var that = this;
- var cover = this.book.config.get('cover');
-
- if (!cover && fs.existsSync(this.resolve('cover.jpg'))) {
- cover = this.resolve('cover.jpg');
- }
var options = {
- '--cover': cover,
- '--title': this.book.config.get('title'),
- '--comments': this.book.config.get('description'),
- '--isbn': this.book.config.get('isbn'),
- '--authors': this.book.config.get('author'),
- '--language': this.book.config.get('language'),
+ '--cover': this.locateCover(),
+ '--title': that.book.config.get('title'),
+ '--comments': that.book.config.get('description'),
+ '--isbn': that.book.config.get('isbn'),
+ '--authors': that.book.config.get('author'),
+ '--language': that.book.config.get('language'),
'--book-producer': 'GitBook',
'--publisher': 'GitBook',
'--chapter': 'descendant-or-self::*[contains(concat(\' \', normalize-space(@class), \' \'), \' book-chapter \')]',
@@ -123,15 +135,15 @@ EbookOutput.prototype.ebookConvertOption = function() {
'--breadth-first': true
};
- if (this.opts.format == 'epub') {
+ if (that.opts.format == 'epub') {
options = _.extend(options, {
'--dont-split-on-page-breaks': true
});
}
- if (this.opts.format != 'pdf') return Promise(options);
+ if (that.opts.format != 'pdf') return Promise(options);
- var pdfOptions = this.book.config.get('pdf');
+ var pdfOptions = that.book.config.get('pdf');
options = _.extend(options, {
'--chapter-mark': String(pdfOptions.chapterMark),
@@ -149,7 +161,7 @@ EbookOutput.prototype.ebookConvertOption = function() {
'--pdf-sans-family': String(pdfOptions.fontFamily)
});
- return this.getPDFTemplate('header')
+ return that.getPDFTemplate('header')
.then(function(tpl) {
options['--pdf-header-template'] = tpl;