当前位置: 首页 > news >正文

【ppt2svg svg2png/jpg】ppt转图片解决方案

ppt处理工具

  • pptx 免费,功能有限,会有一些问题
  • aspose 收费,功能丰富,有水印
  • spire 收费,功能丰富,有水印
  • 基于js/vue的方案

任务:PPT转图片

为了跳过水印,有几种间接的方案

方案一

推荐这种,结合多线程多进程加速导出速度,充分利用cpu

  • ppt -> svg
  • svg -> png/jpg

linux

apt-get update
apt-get install -y --no-install-recommends libgdiplus libc6-dev
pip install aspose.slides
pip install CairoSVG   # 如果缺失字体,需要进行安装

windows

pip install aspose.slides
pip install CairoSVG
import io
import cairosvg
import aspose.slides as aspose_slidesppt_path='path/to/ppt'
presentation = aspose_slides.Presentation(ppt_path)
for i, slide in enumerate(presentation.slides):buffer = io.BytesIO()slide.write_as_svg(buffer)buffer.seek(0)svg_data = buffer.read().decode("utf-8")...(删除svg中的水印)cairosvg.svg2png(bytestring=svg_data.encode("utf-8"), write_to=f'test/{i}.png', scale=4,# dpi=xx,# ...其它的参数)

方案二

  • pptx -> pdf
  • pdf -> png/jpg

linux

sudo apt update && sudo apt upgrade
sudo apt-get install libreoffice
libreoffice --headless --convert-to pdf /path/to/ppt

OR

apt update && apt install python3-uno unoconv
sed -i 's|#!/usr/bin/env python3|#!/usr/bin/python3|' /usr/bin/unoconv
unoconv -f pdf /path/to/ppt

THEN

pip install PyMuPDF

import fitzpdf_path = ''
pdfDoc = fitz.open(pdf_path)
for i, page in enumerate(pdfDoc.pages()):rotate = int(0)# 每个尺寸的缩放系数为1.3,这将为我们生成分辨率提高2.6的图像。# 此处若是不做设置,默认图片大小为:792X612, dpi=72# pix = page.get_pixmap()zoom_x = 6zoom_y = 6# (1.33333333-->1056x816)   (2-->1584x1224)  (3-->3572x2526)# x和y的值越大越清晰,图片越大,但处理也越耗时间,这里取决于你想要图片的清晰度# 默认为1.333333,一般日常使用3就够了,不能设置太大,太大容易使电脑死机mat = fitz.Matrix(zoom_x, zoom_y)pix = page.get_pixmap(matrix=mat, dpi=None, colorspace='rgb', alpha=False)pix.save(f'images/{i}.png')

OR
sudo apt-get install imagemagick

convert -density 250 -quality 100 tmp-good.pdf slide-%d.jpg

win

安装libreoffice

...

方案三

只能win系统,使用PowePoint/WPS接口
pip install comtypes

import os
from comtypes.client import CreateObject
#
初始化PowerPoint应用
powerpoint = CreateObject("Powerpoint.Application")  # KWPP.Application
powerpoint.Visible = 1# 打开PPT文件
pptx_path = os.path.abspath(pptx_path)
ppt = powerpoint.Presentations.Open(pptx_path)# 遍历每个幻灯片并保存为图片
save_path = 'slides'
fori, slide in enumerate(ppt.Slides):  # 0->image_path = f"{save_path}/slide_{i}.png"image_path = os.path.abspath(image_path)slide.Export(image_path, "PNG")# 关闭PPT文件和PowerPoint应用
ppt.Close()
powerpoint.Quit()

方案四

  • 使用linux-WPS

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • [Linux]用户管理指令
  • openai最新o1上线(2024年09月12日)
  • 研1日记15
  • PHPStorm如何调整字体大小
  • 网络信息传输安全
  • 1.《DevOps》系列K8S部署CICD流水线之部署K8S集群~version1.28.2
  • Qt_事件的介绍
  • C语言中的typedef简介
  • 达梦-华为鲲鹏ARM架构下性能测试最佳实践
  • 【字符串】介绍
  • 『功能项目』事件中心处理怪物死亡【55】
  • MyBatis 源码解析:Mapper 文件加载与解析
  • Redis学习以及SpringBoot集成使用Redis
  • 使用 Internet 共享 (ICS) 方式分配ip
  • 【JS】forEach中push为何不会陷入死循环,稀疏数组空元素为何不会被遍历
  • #Java异常处理
  • 《Java编程思想》读书笔记-对象导论
  • Angular 响应式表单 基础例子
  • js正则,这点儿就够用了
  • PAT A1017 优先队列
  • PHP CLI应用的调试原理
  • python 学习笔记 - Queue Pipes,进程间通讯
  • React as a UI Runtime(五、列表)
  • RxJS 实现摩斯密码(Morse) 【内附脑图】
  • Spark学习笔记之相关记录
  • SQLServer之索引简介
  • 笨办法学C 练习34:动态数组
  • 构建二叉树进行数值数组的去重及优化
  • 基于web的全景—— Pannellum小试
  • 区块链共识机制优缺点对比都是什么
  • 要让cordova项目适配iphoneX + ios11.4,总共要几步?三步
  • 鱼骨图 - 如何绘制?
  • UI设计初学者应该如何入门?
  • 新年再起“裁员潮”,“钢铁侠”马斯克要一举裁掉SpaceX 600余名员工 ...
  • ​ssh-keyscan命令--Linux命令应用大词典729个命令解读
  • ‌前端列表展示1000条大量数据时,后端通常需要进行一定的处理。‌
  • # 消息中间件 RocketMQ 高级功能和源码分析(七)
  • # 学号 2017-2018-20172309 《程序设计与数据结构》实验三报告
  • #70结构体案例1(导师,学生,成绩)
  • #Js篇:单线程模式同步任务异步任务任务队列事件循环setTimeout() setInterval()
  • (Python第六天)文件处理
  • (solr系列:一)使用tomcat部署solr服务
  • (windows2012共享文件夹和防火墙设置
  • (力扣记录)235. 二叉搜索树的最近公共祖先
  • (使用vite搭建vue3项目(vite + vue3 + vue router + pinia + element plus))
  • (四十一)大数据实战——spark的yarn模式生产环境部署
  • (万字长文)Spring的核心知识尽揽其中
  • (小白学Java)Java简介和基本配置
  • (一)Mocha源码阅读: 项目结构及命令行启动
  • (一)pytest自动化测试框架之生成测试报告(mac系统)
  • (原創) 如何將struct塞進vector? (C/C++) (STL)
  • (转)nsfocus-绿盟科技笔试题目
  • (转载)从 Java 代码到 Java 堆
  • .class文件转换.java_从一个class文件深入理解Java字节码结构
  • .NET CORE使用Redis分布式锁续命(续期)问题