前言
又是到了投夏令营的时候,那么夏令营他需要我们一个一个图片的文件合成在一起。打开wps, 转换…(啊这,需要wps超级会员!!!)
另一篇相关
python实现pdf合并
PyMuPDF
我这里需要把01.jpg到09.jpg合成成一个pdf
pip install PyMuPDF
代码修改自:https://blog.csdn.net/weixin_42081389/article/details/100734926
import os
import fitz # pip install PyMuPDF
from tqdm import tqdm
def GetFileName(dir_path):
file_list = [os.path.join(dirpath, filesname) \
for dirpath, dirs, files in os.walk(dir_path) \
for filesname in files]
file_list.sort()
return file_list
def pic2pdf(img_dir, filename):
doc = fitz.open()
file_lt = GetFileName(img_dir)
for img in tqdm(file_lt):
file_type = img.split('\\')[-1].split('.')[-1]
if file_type not in ['jpg', 'png']:
continue
imgdoc = fitz.open(img) # 打开图片
pdfbytes = imgdoc.convertToPDF() # 使用图片创建单页的 PDF
imgpdf = fitz.open("pdf", pdfbytes)
doc.insertPDF(imgpdf) # 将当前页插入文档
if os.path.exists("{}".format(filename)):
os.remove("{}".format(filename))
doc.save("{}".format(filename)) # 保存pdf文件
print("保存 {} 成功".format(filename))
doc.close()
if __name__ == '__main__':
img_dir = r"H:/面试/英语口语/pic"
filename = "join.pdf"
pic2pdf(img_dir, filename)
跑完就合成了.
PyMuPDF 1.23.3版本则需要修改一下函数名 convert_to_pdf, insert_pdf,也就是驼峰命名法变成下划线命名法了。
import os
import fitz # pip install PyMuPDF
from tqdm import tqdm
def GetFileName(dir_path):
file_list = [os.path.join(dirpath, filesname) \
for dirpath, dirs, files in os.walk(dir_path) \
for filesname in files]
file_list.sort()
return file_list
def pic2pdf(img_dir, filename):
doc = fitz.open()
file_lt = GetFileName(img_dir)
for img in tqdm(file_lt):
file_type = img.split('\\')[-1].split('.')[-1]
if file_type not in ['jpg', 'png']:
continue
imgdoc = fitz.open(img) # 打开图片
# pdfbytes = imgdoc.convertToPDF() # 使用图片创建单页的 PDF
pdfbytes = imgdoc.convert_to_pdf() # 使用图片创建单页的 PDF
imgpdf = fitz.open("pdf", pdfbytes)
doc.insert_pdf(imgpdf) # 将当前页插入文档
if os.path.exists("{}".format(filename)):
os.remove("{}".format(filename))
doc.save("{}".format(filename)) # 保存pdf文件
print("保存 {} 成功".format(filename))
doc.close()
if __name__ == '__main__':
img_dir = r"./pic"
filename = "join.pdf"
pic2pdf(img_dir, filename)
img2pdf
若要转换后纸张大小,则使用img2pdf。但是,当图片和A4纸张比例差别过大时,不建议用这个a4的大小!
pip install img2pdf
代码修改自:https://blog.csdn.net/weixin_42081389/article/details/100734926
import img2pdf
import os
def GetFileName(dir_path):
file_list = [os.path.join(dirpath, filesname) \
for dirpath, dirs, files in os.walk(dir_path) \
for filesname in files]
file_list.sort()
return file_list
def pic_pdf(photo_path, filename):
# 1、生成地址列表
file_list = GetFileName(photo_path)
photo_lt = []
for img in file_list:
file_type = img.split('\\')[-1].split('.')[-1]
if file_type in ['jpg', 'png']:
photo_lt.append(img)
# print(photo_lt)
# 1、指定pdf的单页的宽和高
# A4纸张
a4inpt = (img2pdf.mm_to_pt(210), img2pdf.mm_to_pt(297))
layout_a4 = img2pdf.get_layout_fun(a4inpt)
if os.path.exists(filename):
os.remove(filename)
with open(filename, 'wb') as f:
f.write(img2pdf.convert(photo_lt, layout_fun=layout_a4))
print('转换成功')
if __name__ == '__main__':
img_dir = r"H:/面试/英语口语/pic"
filename = "join.pdf"
pic_pdf(img_dir, filename)