记录一下用python pdf2image把pdf转成jpeg图片的方法。
尝试过PyMuPDF,但在linux环境下安装失败。改用pdf2image,成功了,下面记录一下。
一、安装插件
首先安装poppler-utils(https://poppler.freedesktop.org)。poppler-utils是pdf处理的命令行工具集,其中包括了pdf转图片的功能。
再安装python插件pdf2image。
yum install poppler-utilspip3 install pdf2image
二、转换函数convert_from_path
convert_from_path是最常用的转换函数,pdf_path指定pdf的路径和文件名,first_page和last_page指定要转换图片的pdf页码范围。这个函数的返回值是pdf每页转成PIL Image的列表。最后用PIL Image的save()保存图片。
convert_from_path(pdf_path, # pdf文件dpi=200,output_folder=None, # 图片输出到指定目录first_page=None, # pdf转图片的起始页last_page=None, # pdf转图片的结束页fmt='ppm',jpegopt=None,thread_count=1,userpw=None,use_cropbox=False,strict=False,transparent=False,single_file=False,output_file=str(uuid.uuid4()),poppler_path=None,grayscale=False,size=None,paths_only=False,use_pdftocairo=False,timeout=600,hide_attributes=False)
三、一个例子
下面是一个例子,把当前目录下所有的pdf文件的第三页转成图片。
#!/usr/bin/python3import osimport refrom pdf2image import convert_from_path# 转换pdf的前三页为jpeg图片def convert_pdf2image(pdf_path):pdf_file_name = pdf_path[:-4]images = convert_from_path(pdf_path,first_page=0, # 开始页last_page=3, # 结束页fmt='jpeg')print(len(images))for i, image in enumerate(images):image.save(f"{pdf_file_name}_pdf2image_{i}.jpg",'JPEG')# 对当前目录下所有的pdf文件都进行转换for f in os.listdir("."):if re.search(r'.*.pdf', f):convert_pdf2image(f)
阅读全文
685