pdf转图片(png,jpg)的python脚本

pdf转图片(png,jpg)的python脚本

PDF转图片工具

1.安装库 pip install pymupdf

2.如果需要pdf转jpg的更改DEFAULT_FORMAT即可

3.一定注意要将脚本与待转化的.pdf文件放在同一个目录

4.运行脚本,将脚本所在目录所有.pdf文件转换成图片,并存放在对应名称的文件夹中

import os
import sys
import fitz
import time
from typing import List# 配置项
DEFAULT_ZOOM = 2.0
SUPPORTED_FORMATS = ['png', 'jpg']
DEFAULT_FORMAT = 'png'
JPEG_QUALITY = 95def get_script_dir() -> str:"""获取脚本所在的绝对目录路径"""return os.path.dirname(os.path.abspath(__file__))def get_pdf_files() -> List[str]:"""获取脚本目录下的PDF文件(返回完整路径)"""script_dir = get_script_dir()pdf_files = []try:for filename in os.listdir(script_dir):if filename.lower().endswith('.pdf'):full_path = os.path.join(script_dir, filename)if os.path.isfile(full_path):pdf_files.append(full_path)return pdf_filesexcept Exception as e:print(f"[ERROR] 扫描PDF失败: {str(e)}")return []def convert_pdf_to_images(pdf_path: str,output_format: str = DEFAULT_FORMAT,zoom: float = DEFAULT_ZOOM
) -> bool:"""转换PDF为图片(输出到脚本所在目录)"""try:script_dir = get_script_dir()pdf_name = os.path.splitext(os.path.basename(pdf_path))[0]# 在脚本目录下创建输出文件夹output_folder = os.path.join(script_dir, f"{pdf_name}_images")os.makedirs(output_folder, exist_ok=True)doc = fitz.open(pdf_path)total_pages = len(doc)print(f"\n转换中: {os.path.basename(pdf_path)} (共{total_pages}页)")print(f"输出到: {output_folder}")for pg in range(total_pages):page = doc[pg]pix = page.get_pixmap(matrix=fitz.Matrix(zoom, zoom))output_path = os.path.join(output_folder,f"{pdf_name}_page{pg+1:03d}.{output_format}")pix.save(output_path, jpg_quality=JPEG_QUALITY if output_format == 'jpg' else None)print(f"  ✓ 第 {pg+1}/{total_pages} 页")doc.close()print(f"✔ 转换完成!")return Trueexcept Exception as e:print(f"✕ 转换失败: {str(e)}")return Falseif __name__ == '__main__':print("="*50)print("PDF转图片工具(输出到脚本目录版)")print("="*50)pdf_files = get_pdf_files()if not pdf_files:print("\n! 未找到PDF文件!请确保:")print("  1. PDF文件与脚本在同一目录")print("  2. 文件扩展名是.pdf")input("\n按Enter键退出...")sys.exit()print("\n找到以下PDF文件:")for i, pdf in enumerate(pdf_files, 1):print(f"  {i}. {os.path.basename(pdf)}")input("\n按Enter键开始转换...")for pdf in pdf_files:convert_pdf_to_images(pdf)input("\n全部完成!按Enter键退出...")

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/88290.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/88290.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大模型本地部署,拥有属于自己的ChatGpt

ChatGpt 以其强大的信息整合和对话能力惊艳了全球,在自然语言处理上面表现出了惊人的能力。不管用于文案撰写还是程序辅助开发都大大提高了我们的工作效率,但是其使用有一定的门槛,让我们大多数人都望而却步,今天我们利用ollama实现本地大模型的步骤,让我们轻松拥有自己的…

【mcu】-老旧小区门禁电话改造指南

老旧小区门禁电话改造指南(四线制DIY方案) 一、明确四根线的功能(关键第一步) 通常四线制门禁电话的线缆定义如下(需用万用表验证): 线色 常见功能 电压/信号类型 检测方法 红线 电源正极(+12V) DC 12V(待机) 万用表直流档测对黑线电压 黑线 电源负极(GND) 0V 与…

word中如何快速打出上标?

在 Microsoft Word 中快速输入上标的方法有以下几种,推荐掌握 键盘快捷键法(最常用高效): ⭐ 方法一:快捷键法(强烈推荐,效率最高!) 输入需要上标的文字/数字&#xff0…

如何优化HarmonyOS 5的分布式通信性能?

以下是针对HarmonyOS 5分布式通信性能优化的系统性方案,结合核心技术特性与实践经验: 一、传输层优化 数据压缩与批处理 // 启用ZLIB压缩(>1KB自动压缩) DistributedConfig config new DistributedConfig.Builder().setCom…

Matplotlib图像处理三剑客:imshow(), imread(), imsave()

Matplotlib是Python中最著名的数据可视化库之一,它不仅能够绘制各种统计图表,还提供了强大的图像处理功能。本文将重点介绍Matplotlib中三个核心的图像处理方法:imshow()、imread()和imsave(),通过示例代码展示它们的使用方法。 …

[特殊字符]防止 MyBatis-Plus 中模糊查询 `%` 查出全表:实现通配符转义拦截器

目录标题 ❓为什么需要转义 % 和 _🧪 使用案例:防止传入 % 导致全表查询🎯 支持哪些场景?✅ 拦截器实现思路🧩 核心拦截器代码实现🔐 可选忽略某些 SQL 的转义 ❓为什么需要转义 % 和 _ 在使用 MyBatis-Pl…

linux grep的一些坑

grep -a "commit" a.log 可以获取到所有的数据(可以看到a.log所有的commit关键词) 但cat a.log|grep "commit" 无法全部获取到(只能看到a.log中部分的的commit) 细分析和可能原因: 1. 二进制文件…

牛客 AI 面试 Ultra 版升级:开启招聘新纪元

每到招聘季,HR 们便陷入繁忙与焦虑。海量简历筛选耗费大量人力,初步面试耗费数周时间,好不容易安排好面试官与候选人时间,又可能因各种意外状况打乱节奏。而牛客 AI 面试 Ultra 版恰似一束光,照亮了招聘流程优化的道路…

OSS与NAS混合云存储架构:非结构化数据统一管理实战

AI训练集管理面临的核心挑战:数据规模爆炸式增长与访问模式多样化的矛盾。ImageNet等典型数据集已达150TB规模,传统单一存储方案面临三重困境: NAS在PB级场景下硬件成本呈指数增长OSS对象存储无法满足高频随机访问需求跨存储数据访问导致训练…

72、单元测试-常用测试注解

72、单元测试-常用测试注解 在单元测试中,常用的测试注解可以帮助组织和管理测试代码,提高测试的可读性和可维护性。以下是JUnit和TestNG框架中一些常用的测试注解及其功能: #### JUnit注解 1. **Test** - 标记一个方法为测试方法。 - 可以设…

强化学习在大型语言模型训练中的最新进展:开源项目深度分析报告

强化学习在大型语言模型训练中的最新进展:开源项目深度分析报告 引言 近年来,人工智能领域见证了大型语言模型(LLM)的迅速崛起,而强化学习作为机器学习的重要分支,在提升LLM推理能力方面展现出巨大潜力。随着OpenAI发布o1等推理…

微服务:服务治理

简单描述这个过程: 生产者与消费者之间的供需关系仅凭这两者很难有效维持,比如某个消费者挂掉了,而生产者并不知道,就会依然给挂掉的消费者提供内容,那么此时的内容明显就是未获取到的,从而出现输出问题。…

关于数据编码、进制、位运算的详细讲解(从属GESP三级)

本章内容 数据编码基础 进制转换 位运算基础 别让符号位绊住你的步伐,掌握补码,让加减法都成为加法。 一、 数据编码基础 目标:掌握 原码 / 反码 / 补码 的定义与互转、常见进制(2 / 8 / 10 / 16)互化方法&#x…

实战项目8(11)

任务场景一 按照下图完成网络拓扑搭建和配置 任务要求: 1、根据个人模拟器情况,将各交换机的MAC地址标注在拓扑图中,并将结果进行截图。 把每个交换机的这个复制粘贴出来【如上图绿色标记的】 【SW1】配置 dis stp 【SW2】配置 dis stp 【…

储能系统的离网,并网,构网,跟网 简介

一、并网(Grid-Connected) ✅ 定义:PCS输出与公共电网并联运行,电网主导电压和频率,PCS按设定的有功/无功功率注入电网。 ✅ 特点: 电网存在、电压频率稳定 PCS仅作为电源“从机”,不能主导电压…

Solr 初始环境搭建(Windows)

前言 Apache Solr 是一个开源的、基于 Java 的企业级搜索平台,构建在 Apache Lucene 之上,提供了强大的全文检索、分布式搜索、索引管理、高亮显示、分面搜索等功能。它被广泛应用于电子商务、内容管理系统(CMS)、数据分析和大规模…

系统架构设计的全方位视角:深入解析4+1视图模型及其应用实践

在当今复杂多变的软件开发环境中,如何全面把握系统架构,满足不同利益相关者的需求,是每位架构师面临的重大挑战。“41”视图模型作为一种经典的架构描述框架,为解决这一难题提供了系统化的方法论。本文将深入剖析这一模型的理论基…

vue.js 3: markmap using typescript

在项目目录文件下,通过cmd运行下述指令。 npm create vuelatest cd vue-projectnpm installnpm run format npm run dev或 npm init vuelatest cd vue-prjectnpm run build --打包项目创建项目没有node_modules npm init -y npm install vue-routernpm install mark…

聚宽量化——股票时间序列函数

import matplotlib.pyplot as plt import pandas as pd from mpl_finance import candlestick2_ochl import mplfinance as mpf from unittest import TestCaseclass TestPandasKline(TestCase):#读取股票数据,画出K线图def testKLineChart(self):file_name "…

(一)代码随想录 - 数组

代码随想录 一. 数组的理论基础 概念:数组是存放在连续内存空间上的相同类型数据的集合 特点:(1)数组可以通过下标进行访问对应的数据并且下标是从0开始的 -> 随机访问;(2)数组内存空间的地…