Day5:文档格式转换:Word、PDF、TXT互转

领导发来一个PDF,让你改成Word
你打开一看,里面是合同条款,要修改几个数字。
复制粘贴到Word?格式全乱了,段落间距、字体、表格都要重新调整。
用在线转换工具?文件里有公司机密信息,不太放心。
找IT同事帮忙?人家忙着呢,不好意思开口。
你开始手动调整格式,半小时过去了,还在改段落间距……
这就是我们今天要解决的问题。
为什么要自己做格式转换?
很多人会说:”网上不是有很多在线转换工具吗?”
确实有。但问题在于:
1. 数据安全
合同、报价单、客户信息……这些文件你敢上传到陌生网站吗?
2. 批量处理
要转换50个文件?在线工具要么不支持,要么要付费。
3. 格式控制
在线转换出来的文档,格式经常不符合你的要求,还得手动改。
用Python自己做格式转换,这三个问题都能解决。

第一步:Word转PDF
场景
你写好了一份报告,要发给客户看,但不想让他们修改内容。
转成PDF最合适。
跟AI的对话
你:
> 我有一个Word文档,想转成PDF,保留格式和图片,怎么做?
AI会告诉你:
> 用python-docx读取Word,用fpdf生成PDF。
代码示例:
“`python
from docx import Document
from fpdf import FPDF
# 读取Word
doc = Document(‘报告.docx’)
# 创建PDF
pdf = FPDF()
pdf.add_page()
pdf.set_font(‘Arial’, size=12)
# 写入内容
for para in doc.paragraphs:
pdf.multi_cell(0, 10, para.text)
pdf.output(‘报告.pdf’)
print(‘转换完成!’)
“`
小技巧
如果文档有中文,要用支持中文的字体:
“`python
pdf.add_font(‘NotoSans’, ”, ‘/usr/share/fonts/opentype/noto/NotoSansCJK-Regular.ttc’, uni=True)
pdf.set_font(‘NotoSans’, size=12)
“`
第二步:PDF转Word
场景
客户发来PDF合同,要你修改几个条款。
复制粘贴太麻烦,有没有办法直接转成Word?
跟AI的对话
你:
> 我有一个PDF文件,想转成可编辑的Word文档,怎么做?
AI会告诉你:
> 用PyPDF2提取文字,再用python-docx创建Word。
代码示例:
“`python
from PyPDF2 import PdfReader
from docx import Document
# 读取PDF
reader = PdfReader(‘合同.pdf’)
text = ”
for page in reader.pages:
text += page.extract_text() + ‘\n’
# 创建Word
doc = Document()
for line in text.split(‘\n’):
doc.add_paragraph(line)
doc.save(‘合同.docx’)
print(‘转换完成!’)
“`
注意事项
PDF转Word有个坑:格式会丢失。
原本文档里的表格、图片、字体,转换后可能都没有了。
如果需要保留格式,可以用 `pdf2docx` 库:
“`python
from pdf2docx import Converter
cv = Converter(‘合同.pdf’)
cv.convert(‘合同.docx’)
cv.close()
“`

第三步:TXT转Word
场景
你有一堆纯文本笔记,想整理成Word文档,统一格式。
跟AI的对话
你:
> 我有一个TXT文件,想转成Word,设置统一的字体和段落格式,怎么做?
AI会告诉你:
> 用python-docx创建Word,设置字体和段落样式。
代码示例:
“`python
from docx import Document
from docx.shared import Pt, Inches
# 读取TXT
with open(‘笔记.txt’, ‘r’, encoding=’utf-8′) as f:
text = f.read()
# 创建Word
doc = Document()
# 设置格式
for line in text.split(‘\n’):
para = doc.add_paragraph(line)
para.style.font.name = ‘微软雅黑’
para.style.font.size = Pt(12)
doc.save(‘笔记.docx’)
print(‘转换完成!’)
“`
第四步:批量转换
场景
你有50个Word文档,要全部转成PDF。
手动一个个转?要花一下午。
跟AI的对话
你:
> 我有一个文件夹,里面有50个Word文档,想批量转成PDF,怎么做?
AI会告诉你:
> 用os遍历文件夹,逐个转换。
代码示例:
“`python
import os
from docx import Document
from fpdf import FPDF
# 遍历文件夹
for file in os.listdir(‘.’):
if file.endswith(‘.docx’):
# 读取Word
doc = Document(file)
# 创建PDF
pdf = FPDF()
pdf.add_page()
pdf.set_font(‘Arial’, size=12)
for para in doc.paragraphs:
pdf.multi_cell(0, 10, para.text)
# 保存
pdf_name = file.replace(‘.docx’, ‘.pdf’)
pdf.output(pdf_name)
print(f’已转换:{pdf_name}’)
print(‘全部完成!’)
“`

注意事项
1. 字体兼容性
Windows的Word常用”微软雅黑”,但Linux/Mac可能没有这个字体。
跨平台转换时,要用通用字体,比如”Arial”、”Times New Roman”。
2. 图片处理
Word里的图片,转换到PDF时可能会模糊。
解决办法:确保图片分辨率足够高(至少300dpi)。
3. 表格格式
PDF转Word时,表格最容易出问题。
如果表格很重要,建议用专业的PDF编辑软件,而不是Python脚本。
今天你学到了什么?
✅ 用python-docx和fpdf实现Word转PDF
✅ 用PyPDF2和pdf2docx实现PDF转Word
✅ 用python-docx实现TXT转Word
✅ 用os批量处理多个文件
核心收获:格式转换的关键,是选择合适的库。
不同场景用不同工具,别指望一个库搞定所有问题。
明天预告
今天处理的是文档格式转换。
明天,我们要批量发送个性化邮件——从Excel名单一键发送50封不同内容的邮件。
Day 6:邮件合并工具,让你的群发邮件不再”群发感”十足。
夜雨聆风