diff --git a/src/calibre/ebooks/html/output.py b/src/calibre/ebooks/html/output.py
index e2e286dbca..a3c4b47b4b 100644
--- a/src/calibre/ebooks/html/output.py
+++ b/src/calibre/ebooks/html/output.py
@@ -42,21 +42,41 @@ class HTMLOutput(OutputFormatPlugin):
dir = os.path.dirname(path)
if not os.path.exists(dir):
os.makedirs(dir)
- if isinstance(item.data, etree._Element):
- root = item.data.getroottree()
- body = root.xpath('//h:body', namespaces={'h': 'http://www.w3.org/1999/xhtml'})[0]
- ebook_content = etree.tostring(body, pretty_print=True, encoding='utf-8')
- ebook_content = re.sub(r'\<\/?body.*\>', '', ebook_content)
- vars = {
- 'ebookContent': ebook_content,
- 'prevLink': None,
- 'nextLink': None
- }
- template_file = os.path.dirname(__file__)+'/outputtemplates/default.tmpl'
- t = Template(file=template_file, searchList=[ vars ]) # compilerSettings={'useStackFrames': False}
+ if item.spine_position is not None:
with open(path, 'wb') as f:
- f.write(str(t))
+ pass
else:
with open(path, 'wb') as f:
f.write(str(item))
+ item.unload_data_from_memory(memory=path)
+
+ for item in oeb_book.spine:
+ path = os.path.abspath(unquote(item.href))
+ dir = os.path.dirname(path)
+ root = item.data.getroottree()
+ body = root.xpath('//h:body', namespaces={'h': 'http://www.w3.org/1999/xhtml'})[0]
+ ebook_content = etree.tostring(body, pretty_print=True, encoding='utf-8')
+ ebook_content = re.sub(r'\<\/?body.*\>', '', ebook_content)
+ if item.spine_position+1 < len(oeb_book.spine):
+ nextLink = oeb_book.spine[item.spine_position+1].href
+ nextLink = os.path.abspath((nextLink))
+ nextLink = os.path.relpath(nextLink, dir)
+ else:
+ nextLink = None
+ if item.spine_position > 0:
+ prevLink = oeb_book.spine[item.spine_position-1].href
+ prevLink = os.path.abspath((prevLink))
+ prevLink = os.path.relpath(prevLink, dir)
+ else:
+ prevLink = None
+ vars = {
+ 'ebookContent': ebook_content,
+ 'prevLink': prevLink,
+ 'nextLink': nextLink
+ }
+ template_file = os.path.dirname(__file__)+'/outputtemplates/default.tmpl'
+ t = Template(file=template_file, searchList=[ vars ]) # compilerSettings={'useStackFrames': False}
+ with open(path, 'wb') as f:
+ f.write(str(t))
+
item.unload_data_from_memory(memory=path)