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

合并两个docx文件时遇页面重叠及图片丢失问题求助

解决docx合并时的页面重叠与图片丢失问题

问题根源分析

原代码存在两个核心问题:

  1. 页面重叠:错误地向子文档添加分页符后再合并,导致分页符位置失效,无法分隔两个文档内容。
  2. 图片丢失:直接操作底层XML元素(._document_part.body._element)仅移动了文本结构,未同步复制图片对应的媒体资源,导致图片关联失效。

修正后的代码

from docx import Document

files = ['Doc2.docx', 'Doc3.docx']

def combine_word_documents(files):
    combined_document = Document()  # 直接创建空文档,无需依赖外部空模板
    
    for idx, file in enumerate(files):
        sub_doc = Document(file)
        
        # 复制子文档的所有段落(含图片等内嵌资源)
        for para in sub_doc.paragraphs:
            new_para = combined_document.add_paragraph()
            new_para.style = para.style
            # 逐段复制格式与内容
            for run in para.runs:
                new_run = new_para.add_run(run.text)
                new_run.bold = run.bold
                new_run.italic = run.italic
                new_run.underline = run.underline
                new_run.font.size = run.font.size
                new_run.font.name = run.font.name
                new_run.font.color.rgb = run.font.color.rgb
        
        # 复制子文档的所有表格
        for table in sub_doc.tables:
            new_table = combined_document.add_table(rows=len(table.rows), cols=len(table.columns))
            new_table.style = table.style
            # 逐单元格复制内容与样式
            for i, row in enumerate(table.rows):
                for j, cell in enumerate(row.cells):
                    new_table.cell(i, j).text = cell.text
                    new_table.cell(i, j).paragraphs[0].style = cell.paragraphs[0].style
        
        # 最后一个文档后不加分页符
        if idx < len(files) - 1:
            combined_document.add_page_break()
    
    combined_document.save('both_docx_files.docx')

combine_word_documents(files)

关键修复说明

  • 解决页面重叠:移除对子文档的修改逻辑,改为在合并完每个子文档(非最后一个)后,直接向合并文档添加分页符,确保内容被正确分隔。
  • 解决图片丢失:通过python-docx官方API遍历段落和表格,逐个复制内容与样式。API内部会自动维护图片等媒体资源的关联关系,避免直接操作XML导致的资源丢失。
  • 移除了对empty.docx的依赖,直接创建空文档更简洁可靠。

内容的提问来源于stack exchange,提问作者Roffy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 11:22:45