Всем привет, у меня была такая задача используя python-docx разделять документ на множество документов по определенным критериям, с этой задачей справился но заметил что после разделения в новых документах не отображаются списки, например в оригинале -
1. пункт 1
2. пункт 2
3. пункт 3
а в разделенном документе получаю -
пункт 1
пункт 2
пункт 3
Прогуглил все возможные решения и не могу найти информации, переделывать на aspose.words не вариант, хотелось бы решить методами python-docx
Пытался копировать стили построчно, не получилось -
def copy_paragraph(paragraph, new_doc):
new_para = new_doc.add_paragraph()
# Копируем формат списка, если это нумерованный или маркированный список
if paragraph.style.name in ['List Number', 'List Bullet']:
new_para.style = paragraph.style
for run in paragraph.runs:
new_run = new_para.add_run(run.text)
new_run.bold = run.bold
new_run.italic = run.italic
new_run.underline = run.underline
new_run.font.color.rgb = run.font.color.rgb
new_run.font.size = run.font.size
такой вариант тоже результатов не дал -
def copy_paragraph(paragraph, new_doc):
new_para = new_doc.add_paragraph()
# Копируем текст, форматирование и атрибуты
for run in paragraph.runs:
new_run = new_para.add_run(run.text)
new_run.bold = run.bold
new_run.italic = run.italic
new_run.underline = run.underline
new_run.font.color.rgb = run.font.color.rgb
new_run.font.size = run.font.size
# Если параграф является списком (нумерованным или маркированным), копируем атрибуты списка
numPr = paragraph._element.find(qn('w:numPr'))
if numPr is not None:
# Копируем элемент w:numPr
new_numPr = OxmlElement('w:numPr')
# Копируем дочерние элементы (например, w:ilvl и w:numId)
for child in numPr:
new_child = OxmlElement(child.tag)
for attr in child.attrib:
new_child.set(attr, child.attrib[attr])
new_numPr.append(new_child)
# Вставляем numPr в новый параграф
new_para._element.insert(0, new_numPr)
надеюсь найдутся знатоки которые знают как списки копировать