Python学习笔记:PDF转图片

最近有个需求:将大量的 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。

参考链接:Poppler for Windows

参考链接:Python PDF转Images -- pdf转图片

参考链接:Windows 安装pdf2image运行后遇到PDFInfoNotInstalledError解决办法

参考链接:python 将PDF 转成 图片的几种方法

posted @   Hider1214  阅读(3025)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示