From a3bc14fcfa7484420bfc96963c13ec3747714cd5 Mon Sep 17 00:00:00 2001 From: "Marshall T. Vandegrift" Date: Mon, 26 Jan 2009 23:59:00 -0500 Subject: [PATCH] Fix #1657. Implement "--ignore-tables" option for oeb2mobi. --- src/calibre/ebooks/mobi/mobiml.py | 5 +++++ src/calibre/ebooks/mobi/writer.py | 6 +++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/calibre/ebooks/mobi/mobiml.py b/src/calibre/ebooks/mobi/mobiml.py index eee86754cd..ed4465c8be 100644 --- a/src/calibre/ebooks/mobi/mobiml.py +++ b/src/calibre/ebooks/mobi/mobiml.py @@ -79,6 +79,9 @@ class FormatState(object): class MobiMLizer(object): + def __init__(self, ignore_tables=False): + self.ignore_tables = ignore_tables + def transform(self, oeb, context): oeb.logger.info('Converting XHTML to Mobipocket markup...') self.oeb = oeb @@ -341,6 +344,8 @@ class MobiMLizer(object): tag = 'tr' elif display == 'table-cell': tag = 'td' + if tag in TABLE_TAGS and self.ignore_tables: + tag = 'span' if tag == 'td' else 'div' if tag in TABLE_TAGS: for attr in ('rowspan', 'colspan'): if attr in elem.attrib: diff --git a/src/calibre/ebooks/mobi/writer.py b/src/calibre/ebooks/mobi/writer.py index f1810d2f28..3c5a39ebd2 100644 --- a/src/calibre/ebooks/mobi/writer.py +++ b/src/calibre/ebooks/mobi/writer.py @@ -524,6 +524,10 @@ def config(defaults=None): help=_('Modify images to meet Palm device size limitations.')) mobi('toc_title', ['--toc-title'], default=None, help=_('Title for any generated in-line table of contents.')) + mobi('ignore_tables', ['--ignore-tables'], default=False, + help=_('Render HTML tables as blocks of text instead of actual ' + 'tables. This is neccessary if the HTML contains very large ' + 'or complex tables.')) profiles = c.add_group('profiles', _('Device renderer profiles. ' 'Affects conversion of font sizes, image rescaling and rasterization ' 'of tables. Valid profiles are: %s.') % ', '.join(_profiles)) @@ -581,7 +585,7 @@ def oeb2mobi(opts, inpath): rasterizer.transform(oeb, context) trimmer = ManifestTrimmer() trimmer.transform(oeb, context) - mobimlizer = MobiMLizer() + mobimlizer = MobiMLizer(ignore_tables=opts.ignore_tables) mobimlizer.transform(oeb, context) writer = MobiWriter(compression=compression, imagemax=imagemax) writer.dump(oeb, outpath)