Python-Docx, чтобы установить разные стили для каждого абзаца - PullRequest
0 голосов
/ 12 марта 2019

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

Это мой код:

def get_operation_word_file(self, request, context):
    import unicodedata
    from django.core.files import File
    from docx import Document
    from docx.shared import Inches, Pt

    document = Document()

    section = document.sections[-1]
    section.top_margin = Inches(0.5)
    section.bottom_margin = Inches(0.5)
    section.left_margin = Inches(0.5)
    section.right_margin = Inches(0.5)

    style = document.styles['Normal']
    font = style.font
    font.name ='Arial'
    font.size = Pt(10)

    company_paragraph = document.add_paragraph("EUROAMERICA TTOO INC").alignment = WD_ALIGN_PARAGRAPH.CENTER
    company_paragraph.style.font.size = Pt(20)
    company_paragraph.style.font.bold = True

    description_paragraph = document.add_paragraph("Operación de {} del día {}".format(operation_type[self.operation_type], self.operation_date)).alignment = WD_ALIGN_PARAGRAPH.CENTER
    description_paragraph.style.font.size = Pt(16)
    description_paragraph.style.font.bold = False

    day_paragraph = document.add_paragraph(weekdays[str(self.get_operation_date().weekday())]).alignment = WD_ALIGN_PARAGRAPH.CENTER
    day_paragraph.style.font.size = Pt(16)
    day_paragraph.style.font.bold = False

    current_directory = settings.MEDIA_DIR
    file_name = "Operaciones {} {}.docx".format(self.operation_type, self.operation_date)
    document.save("{}/{}".format(current_directory, file_name))

    return file_name

В полученном документе три абзаца, которые я добавляю, заканчиваются одинаковым размером и жирным шрифтом.

Я не знаю, чтоМне не хватает, чтобы каждый абзац имел свои собственные настройки стиля.

1 Ответ

1 голос
/ 13 марта 2019

Стиль применяется к абзацу с помощью ссылки , а не путем копирования его атрибутов.Поэтому, если все ваши абзацы имеют стиль «Нормальный», все они получают стиль, которым заканчивается «Нормальный», что является вашим последним параметром.

Так что вам нужно будет использовать другой стиль для каждого абзаца, который требуетвыглядеть по-другому, или вы можете просто применить форматирование непосредственно к абзацу, без использования стиля.Этот последний подход может быть более подходящим для абзаца, который уникален в документе.

Все характеристики форматирования, которые могут быть установлены для стиля, также могут применяться напрямую.

ИспользованиеСтили описаны в документации python-docx здесь:
https://python -docx.readthedocs.io / en / latest / user / styles-using.html

...