首页 > 编程语言 >Python学习笔记:PDF转图片

Python学习笔记:PDF转图片

时间:2022-12-05 00:04:04浏览次数:68  
标签:None False Python 笔记 poppler file pdf PDF path

最近有个需求:将大量的 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 转成 图片的几种方法

标签:None,False,Python,笔记,poppler,file,pdf,PDF,path
From: https://www.cnblogs.com/hider/p/16951237.html

相关文章

  • ubuntu16下升级python3的版本
    ubuntu16下升级python3的版本,这里是升级到3.8。1.首先添加安装源,在命令行输入如下命令:$sudoadd-apt-repositoryppa:jonathonf/python-3.82.更新apt$sudoaptupdate......
  • 火力全开,优化 python 量化日行情数据下载以及常用指标计算速度
    火力全开,优化python量化日行情数据下载以及常用指标计算速度今天做了个异步协程的测试,结果有点失望,多进程+协程并没有提高io密集型任务请求的效率。至于为什么,原因......
  • Python中的字符串常用处理方法
    字符串字符串就是一系列的字符。在Python中,用引号括起的都是字符串,其中的引号可以是单引号,也可以是双引号,如下所示:"Thisisastring."'Thisisalsoastring.'这种......
  • 《图解TCP/IP》阅读笔记(第四章 4.4、4.5)
    《图解TCP/IP》4.4路由控制昨儿谈完了IP地址的一部分情况,今天就该聊聊路由控制了。知道了各小区,每家每户的门牌号是怎么定义的,那接下来就要知道如何走到各家各户门前,再......
  • CISAW风险管理学习笔记(6)-信息安全风险评估标准 GB/T20984
    个人学习总结,CISAW学习笔记之信息安全风险评估标准GB/T20984:......
  • 《图解TCP/IP》阅读笔记(第四章 4.6、4.7)
    第四章4.6IPv6书接上回,之前谈到即使用了无类型域间路由CIDR和可变长子网掩码技术VLSM,IPv4的容量依旧不够用IPv4的地址长度为4个8位字节,32比特,而IPv6的地址长度则是IPv4......
  • Java多线程学习笔记
    程序、进程、线程程序:是为了完成特定任务,用某种语言编写的一组指令的集合,是一段静态的代码。(程序是静态的)进程:是程序的一次动态执行。正在运行的一个程序,进程作为资......
  • python中的 nonlocal 和 global
    做leetcode1774时候遇到的一个bugclassSolution:defclosestCost(self,baseCosts:List[int],toppingCosts:List[int],target:int)->int:ans=m......
  • 一致性哈希通俗笔记
    一致性哈希ConsistentHashing,一种数据结构。内容参考自视频:一致性哈希-ConsistentHashing是什么?为什么系统设计面试中经常会提到?10分钟讲解一致性哈希|系统设计Syst......
  • 《图解TCP/IP》 阅读笔记 (第四章 4.1、4.2、4.3)
    第4章IP协议4.1IP即网络协议网络层主要由IP和ICMP协议组成。本章详谈IP协议。IP协议就相当于OSI七层模型中的第三层,网络层,实现的是点到点通信(要和传输层的端到端通信......