用Python将PDF文件转换成图片
文章目录
这个问题其实不是太复杂,可以通过在线的工具或者付费的工具完成,但是在线服务需要将文件上传到别人手里,而付费工具一般需要买会员,仅仅用一下就开个会员实在麻烦,再者批量搞起来也不方便,所以搜索了一下相关代码,代码是Python语言。
安装依赖
首先安装Python依赖
pip install pdf2image
这个Python包依赖一个poppler
的二进制文件, 所以windows可以去https://github.com/oschwartz10612/poppler-windows/releases/ 下载最新的版本, 解压到某个目录,比如C:\Users\Administor\workspace\poppler-24.02.0
, 然后将C:\Users\YE\workspace\poppler-24.02.0\Library\bin
目录加到PATH
环境变量里面。
将PDF转成多张图片
上面的准备工作完成之后就可以运行代码了,代码如下。
from os import path
from pdf2image import convert_from_path
pdf_path = "example.pdf"
filename = ".".join(path.basename(pdf_path).split(".")[:-1])
images = convert_from_path(pdf_path)
for index, image in enumerate(images):
# 当然了,你可以可以将格式设置成其他格式, 比如png
image.save(f'{filename}-{index}.jpg')
这样你就获得了跟PDF页数一致的一组图片。
将PDF转成一张图片
有时候我们可能还需要将这些图片合在一起,那么可以参考以下代码.
from os import path
from PIL import Image
from pdf2image import convert_from_path
pdf_path = "example.pdf"
filename = ".".join(path.basename(pdf_path).split(".")[:-1])
images = convert_from_path(pdf_path)
# 计算图片的总高度
total_height = sum([img.height for img in images])
# 计算图片的最大宽度
total_width = max([img.width for img in images])
# 创建一个空格image对象
output_image = Image.new(images[0].mode, (total_width, total_height))
upper = 0
for index, img in enumerate(images):
# 我们以左上角作为起始点进行粘贴
output_image.paste(img, (index, upper))
upper += img.height
# 保存
output_image.save(f"{filename}.png")
小结
小工具用Python还是很顺手的,第三方库多且语法简单。