diff --git a/src/calibre/ebooks/docx/to_html.py b/src/calibre/ebooks/docx/to_html.py
index c6b2e230d4..cb33b255ca 100644
--- a/src/calibre/ebooks/docx/to_html.py
+++ b/src/calibre/ebooks/docx/to_html.py
@@ -93,10 +93,12 @@ class Convert(object):
self.framed_map = {}
self.anchor_map = {}
self.link_map = defaultdict(list)
+ self.link_source_map = {}
paras = []
self.log.debug('Converting Word markup to HTML')
self.read_page_properties(doc)
+ self.current_rels = relationships_by_id
for wp, page_properties in self.page_map.iteritems():
self.current_page = page_properties
if wp.tag.endswith('}p'):
@@ -123,7 +125,7 @@ class Convert(object):
dl[-1][0].tail = ']'
dl.append(DD())
paras = []
- self.images.rid_map = note.rels[0]
+ self.images.rid_map = self.current_rels = note.rels[0]
for wp in note:
if wp.tag.endswith('}tbl'):
self.tables.register(wp, self.styles)
@@ -157,7 +159,7 @@ class Convert(object):
self.images.rid_map = orig_rid_map
- self.resolve_links(relationships_by_id)
+ self.resolve_links()
self.styles.cascade(self.layers)
@@ -378,6 +380,7 @@ class Convert(object):
try:
hl = hl_xpath(x)[0]
self.link_map[hl].append(span)
+ self.link_source_map[hl] = self.current_rels
x.set('is-link', '1')
except IndexError:
current_hyperlink = None
@@ -455,9 +458,10 @@ class Convert(object):
wrapper.append(elem)
return wrapper
- def resolve_links(self, relationships_by_id):
+ def resolve_links(self):
self.resolved_link_map = {}
for hyperlink, spans in self.link_map.iteritems():
+ relationships_by_id = self.link_source_map[hyperlink]
span = spans[0]
if len(spans) > 1:
span = self.wrap_elems(spans, SPAN())