一:步骤

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. 对rpc长连接与短连接的思考

    大家好,我是思无邪,某go中厂开发工程师,也是OSPP2024的学生参与者! 如果你觉得我的文章有帮助,记得三连支持一下哦! 目前正在深入研究源码,与你们一起进步,共同攻克编程难关! 欢迎关注我的公众 ...

  2. [文件格式/数据存储] Parquet:开源、高效的列式存储文件格式协议

    序:缘起 => 用 java 读取 parquet 文件 生产环境有设备出重大事故,又因一关键功能无法使用,亟需将生产环境的原始MQTT报文(以 parquet 文件格式 + zstd 压缩格式 ...

  3. Maomi.MQ 2.0 | 功能强大的 .NET 消息队列通讯模型框架

    说明 作者:痴者工良 文档地址:https://mmq.whuanle.cn 仓库地址:https://github.com/whuanle/Maomi.MQ 作者博客: https://www.wh ...

  4. [JSOI2008]火星人 题解

    原题链接:\(luogu\)$\ \ $ \(BZOJ\)$\ \ $ \(LOJ\) 题目大意:有一个可以支持插入和修改的字符串,定义函数 \(\operatorname{LCQ(x,y)}\) 表 ...

  5. Normalizing flow 流模型 | CS236深度生成模型Lec8学习笔记

    主要参考资料:Stanford University CS236: Deep Generative Models Lec8. 这篇blog基本上是CS236 Lec8的刷课总结/刷课笔记. VAE 这 ...

  6. 傻妞教程——对接使用redis储存,更快的读写速度

    Redis的特点 1.Redis支持数据的持久化,可以将内存中的数据保存在磁盘中. 2.Redis数据读写速度非常快,因为它把数据都读取到内存当中操作. 3.Redis支持数据的备份,即master- ...

  7. 八米云-N1盒子、S905系列机顶盒等设备-小白保姆式超详细刷机教程

    线刷准备 这里以魔百盒CM211-1为例,本次刷机用到的零碎工具比较多,不过都是常见刚需设备,大家可以按照清单核对一下. 目前只支持S905 L3.L3a.L2 系列的各种盒子 机顶盒本体 电脑一台 ...

  8. ‌PCI-5565PIO主要应用场景

    ‌PCI-5565PIO主要应用场景包括军事领域.工业自动化和控制系统.仿真与培训以及数据采集与分发‌.在军事领域,PCI-5565PIO可用于航空航天系统的飞行控制计算机.导航系统和传感器系统之间的 ...

  9. JavaUtils - [03] 代码生成器(旧)

    题记部分 001 || 引入依赖 <!-- Code Generator --> <dependency> <groupId>com.baomidou</gr ...

  10. MySQL - [03] 数据库引擎

    所有的数据库文件都存在data目录下,本质还是文件的存储. -- 建表时指定编码格式为中文utf-8 CREATE TABLE IF NOT EXISTS `student` ( `id` INT(4 ...