pdf转图片
目录
pdf2image库
PyMuPDF库
python-office库
pdfplumber库
pdf2image库
安装:pip install pdf2image
使用时会报错:pdf2image.exceptions.PDFInfoNotInstalledError: Unable to get page count. Is poppler installed and in PATH?
需要安装 poppler-windows 环境,下载地址:
链接: https://pan.baidu.com/s/1fGrYoMhDMIM4BUYE3Dp00Q?pwd=r9d7 提取码: r9d7
下载解压后将bin文件路径添加到环境变量path中,添加完成后命令行窗口输入pdftotext -v 可查看是否安装成功,安装成功后有版本信息。
设置环境变量后还是不行的话就在convert_from_path 方法中添加poppler_path 二进制文件路径。
from pdf2image import convert_from_pathpdf_path = rf'test.pdf'
save_imgpath = rf'xxx'images = convert_from_path(pdf_path, poppler_path=r'D:\poppler-24.08.0\Library\bin')
for i, image in enumerate(images): # 将每一张图片保存为PNG文件image.save(fr'{save_imgpath}\page_{i + 1}.png', 'PNG')
PyMuPDF库
PyMuPDF 还提供了丰富的功能来操作PDF文件,如读取、写入、分割、合并、旋转、裁剪等。此外,它还支持加密和解密PDF文档,以及提取文本、图像和元数据等信息。
安装:pip install PyMuPDF
from fitz import open, Matrix def pdf2img(pdf_path, img_dir):doc = open(pdf_path) # 打开pdf# print(doc.page_count) # 获取word文档页数# print(doc.metadata) # 获取pdf 目录信息for page in doc: # 遍历pdf的每一页【doc[page_no] ,可通过获取的页数和切片方式转换对应页的数据】# 将缩放因子 zoom_x 和 zoom_y 设为 2.0 之后,可以将转换出来的图片大小提高四倍zoom_x = 2.0 # 设置每页的水平缩放因子zoom_y = 2.0 # 设置每页的垂直缩放因子mat = Matrix(zoom_x, zoom_y)# mat = Matrix(zoom_x, zoom_y).prerotate(0) # .prerotate(50)可设置旋转角度# mat = Matrix(zoom_x, zoom_y).prescale(1,2) # .prescale(1,2) 设置图片宽高比# mat = Matrix(zoom_x, zoom_y).preshear(1,3) # preshear(1,3) 拉伸图片pix = page.get_pixmap(matrix=mat,alpha=False) # Page 页面-光栅图像,alpha设置后会突出主体显示pix.pil_save(rf"{img_dir}\page-1{page.number}.png") # 保存光栅图像图像,需要依赖第三方框架:Pillow# pix.save(rf"{img_dir}\page-1{page.number}.png")
python-office库
python-office库 是一个Python 自动化办公第三方库,能解决大部分自动化办公的问题。一行代码即可实现转换。
https://pypi.org/project/python-office/0.1.20/
安装依赖包特多,基本都会失败,使用镜像源安装:pip install python-office -i https://pypi.tuna.tsinghua.edu.cn/simple
from office import pdfpdf.pdf2imgs(pdf_path, save_img_path, merge=True)
pdfplumber库
pip install pdfplumber -i https://pypi.tuna.tsinghua.edu.cn/simple
doc = pdfplumber.open(pdf_path)
print(doc.metadata) # 获取pdf 目录信息
print(doc.pages) # 获取pdf文件每页对象列表,打印结果[<Page:1>, <Page:2>, <Page:3>]
print(len(doc.pages)) # 获取文件页数
import pdfplumberwith pdfplumber.open(pdf_path) as pd:for i,p in enumerate(pd.pages):img = p.to_image(resolution=500) # 可设置宽高参数,resolution 不设置时图片清晰图会低img.save(rf'{save_img_path}\{i}.png')
相关文章:
pdf转图片
目录 pdf2image库 PyMuPDF库 python-office库 pdfplumber库 pdf2image库 安装:pip install pdf2image 使用时会报错:pdf2image.exceptions.PDFInfoNotInstalledError: Unable to get page count. Is poppler installed and in PATH? 需要安装 po…...
Go 协程上下文切换的代价
在 Go 语言中,协程(Goroutine)是一种非常轻量级的并发执行单元,设计之初就是为了简化并发编程并提高性能。协程的上下文切换被认为是非常高效的,但是它的真正性能优势需要我们深入了解其背后的机制。 本文将深入探讨 …...
HTTP 持久连接(长连接)
HTTP 持久连接(长连接) HTTP 持久连接(HTTP Persistent Connections),也常被称作 HTTP 长连接,是 HTTP 协议中的一种重要特性,以下是关于它的详细介绍: 一、基本概念 在传统的 HTT…...
12月10日IO
作业:使用read和write实现拷贝文件,将1.txt内容前一半拷贝给2.txt后一半拷贝给3.txt #include <myhead.h>int main(int argc, const char *argv[]) {//打开三个文件int fd1,fd2,fd3;fd1open("1.txt",O_RDONLY);fd2open("2.txt&quo…...
Composite Pattern
Composite Pattern The intent of Composite pattern is to composite objects into tree structures to represent a “part-whole” hierarchy .The Composite Pattern allow clients to treat individual objects and composite objects uniformly. UML Used in Qt Exam…...
Springboot MVC
1. Springboot为MVC提供的自动配置 Spring Boot 为 Spring MVC 提供了自动配置,这在大多数应用程序中都能很好地工作。除了已经实现了 Spring MVC 的默认功能外,自动配置还提供了以下特性: 包括 ContentNegotiatingViewResolver 和 BeanNam…...
MySQL数据表记录增操作
对数据库的操作用的最最频繁的呢,总结起来就四个字:增删改查! 查是属于DQL(Data QueryLanguage ,数据查询语言)部分,而增、改、删属于DML(Data Manipulation Language, 数据操纵语言) 增:作用是往数据库的数据表里写入记录值 语…...
maven报错“找不到符号“
问题 springboot项目 maven编译打包过程,报错"找不到符号" 解决 很多网上方法都试过,都没用 换jdk,把17->21...
python进阶-05-利用Selenium来实现动态爬虫
python进阶-05-利用Selenium来实现动态爬虫 一.说明 这是python进阶部分05,我们上一篇文章学习了Scrapy来爬取网站,但是很多网站需要登录才能爬取有用的信息,或者网站的静态部分是一个空壳,内容是js动态加载的,或者人机验证&…...
P1226 【模板】快速幂
题目描述 给你三个整数 𝑎,𝑏,𝑝求 𝑎𝑏 mod 𝑝 输入格式 输入只有一行三个整数,分别代表 𝑎,𝑏,𝑝 输出格式 输出一行一个字符串 a^b mod ps…...
【C++】求第二大的数详细解析
博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 💯前言💯题目描述💯输入描述💯解题思路分析1. 题目核心要求2. 代码实现与解析3. 核心逻辑逐步解析定义并初始化变量遍历并处理输入数据更新最大值与次大值输…...
从零开始学TiDB(3)TiKV 持久化机制
如图,每个TiKV有两个rocksdb实例,rocksdbKV复制存储键值对,rocksdb raft负责存储复制的日志 。 每个region及其副本构成了raft group。这个OB的Zone其实有点类似,在OB中每个Unit及其副本构成了paxos组,在TiDB中叫raft…...
Elasticsearch+Kibana+IK分词器+拼音分词器安装
目录 ES报错 Kibanaik分词器拼音分词器 安装都比较简单,可以参考这几篇博客 ES 如何在 Linux,MacOS 及 Windows 上进行安装 Elasticsearch 报错 ES启动报错error downloading geoip database [GeoLite2-ASN.mmdb] Kibana KIBANA的安装教程ÿ…...
子网划分实例
看到有人问这个问题: 想了一下,这是一个子网划分的问题: 处理方法如图: 这是一个子网划分的问题 设备1用三层交换机,端口设置为路由模式,设备2和设备3为傻瓜交换机模式 设备2和设备3下挂设备都是26为掩码&…...
上海亚商投顾:创业板指震荡调整 机器人概念股再度爆发
上海亚商投顾前言:无惧大盘涨跌,解密龙虎榜资金,跟踪一线游资和机构资金动向,识别短期热点和强势个股。 一.市场情绪 沪指昨日冲高回落,深成指、创业板指盘中跌超1%,尾盘跌幅有所收窄。机器人概念股逆势爆…...
【C++ 20进阶(2):初始化 Initializer
【C 20进阶(2):初始化 Initializer】 原文:https://blog.csdn.net/weixin_44259356/article/details/144377955 引言 本篇文章为系列文章将着重介绍C20新特性,一是希望可以和大家交流分享,二是也便于自己…...
【重生之我在B站学MySQL】
MySQL笔记 文章目录 MySQL的三层结构SQL语句分类sql语句数据库操作创建数据库查看、删除数据库 表操作创建表mysql常用数据类型(列类型)查询表、插入值创建表练习创建一个员工表emp 修改表mysql约束primary key(主键)not null(非空)unique(唯一)foreign key(外键)check自增长 索…...
Python实现中国象棋
探索中国象棋 Python 代码实现:从规则逻辑到游戏呈现 中国象棋,这款源远流长的棋类游戏,承载着深厚的文化底蕴与策略智慧。如今,借助 Python 与 Pygame 库,我们能够在数字世界中复刻其魅力,深入探究代码背后…...
LBS 开发微课堂|通过openGL ES轻松实现建筑物渲染及动画
为了让广大开发者 更深入地了解 百度地图开放平台的 技术能力 轻松掌握满满的 技术干货 更加简单地接入 位置服务 我们特别推出了 “位置服务(LBS)开发微课堂” 系列技术案例 第五期的主题是 通过openGL ES轻松实现 建筑物渲染及动画 对于…...
map1[item.id]和map1.get(item.id)的区别为何前者取出的是空,后者取出的是正确的值
在 JavaScript 中,map1[item.id] 和 map1.get(item.id) 用于从 Map 对象中获取值,但它们的工作方式有所不同: map1[item.id]:这种方式用于普通对象(Object),它将 item.id 作为键来获取对应的值…...
window端sqlplus连接linux_oracle11g
1. 环境配置回顾 下载 Oracle Instant Client:根据查询到的版本到链接: oracle官网下载对应版本的三个文件(比如我这里查询到的版本是12.2.0.1.0): instantclient-basic-windows.x64-12.2.0.1.0.zip instantclient-sqlplus-win…...
Go支付中台方案:多平台兼容与多项目对接
一、中台的概念 中台是一种企业级的架构模式,它处于前台应用和后台资源之间,将企业核心能力进行整合、封装,形成一系列可复用的业务能力组件。这些组件就像乐高积木一样,可以被不同的前台业务快速调用,从而避免重复开…...
MySQL触发器的使用详解
MySQL触发器的使用详解 MySQL触发器是一种特殊的存储过程,它与表操作紧密相关,并且在特定事件(如INSERT、UPDATE或DELETE)发生时自动执行。触发器的主要目的是确保数据完整性、实现复杂的业务逻辑以及记录审计信息。它们可以在事…...
关于NLP交互式系统的一些基础入门
【1】What 基于自然语言处理(NLP)的交互式系统是指能够理解、解析并生成人类自然语言的计算机程序。这些系统旨在通过文本或语音与用户进行交流,以提供信息、解决问题或执行任务。以下是关于这类系统的一些关键点: 核心技术&…...
如何在HTML中修改光标的位置(全面版)
如何在HTML中修改光标的位置(全面版) 在Web开发中,控制光标位置是一个重要的技巧,尤其是在表单处理、富文本编辑器开发或格式化输入的场景中。HTML中的光标位置操作不仅适用于表单元素(如<input>和<textarea…...
PHP8 动态属性被弃用兼容方案
PHP 类中可以动态设置和获取没有声明过的类属性。这些属性不遵循具体的规则,并且需要使用 __get() 和 __set() 魔术方法对动态属性如何读写进行有效控制。 class User {private int $uid; }$user new User(); $user->name Foo; 上述代码中,User 类…...
WPF表格控件的列利用模块适配动态枚举类
将枚举列表转化到类内部赋值,在初始化表格行加载和双击事件时,触发类里面的枚举列表的赋值 <c1:Column Header"变更类型" Binding"{Binding ChangeType, ModeTwoWay, ValidatesOnExceptionsTrue, ValidatesOnDataErrorsTrue, NotifyOn…...
【sgUploadImage】自定义组件:基于elementUI的el-upload封装的上传图片、相片组件,适用于上传缩略图、文章封面
sgUploadImage源码 <template><div :class"$options.name"><ul class"uploadImages"><liclass"uploadImage"v-loading"loadings[i]"v-for"(a, i) in uploadImages":key"i"click"click…...
Scala的隐式转换
一: 1.隐式转换概述: 隐式转换与模式匹配都是scala中提供的比较强大的特性。 2.隐式转换的定义: 在实际编程中,要想把一个不匹配的类型赋值,需要先转换成匹配的类型。scala的隐式转换会自动将一种类型的数据转换成…...
从视频编码的进化历程看技术革新
人类对影像的记录和传播从未停止。从最早的胶片电影到如今的数字视频,技术在不断演进。在这个过程中,视频编码技术的发展扮演着关键角色,它决定着我们如何高效地存储和传输视频内容。 视频编码技术的发展历程充满智慧。上世纪90年代…...
本地备份wordpress/刷关键词排名seo软件软件
MYSQL数据库-库表操作零、前言一、库的操作1、创建数据库2、字符集和校验规则3、查看数据库4、修改数据库5、数据库删除6、备份和恢复7、查看连接情况二、表的操作1、创建表2、查看表3、修改表4、删除表4、删除表零、前言 本章主要学习MYSQL数据库中库操作和表操作 一、库的操作…...
wordpress 简单主题/视频剪辑培训班
更换gcc编译器可以解决 -D CMAKE_C_COMPILER/usr/bin/gcc-4.8转载于:https://www.cnblogs.com/gabrialrx/p/9001554.html...
做玻璃的网站/肇庆疫情最新消息
import win32api ImportError: DLL load failed: 找不到指定的程序。 启动jupyterlab报错 报错信息 import win32api ImportError: DLL load failed: 找不到指定的程序。解决办法 pip install pywin32223若无法解决,执行以下操作 1.找到以下目录,将…...
日本设计网站推荐/廊坊关键词优化平台
方法一:直接两层循环(O(N*N)) // Find_Sum.cpp : 定义控制台应用程序的入口点。 //#include "stdafx.h" #include <iostream>void find_sum(int a[],int n ,int sum,int *first,int* second) {int num1,num2;for(int i0;i&l…...
深圳网站制作的/巩义网站推广优化
随着Log4j安全漏洞的出现,研究人员已经看到多个攻击者(主要是出于经济动机)立即将其添加到他们的武器库中。毫不奇怪,一些由国家支持的攻击者也将这个新漏洞视为在潜在目标,在受影响系统修复这个漏洞之前寻找发动攻击的机会。 APT35…...
取名字网站如何做/落实好疫情防控优化措施
思路 对于给定的数组 a1,a2,a3,a4,a5,… 假设a4 < a3. 为了实现数组的单调非减,我们必须改变a4和a3其中的一个值,与此同时,为了后续计算的需要,我们应当尽可能使a4相对较小。此时,究竟是改变a3,还是a4取决于a2值的…...