最近有个需求:将大量的 PDF
文档转换为多张图片 PNG
,遂诞生此需求。
经过搜寻,发现以下方法。
一、pdf2image.convert_from_path
事实上,pdf2image
只是一个包装器,真正的转换工具是 poppler
。
1.安装
pip install pd2image -i https://pypi.tuna.tsinghua.edu.cn/simple # 指定清华镜像
除此之外,还需要手动下载一个软件(poppler for Windows
),否则会出现以下错误:
PDFInfoNotInstalledError: Unable to get page count. Is poppler installed and in PATH?
2.使用
import os
os.chdir(r'C:\Users\Hider\Desktop\pdf-test')
from pdf2image import convert_from_path
def pdf_to_image(file_path):
images = convert_from_path(pdf_path=file_path,
dpi=200,
thread_count=4,
poppler_path='D:\\ProgramFiles\\poppler-0.68.0_x86\\poppler-0.68.0\\bin')
for index, img in enumerate(images):
if index % 10 == 0:
print('正在转换第%s页...' % (index))
img.save('page_%s.png' % (index))
file_path = 'pdf.pdf'
if __name__ == '__main__':
pdf_to_image(file_path)
3.参数说明
def 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=uuid_generator(),
poppler_path=None,
grayscale=False,
size=None,
paths_only=False,
use_pdftocairo=False,
timeout=None,
hide_annotations=False,
):
- pdf_path:文件路径
- dpi:图片分辨率 默认200
- thread_count:转换的线程数
- poppler_path:指定路径,或者将poppler添加到环境变量path中
- fmt:指定输出格式,目前支持:jpg、png、ppm等
注意:该文件不能命名为
pdf2image.py
,因为这个文件依赖pdf2image
模块,如果文件与模块同名,则会出现找不到convert_from_path
的错误。
二、PyMuPDF
1.安装
pip install PyMuPDF -i https://pypi.tuna.tsinghua.edu.cn/simple # 指定清华镜像
2.使用
#### 导出分辨率较差
import fitz
import os
os.chdir(r'C:\Users\Hider\Desktop\pdf-test')
def pdf_to_images(file_path):
doc = fitz.open(file_path)
for p in doc:
pix = p.get_pixmap()
output = f'page{p.number}.png'
pix.save(output)
file_path = 'pdf.pdf'
pdf_to_images(file_path)
3.其他
更详细用法可参考链接4。
标签:None,False,Python,笔记,poppler,file,pdf,PDF,path From: https://www.cnblogs.com/hider/p/16951237.html参考链接:Poppler for Windows
参考链接:Python PDF转Images -- pdf转图片