mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
FB2 Ouput: Insert image based covers into document.
This commit is contained in:
parent
2427c5bdd0
commit
d23ce51b98
@ -16,6 +16,7 @@ import uuid
|
|||||||
|
|
||||||
from lxml import etree
|
from lxml import etree
|
||||||
|
|
||||||
|
from calibre import guess_type
|
||||||
from calibre import prepare_string_for_xml
|
from calibre import prepare_string_for_xml
|
||||||
from calibre.constants import __appname__, __version__
|
from calibre.constants import __appname__, __version__
|
||||||
from calibre.ebooks.oeb.base import XHTML, XHTML_NS, barename, namespace
|
from calibre.ebooks.oeb.base import XHTML, XHTML_NS, barename, namespace
|
||||||
@ -171,6 +172,12 @@ class FB2MLizer(object):
|
|||||||
title_item = self.oeb_book.manifest.hrefs[self.oeb_book.guide[title_name].href]
|
title_item = self.oeb_book.manifest.hrefs[self.oeb_book.guide[title_name].href]
|
||||||
if title_item.spine_position is None and title_item.media_type == 'application/xhtml+xml':
|
if title_item.spine_position is None and title_item.media_type == 'application/xhtml+xml':
|
||||||
self.oeb_book.spine.insert(0, title_item, True)
|
self.oeb_book.spine.insert(0, title_item, True)
|
||||||
|
# Create xhtml page to reference cover image so it can be used.
|
||||||
|
if self.oeb_book.metadata.cover and unicode(self.oeb_book.metadata.cover[0]) in self.oeb_book.manifest.ids:
|
||||||
|
id = unicode(self.oeb_book.metadata.cover[0])
|
||||||
|
cover_item = self.oeb_book.manifest.ids[id]
|
||||||
|
if cover_item.media_type in OEB_RASTER_IMAGES:
|
||||||
|
self.insert_image_cover(cover_item.href)
|
||||||
|
|
||||||
for item in self.oeb_book.spine:
|
for item in self.oeb_book.spine:
|
||||||
self.log.debug('Converting %s to FictionBook2 XML' % item.href)
|
self.log.debug('Converting %s to FictionBook2 XML' % item.href)
|
||||||
@ -196,6 +203,17 @@ class FB2MLizer(object):
|
|||||||
|
|
||||||
return ''.join(text) + '</body>'
|
return ''.join(text) + '</body>'
|
||||||
|
|
||||||
|
def insert_image_cover(self, image_href):
|
||||||
|
from calibre.ebooks.oeb.base import RECOVER_PARSER
|
||||||
|
try:
|
||||||
|
root = etree.fromstring(u'<html xmlns="%s"><body><img src="%s" /></body></html>' % (XHTML_NS, image_href), parser=RECOVER_PARSER)
|
||||||
|
except:
|
||||||
|
root = etree.fromstring(u'', parser=RECOVER_PARSER)
|
||||||
|
|
||||||
|
id, href = self.oeb_book.manifest.generate('fb2_cover', 'fb2_cover.xhtml')
|
||||||
|
item = self.oeb_book.manifest.add(id, href, guess_type(href)[0], data=root)
|
||||||
|
self.oeb_book.spine.insert(0, item, True)
|
||||||
|
|
||||||
def fb2mlize_images(self):
|
def fb2mlize_images(self):
|
||||||
'''
|
'''
|
||||||
This function uses the self.image_hrefs dictionary mapping. It is populated by the dump_text function.
|
This function uses the self.image_hrefs dictionary mapping. It is populated by the dump_text function.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user