如何用Python在Word(.docx)页眉中左右对齐放置两张图片
解决Word页眉左右放置两张Logo的问题
你的代码核心问题在于反复操作同一个段落,且图片添加、对齐设置逻辑混乱,导致两张图片都挤在右侧。以下是修正后的实现方案:
问题分析
- 始终在操作页眉的第一个段落,还错误地把第二张图片加到了第一张图片的
run实例中 - 多次覆盖段落的对齐属性,最终只会保留最后一次设置的右对齐规则
修正代码(单段落制表位实现,推荐)
这种方式能让两张图片在同一水平线上分布左右:
from docx import Document from docx.shared import Cm from docx.enum.text import WD_ALIGN_PARAGRAPH document = Document() section = document.sections[0] header = section.header # 获取或新建页眉的段落 para = header.paragraphs[0] if header.paragraphs else header.add_paragraph() # 添加左侧Logo left_logo_run = para.add_run() left_logo_run.add_picture("uv_logo.png", width=Cm(5)) # 添加右对齐制表位,让后续内容自动跳到页面右侧 # 制表位位置可根据页面宽度自行调整,这里设为15Cm示例 para.paragraph_format.tab_stops.add_tab_stop(Cm(15), WD_ALIGN_PARAGRAPH.RIGHT) # 添加右侧Logo,会自动对齐到制表位位置 right_logo_run = para.add_run() right_logo_run.add_picture("fm_logo.png", width=Cm(5)) document.save("header_logos.docx")
备选实现(双段落分别对齐)
如果更习惯用独立段落控制位置,可参考以下代码:
from docx import Document from docx.shared import Cm from docx.enum.text import WD_ALIGN_PARAGRAPH document = Document() section = document.sections[0] header = section.header # 左侧Logo段落,设置左对齐 left_para = header.add_paragraph() left_para.alignment = WD_ALIGN_PARAGRAPH.LEFT left_run = left_para.add_run() left_run.add_picture("uv_logo.png", width=Cm(5)) # 右侧Logo段落,设置右对齐 right_para = header.add_paragraph() right_para.alignment = WD_ALIGN_PARAGRAPH.RIGHT right_run = right_para.add_run() right_run.add_picture("fm_logo.png", width=Cm(5)) document.save("header_logos_two_paras.docx")
注:双段落方式需确保页眉高度足够,可通过调整段落的space_before/space_after参数让两张图片处于同一水平线。
内容的提问来源于stack exchange,提问作者Amisha Saha
相关产品推荐
相关产品推荐

