PyDocxCreator — это мой небольшой Python-проект для создания и форматирования Word-документов...
Project description
PDC
PyDocxCreator — это мой небольшой Python-проект для создания и форматирования Word-документов с использованием библиотеки python-docx.
Вы можете дополнять и расширять ее при необходимости. Я постарался построить гибкую основу для последующего расширения.
Возможности
- Абстрактные классы для описания стилей документа, абзацев и текста.
- Реализация базовых стилей и логики генерации Word-документов.
- Гибкая настройка шрифтов, отступов, выравнивания и др.
Структура проекта
py_docx_creator/— модуль с основными и абстрактными классами:AbstractClasses.py— абстрактные интерфейсыCoreClasses.py— реализация базовых стилейCustomClasses.py— расширение с пользовательскими стилями
Установка
pip install py_docx_creator
Пример использования
from py_docx_creator.AbstractClasses import AlignParagraph
from py_docx_creator.CoreClasses import CoreDocumentCreator, CoreStyleManager
from py_docx_creator.CustomClasses import MainPageStyle, MainTextStyle, HeaderParagraphStyle, \
MainParagraphStyle, HeaderTextStyle, FastWriter
class DocumentAPI(CoreDocumentCreator):
def __init__(self, file_name: str):
super().__init__()
self.file_name = file_name
self.style_manager = CoreStyleManager
self.write_to_document = FastWriter
self.create_document(self.file_name)
def run(self):
self.style_manager.PAGE_STYLE_MANAGER.apply_style(self.document, MainPageStyle)
self.write_to_document.write(document=self.document,
text="Заголовок документа",
text_style=HeaderTextStyle,
paragraph_style=HeaderParagraphStyle,
italic=True,
size=24)
self.write_to_document.write(document=self.document,
text="Основной текст 1",
text_style=MainTextStyle,
paragraph_style=MainParagraphStyle)
self.write_to_document.write(document=self.document,
text="Основной текст 2",
text_style=MainTextStyle,
paragraph_style=MainParagraphStyle,
alignment=AlignParagraph.RIGHT)
self.save_document()
if __name__ == '__main__':
DocumentAPI("Документ.docx").run()
Пример создания собственных стилей
Стоит внимательно отнестись к типизации данных так как иначе поля Вашего dataclass будут проигнорированы,
а вместо них будут использоваться значения из родительского класса.
1. Создания стиля для параграфа
Пример создание собственного стиля параграфа на основе базового класса CoreParagraphStyle.
from dataclasses import dataclass
from py_docx_creator.CoreClasses import CoreParagraphStyle
from py_docx_creator.AbstractClasses import AlignParagraph
from docx.shared import Pt, Inches
@dataclass
class YourClass(CoreParagraphStyle):
alignment: AlignParagraph | None = None # выравнивание | AlignParagraph.*.value
space_after: float | None = None # отступ до параграфа | Pt(int)
space_before: float | None = None # отступ после параграфа | Pt(int)
left_indent: float | None = None # отступ от левого края | Inches(float | int)
right_indent: float | None = None # отступ от правого края | Inches(float | int)
line_spacing: float | None = None # межстрочный интервал | float
first_line_indent: float | None = None # отступ красной строки | Pt(int)
page_break_before: bool | None = None # разрыв страницы перед параграфом | bool
Поля, которые изменяться не будут указывать не нужно (исключить из dataclass).
2. Создание стиля для текста
Пример создания стиля текста на основе базового класса CoreTextStyle.
from dataclasses import dataclass
from py_docx_creator.CoreClasses import CoreTextStyle
@dataclass
class YourClass(CoreTextStyle):
size: float | None = None # размер шрифта текста | float
name: str | None = None # наименование шрифта | str | FontNames.*.value
bold: bool | None = None # жирное начертание шрифта | bool
italic: bool | None = None # курсивное начертание шрифта | bool
underline: bool | None = None # подчеркнутое начертание шрифта | bool
Поля, которые изменяться не будут указывать не нужно (исключить из dataclass).
3. Создание стиля страниц документа
Пример создания стиля страниц документа на основе базового класса CorePageStyle.
from dataclasses import dataclass
from py_docx_creator.CoreClasses import CorePageStyle
from docx.shared import Pt
@dataclass
class YourClass(CorePageStyle):
top_margin: float | None = None # отступ сверху | float
bottom_margin: float | None = None # отступ снизу | float
left_margin: float | None = None # отступ слева | float
right_margin: float | None = None # отступ справа | float
Поля, которые изменяться не будут указывать не нужно (исключить из dataclass).
На данный момент доступно несколько заранее прописанных стилей
-
MainPageStyle- стиль страниц документа с заданными полями; -
MainParagraphStyle- стиль параграфа для основного текста (текст по ширине, красная строка и др.); -
HeaderParagraphStyle- стиль параграфа для заголовков (текст по центру);
Проект находится в активной разработке.
IN PROGRESS:
[████████████░░░░░░░░░░░░░░░░░░░░░░░░] 25%
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file py_docx_creator-0.1.4.7.tar.gz.
File metadata
- Download URL: py_docx_creator-0.1.4.7.tar.gz
- Upload date:
- Size: 8.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a3f0fee576bccf2fd793938d408354ca04ae4dc181f1a0a08f200962a0510faa
|
|
| MD5 |
012efd0563e65d58540290c2ffb7e32e
|
|
| BLAKE2b-256 |
7058ba5a6aa5973ffe163ba50ebb27ff281ceb5593607ee2ee25f9ce88286a8d
|
File details
Details for the file py_docx_creator-0.1.4.7-py3-none-any.whl.
File metadata
- Download URL: py_docx_creator-0.1.4.7-py3-none-any.whl
- Upload date:
- Size: 9.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
06dc7803efe6469ea34ad2823bc2ee0cae8f1f76099c69dbd8d4f878fc94a6f6
|
|
| MD5 |
9a0fb8ebbd8310b47555f1a1b0b6e56d
|
|
| BLAKE2b-256 |
af5fb330a951b584f73aebe2a13e99d7b996ab70c5528bb271193b1992ba25ed
|