Извлечение документа Word со стилями, связанными с контентом - PullRequest
0 голосов
/ 09 января 2019

Я пытаюсь извлечь формат текстового документа, содержащего текст в различных шрифтах и ​​размерах шрифтов, изображениях, комментариях и т. Д. Я использовал модуль zipfile для извлечения XML-файлов текстового документа.

XML-файлы:

['[Content_Types].xml',
 '_rels/.rels',
 'word/_rels/document.xml.rels',
 'word/document.xml',
 'word/footer2.xml',
 'word/header1.xml',
 'word/footer1.xml',
 'word/endnotes.xml',
 'word/footnotes.xml',
 'word/_rels/header1.xml.rels',
 'word/header2.xml',
 'word/_rels/header2.xml.rels',
 'word/embeddings/Microsoft_Word_97_-_2003_Document1.doc',
 'word/media/image3.wmf',
 'word/media/image2.emf',
 'word/theme/theme1.xml',
 'word/media/image1.png',
 'word/embeddings/oleObject1.bin',
 'word/comments.xml',
 'word/settings.xml',
 'word/styles.xml',
 'customXml/itemProps1.xml',
 'word/numbering.xml',
 'customXml/_rels/item1.xml.rels',
 'customXml/item1.xml',
 'docProps/app.xml',
 'word/stylesWithEffects.xml',
 'word/webSettings.xml',
 'word/fontTable.xml',
 'docProps/core.xml',
 'docProps/custom.xml']

Я не могу понять стили, связанные с содержимым, присутствующим в word/document.xml.

Я пытаюсь инкапсулировать результаты следующим образом:

{
    "text": "some-text-in-document",
    "font": "some-font",
    "font_size": 10,
    "some_field": "some-more-value",
    ...
}

Попытка использования python-docx для получения шрифтов и размеров шрифта, но в основном это значение None

вот фрагмент кода:

from docx.enum.style import WD_STYLE_TYPE
styles = document.styles
#print(styles.default)
paragraph_styles = [s for s in styles if s.type == WD_STYLE_TYPE.PARAGRAPH]
for style in paragraph_styles:
    #print(style.font.name)
    if(style.font.name):
        print(style.font.name, style.font.size)

for paragraph in document.paragraphs:
    #print(paragraph.text)
    for run in paragraph.runs:
        print(run.text)
        font = run.style.font
        print(font.size)

Результаты в основном None для шрифта и размера.

1 Ответ

0 голосов
/ 11 января 2019

Значение None для style означает Normal.

У всех параграфов есть стиль, просто у большинства одинаковый стиль, поэтому Word не прописывает его для большинства случаев, возможно, для экономии места.

...