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 htmltodocx.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.7.tar.gz (12.3 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.7-py3-none-any.whl (13.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: html2docxconverter-0.1.7.tar.gz
  • Upload date:
  • Size: 12.3 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.7.tar.gz
Algorithm Hash digest
SHA256 38c0f5f98ba709490ef68b2c15ae1e38b9b5d6a862824ed86244608aacea4da3
MD5 c661171b739d56efab775b011d739bcf
BLAKE2b-256 e4c7e6a77ecc05e19947d5b7e9c3af27f177e06f4eb694c89932058bd4f5e36b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for html2docxconverter-0.1.7-py3-none-any.whl
Algorithm Hash digest
SHA256 804838f36e38de46073b4e4525d05ed6f3bb16a6657704590aac8f9d311fa29f
MD5 1c7a08a422b9f6c6322dfe58d0d6b490
BLAKE2b-256 08440eafde2db2c6d69914723e37f43f6af9abb9108ff170333a2aa81cd44fcd

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