如何使用python-docx为插入的签名图片添加签名样式下划线
在python-docx中为签名图片添加签名下划线的方法
这里提供两种实用方案,可根据需求选择:
方案一:为图片所在段落添加下划线
直接给插入图片的段落设置下划线样式,操作简单,下划线会跟随段落位置自动调整。
from docx import Document from docx.shared import Inches from docx.enum.text import WD_UNDERLINE # 初始化文档 doc = Document() # 创建段落并插入签名图片 sign_paragraph = doc.add_paragraph() run = sign_paragraph.add_run() # 插入图片,可自行调整宽度 run.add_picture("signature.png", width=Inches(2)) # 设置段落下划线样式(此处为粗实线,可替换为其他样式) sign_paragraph.style.font.underline = WD_UNDERLINE.SINGLE_HEAVY # 可选:调整段落行距,避免下划线和图片重叠 sign_paragraph.paragraph_format.line_spacing = 1.2 # 保存文档 doc.save("signed_doc.docx")
WD_UNDERLINE支持多种样式,常用的有:
WD_UNDERLINE.SINGLE:细实线WD_UNDERLINE.DOUBLE:双下划线WD_UNDERLINE.THICK:粗实线
方案二:插入独立线条作为签名线
如果需要精准控制线条的位置、粗细和颜色,可单独插入一条水平线条,与图片对齐。
from docx import Document from docx.shared import Inches, Pt from docx.enum.text import WD_ALIGN_PARAGRAPH from docx.oxml.ns import qn from docx.oxml import OxmlElement # 初始化文档 doc = Document() # 添加段落插入签名图片,并设置居中对齐 sign_paragraph = doc.add_paragraph() sign_paragraph.alignment = WD_ALIGN_PARAGRAPH.CENTER run = sign_paragraph.add_run() run.add_picture("signature.png", width=Inches(2)) # 创建用于放置线条的段落,与图片对齐 line_paragraph = doc.add_paragraph() line_paragraph.alignment = WD_ALIGN_PARAGRAPH.CENTER # 构建水平线条元素 p_pr = OxmlElement('w:pPr') p_bdr = OxmlElement('w:pBdr') bottom_border = OxmlElement('w:bottom') # 设置线条样式、粗细、颜色 bottom_border.set(qn('w:val'), 'single') bottom_border.set(qn('w:sz'), '24') # 数值为1/8磅,24对应3磅粗细 bottom_border.set(qn('w:color'), '000000') # 黑色线条 p_bdr.append(bottom_border) p_pr.append(p_bdr) line_paragraph._element.get_or_add_pPr().append(p_pr) # 调整线条与图片的间距 line_paragraph.paragraph_format.space_before = Pt(-8) # 保存文档 doc.save("signed_doc_with_custom_line.docx")
注意事项
- 若图片为不透明背景,方案一需调整段落行距或图片垂直对齐,确保下划线显示在图片下方;
- 方案二中的线条参数可按需修改,比如调整
sz改变粗细,修改color更换线条颜色; - 两种方案都可通过设置段落对齐方式(如
LEFT/CENTER/RIGHT)让图片和线条保持对齐。
内容的提问来源于stack exchange,提问作者Rycliff
相关产品推荐
相关产品推荐

