使用win32com将ppt(x)文件转换为pdf文件

本文来记录下如何使用win32com将ppt(x)文件转换为pdf文件

文章目录

  • win32com概述
  • win32com优缺点
  • 代码实例
  • 本文小结


win32com概述

Pywin32 是一个用于与 Microsoft Windows 操作系统交互的 Python 扩展模块,它提供了对多个 Windows API 的访问,包括对 Microsoft Office 应用程序(如 Word、Excel、PowerPoint 等)的自动化操作。


win32com优缺点

win32com优点

  • 功能强大:Pywin32 允许您在 Python 中与 Word 进行深度集成,可以实现对 Word 文档的创建、编辑、格式化、内容提取等一系列操作。
  • 自动化处理:通过 Pywin32,您可以编写脚本来自动化执行 Word 相关的任务,如批量处理文档、生成报告、数据导入等,提高工作效率。
  • 广泛的支持:Pywin32 提供了对 Word 的广泛支持,允许您访问和操作 Word 的各种对象、属性和方法,以满足特定的需求。
  • 良好的文档和社区支持:Pywin32 拥有详细的官方文档和活跃的社区支持,您可以轻松地找到示例代码、教程和解决方案,加快开发速度。

win32com缺点

  • Windows 平台限定:Pywin32 是一个针对 Windows 平台的扩展模块,因此在其他操作系统上(如 macOS、Linux)无法使用,这限制了其跨平台的能力。
  • 依赖性:使用 Pywin32 需要安装相应的依赖库和软件,如 Microsoft Office 套件、Windows API 等,这可能增加了部署和配置的复杂性。
  • 学习曲线:Pywin32 的使用需要一定的学习和熟悉过程,特别是对于那些不熟悉 Windows API 和 COM 编程的开发者来说,上手可能会有一定的难度。

代码实例

需要一些python基础和flask基础

import os
import glob
from win32com.client import gencache
from flask import Flask, send_from_directory, jsonify
from logging.handlers import RotatingFileHandler
from datetime import time
import pythoncom
import logging
import socket



app = Flask(__name__)



# 初始化日志信息
def initLog():

    LOG_FORMAT = "%(asctime)s - %(levelname)s %(name)s %(filename)s [line:%(lineno)d] - %(message)s"
    tfh = logging.handlers.TimedRotatingFileHandler('pdf_log.log', when='S', interval=1.5, backupCount=2,
                                                    encoding='UTF-8', delay=False, utc=False, atTime=time)
    rfh = logging.handlers.RotatingFileHandler(filename='log.log', encoding='UTF-8', maxBytes=1024, backupCount=2)

    sh = logging.StreamHandler()
    logging.basicConfig(format=LOG_FORMAT, level=logging.DEBUG, handlers=[rfh, tfh, sh])


def pptToPDF():

    fileName = "ppt模板.pptx"

    print("=======pptToPDF(fileName)=========" + fileName)

    # 线程初始化
    # 解决多线程使用pywin32com造成的问题
    pythoncom.CoInitialize()

    # 需要转换的ppt位置
    filename = "D:\\pdf\\" + fileName
    logging.info("=====需要转换的ppt文件为=======" + filename)

    # ppt转为pdf以后存放的路径
    directory = "D:\pdf"
    logging.info("=====ppt转为pdf以后存放的路径为:=====" + directory)

    # 生成PDF文件的存储路径
    if not os.path.exists(directory):
        # create the directory if it not exits
        os.mkdir(os.path.join(directory))


    pdfName=os.path.basename(filename).split('.ppt')[0]+'.pdf'
    # savePathFile为出参
    savePathFile=os.path.join(directory,pdfName)
    logging.info("======最终保存的ppt路径为=========" + savePathFile)
    # judge if the str savePathFile is a file existed
    if os.path.isfile(savePathFile):
        print(pdfName,"已经转换完成")
        return  savePathFile
    # guessing that has some connections with open the PowerPoint Application
    p=gencache.EnsureDispatch("PowerPoint.Application")
    try:
        # open the PowerPoint file
        ppt=p.Presentations.Open(filename,False,False,False)
    except Exception as e:
        # throw
        print(os.path.split(filename)[1],"File format conversion failed,because %s" %e)
    ppt.ExportAsFixedFormat(savePathFile,2,PrintRange=None)
    print("converted && saved :", savePathFile)
    p.Quit     #close the PowerPoint file

    logging.info("======p.Quit==========="+savePathFile)
    return savePathFile

    # 释放资源
    # pythoncom.CoUninitialize()

def main():

    savePathFile = pptToPDF()
    print(savePathFile)



# 实现ppt文件向pdf文件的转换
if __name__ =="__main__":


    main()
    # print("程序已经执行完成!")
    # inp = input("请按回车键退出程序。")
    initLog()
    # 获取本机的ip地址
    res = socket.gethostbyname(socket.gethostname())
    app.run(host=res,debug=False, port=5002)

程序结果

在这里插入图片描述

文件内容

在这里插入图片描述


本文小结

本文记录了使用win32com将ppt(x)文件转换为pdf文件,需要有一些python和flask相关的基础知识。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Win11专业版Docker安装、配置记录

零,系统环境配置 首先,安装Docker需要系统支持开启硬件虚拟化及Hyper-V功能,所以这里需要Win10/11的专业版,这样才能进行Docker for Windows软件安装。 1,硬件虚拟化 至于如何开启硬件虚拟化,自行百度即…

[JAVAEE] 面试题(四) - 多线程下使用ArrayList涉及到的线程安全问题及解决

目录 一. 多线程下使用ArrayList 1.1. 自行判断加锁 1.2 使用Collections.synchronizedList()套壳加锁 1.3 CopyOnWriteArrayList类 二. 总结 一. 多线程下使用ArrayList 多线程下使用ArrayList会涉及到线程安全问题, 例如: public static void main(String[] args) thro…

idea项目运行时 java: 错误: 不支持发行版本 21

java项目运行时,同样的项目别的都是正常运行,单个这个项目一直报 java: 错误: 不支持发行版本 21, 报错的解释 这个错误表明你正在尝试使用Java编译器编译一个类,但是编译器遇到了一个它不支持的版本号,在这个上下文…

kafka和Flume的整合

目录 一、Kafka作为Source 【数据进入到kafka中,抽取出来】 1、在我的flume的conf文件夹下,有个myconf文件夹: 2、 创建一个flume脚本文件: kafka-memory-logger.conf 3、测试 二、kafka作为Sink 【数据从别的地方抽取到kafka里…

Tomcat漏洞利用工具-TomcatScanPro(二)

项目地址 https://github.com/lizhianyuguangming/TomcatScanPro 简介 本项目是一个针对 Tomcat 服务的弱口令检测、漏洞检测以及本地文件包含(LFI)攻击工具。除了支持 CVE-2017-12615 漏洞的多种利用方式外,新版本还集成了 CNVD-2020-104…

【2024软考架构案例题】你知道 Es 的几种分词器吗?Standard、Simple、WhiteSpace、Keyword 四种分词器你知道吗?

👉博主介绍: 博主从事应用安全和大数据领域,有8年研发经验,5年面试官经验,Java技术专家,WEB架构师,阿里云专家博主,华为云云享专家,51CTO 专家博主 ⛪️ 个人社区&#x…

Web认证机制 Cookie、Token、Session、JWT、OAuth2 解析

标题 一、Cookie二、Session三、Token四、JWTSSO(单点登录) 五、OAuth2如何设计权限系统区别总结 Cookie、Token、Session 和 JWT 都是在 Web 开发中常用的身份验证和授权技术,它们各有优缺点,适用于不同的场景。 Cookie 简单易用…

GEE遥感云大数据在灾害、水体与湿地领域典型案例实践:洪涝灾害、水体质量、河道轮廓、地下水变化监测;洪水敏感性和风险模拟;红树林遥感制图等

以Earth Engine(GEE)、PIE-Engine为代表全球尺度地球科学数据(尤其是卫星遥感数据)在线可视化计算和分析云平台应用越来越广泛。GEE平台存储和同步遥感领域目前常用的MODIS、Landsat和Sentinel等卫星影像、气候与天气、地球物理等…

安装一键式重置密码插件(Linux)-CloudResetPwdAgent

为了保证使用镜像创建的裸金属服务器可以实现一键式密码重置功能,建议您在制作镜像时安装重置密码插件“CloudResetPwdAgent”。 前提条件 需保证虚拟机根目录可写入,且剩余空间大于600MB。 1.下载插件包 华为云已提供下载包连接 在PC机里下载好软件…

力扣-Mysql-3328-查找每个州的城市 II(中等)

一、题目来源 3328. 查找每个州的城市 II - 力扣(LeetCode) 二、数据表结构 表:cities ---------------------- | Column Name | Type | ---------------------- | state | varchar | | city | varchar | ----------------…

深度学习神经网络创新点方向

一、引言 深度学习神经网络在过去几十年里取得了令人瞩目的成就,从图像识别、语音处理到自然语言理解等众多领域都有广泛应用。然而,随着数据量的不断增长和应用场景的日益复杂,对神经网络的创新需求也愈发迫切。本文将探讨深度学习神经网络…

SpringBoot 3.3.5 试用CRaC,启动速度提升3到10倍

文章目录 一 CRaC是什么二 CRaC的原理三 CRaC 的应用场景四 支持版本五 实践 今天和小伙伴们来聊一个稍微新一点的技术话题—CRaC。 CRaC(Coordinated Restore at Checkpoint,检查点协调恢复)是一个 OpenJDK 项目,旨在解决 Java 应…

大模型本地部署:Ollama+MaxKB 部署本地知识库

前言 本文我们介绍另外一种部署本地知识库的方案: Ollama MaxKB 相对来说,容易安装且功能较完善,30 分钟内即可上线基于本地大模型的知识库问答系统,并嵌入到第三方业务系统中。 缺点是如果你的电脑配置不高,问题…

Nuxt.js 应用中的 schema:beforeWrite 事件钩子详解

title: Nuxt.js 应用中的 schema:beforeWrite 事件钩子详解 date: 2024/11/14 updated: 2024/11/14 author: cmdragon excerpt: schema:beforeWrite 钩子是 Vite 提供的一个功能强大的生命周期钩子,允许开发者在 JSON Schema 被写入之前执行自定义操作。利用这个钩子,您可以…

Scrapy爬取heima论坛所有页面内容并保存到数据库中

前期准备: Scrapy入门_win10安装scrapy-CSDN博客 新建 Scrapy项目 scrapy startproject mySpider03 # 项目名为mySpider03 进入到spiders目录 cd mySpider03/mySpider03/spiders 创建爬虫 scrapy genspider heima bbs.itheima.com # 爬虫名为heima &#…

MacBook 下载vscode不能被解压及打开的解决方案

mac 下载vscode不能被解压解决方案如下 1.下载全能解压 进行解压 解压完如果提示 已损坏,无法打开。 您应该将它移到废纸篓 2.允许“任何来源”开启 开启终端输入 sudo spctl --master-disable回车 3. 扩展文件属性 先输入 sudo xattr -r -d com.apple.quaran…

【AI声音克隆整合包及教程】第二代GPT-SoVITS V2:技术、应用与伦理思考

一、引言 在当今科技迅速发展的时代,声音克隆技术成为人工智能领域的一个备受瞩目的分支。GPT-SoVITS V2作为一种声音克隆工具,正逐渐进入人们的视野,它在多个领域展现出巨大的潜力,同时也引发了一系列值得深入探讨的问题。本文旨…

DAY113代码审计-PHPTP框架微P系统漏审项目等

一、环境安装 导入数据 Debug 版本信息收集 一、不安全写法的sql注入(拼接写法绕过预编译机制) 1、Good.php的不安全写法 2、查找可以参数 3、找路由关系 application/index/controller/Goods.php http://172.19.1.236:8833/index.php/index/goods/aj…

35.3K+ Star!PhotoPrism:一款基于AI的开源照片管理工具

PhotoPrism 简介 PhotoPrism[1] 是一个为去中心化网络设计的AI照片应用,它利用最新技术自动标记和查找图片,实现自动图像分类与本地化部署,你可以在家中、私有服务器或云端运行它。 项目特点 主要特点 浏览所有照片和视频,无需担心RAW转换、重复项或视频格式。 使用强大的…

【CUDA】了解GPU架构

目录 一、初步认识 二、Fermi架构 三、Kepler 架构 3.1 动态并行 3.2 Hyper-Q 一、初步认识 SM(Streaming Multiprocessors)是GPU架构中非常重要的部分,GPU硬件的并行性就是由SM决定的。以Fermi架构为例,其包含以下主要组成…