前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python docx 删除、复制paragraph以及行高设置和图片插入

Python docx 删除、复制paragraph以及行高设置和图片插入

原创
作者头像
IT工作者
发布2022-07-21 18:08:44
1.1K0
发布2022-07-21 18:08:44
举报
文章被收录于专栏:程序技术知识程序技术知识

这两天做一个python小工具,用到了docx库,涉及到paragraph的删除、复制,还有行高设置等技术,这里做一下记录。

1、复制paragraph

即用来复制原文档的加粗、斜体,下划线,颜色等属性的,官方没有提供paragraph的复制接口,只能自己实现:

代码语言:javascript
复制
# paragraph 的复制
def get_para_data(output_doc_name, paragraph):
    """
    Write the run to the new file and then set its font, bold, alignment, color etc. data.
    """
 
    output_para = output_doc_name.add_paragraph()
    for run in paragraph.runs:
        output_run = output_para.add_run(run.text)
        # Run's bold data
        output_run.bold = run.bold
        # Run's italic data
        output_run.italic = run.italic
        # Run's underline data
        output_run.underline = run.underline
        # Run's color data
        output_run.font.color.rgb = run.font.color.rgb
        # Run's font data
        output_run.style.name = run.style.name
    # Paragraph's alignment data
    output_para.paragraph_format.alignment = paragraph.paragraph_format.alignment

2、删除paragraph

网上有用clear()的,实际不行。 我删除一个空行paragraph,用clear不行,还是后来用了下面这个接口才解决:

代码语言:javascript
复制
def delete_paragraph(paragraph):
    p = paragraph._element
    p.getparent().remove(p)
    p._p = p._element = None

3、插入图片和paragraph行高设置

由于默认的行高限制,我的使用中遇到了麻烦,插入的图片的时候,图片部分只能显示一部分。后来,找到了一个办法设置行高属性:

代码语言:javascript
复制
 from docx.enum.text import WD_LINE_SPACING
 
     paragraph.paragraph_format.line_spacing_rule = WD_LINE_SPACING.MULTIPLE #根据实际大小
     output_run = paragraph.add_run("")
 
            
     output_run.add_picture('{}.png'.format(ownerName), width=Pt(50), height=Pt(15))

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档