mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
More fixes for missing styles
This commit is contained in:
parent
f5c9841c83
commit
097b35755a
@ -138,32 +138,32 @@ class Styles(object):
|
||||
|
||||
def __call__(self, root, fonts, theme):
|
||||
self.fonts, self.theme = fonts, theme
|
||||
for s in self.namespace.XPath('//w:style')(root):
|
||||
s = Style(self.namespace, s)
|
||||
if s.style_id:
|
||||
self.id_map[s.style_id] = s
|
||||
if s.is_default:
|
||||
self.default_styles[s.style_type] = s
|
||||
if getattr(s, 'numbering_style_link', None) is not None:
|
||||
self.numbering_style_links[s.style_id] = s.numbering_style_link
|
||||
|
||||
self.default_paragraph_style = self.default_character_style = None
|
||||
if root is not None:
|
||||
for s in self.namespace.XPath('//w:style')(root):
|
||||
s = Style(self.namespace, s)
|
||||
if s.style_id:
|
||||
self.id_map[s.style_id] = s
|
||||
if s.is_default:
|
||||
self.default_styles[s.style_type] = s
|
||||
if getattr(s, 'numbering_style_link', None) is not None:
|
||||
self.numbering_style_links[s.style_id] = s.numbering_style_link
|
||||
|
||||
for dd in self.namespace.XPath('./w:docDefaults')(root):
|
||||
for pd in self.namespace.XPath('./w:pPrDefault')(dd):
|
||||
for pPr in self.namespace.XPath('./w:pPr')(pd):
|
||||
ps = ParagraphStyle(self.namespace, pPr)
|
||||
if self.default_paragraph_style is None:
|
||||
self.default_paragraph_style = ps
|
||||
else:
|
||||
self.default_paragraph_style.update(ps)
|
||||
for pd in self.namespace.XPath('./w:rPrDefault')(dd):
|
||||
for pPr in self.namespace.XPath('./w:rPr')(pd):
|
||||
ps = RunStyle(self.namespace, pPr)
|
||||
if self.default_character_style is None:
|
||||
self.default_character_style = ps
|
||||
else:
|
||||
self.default_character_style.update(ps)
|
||||
for dd in self.namespace.XPath('./w:docDefaults')(root):
|
||||
for pd in self.namespace.XPath('./w:pPrDefault')(dd):
|
||||
for pPr in self.namespace.XPath('./w:pPr')(pd):
|
||||
ps = ParagraphStyle(self.namespace, pPr)
|
||||
if self.default_paragraph_style is None:
|
||||
self.default_paragraph_style = ps
|
||||
else:
|
||||
self.default_paragraph_style.update(ps)
|
||||
for pd in self.namespace.XPath('./w:rPrDefault')(dd):
|
||||
for pPr in self.namespace.XPath('./w:rPr')(pd):
|
||||
ps = RunStyle(self.namespace, pPr)
|
||||
if self.default_character_style is None:
|
||||
self.default_character_style = ps
|
||||
else:
|
||||
self.default_character_style.update(ps)
|
||||
|
||||
def resolve(s, p):
|
||||
if p is not None:
|
||||
|
@ -331,6 +331,7 @@ class Convert(object):
|
||||
else:
|
||||
self.theme(fromstring(raw))
|
||||
|
||||
styles_loaded = False
|
||||
if sname is not None:
|
||||
try:
|
||||
raw = self.docx.read(sname)
|
||||
@ -338,6 +339,9 @@ class Convert(object):
|
||||
self.log.warn('Styles %s do not exist' % sname)
|
||||
else:
|
||||
self.styles(fromstring(raw), fonts, self.theme)
|
||||
styles_loaded = True
|
||||
if not styles_loaded:
|
||||
self.styles(None, fonts, self.theme)
|
||||
|
||||
if nname is not None:
|
||||
try:
|
||||
|
Loading…
x
Reference in New Issue
Block a user