合肥公司建设网站,app游戏制作教程,ppt模板免费下载百度云,闵行区是郊区吗语言#xff1a;python 3
用法#xff1a;点击运行后#xff0c;弹出窗口#xff0c;选择文件夹#xff0c;程序运行会将文件夹内的所有PPT文件全部转换成PPT长图#xff0c;图片名称与PPT文件名称相同#xff0c;保存位置相同。
如运行中报错#xff0c;需要自行根据…语言python 3
用法点击运行后弹出窗口选择文件夹程序运行会将文件夹内的所有PPT文件全部转换成PPT长图图片名称与PPT文件名称相同保存位置相同。
如运行中报错需要自行根据报错内容按照缺失的库
共分享两种代码可以尝试运行。
代码1需安装库
#安装库 pip install pyautogui #安装库 pip install pillow import os
import comtypes.client
from tkinter import Tk, filedialog
from PIL import Imagedef ppt_to_images(ppt_file):try:# 导入comtypes.client模块并创建PowerPoint应用程序对象powerpoint comtypes.client.CreateObject(Powerpoint.Application)# 设置PowerPoint应用程序为可见状态便于观察操作过程可选,修改为0后报错#powerpoint.Visible 1# 打开PPT文件并返回Presentation对象presentation powerpoint.Presentations.Open(ppt_file)for i, slide in enumerate(presentation.slides): #slide是幻灯片序列slide.Export(fslide_{i}.png, PNG)# 关闭PPT文件presentation.Close()# 退出PowerPoint应用程序powerpoint.Quit()presentation Noneprint(ppt_file分图完成)except Exception as e:print(分图时发生错误, str(e))
def merge_images(directory, png_file):try:Image.MAX_IMAGE_PIXELS 2 ** 40images [] # 存储图片对象for file in os.listdir(directory):file_path os.path.join(directory, file)if os.path.isfile(file_path) and file.lower().endswith(.png):image Image.open(file_path)images.append(image)if len(images) 0:print(未找到PNG格式的图片文件)return Nonemax_width max(image.size[0] for image in images) # 获取最大宽度total_height sum(image.size[1] for image in images) # 计算总高度final_image Image.new(RGBA, (max_width, total_height), (0, 0, 0, 0)) # 创建最终图像# 逐个粘贴图片到最终图像中y_offset 0for image in images:final_image.paste(image, (0, y_offset))y_offset image.size[1]final_image.save(png_file)print(已生成图片png_file)if final_image:for file in os.listdir(directory):file_path os.path.join(directory, file)if os.path.isfile(file_path) and file.lower().endswith(.png) and slide in file:os.remove(file_path)print(已删除图片file)except Exception as e:print(合并图片时发生错误, str(e))def select_directory():try:root Tk()root.withdraw()directory filedialog.askdirectory(title选择目录)ppt_files [f for f in os.listdir(directory) if f.endswith(.pptx)or f.endswith(.ppt)]for ppt_file in ppt_files:try:#print(directory directory)if ppt_file.lower().endswith(.pptx):png_file os.path.join(directory, ppt_file[:-5] .png)ppt_to_images(ppt_file) # PPT to imagemerge_images(directory, png_file) # image to imageselif ppt_file.lower().endswith(.ppt):png_file os.path.join(directory, ppt_file[:-4] .png)ppt_to_images(ppt_file) # PPT to imagemerge_images(directory, png_file) # image to imagesexcept Exception as e:print(处理PPT文件时发生错误跳过该文件, str(e))print(转换完成)except Exception as e:print(选择目录并转换PPT文件时发生错误, str(e))# 选择目录并转换PPT到PDF格式再将PDF转换为长图
select_directory()
代码2如下
import os
import comtypes.client
from tkinter import Tk, filedialog
from pptx import Presentation
from PIL import Image#PPT转换成图片def ppt_to_images(ppt_file, png_file):#presentation powerpoint.Presentations.Open(ppt_file)presentation Presentation(os.path.join(png_file, ppt_file))for i, slide in enumerate(presentation.slides): #slide是幻灯片序列slide.export(f{png_file}/slide_{i}.png) #将PPT转换成图片并保存到目录下print(PPT转换为图像完成)#将图片拼接成长图
def merge_images(ppt_path, output_file):images [Image.open(f{ppt_path}/{img}) for img in os.listdir(ppt_path) if img.endswith(.png)]widths, heights zip(*(img.size for img in images))total_height sum(heights)max_width max(widths)merged_image Image.new(RGB, (max_width, total_height))y_offset 0for img in images:merged_image.paste(img, (0, y_offset))y_offset img.size[1]merged_image.save(output_file)print(图像拼接完成)def ppt_to_pdf(ppt_path, pdf_file): #ppt路径和pdf的路径# 导入comtypes.client模块并创建PowerPoint应用程序对象powerpoint comtypes.client.CreateObject(Powerpoint.Application)# 设置PowerPoint应用程序为可见状态便于观察操作过程可选,修改为0后报错powerpoint.Visible 1# 打开PPT文件并返回Presentation对象presentation powerpoint.Presentations.Open(ppt_path)# 将打开的PPT文件导出为PDF文件第二个参数2表示导出为PDF格式presentation.ExportAsFixedFormat(pdf_file, 2)# 输出转换完成的信息print(ppt_path 转PDF完成)def select_directory():root Tk()root.withdraw()directory filedialog.askdirectory(title选择目录)ppt_files [f for f in os.listdir(directory) if f.endswith(.pptx)]for ppt_file in ppt_files:ppt_path os.path.join(directory, ppt_file) #ppt_path ppt的路径,拼接pptpdf_file os.path.join(directory, ppt_file[:-4] .pdf) #pdf文件png_file os.path.join(directory, ppt_file[:-4] .png)ppt_to_pdf(ppt_path, pdf_file)print(转换完成)# 选择目录并转换PPT到PDF格式再将PDF转换为长图
select_directory()