Как уменьшить расстояние между абзацами в python -docx - PullRequest
0 голосов
/ 22 января 2020

Пытаюсь уменьшить интервал между абзацами с кодом ниже в python-docx, но когда применяется форматирование к абзацу, последний абзац уменьшается, но линия между абзацами не уменьшается.

я нашел некоторые примеры здесь ссылка 1 и ссылка 2 , которые не понимают часть xml для достижения желаемых результатов.

Мне нужна ваша помощь, чтобы уменьшить расстояние между абзацами до python, но не устанавливая его через файл слов.

from docx import Document
from docx.shared import Inches
from docx.enum.style import WD_STYLE_TYPE
from docx.shared import Pt


document = Document()

document.add_heading('THIS IS MY HEADER WANT TO UNDERLINE IT')


paragraph = document.add_paragraph('THIS IS MY FIRST PARAGRAPH ')
paragraph = document.add_paragraph('THIS IS SECOND PARAGRAPH')
paragraph = document.add_paragraph('SPACING BETWEEN EACH SHOULD BE DECREASED')

paragraph_format = paragraph.paragraph_format
paragraph_format.line_spacing = Pt(3)
paragraph_format.space_after = Pt(5)


print("document created")

document.save('demo.docx')

1 Ответ

1 голос
/ 22 января 2020

Если вы проверите сгенерированный файл Word, вы увидите, что ваш код работал точно так, как вы заявили. Последний абзац - единственный, к которому вы применили форматирование к - имеет межстрочный интервал 3pt и 5 пунктов после; все остальные абзацы отображаются с форматированием по умолчанию.

Так что python-docx работает правильно, и если ваш вывод неправильный, то это потому, что ваш код неправильный.

Во-первых, я настоятельно советую не устанавливать межстрочный интервал до 3 пунктов; Я предполагаю, что вы запутались, потому что это «не работает», и вы намеревались установить вместо него space_before. Во-вторых, убедитесь, что ваше форматирование применено к всем абзацам, а не только к последнему:

from docx import Document
from docx.shared import Pt

document = Document()

document.add_heading('THIS IS MY HEADER WANT TO UNDERLINE IT')

paragraph = document.add_paragraph('THIS IS MY FIRST PARAGRAPH ')
paragraph.paragraph_format.space_before = Pt(3)
paragraph.paragraph_format.space_after = Pt(5)

paragraph = document.add_paragraph('THIS IS SECOND PARAGRAPH')
paragraph.paragraph_format.space_before = Pt(3)
paragraph.paragraph_format.space_after = Pt(5)

paragraph = document.add_paragraph('SPACING BETWEEN EACH SHOULD BE DECREASED')
paragraph.paragraph_format.space_before = Pt(3)
# no need to set space_after because there is no text after this

print("document created")
document.save('demo.docx')

В результате получается документ с 3-мя дополнительными пробелами до и 5-тью после ( и с обычным начальным) для всех трех текстовых абзацев.

...