From 3388d6ffd35727dbc2b1e533112847e9360c230f Mon Sep 17 00:00:00 2001 From: John Schember Date: Sun, 24 Apr 2011 18:45:12 -0400 Subject: [PATCH] Fix bug #769489: eReader PDB not specifying all footnotes causes conversion to fail. --- src/calibre/ebooks/pdb/ereader/reader132.py | 12 ++++++++++-- src/calibre/ebooks/pml/pmlconverter.py | 5 ++++- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/calibre/ebooks/pdb/ereader/reader132.py b/src/calibre/ebooks/pdb/ereader/reader132.py index df98ce15b1..09e4b624e5 100644 --- a/src/calibre/ebooks/pdb/ereader/reader132.py +++ b/src/calibre/ebooks/pdb/ereader/reader132.py @@ -129,14 +129,22 @@ class Reader132(FormatReader): footnoteids = re.findall('\w+(?=\x00)', self.section_data(self.header_record.footnote_offset).decode('cp1252' if self.encoding is None else self.encoding)) for fid, i in enumerate(range(self.header_record.footnote_offset + 1, self.header_record.footnote_offset + self.header_record.footnote_count)): self.log.debug('Extracting footnote page %i' % i) - html += footnote_to_html(footnoteids[fid], self.decompress_text(i)) + if fid < len(footnoteids): + fid = footnoteids[fid] + else: + fid = '' + html += footnote_to_html(fid, self.decompress_text(i)) if self.header_record.sidebar_count > 0: html += '

%s

' % _('Sidebar') sidebarids = re.findall('\w+(?=\x00)', self.section_data(self.header_record.sidebar_offset).decode('cp1252' if self.encoding is None else self.encoding)) for sid, i in enumerate(range(self.header_record.sidebar_offset + 1, self.header_record.sidebar_offset + self.header_record.sidebar_count)): self.log.debug('Extracting sidebar page %i' % i) - html += sidebar_to_html(sidebarids[sid], self.decompress_text(i)) + if sid < len(sidebarids): + sid = sidebarids[sid] + else: + sid = '' + html += sidebar_to_html(sid, self.decompress_text(i)) html += '' diff --git a/src/calibre/ebooks/pml/pmlconverter.py b/src/calibre/ebooks/pml/pmlconverter.py index 89a495cfc6..7bb23946ca 100644 --- a/src/calibre/ebooks/pml/pmlconverter.py +++ b/src/calibre/ebooks/pml/pmlconverter.py @@ -749,7 +749,10 @@ def pml_to_html(pml): def footnote_sidebar_to_html(pre_id, id, pml): id = id.strip('\x01') - html = '

%s

return
' % (pre_id, id, pml_to_html(pml), pre_id, id) + if id.strip(): + html = '

%sreturn
' % (pre_id, id, pml_to_html(pml), pre_id, id) + else: + html = '

%s
' % pml_to_html(pml) return html def footnote_to_html(id, pml):