Python如何修改Word页面尺寸为Letter后导出为PDF?
Word文档页面尺寸修改+PDF导出的Python实现方案
docx2pdf是否支持修改页面尺寸?
不支持。docx2pdf的核心能力仅为调用本地Word/ LibreOffice接口完成docx到PDF的格式转换,没有提供任何文档配置修改的相关功能,无法直接用它调整页面尺寸。
可行实现方案
方案1:python-docx + docx2pdf(跨平台兼容,Windows/macOS均可使用)
这个方案用python-docx完成页面尺寸修改,再用docx2pdf完成PDF导出,适配绝大多数使用场景。
操作步骤:
- 安装依赖库
pip install python-docx docx2pdf
- 核心实现代码
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文件,处理带复杂格式的文档兼容性更好。
操作步骤:
- 安装依赖库
pip install pywin32
- 核心实现代码
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
相关产品推荐
相关产品推荐

