乐于分享
好东西不私藏

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

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:邮件合并工具,让你的群发邮件不再”群发感”十足。