“Python神技:一键转换PPT页面为高清图片,源码大公开!”(附Python源码)

news2024/11/15 11:06:13

今天让claude3帮忙写了个python代码,实现了将ppt转换成图片功能。WPS中实现这个功能还需要开通会员,

其实也就一点代码就可以实现,而且powerpoint中还没有这个将页面转换成图片的功能,废话不多说,直接上源码。

import os
from comtypes.client import CreateObject
from tkinter import Tk, filedialog, Button, Label, StringVar, Entry, messagebox
import tkinter as tk
from tkinter import messagebox
 

def browse_file():
    global ppt_path
    file_path = filedialog.askopenfilename(filetypes=[("PowerPoint Files", "*.pptx;*.ppt")])
    normalized_path = os.path.normpath(file_path)  # 规范化路径
    ppt_path.set(normalized_path)
   
def browse_folder():
    global images_dir
    folder_path = filedialog.askdirectory()
    normalized_path = os.path.normpath(folder_path)  # 规范化路径
    images_dir.set(normalized_path)

def convert_to_images():
    try:
        ppt_to_images(ppt_path.get(), images_dir.get())
        messagebox.showinfo("完成", "PPT已成功转换为图片")
    except Exception as e:
        messagebox.showerror("错误", str(e))

def ppt_to_images(ppt_path, images_dir):
    # 确保输出目录存在
    if not os.path.exists(images_dir):
        os.makedirs(images_dir)
 
    # 初始化PowerPoint应用
    powerpoint = CreateObject("Powerpoint.Application")
    powerpoint.Visible = 1
 
    # 打开PPT文件
    ppt = powerpoint.Presentations.Open(ppt_path)

    # 遍历每个幻灯片并保存为图片
    for i, slide in enumerate(ppt.Slides):
        image_path = os.path.join(images_dir, f"slide_{i + 1}.jpg")
        slide.Export(image_path, "JPG")
  
    # 关闭PPT文件和PowerPoint应用
    ppt.Close()
    powerpoint.Quit()

if __name__ == "__main__":
    root = Tk()
    root.title("PPT转图片工具")
  
    ppt_path = StringVar()
    images_dir = StringVar()
   
    Label(root, text="选择PPT文件:").pack()
    Entry(root, textvariable=ppt_path, width=50).pack()
    Button(root, text="浏览", command=browse_file).pack()
  
    Label(root, text="图片输出目录:").pack()
    Entry(root, textvariable=images_dir, width=50).pack()
    Button(root, text="浏览", command=browse_folder).pack()
 
    Button(root, text="转换", command=convert_to_images).pack()
  
    root.mainloop()

这段代码运行后就是一个图形界面如下,前提条件需要安装comtypes和tkinter,如果没有安装的,可以用命令安装一下就可以了:

pip install comtypes

先选择ppt文件,然后选择图片的输出目录,最后点击转换按钮,就可以实现将ppt转换成jpg图片,注意,如果本机运行的话,需要本机安装好了powerpoint才能正常运行。

另外如果需要将这个项目打包生成exe文件,也可以使用下面的命令将项目文件打包

pyinstaller --onefile --windowed your_script_name.py

确保安装了PyInstaller,才能正常运行上面的命令,如果没有安装的话,可以运行下面的命令实现。

pip install pyinstaller

运行后,就会在当前py文件目录下生成两个文件夹,

在dist文件夹中就可以看到生成的exe文件了。

程序运行完成后,在这个文件夹下就可以看到生成的图片了。

最后,也可以在这个代码基础上修改并添加更多的功能,比如添加选择转换相应的页数,转成一张长图等等,都可以用python实现,有兴趣的朋友可以在这段代码基础上修改就可以了。

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

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

相关文章

欧科云链:从技术与数据视角,看Solana如何成为Web3“流量担当”?

出品|欧科云链研究院 作者|Jason Jiang 坎昆升级完成后,除一众L2手续费锐减外,以太坊生态并未掀起涟漪,相反Solana凭借一波短暂的Meme热潮,再次成为焦点。尽管本周Solana生态的Meme热度褪去,但…

最新,955神仙公司名单(非外企)

955 神仙公司名单(非外企) 往常爆料最多的 955 神仙公司名单通常都是集中在一线城市的外企。 例如下面这张最为流行的名单图: 最近牛客网上有同学整理出了非外企的版本,其中不乏一些耳熟能详的互联网产品。 随手把名单分享给大家。…

SDKMAN多版本SDK并行管理工具

一、简介 SDKMAN是管理多个SDK并行版本的工具,它提供了方便的命令行界面(CLI)和API,用于列出,安装,切换和删除候选对象。此外,它还为我们设置了环境变量。 它还允许开发人员安装基于JVM的SDK&…

短剧分销cps推广很简单,短剧分销授权平台怎么搭建?

一、短剧分销是什么? 短剧分销,也被称为短剧CPS,是一种通过推广短剧并获得收益的方式。分销方会提供短剧片单,内容创作者可以根据这些片单剪辑成短视频内容进行分发。这样既能避免版权问题,又可以利用优质内容吸引用户…

JAVA入门第一步

学习总结: 打开CMD常见的CMD命令 一、打开CMD CMD的概念 CMD是Windows操作系统中的命令提示符(Command Prompt)程序,它是一种命令行工具,可以让用户通过键入命令来与计算机进行交互。CMD是Windows中一个基本的系统组件,它提供了一…

基于springboot+vue的库存管理系统

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战,欢迎高校老师\讲师\同行交流合作 ​主要内容:毕业设计(Javaweb项目|小程序|Pyt…

SQL:窗口函数之OVER()

窗口函数 通用格式 “函数 OVER (PARTITION BY 分组 ORDER BY 排序依据 升降序)”。 这里记录下OVER() 以及搭配LEAD/LAG函数的使用方法(执行平台Impala) 目录 OVER函数1、不加条件的OVER函数——得到所有的汇总结果2、仅有排序的OVER函数——得到按顺序…

基于XENSIV电容原理的KP236N6165XTMA1、KP276D1201XTMA1、KP276D1505XTMA1压力传感器,采用BiCMOS技术

1、XENSIV™ KP236N6165 压力传感器 23.93PSIA 4.85V DSOF8 描述:KP236N6165XTMA1 是一款模拟大气压力传感器,适用于大温度范围的汽车应用。它采用表面微加工技术,内置一个采用BiCMOS技术的单片集成信号调理电路。该器件将60 kPa至165 kPa的…

题注或页码中不含章节编号。若要应用章节编号,请使用“开始”选项卡上的“多级列表”按钮,然后选择连接到标题样式的编号方案

问题: 给图片或表格插入含有章节号的题注时,提示【题注或页码中不含章节编号。若要应用章节编号,请使用“开始”选项卡上的“多级列表”按钮,然后选择连接到标题样式的编号方案】。 原因: 当前图片或表格所在的段落…

力扣Lc20--- 202.快乐数(java版)-2024年3月20日

1.题目 2.知识点 (1)while (seen.contains(n) false) { // 循环体 } 与 !seen.contains(n) 等同 (2) 当传入数字 19 给 isHappy(19) 方法时,下面是每一行代码的执行过程: 初始化一个空的 HashSet&#…

Python 日志记录库之loguru使用详解

概要 在软件开发中,良好的日志记录是至关重要的。它不仅可以帮助开发人员跟踪应用程序的运行状态和诊断问题,还可以为用户提供更好的支持和维护。而Python的Loguru库则为日志记录提供了一种简洁而强大的解决方案。本文将深入探讨Loguru库的各个方面,包括其基本概念、功能、…

Linux环境JMeter脚本性能测试、easyNmon生成监控报告

一、下载JMeter安装包 Jmeter是Java开发的,需要依赖JDK环境,因此我们需提前安装好JDK。 Jmeter是开源的工具,我们直接到官网下载即可。 最新版本下载地址:Apache JMeter - Download Apache JMeter 二、安装JMeter #新建jmete…

OneNote 中的云端字典在哪里? RoamingCustom.dic 在哪里?

早期懵懂不知,使用 OneNote 时直接将所有标红的单词添加到字典中了。后面才发现默认会添加到云端字典中。因为云端字典是存储在云端上的,所以 onenote 没有给出路径: 难道没办法获取了吗?有的! 方案如下:考…

前端全栈必学的Dockerfile-ABC!

举个很简单的例子,我有一个Centos7的服务器,但是由于系统限制,我无法安装nodejs18… 但是!我在Docker里就可以! Dockerfile是Docker的心脏,一个文本文件,包含了一系列的指令,用来构…

机器学习----交叉熵(Cross Entropy)如何做损失函数

目录 一.概念引入 1.损失函数 2.均值平方差损失函数 3.交叉熵损失函数 3.1信息量 3.2信息熵 3.3相对熵 二.交叉熵损失函数的原理及推导过程 表达式 二分类 联立 取对数 补充 三.交叉熵函数的代码实现 一.概念引入 1.损失函数 损失函数是指一种将一个事件&#x…

Cubemx外部引脚按键中断

引脚配置: 时钟: 中断: 编写回调函数: 对函数void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)重写成用户自己的业务代码即可

期货交易的逻辑重要还是技术重要?

期货交易的逻辑重要还是技术重要? 我是一个从事交易多年的老交易员,我觉得这个问题很有意思,也很有难度。我认为交易的逻辑和技术都很重要,但是不是同等重要。我觉得逻辑是交易的灵魂,技术是交易的工具。没有逻辑&…

苹果手机更换国内IP地址的方法

在网络世界中,IP地址扮演着极为重要的角色,是互联网通信的基础。很多人在使用苹果手机时,有时候需要更换国内IP地址以获取更多网络资源或保护隐私。那么,是否可以更换国内ip地址?苹果手机更换国内ip地址的方法是怎样的…

Elasticsearch:ES|QL 入门 - Python Notebook

数据丰富在本笔记本中,你将学习 Elasticsearch 查询语言 (ES|QL) 的基础知识。 你将使用官方 Elasticsearch Python 客户端。 你将学习如何: 运行 ES|QL 查询使用处理命令对表格进行排序查询数据链式处理命令计算值计算统计数据访问列创建直方图丰富数…

360企业安全浏览器兼容模式显示异常某个内容不显示 偶发现象 本地无法复现情况js

360企业安全浏览器兼容模式显示异常 ,现象测试环境频发 ,本地连测试无法复现,线上反馈问题。 出现问题的电脑为windows且使用360企业安全浏览器打开兼容模式可复现 复现过程: 不直接点击超链接跳转页面 ,登录后直接通…