Подтвердить что ты не робот

При использовании Python docx, как включить орфографию в выходном документе?

Я использую библиотеку docx Python для создания документа, который я хотел бы открыть и найти орфографические ошибки. Но когда я открываю документ, ни один из символов орфографических ошибок (маленькие красные подчеркивания) или если я запустил проверку орфографии. Если я отредактирую строку или копию, вырежьте и вставьте содержимое обратно в слово, функция правописания работает должным образом.

Есть ли способ заставить выходной документ автоматически отображать/распознавать орфографические ошибки в выходном документе? Я играл с флагом "no_proof", но, похоже, это не помогает. (Использование 64-битного Python 3.4, docx 8.6 в окне Windows, открытие вывода в Word 2013)

Спасибо за любые идеи!

Код для воспроизведения:

from docx import Document
document = Document()
paragraph = document.add_paragraph('This has a spellling errror')
document.save(r'SpellingTester.docx')

Выход в Word:

4b9b3361

Ответ 1

Я бы попытался использовать объект document.settings, чтобы он обернул элемент lxml node документа. Как видно из документации, есть атрибут hideSpellingErrors.

Настройки DOCX Python

<xsd:element name="hideSpellingErrors" type="CT_OnOff" minOccurs="0"/>

EDIT: Изучив немного дальше, я попробую что-то вроде этого:

import docx

document = docx.Document()

DOCX = '{http://schemas.openxmlformats.org/wordprocessingml/2006/main}'

element = document.settings.element.find(DOCX + 'proofState')
element.attrib[DOCX + 'grammar'] = 'dirty'
element.attrib[DOCX + 'spelling'] = 'dirty'

document.add_paragraph("This has a spellling errror")
document.save("test.docx")

С префиксом DOCX, который может меняться, но он легко читается в элементе lxml. Я не знаю прямо сейчас, если есть способ сделать что-то более прямо и чисто, но это работает для меня.

Подробнее о proofState в docx: