E. Epstein
Для того чтобы скопировать текст с его стилями, вам нужно будет написать свою собственную функцию, так как ее нет python-docx функция, которая делает такую вещь. Это функция, которую я написал:
def get_para_data(output_doc_name, paragraph):
"""
Write the run to the new file and then set its font, bold, alignment, color etc. data.
"""
output_para = output_doc_name.add_paragraph()
for run in paragraph.runs:
output_run = output_para.add_run(run.text)
# Run's bold data
output_run.bold = run.bold
# Run's italic data
output_run.italic = run.italic
# Run's underline data
output_run.underline = run.underline
# Run's color data
output_run.font.color.rgb = run.font.color.rgb
# Run's font data
output_run.style.name = run.style.name
# Paragraph's alignment data
output_para.paragraph_format.alignment = paragraph.paragraph_format.alignment
Как Работает Эта Функция
1. Добавляет новый
paragraph
объект к файлу.
2. Добавляет новый
run
к этому абзацу.
3. проверяет, соответствует ли каждый из стилей
жирный,
курсивный и
подчеркивать является
True
,
False
,
None
. Если это
True
, этот
run
будет в таком стиле, если это так.
False
, это будет не в том стиле, и если это так, то ...
None
, он будет унаследован стилем по умолчанию абзаца, в котором он находится. Затем он применяет стили к
run
.
3. проверяет, какого цвета обкатка
формат RGB и применяет найденный цвет к
run
.
4. проверяет, какой шрифт используется в прогоне, и применяет найденный шрифт к
run
.
5. проверяет, каково выравнивание прогона, и применяет найденную настройку выравнивания к
run
.
Как использовать эту функцию:
Вам нужно дать ему имя, которое вы дали своему выходному документу, и абзацы, которые вы хотите скопировать.
например:# Imports
input_doc = Document('InputDoc.docx')
output_doc = Document()
# Call the function
get_para_data(output_doc, input_doc.paragraphs[3])
# Save the new file
output_doc.save('OutputDoc.docx')
Если вы хотите скопировать весь документ я предлагаю вам сделать это:for para in input_doc.paragraphs:
get_para_data(output_doc, para)
output_doc.save('OutputDoc.docx')