【技术研究】html转word文本

本文介绍了如何使用Python将包含格式信息的HTML文本转换为Word文档,详细探讨了自定义实现过程,包括使用docxtpl库和html_to_richtext函数。文章提到了htmldocx库的限制,并展示了自定义解决方案如何更好地保留格式,如缩进、列表、字体样式和颜色。
摘要由CSDN通过智能技术生成

问题及说明

  1. 将一段html语言描述的文本,转换为word文本,在word文档中格式化显示;
    保留缩进、序号、字体颜色、背景色、加粗、斜体、删除线等;
  2. 该效果为自定义代码实现;
  3. 实现代码语言为python;
  4. 与python docxtpl 库结合使用。

html表示效果图如下:
在这里插入图片描述
输出到word中如下:
在这里插入图片描述

调研

在决定自定义实现上述效果前,对现有技术实现调研结果如下:

htmldocx

依赖库:pip htmldocx
测试html样例图:
在这里插入图片描述
html文本:

<div>
    <h1>标题1</h1>
    <h2> &nbsp; &nbsp;标题2(缩进1个tab)</h2>
    <p>有序列表:</p>
    <ol>
        <li>第1段</li>
        <li>第2段</li>
    </ol>
    <p> &nbsp; &nbsp;有序<span style="background-color: rgb(54, 207, 201);">列表</span>:(<span
            style="color: rgb(231, 95, 51);">缩进1个tab</span></p>
    <ol>
        <ol>
            <li>第1段</li>
            <ul>
                <li>有序中无序项1</li>
                <li>有序中无序项2</li>
            </ul>
            <li>第2段</li>
        </ol>
    </ol>
    <p>无序<strong>列表</strong></p>
    <ul>
        <li>第一</li>
        <li>第二</li>
    </ul>
    <p> &nbsp; &nbsp;无序列表:(<span style="color: rgb(231, 95, 51);">缩进1个tab</span></p>
    <ul>
        <ul>
            <li>第一</li>
            <li>第二</li>
        </ul>
    </ul>
    <p>测试<u>缩进</u></p>
    <p> &nbsp; &nbsp;<em>缩进1个tab</em></p>
    <p> &nbsp; &nbsp; &nbsp; &nbsp;缩进2个tab</p>
    <p><br></p>
</div>

测试代码:

def test_htmldocx():
    # pip htmldocx
    from htmldocx import HtmlToDocx

    new_parser = HtmlToDocx()
    new_parser.parse_html_string(html4)
    new_parser.doc.save('htmldoc.docx')
    # new_parser.parse_html_file("html_filename", "docx_filename")

输出效果:

  1. 标题2缩进不理想
  2. 有序列表序号问题
  3. 且该中方案无法灵活控制文档模板
    在这里插入图片描述

实现

自定义实现技术:

  1. 使用docxtpl灵活定义word模板
  2. 自定义html_to_richtext函数,将html转换为docxtpl可识别的RichText对象

功能

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值