mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Merge upstream changes
This commit is contained in:
commit
e5af19fe1b
@ -50,6 +50,7 @@ class Splitter(LoggingInterface):
|
|||||||
self.split_size = 0
|
self.split_size = 0
|
||||||
|
|
||||||
# Split on page breaks
|
# Split on page breaks
|
||||||
|
self.splitting_on_page_breaks = True
|
||||||
if not opts.dont_split_on_page_breaks:
|
if not opts.dont_split_on_page_breaks:
|
||||||
self.log_info('\tSplitting on page breaks...')
|
self.log_info('\tSplitting on page breaks...')
|
||||||
if self.path in stylesheet_map:
|
if self.path in stylesheet_map:
|
||||||
@ -61,6 +62,7 @@ class Splitter(LoggingInterface):
|
|||||||
trees = list(self.trees)
|
trees = list(self.trees)
|
||||||
|
|
||||||
# Split any remaining over-sized trees
|
# Split any remaining over-sized trees
|
||||||
|
self.splitting_on_page_breaks = False
|
||||||
if self.opts.profile.flow_size < sys.maxint:
|
if self.opts.profile.flow_size < sys.maxint:
|
||||||
lt_found = False
|
lt_found = False
|
||||||
self.log_info('\tLooking for large trees...')
|
self.log_info('\tLooking for large trees...')
|
||||||
@ -203,6 +205,7 @@ class Splitter(LoggingInterface):
|
|||||||
elem.set('style', 'display:none')
|
elem.set('style', 'display:none')
|
||||||
|
|
||||||
def fix_split_point(sp):
|
def fix_split_point(sp):
|
||||||
|
if not self.splitting_on_page_breaks:
|
||||||
sp.set('style', sp.get('style', '')+'page-break-before:avoid;page-break-after:avoid')
|
sp.set('style', sp.get('style', '')+'page-break-before:avoid;page-break-after:avoid')
|
||||||
|
|
||||||
# Tree 1
|
# Tree 1
|
||||||
|
@ -823,21 +823,28 @@ class Processor(Parser):
|
|||||||
font.set('class', cn)
|
font.set('class', cn)
|
||||||
font.tag = 'span'
|
font.tag = 'span'
|
||||||
|
|
||||||
|
id_css, id_css_counter = {}, 0
|
||||||
for elem in self.root.xpath('//*[@style]'):
|
for elem in self.root.xpath('//*[@style]'):
|
||||||
setting = elem.get('style')
|
setting = elem.get('style')
|
||||||
|
if elem.get('id', False) or elem.get('class', False):
|
||||||
|
elem.set('id', elem.get('id', 'calibre_css_id_%d'%id_css_counter))
|
||||||
|
id_css_counter += 1
|
||||||
|
id_css[elem.tag+'#'+elem.get('id')] = setting
|
||||||
|
else:
|
||||||
classname = cache.get(setting, None)
|
classname = cache.get(setting, None)
|
||||||
if classname is None:
|
if classname is None:
|
||||||
classname = 'calibre_class_%d'%class_counter
|
classname = 'calibre_class_%d'%class_counter
|
||||||
class_counter += 1
|
class_counter += 1
|
||||||
cache[setting] = classname
|
cache[setting] = classname
|
||||||
cn = elem.get('class', '')
|
cn = elem.get('class', '')
|
||||||
if cn: cn += ' '
|
|
||||||
cn += classname
|
|
||||||
elem.set('class', cn)
|
elem.set('class', cn)
|
||||||
elem.attrib.pop('style')
|
elem.attrib.pop('style')
|
||||||
|
|
||||||
css = '\n'.join(['.%s {%s;}'%(cn, setting) for \
|
css = '\n'.join(['.%s {%s;}'%(cn, setting) for \
|
||||||
setting, cn in cache.items()])
|
setting, cn in cache.items()])
|
||||||
|
css += '\n\n'
|
||||||
|
css += '\n'.join(['%s {%s;}'%(selector, setting) for \
|
||||||
|
selector, setting in cache.items()])
|
||||||
sheet = self.css_parser.parseString(self.preprocess_css(css.replace(';;}', ';}')))
|
sheet = self.css_parser.parseString(self.preprocess_css(css.replace(';;}', ';}')))
|
||||||
for rule in sheet:
|
for rule in sheet:
|
||||||
self.stylesheet.add(rule)
|
self.stylesheet.add(rule)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user