尝试过PyMuPDF,但在linux环境下安装失败。改用pdf2image,成功了,下面记录一下。
一、安装插件
首先安装poppler-utils(https://poppler.freedesktop.org)。poppler-utils是pdf处理的命令行工具集,其中包括了pdf转图片的功能。
再安装python插件pdf2image。
yum install poppler-utils
pip3 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,
dpi=200,
output_folder=None,
first_page=None,
last_page=None,
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文件的第三页转成图片。
import os
import re
from pdf2image import convert_from_path
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')
for f in os.listdir("."):
if re.search(r'.*\.pdf', f):
convert_pdf2image(f)