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

Python如何修改Word页面尺寸为Letter后导出为PDF?

Word文档页面尺寸修改+PDF导出的Python实现方案

docx2pdf是否支持修改页面尺寸?

不支持。docx2pdf的核心能力仅为调用本地Word/ LibreOffice接口完成docx到PDF的格式转换,没有提供任何文档配置修改的相关功能,无法直接用它调整页面尺寸。

可行实现方案

方案1:python-docx + docx2pdf(跨平台兼容,Windows/macOS均可使用)

这个方案用python-docx完成页面尺寸修改,再用docx2pdf完成PDF导出,适配绝大多数使用场景。

操作步骤:

  1. 安装依赖库
pip install python-docx docx2pdf
  1. 核心实现代码
from docx import Document
from docx.shared import Inches
from docx2pdf import convert
import os

# Letter规格尺寸:8.5英寸 × 11英寸
LETTER_WIDTH = Inches(8.5)
LETTER_HEIGHT = Inches(11)

def process_docx(input_path, output_pdf_path, temp_docx_path="_temp.docx"):
    # 加载Word文档
    doc = Document(input_path)
    # 遍历所有章节调整页面尺寸,适配多章节独立页面设置的文档
    for section in doc.sections:
        section.page_width = LETTER_WIDTH
        section.page_height = LETTER_HEIGHT
    # 保存修改后的临时文档
    doc.save(temp_docx_path)
    # 导出为PDF
    convert(temp_docx_path, output_pdf_path)
    # 删除临时文档
    os.remove(temp_docx_path)

# 批量处理示例
if __name__ == "__main__":
    input_dir = "你的docx文件目录路径"
    output_dir = "导出PDF的目录路径"
    os.makedirs(output_dir, exist_ok=True)
    for filename in os.listdir(input_dir):
        if filename.endswith(".docx"):
            input_path = os.path.join(input_dir, filename)
            output_pdf_path = os.path.join(output_dir, filename.replace(".docx", ".pdf"))
            process_docx(input_path, output_pdf_path)
            print(f"已处理:{filename}")

方案2:pywin32调用Word COM接口(仅Windows可用,兼容性更高)

如果是Windows系统,且本地安装了微软Word,可以直接用pywin32调用Word原生接口,不需要生成临时docx文件,处理带复杂格式的文档兼容性更好。

操作步骤:

  1. 安装依赖库
pip install pywin32
  1. 核心实现代码
import win32com.client as win32
import os

def process_docx_win(input_path, output_pdf_path):
    word = win32.gencache.EnsureDispatch("Word.Application")
    word.Visible = False
    try:
        doc = word.Documents.Open(os.path.abspath(input_path))
        # 调整所有页面为Letter尺寸
        for section in doc.Sections:
            section.PageSetup.PageWidth = win32.constants.wdPageLetter
            # 也可以直接指定尺寸:section.PageSetup.PageWidth = 8.5*72 (单位为磅)
            # section.PageSetup.PageHeight = 11*72
        # 直接导出为PDF,wdFormatPDF的常量值为17
        doc.SaveAs(os.path.abspath(output_pdf_path), FileFormat=17)
        doc.Close(SaveChanges=False)
    except Exception as e:
        print(f"处理{input_path}出错:{e}")
    finally:
        word.Quit()

# 批量处理逻辑和方案1一致,替换调用方法即可

注意事项

  • 批量处理前建议备份原始docx文件,避免修改错误导致内容丢失
  • 如果文档包含分节符且部分章节需要保留原有尺寸,可根据实际需求调整遍历section的逻辑
  • 对于带宏、嵌入对象、特殊排版的文档,优先选择方案2处理,格式兼容性更稳定

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 09:06:04