diff --git a/resources/templates/html.css b/resources/templates/html.css
index e9b683ca34..79c80583bf 100644
--- a/resources/templates/html.css
+++ b/resources/templates/html.css
@@ -391,11 +391,6 @@ noembed, param, link {
display: none;
}
-/* Page breaks at body tags, to help out with LIT-generation */
-body {
- page-break-before: always;
-}
-
/* Explicit line-breaks are blocks, sure... */
br {
display: block;
diff --git a/src/calibre/ebooks/conversion/plumber.py b/src/calibre/ebooks/conversion/plumber.py
index 1d263eb762..9a0c3f3c7f 100644
--- a/src/calibre/ebooks/conversion/plumber.py
+++ b/src/calibre/ebooks/conversion/plumber.py
@@ -984,7 +984,9 @@ OptionRecommendation(name='sr3_replace',
flattener = CSSFlattener(fbase=fbase, fkey=fkey,
lineh=line_height,
untable=self.output_plugin.file_type in ('mobi','lit'),
- unfloat=self.output_plugin.file_type in ('mobi', 'lit'))
+ unfloat=self.output_plugin.file_type in ('mobi', 'lit'),
+ page_break_on_body=self.output_plugin.file_type in ('mobi',
+ 'lit'))
flattener(self.oeb, self.opts)
self.opts.insert_blank_line = oibl
self.opts.remove_paragraph_spacing = orps
diff --git a/src/calibre/ebooks/lit/output.py b/src/calibre/ebooks/lit/output.py
index 423fb9ce7c..0b07bc7705 100644
--- a/src/calibre/ebooks/lit/output.py
+++ b/src/calibre/ebooks/lit/output.py
@@ -22,7 +22,8 @@ class LITOutput(OutputFormatPlugin):
from calibre.ebooks.oeb.transforms.htmltoc import HTMLTOCAdder
from calibre.ebooks.lit.writer import LitWriter
from calibre.ebooks.oeb.transforms.split import Split
- split = Split(split_on_page_breaks=True, max_flow_size=0)
+ split = Split(split_on_page_breaks=True, max_flow_size=0,
+ remove_css_pagebreaks=False)
split(self.oeb, self.opts)
diff --git a/src/calibre/ebooks/oeb/transforms/flatcss.py b/src/calibre/ebooks/oeb/transforms/flatcss.py
index db6bdf0a7a..368f5eb289 100644
--- a/src/calibre/ebooks/oeb/transforms/flatcss.py
+++ b/src/calibre/ebooks/oeb/transforms/flatcss.py
@@ -100,12 +100,13 @@ def FontMapper(sbase=None, dbase=None, dkey=None):
class CSSFlattener(object):
def __init__(self, fbase=None, fkey=None, lineh=None, unfloat=False,
- untable=False):
+ untable=False, page_break_on_body=False):
self.fbase = fbase
self.fkey = fkey
self.lineh = lineh
self.unfloat = unfloat
self.untable = untable
+ self.page_break_on_body = page_break_on_body
@classmethod
def config(cls, cfg):
@@ -139,6 +140,8 @@ class CSSFlattener(object):
bs.append('margin-right : %fpt'%\
float(self.context.margin_right))
bs.extend(['padding-left: 0pt', 'padding-right: 0pt'])
+ if self.page_break_on_body:
+ bs.extend(['page-break-before: always'])
if self.context.change_justification != 'original':
bs.append('text-align: '+ self.context.change_justification)
body.set('style', '; '.join(bs))
diff --git a/src/calibre/ebooks/oeb/transforms/split.py b/src/calibre/ebooks/oeb/transforms/split.py
index 4633131dc0..69de740ddc 100644
--- a/src/calibre/ebooks/oeb/transforms/split.py
+++ b/src/calibre/ebooks/oeb/transforms/split.py
@@ -38,11 +38,12 @@ class SplitError(ValueError):
class Split(object):
def __init__(self, split_on_page_breaks=True, page_breaks_xpath=None,
- max_flow_size=0):
+ max_flow_size=0, remove_css_pagebreaks=True):
self.split_on_page_breaks = split_on_page_breaks
self.page_breaks_xpath = page_breaks_xpath
self.max_flow_size = max_flow_size
self.page_break_selectors = None
+ self.remove_css_pagebreaks = remove_css_pagebreaks
if self.page_breaks_xpath is not None:
self.page_break_selectors = [(XPath(self.page_breaks_xpath), False)]
@@ -83,12 +84,16 @@ class Split(object):
if before and before != 'avoid':
self.page_break_selectors.add((CSSSelector(rule.selectorText),
True))
+ if self.remove_css_pagebreaks:
+ rule.style.removeProperty('page-break-before')
except:
pass
try:
if after and after != 'avoid':
self.page_break_selectors.add((CSSSelector(rule.selectorText),
False))
+ if self.remove_css_pagebreaks:
+ rule.style.removeProperty('page-break-after')
except:
pass
page_breaks = set([])