直接贴代码
"""
1、安装库
pip install pymupdf
pip install pillow
2、修改main方法参数
3、运行
"""
import os
import sys
import fitz
from PIL import Image
def pdf_to_images(pdf_path, img_path):
doc = fitz.open(pdf_path)
for pg in range(doc.pageCount):
page = doc[pg]
rotate = int(0)
zoom_x = 2.0
zoom_y = 2.0
trans = fitz.Matrix(zoom_x, zoom_y).preRotate(rotate)
pm = page.getPixmap(matrix=trans, alpha=False)
try:
os.mkdir(img_path)
except FileExistsError:
pass
pm.writePNG(f'{img_path}/%s.png' % pg)
def join(png1, png2, size):
img1, img2 = Image.open(png1), Image.open(png2)
size1, size2 = img1.size, img2.size
joint = Image.new('RGB', (size1[0], size1[1] + size2[1] - size))
loc1, loc2 = (0, 0), (0, size1[1] - size)
joint.paste(img2, loc2)
joint.paste(img1, loc1)
joint.save(result)
def start(items, size, first_path=None):
try:
if not first_path:
path1, path2 = items[0], items[1]
join(path1, path2, size)
items.remove(path1)
items.remove(path2)
return start(items, size, first_path=result)
else:
path2 = items[0]
join(first_path, path2, size)
items.remove(path2)
return start(items, size, first_path=result)
except:
pass
def getAllImg(path):
result = []
filelist = os.listdir(path)
i = 0
for file in filelist:
if str(file).split(".")[0].isdigit():
result.append(os.path.join(path, f"{str(i)}.png"))
i += 1
return result
if __name__ == '__main__':
path = "image"
pdf_to_images("尽早暴露问题&写文档也是一种学习方式.pdf", path)
result = f"{path}/result.png"
s = getAllImg(path)
start(s, 100)
print('最后图片尺寸--->', Image.open(result).size)
运行环境