论坛上一个老哥提的需求,看完感觉挺简单的,头脑一热花了两天垃圾时间写完了,然后狗东西没回复了,气死我了.干脆发出来吧,就当给自己打小广告了
垃圾时间:指下午五点到六点,离下班有点早,干大活时间又不够
需求描述
网友的需求是这样:它有若干个文件夹,每个文件夹里有若干张jpg图片,需要将文件夹内图片生成对应的pdf文件.文件夹名和图片张数的信息储存在一个excel里(如图)excel2.png
百度了一下,Python做这两件事(读取Excel和jpg转PDF)都很容易,以下为代码
用到了xlrd和PyMupdf这两个库
import xlrd
import fitz.fitz
import os
def img_to_pdf(imgPath, str, num):
doc = fitz.open()
num_i = 0
for path in imgPath:
num_i += 1
if num_i > num:
break
img = fitz.open(os.path.join(str[0:18], path))
pdfbytes = img.convertToPDF()
imgpdf = fitz.open("pdf", pdfbytes)
doc.insertPDF(imgpdf)
doc.save(str+'.pdf')
wb = xlrd.open_workbook("excel.xls") # 你的excel文件名字
sheet = wb.sheet_by_index(0) # 这里指只读取了第一张表,如果要读第n张请改为(n-1)
rows = sheet.nrows
columns = sheet.ncols
for num_c in range(0, rows): # 这里指读取第一行到最后一行
data1 = sheet.cell(num_c, 0) # 这里是文件名所在的列,第一列就写0,第n列写n-1
data2 = sheet.cell(num_c, 1) # 这里是页数所在的列,第二列就写1,第n列就写n-1
if data1.ctype == 1 and data2.ctype == 2:
image_list = os.listdir(data1.value[0:18])
print(image_list)
img_to_pdf(image_list, data1.value, data2.value)
连学带写花了总共两三个小时吧,python做这些事是真方便啊.