mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Fix #2713 (blank page inserted after each page on CBZ -> MOBI conversion)
This commit is contained in:
parent
bdc3478139
commit
380752b115
@ -47,6 +47,7 @@ class MOBIOutput(OutputFormatPlugin):
|
|||||||
from calibre.ebooks.oeb.transforms.manglecase import CaseMangler
|
from calibre.ebooks.oeb.transforms.manglecase import CaseMangler
|
||||||
from calibre.ebooks.oeb.transforms.rasterize import SVGRasterizer
|
from calibre.ebooks.oeb.transforms.rasterize import SVGRasterizer
|
||||||
from calibre.ebooks.oeb.transforms.htmltoc import HTMLTOCAdder
|
from calibre.ebooks.oeb.transforms.htmltoc import HTMLTOCAdder
|
||||||
|
from calibre.customize.ui import plugin_for_input_format
|
||||||
imagemax = PALM_MAX_IMAGE_SIZE if opts.rescale_images else None
|
imagemax = PALM_MAX_IMAGE_SIZE if opts.rescale_images else None
|
||||||
tocadder = HTMLTOCAdder(title=opts.toc_title)
|
tocadder = HTMLTOCAdder(title=opts.toc_title)
|
||||||
tocadder(oeb, opts)
|
tocadder(oeb, opts)
|
||||||
@ -56,8 +57,11 @@ class MOBIOutput(OutputFormatPlugin):
|
|||||||
rasterizer(oeb, opts)
|
rasterizer(oeb, opts)
|
||||||
mobimlizer = MobiMLizer(ignore_tables=opts.linearize_tables)
|
mobimlizer = MobiMLizer(ignore_tables=opts.linearize_tables)
|
||||||
mobimlizer(oeb, opts)
|
mobimlizer(oeb, opts)
|
||||||
|
write_page_breaks_after_item = not input_plugin is plugin_for_input_format('cbz')
|
||||||
|
print 111111, write_page_breaks_after_item
|
||||||
writer = MobiWriter(opts, imagemax=imagemax,
|
writer = MobiWriter(opts, imagemax=imagemax,
|
||||||
compression=UNCOMPRESSED if opts.dont_compress else PALMDOC,
|
compression=UNCOMPRESSED if opts.dont_compress else PALMDOC,
|
||||||
prefer_author_sort=opts.prefer_author_sort)
|
prefer_author_sort=opts.prefer_author_sort,
|
||||||
|
write_page_breaks_after_item=write_page_breaks_after_item)
|
||||||
writer(oeb, output_path)
|
writer(oeb, output_path)
|
||||||
|
|
||||||
|
@ -156,10 +156,11 @@ def rescale_image(data, maxsizeb, dimen=None):
|
|||||||
class Serializer(object):
|
class Serializer(object):
|
||||||
NSRMAP = {'': None, XML_NS: 'xml', XHTML_NS: '', MBP_NS: 'mbp'}
|
NSRMAP = {'': None, XML_NS: 'xml', XHTML_NS: '', MBP_NS: 'mbp'}
|
||||||
|
|
||||||
def __init__(self, oeb, images):
|
def __init__(self, oeb, images, write_page_breaks_after_item=True):
|
||||||
self.oeb = oeb
|
self.oeb = oeb
|
||||||
self.images = images
|
self.images = images
|
||||||
self.logger = oeb.logger
|
self.logger = oeb.logger
|
||||||
|
self.write_page_breaks_after_item = write_page_breaks_after_item
|
||||||
self.id_offsets = {}
|
self.id_offsets = {}
|
||||||
self.href_offsets = defaultdict(list)
|
self.href_offsets = defaultdict(list)
|
||||||
self.breaks = []
|
self.breaks = []
|
||||||
@ -239,6 +240,7 @@ class Serializer(object):
|
|||||||
self.id_offsets[item.href] = buffer.tell()
|
self.id_offsets[item.href] = buffer.tell()
|
||||||
for elem in item.data.find(XHTML('body')):
|
for elem in item.data.find(XHTML('body')):
|
||||||
self.serialize_elem(elem, item)
|
self.serialize_elem(elem, item)
|
||||||
|
if self.write_page_breaks_after_item:
|
||||||
buffer.write('<mbp:pagebreak/>')
|
buffer.write('<mbp:pagebreak/>')
|
||||||
|
|
||||||
def serialize_elem(self, elem, item, nsrmap=NSRMAP):
|
def serialize_elem(self, elem, item, nsrmap=NSRMAP):
|
||||||
@ -319,8 +321,9 @@ class MobiWriter(object):
|
|||||||
COLLAPSE_RE = re.compile(r'[ \t\r\n\v]+')
|
COLLAPSE_RE = re.compile(r'[ \t\r\n\v]+')
|
||||||
|
|
||||||
def __init__(self, opts, compression=PALMDOC, imagemax=None,
|
def __init__(self, opts, compression=PALMDOC, imagemax=None,
|
||||||
prefer_author_sort=False):
|
prefer_author_sort=False, write_page_breaks_after_item=True):
|
||||||
self.opts = opts
|
self.opts = opts
|
||||||
|
self.write_page_breaks_after_item = write_page_breaks_after_item
|
||||||
self._compression = compression or UNCOMPRESSED
|
self._compression = compression or UNCOMPRESSED
|
||||||
self._imagemax = imagemax or OTHER_MAX_IMAGE_SIZE
|
self._imagemax = imagemax or OTHER_MAX_IMAGE_SIZE
|
||||||
self._prefer_author_sort = prefer_author_sort
|
self._prefer_author_sort = prefer_author_sort
|
||||||
@ -583,7 +586,8 @@ class MobiWriter(object):
|
|||||||
|
|
||||||
def _generate_text(self):
|
def _generate_text(self):
|
||||||
self._oeb.logger.info('Serializing markup content...')
|
self._oeb.logger.info('Serializing markup content...')
|
||||||
serializer = Serializer(self._oeb, self._images)
|
serializer = Serializer(self._oeb, self._images,
|
||||||
|
write_page_breaks_after_item=self.write_page_breaks_after_item)
|
||||||
breaks = serializer.breaks
|
breaks = serializer.breaks
|
||||||
text = serializer.text
|
text = serializer.text
|
||||||
self._id_offsets = serializer.id_offsets
|
self._id_offsets = serializer.id_offsets
|
||||||
|
Loading…
x
Reference in New Issue
Block a user