最近受疫情的影响,还没有开学😭。很多学校都实行了网络教学,我们学校也不例外。由于老师的工作比较繁忙,我作为老师的助教帮忙批改一下作业。这段时间学生交的电子版作业格式五花八门,有图片格式(png, jpg, jpeg)、word格式(doc, docx)、PDF格式。PDF格式最方便批改,在iPad上配上笔和实体批改作业基本没什么两样。所以我就想是否可以把它们都转换成统一的PDF格式,但是学生数量一多,手动去转就会十分的麻烦。于是想到用之前学过的Python写个小脚本,把文件夹下的文件都转换成需要的PDF格式。

1. 图片格式转换为PDF格式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import os
from PIL import Image

def img2pdf(img_name, pdf_name):
img = Image.open(img_name)
if img.mode == "RGBA":
img = img.convert('RGB')
img.save(pdf_name, "PDF", resolution=100.0, save_all=True)
print("输出文件名称:", pdf_name)
# 创建好pdf文件,删除文件夹中的img文件
os.remove(img_name)


if __name__ == "__main__":
path = input("请输入文件夹路径:")
file_list = os.listdir(path)
for img_path in file_list:
img_name = path + "\\" + img_path
pdf_name = path + "\\" + img_path.split(".")[0] + ".pdf"

print(img_name)

if "jpg" in img_name or "png" in img_name or "jpeg" in img_name:
img2pdf(img_name, pdf_name)
else:
continue

2. word格式转换为PDF格式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import os
import comtypes.client

def d2p(doc_name, pdf_name):
in_file = doc_name
out_file = pdf_name
# create COM object
word = comtypes.client.CreateObject('Word.Application')
doc = word.Documents.Open(in_file)
doc.SaveAs(out_file,FileFormat=17)
doc.Close()
word.Quit()
# 创建好pdf文件,删除文件夹中的word文件
os.remove(doc_name)


if __name__ == "__main__":
file_path = input("请输入文件夹路径:")
file_list = os.listdir(file_path)
for word_path in file_list:
doc_name = file_path + "\\" + word_path
pdf_name = file_path + "\\" + word_path.split(".")[0]+".pdf"

print(doc_name)
# 判断文件名后缀是否是docx或doc
if word_path.split(".")[-1] == "docx" or word_path.split(".")[-1] == "doc":
d2p(doc_name,pdf_name)
print(pdf_name)
else:
continue

3. 操作步骤

  1. 将上面的代码分别存储在word2pdf.py和img2pdf.py文件中(这里我存在了两个脚本中,也可以稍微修改代码保存在一个脚本文件中)
  2. Windows系统中,在脚本所在的目录下,按住shift键点击鼠标右键,打开PowerShell
  3. 输入py word2pdf.py,敲回车
  4. 将需要转换格式的文件拷贝到一个新的文件夹中(由于我设置的是转换完成后删除原文件,所以建议拷贝在新文件夹中进行,防止原文件丢失🤗),在PowerShell中输入新文件夹的路径,敲回车。
  5. 发现文件夹中的文件不到5秒中就全部转换成PDF格式啦~大功告成!

3. 总结

  • Python的书写格式中缩进十分重要,要么使用Tab制表键进行缩进,要么使用四个空格进行缩进,不能混合使用,否则会报错。。。(还是Java好😂)