一:步骤

1、使用input输入路径

2、生成图片存户路径同存放路径

3、生成图片为PNG格式

4、支持自定义截取页数,建议为第一页

二:安装扩展类

pip install PyMuPDF

三:示例代码

# coding:utf-8
import os
import fitz # 解析
def analysis(file_path, save_path, num):
# 资源列表
file_array = []
if os.path.isdir(file_path):
# 目录循环压入
file_count = get_path_file(file_path)
for v in file_count:
file_array.append(v)
else:
# 单文件,单次调用
file_array.append(file_path) # 判断为空情况
if not file_array:
print("此目录下无文件")
# 执行解析
file_count_num = len(file_array)
print("程序运行中,共计%s个文件" % file_count_num)
for v in file_array:
# print("文件路径:%s" % v)
# 获取文件名称及类型
file_name = os.path.basename(v)
# print("文件信息:%s" % file_name)
if '.pdf' not in file_name:
print("此文件非PDF文件")
# 打开PDF文件,生成一个对象
doc = fitz.open(v)
# 总页数
count_page = doc.pageCount
# print("文件共计:%s页" % count_page)
if count_page > 1:
page = doc[num]
rotate = int(0)
# 每个尺寸的缩放系数为2,这将为我们生成分辨率提高四倍的图像。
zoom_x = 2.0
zoom_y = 2.0
trans = fitz.Matrix(zoom_x, zoom_y).preRotate(rotate)
pm = page.getPixmap(matrix=trans, alpha=False)
# 保存路径
p_1 = v.replace(file_path, save_path)
p_2 = p_1.replace(file_name, '')
if not os.path.exists(p_2):
os.makedirs(p_2)
new_file_name = file_name.replace(".pdf", "")
pm.writePNG(p_2 + '%s.png' % new_file_name)
print("运行完成")
else:
print("此文档无内容,跳出")
continue # 返回目录下所有文件
def get_path_file(files_path):
data = []
for root, dirs, files in os.walk(files_path, topdown=False):
for name in files:
f_p = os.path.join(root, name).replace("\\", "/")
data.append(f_p)
return data if __name__ == '__main__':
print("|---------------------------------|")
print("| |")
print("| PDF 批量生成封面 |")
print("| |")
print("|---------------------------------|") # 当前目录下的文件
now_path = os.getcwd()
print("当前位置:%s" % now_path)
# 保存路径
print("请输入参数,以 / 结尾,处理完成后会自动退出")
save_path = input("图片保存地址:")
exit()
# 判断目录
save_path_status = os.path.exists(save_path)
if not save_path_status:
os.mkdir(save_path)
# 截取页数
num = 0
# 路径或文件名
file_path = input("PDF文件地址:")
# 调用方法
analysis(file_path, save_path, num)

注:可打包成exe文件使用噢

本文转载于:https://cloud.tencent.com/developer/article/1584421

(转)python批量提取PDF第一页输出为图片的更多相关文章

  1. 【PDF单页转化为图片输出 注意:英文或图片类的PDF可转化,中文抛异常】

    public static void main(String[] args) throws IOException { /** * PDF单页转化为图片输出 注意:英文或图片类的PDF可转化,中文抛异 ...

  2. 第一节:python提取PDF文档中的图片

    由于项目需要将PDF文档当中的图片转换成图片,所以参考了这篇文章https://blog.csdn.net/qq_15969343/article/details/81673302后项目得以解决. 1 ...

  3. python 批量打印PDF

    有一批PDF文件,好几百个,每个只打印第2,3页,双面打印. 网上搜索一波,方案如下: 安装Ghostscript,GhostView,使用gsprint命令打印pdf文件. gsprint命令参数说 ...

  4. 个人永久性免费-Excel催化剂功能第88波-批量提取pdf文件信息(图片、表格、文本等)

    日常办公场合中,除了常规的Excel.Word.PPT等文档外,还有一个不可忽略的文件格式是pdf格式,而对于想从pdf文件中获取信息时,常规方法将变得非常痛苦和麻烦.此篇给大家送一pdf文件提取信息 ...

  5. 使用Python批量合并PDF文件(带书签功能)

    网上找了几个合并pdf的软件,发现不是很好用,一般都没有添加书签的功能. 又去找了下python合并pdf的脚本,发现也没有添加书签的功能的. 于是自己动手编写了一个小工具,使用了PyPDF2. 下面 ...

  6. python批量提取eml附件

    从批量eml文件中提取附件,使用方式如下 代码如下 import email import os import sys #获取eml附件信息 def Get_Annex_Message(FilePat ...

  7. python爬取糗百第一页的笑话

    自学python网络爬虫,发现request比urllib还是要好用一些,因此利用request和BeautifulSoup来实现糗百的首页笑话的抓取.BeautifulSoup通过find和find ...

  8. python批量提取哔哩哔哩bilibili视频

    # -*- coding: utf-8 -*- """ Created on Tue Jan 29 13:26:41 2019 @author: kwy "&q ...

  9. java实现pdf按页切分成图片

    package com.ces.component.pictrueCut.entity; import java.awt.Image; import java.awt.Rectangle; impor ...

  10. java实现截取PDF指定页并进行图片格式转换

    1.引入依赖 <dependency> <groupId>org.apache.pdfbox</groupId> <artifactId>pdfbox& ...

随机推荐

  1. 一个基于 C# 开源的第三方 OAuth2 授权登录整合库

    前言 在我们的开发工作中有可能会对接过各种各样的第三方平台的登录授权,来获取用户的相关账号信息(如:微信登录.支付宝登录.飞书登录.钉钉登录.GitHub登录等等).今天大姚给大家推荐一个基于 C# ...

  2. 用python做时间序列预测三:时间序列分解

    在初始概念篇中,我们简单提到了时间序列由趋势.周期性.季节性.误差构成,本文将介绍如何将时间序列的这些成分分解出来.分解的使用场景有很多,比如当我们需要计算该时间序列是否具有季节性,或者我们要去除该时 ...

  3. DeepSeek R1本地与线上满血版部署:超详细手把手指南

    一.DeepSeek R1本地部署 1.下载ollama下载地址 本人是Mac电脑,所以选第一项,下面都是以Mac环境介绍部署,下载好把ollama运行起来即可启动Ollama服务. Ollama默认 ...

  4. 在使用HOperatorSet.Draw忘记点击右键结束方法无法关闭窗体问题如何规避

    原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/17270056.html 可以在离开窗体或者关闭窗体事件中调用HOperatorSet.HIOC ...

  5. 图解MySQL【日志】——Binlog

    Binlog(Binary Log,归档日志) 为什么需要 Binlog? Binlog 是 MySQL 中的二进制日志,用于记录数据库的所有写操作(INSERT.UPDATE.DELETE 等) 1 ...

  6. C语言编程技巧 全局变量在多个c文件中公用的方法

    在使用C语言编写程序时,经常会遇到这样的情况:我们希望在头文件中定义一个全局变量,并将其包含在两个不同的C文件中,以便这个全局变量可以在这两个文件中共享.举个例子,假设项目文件夹"proje ...

  7. 动态能力理论&知识管理理论--商业之所见

    动态能力理论:企业整合,建立和再配置内外部资源以适应快速变化环境的能力. (1)"动态"指的是适应不断变化的环境,企业必须具有不断更新自身能力的能力: (2)"能力&qu ...

  8. Java 实现 Excel(XLS/ XLSX)和 HTML 格式之间的转换

    Excel 是一种电子表格格式,广泛用于数据处理和分析,而HTM则是一种用于创建网页的标记语言.虽然两者在用途上存在差异,但有时我们需要将数据从一种格式转换为另一种格式,以便更好地利用和展示数据.本文 ...

  9. MyBatisPlus - [07] Q&A

    题记部分 001 || Public Key Retrieval is not allowed 通常出现在使用JDBC连接数据库时,特别时在尝试通过SSL/TLS加密连接到MySQL或MariaDB数 ...

  10. hbase - [03] 客户端常用命令(hbase shell)

    1.列出所有namespace list_namespace 2.创建namespace create_namespace 'ns_name' 3.修改namespace属性 alter_namesp ...