EPUB Input:Fix handling of user specified cover. Also set --page-breaks-before to / by default for EPUB input, since EPUB files typically already have the needed page breaks

This commit is contained in:
Kovid Goyal 2009-07-13 17:11:21 -06:00
parent 8e754b3245
commit 272437e901
2 changed files with 11 additions and 7 deletions

View File

@ -8,7 +8,7 @@ from itertools import cycle
from lxml import etree from lxml import etree
from calibre.customize.conversion import InputFormatPlugin from calibre.customize.conversion import InputFormatPlugin, OptionRecommendation
class EPUBInput(InputFormatPlugin): class EPUBInput(InputFormatPlugin):
@ -17,6 +17,8 @@ class EPUBInput(InputFormatPlugin):
description = 'Convert EPUB files (.epub) to HTML' description = 'Convert EPUB files (.epub) to HTML'
file_types = set(['epub']) file_types = set(['epub'])
recommendations = set([('page_breaks_before', '/', OptionRecommendation.MED)])
@classmethod @classmethod
def decrypt_font(cls, key, path): def decrypt_font(cls, key, path):
raw = open(path, 'rb').read() raw = open(path, 'rb').read()

View File

@ -87,6 +87,7 @@ class MergeMetadata(object):
if cover_id is not None: if cover_id is not None:
m.add('cover', cover_id) m.add('cover', cover_id)
def set_cover(self, mi, prefer_metadata_cover): def set_cover(self, mi, prefer_metadata_cover):
cdata = '' cdata = ''
if mi.cover and os.access(mi.cover, os.R_OK): if mi.cover and os.access(mi.cover, os.R_OK):
@ -94,12 +95,13 @@ class MergeMetadata(object):
elif mi.cover_data and mi.cover_data[-1]: elif mi.cover_data and mi.cover_data[-1]:
cdata = mi.cover_data[1] cdata = mi.cover_data[1]
id = None id = None
if 'cover' in self.oeb.guide: old_cover = self.oeb.guide.remove('cover')
href = self.oeb.guide['cover'].href self.oeb.guide.remove('titlepage')
id = self.oeb.manifest.hrefs[href].id if old_cover is not None:
if not prefer_metadata_cover and cdata: if old_cover.href in self.oeb.manifest.hrefs:
self.oeb.manifest.hrefs[href]._data = cdata item = self.oeb.manifest.hrefs[old_cover.href]
elif cdata: self.oeb.manifest.remove(item)
if cdata:
id, href = self.oeb.manifest.generate('cover', 'cover.jpg') id, href = self.oeb.manifest.generate('cover', 'cover.jpg')
self.oeb.manifest.add(id, href, 'image/jpeg', data=cdata) self.oeb.manifest.add(id, href, 'image/jpeg', data=cdata)
self.oeb.guide.add('cover', 'Cover', href) self.oeb.guide.add('cover', 'Cover', href)