Skip to main content

Конвертирует HTML в DOCX с сохранением стилей: списков, таблиц, шрифтов, цветов и т.д.

Project description

Библиотека конвертации HTML в DOCX

Python-библиотека для преобразования HTML-контента в документы Word (.docx) с поддержкой таблиц, списков, изображений и CSS-стилей.

Установка

pip install html2docxconverter
uv add html2docxconverter

Поддерживаемые HTML-теги

Основные теги

  • <p> - абзацы текста
  • <figure> - контейнеры для изображений
  • <ul> - неупорядоченные списки
  • <ol> - упорядоченные списки
  • <li> - элементы списков
  • <table> - таблицы
  • <tr> - строки таблицы
  • <td> - ячейки таблицы
  • <th> - заголовочные ячейки таблицы
  • <colgroup> - группировка столбцов таблицы
  • <col> - определение столбца таблицы
  • <tbody> - тело таблицы

Теги форматирования текста

  • <strong>, <b> - жирный текст
  • <em>, <i> - курсив
  • <u> - подчеркнутый текст
  • <s>, <strike>, <del> - зачеркнутый текст
  • <sup> - верхний индекс
  • <sub> - нижний индекс
  • <span> - контейнер для стилизации текста

Поддерживаемые CSS-стили

Стили текста

  • color - цвет текста (имена цветов, hex, rgb)
  • background-color - выделение цветом (имена цветов, hex, rgb)
  • font-size - размер шрифта (px, pt, em, %)
  • text-align - выравнивание текста (left, right, center, justify)
  • vertical-align - вертикальное выравнивание (top, middle, bottom)

Стили таблиц и ячеек

  • width - ширина таблицы/ячейки (px, %)
  • height - высота строки/ячейки (px)
  • background-color - цвет фона таблицы/ячейки
  • border - граница (ширина стиль цвет)
  • border-width - ширина границы
  • border-style - стиль границы (solid, single)
  • border-color - цвет границы
  • float - позиционирование таблицы (left, right)

За основу при создании HTML контента использовался

CKEditor

Пример использования

from docx import Document
from htmltodocx import HTMLtoDocx

# Создание нового документа
doc = Document()

# HTML-контент для конвертации
html_content = """
<p>Это <strong>жирный</strong> и <em>курсивный</em> текст.</p>
<ul>
    <li>Первый элемент</li>
    <li>Второй элемент</li>
</ul>
"""

# Конвертация HTML в DOCX
converter = HTMLtoDocx(doc)
converted_doc = converter.parse_html(html_content)

# Сохранение документа
converted_doc.save("output.docx")

Настройки форматирования

from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
from schemas import ConfigSchema, DefaultTableStyleSchema, DefaultConfigSchema
from docx import Document
from htmltodocx import HTMLtoDocx

align_map = {
    "left": WD_PARAGRAPH_ALIGNMENT.LEFT,
    "center": WD_PARAGRAPH_ALIGNMENT.CENTER,
    "right": WD_PARAGRAPH_ALIGNMENT.RIGHT,
    "justify": WD_PARAGRAPH_ALIGNMENT.JUSTIFY,
}

align_image_class_map = {
    "image-style-block-align-left": WD_PARAGRAPH_ALIGNMENT.LEFT,
    "image-style-block-align-right": WD_PARAGRAPH_ALIGNMENT.RIGHT,
    "image-style-block-align-center": WD_PARAGRAPH_ALIGNMENT.CENTER,
}

vertical_align_map = {"top": "top", "middle": "center", "bottom": "bottom"}

border_side = ["top", "left", "bottom", "right"]

border_style = {
    "none": "nil",
    "solid": "single",
    "dotted": "dotted",
    "dashed": "dash",
    "double": "double",
    "groove": "threeDEmboss",
    "ridge": "threeDEngrave",
    "inset": "inset",
    "outset": "outset",
}

default_settings = DefaultConfigSchema(
    align_paragraph=WD_PARAGRAPH_ALIGNMENT.JUSTIFY,
    align_image=WD_PARAGRAPH_ALIGNMENT.CENTER,
    vertical_align='center',
    table_style=DefaultTableStyleSchema(
        width="1pt", style="single", color="000000"
    )
)

base_config = ConfigSchema(
    align_map=align_map,
    align_image_class_map=align_image_class_map,
    vertical_align_map=vertical_align_map,
    border_side=border_side,
    border_style=border_style,
    default_settings=default_settings
)
# HTML-контент для конвертации
html_content = """
<p>Это <strong>жирный</strong> и <em>курсивный</em> текст.</p>
<ul>
    <li>Первый элемент</li>
    <li>Второй элемент</li>
</ul>
"""

# Конвертация HTML в DOCX
doc = Document()
converter = HTMLtoDocx(doc, config=base_config)
converted_doc = converter.parse_html(html_content)

# Сохранение документа
converted_doc.save("output.docx")

Лицензия

MIT License

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

html2docxconverter-0.1.5.tar.gz (12.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

html2docxconverter-0.1.5-py3-none-any.whl (13.4 kB view details)

Uploaded Python 3

File details

Details for the file html2docxconverter-0.1.5.tar.gz.

File metadata

  • Download URL: html2docxconverter-0.1.5.tar.gz
  • Upload date:
  • Size: 12.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.6

File hashes

Hashes for html2docxconverter-0.1.5.tar.gz
Algorithm Hash digest
SHA256 224c0c236c825f4b611a9d0f9155856b0ed6fbe9ca169be5b37132dc3a0f5a10
MD5 949aa5d68bcf43d4d3f220d3efe83f46
BLAKE2b-256 21d3ee72aa87d1ffe68f7b6a3eafe6b2a2222b67b43d15e13b09c9f16e6fe3ca

See more details on using hashes here.

File details

Details for the file html2docxconverter-0.1.5-py3-none-any.whl.

File metadata

File hashes

Hashes for html2docxconverter-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 dd3aab68f51733c166b9147afa5085cfa94bb0c3a87d37e375c43a0a4f99e4c4
MD5 e7e306ab0fe7832cb9cfebc70965298d
BLAKE2b-256 b6ad2e91926c27f1dee9518b05d7747a2e1e6d9bb6baf2dcbc8db40ef10be0c8

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page