diff --git a/src/calibre/ebooks/pdf/html_writer.py b/src/calibre/ebooks/pdf/html_writer.py
index 623e914898..98ef90e344 100644
--- a/src/calibre/ebooks/pdf/html_writer.py
+++ b/src/calibre/ebooks/pdf/html_writer.py
@@ -75,7 +75,15 @@ def create_skeleton(container):
spine_name = tuple(container.spine_names)[-1][0]
root = container.parsed(spine_name)
root = copy.deepcopy(root)
- body = last_tag(root)
+ body = None
+ for child in tuple(root.iterchildren('*')):
+ if body is None:
+ if child.tag == XHTML('body') or child.tag == 'body':
+ body = child
+ else:
+ root.remove(child)
+ if body is None:
+ body = last_tag(root)
body.text = body.tail = None
del body[:]
name = container.add_file(spine_name, b'', modify_name_if_needed=True)
@@ -899,7 +907,7 @@ def test_merge_fonts():
PAGE_NUMBER_TEMPLATE = ''
-def add_header_footer(manager, opts, pdf_doc, container, page_number_display_map, page_layout, page_margins_map, pdf_metadata, report_progress, toc=None):
+def add_header_footer(manager, opts, pdf_doc, container, page_number_display_map, page_layout, page_margins_map, pdf_metadata, report_progress, toc, log):
header_template, footer_template = opts.pdf_header_template, opts.pdf_footer_template
if not footer_template and opts.pdf_page_numbers:
footer_template = PAGE_NUMBER_TEMPLATE
@@ -1055,7 +1063,7 @@ def add_header_footer(manager, opts, pdf_doc, container, page_number_display_map
div.append(format_template(footer_template, page_num, margins.bottom))
container.commit()
- # print(open(job[0]).read())
+ # print(container.raw_data(name))
results = manager.convert_html_files([job], settle_time=1)
data = results[name]
if not isinstance(data, bytes):
@@ -1065,8 +1073,7 @@ def add_header_footer(manager, opts, pdf_doc, container, page_number_display_map
first_page_num = pdf_doc.page_count()
num_pages = doc.page_count()
if first_page_num != num_pages:
- raise ValueError('The number of header/footers pages ({}) != number of document pages ({})'.format(
- num_pages, first_page_num))
+ raise ValueError(f'The number of header/footers pages ({num_pages}) < number of document pages ({first_page_num})')
pdf_doc.append(doc)
pdf_doc.impose(1, first_page_num + 1, num_pages)
report_progress(0.9, _('Headers and footers added'))
@@ -1176,7 +1183,7 @@ def convert(opf_path, opts, metadata=None, output_path=None, log=default_log, co
add_header_footer(
manager, opts, pdf_doc, container,
page_number_display_map, page_layout, page_margins_map,
- pdf_metadata, report_progress, toc if has_toc else None)
+ pdf_metadata, report_progress, toc if has_toc else None, log)
num_removed = remove_unused_fonts(pdf_doc)
if num_removed: