You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python在Word(.docx)页眉中左右对齐放置两张图片

解决Word页眉左右放置两张Logo的问题

你的代码核心问题在于反复操作同一个段落,且图片添加、对齐设置逻辑混乱,导致两张图片都挤在右侧。以下是修正后的实现方案:

问题分析

  1. 始终在操作页眉的第一个段落,还错误地把第二张图片加到了第一张图片的run实例中
  2. 多次覆盖段落的对齐属性,最终只会保留最后一次设置的右对齐规则

修正代码(单段落制表位实现,推荐)

这种方式能让两张图片在同一水平线上分布左右:

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 11:05:13