Я пишу программу, которая будет читать файл docx и выводить отформатированный код игры. Поэтому мне нужно собрать всю возможную информацию из документа docx, чтобы я мог эффективно разработать свою программу. Хотя читать абзацы и собирать данные было легко, я столкнулся с проблемой, когда python-docx возвращает None для свойств, которые «наследованы из иерархии стилей». При встрече с этими значениями None возникает проблема; поскольку моя программа ничего не делает с типом None, какое значение мне использовать вместо этого? Чтобы исправить это, я ищу точный способ доступа к значениям по умолчанию всего документа для всего, что связано с абзацами/шрифтами (если возможно), например: выравнивание по умолчанию, шрифт по умолчанию, размер шрифта по умолчанию, цвет шрифта по умолчанию и т. д. С учетом вышесказанного, может ли кто-нибудь дать какие-либо рекомендации о том, как мне добиться желаемого поведения (если вообще стоит этого добиваться).
Пока что мне удалось добиться желаемого поведения. размер шрифта по умолчанию (надеюсь), используя это метод:
Код: Выделить всё
def _find_default_size(self, document):
if(document != None and
document.styles != None and
document.styles.element != None):
styles_elem = document.styles.element
# print(et.tostring(styles_elem))
default_LXML = styles_elem.xpath('w:docDefaults/w:rPrDefault')
if(len(default_LXML) != 0 and
len(default_LXML[0]) != 0):
# https://github.com/python-openxml/python-docx/blob/master/src/docx/oxml/text/font.py
run = default_LXML[0][0] # Should be a type CT_RPr
if(run.sz_val):
return run.sz_val.pt
return -1
Что я изначально нашел в этом репозитории GitHub:
https://github.com/pass-by-reference/do ... o_renpy.py# L249
Хотя этот метод получает размер шрифта по умолчанию, я пытаюсь понять, почему он это делает, и пытаюсь собрать другие вещи, такие как выравнивание абзаца по умолчанию, цвет шрифта по умолчанию, и т. д.
Подробнее здесь:
https://stackoverflow.com/questions/791 ... properties