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

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

pptx处理工具

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

PPT转图片

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

方案一

  • 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_slidespresentation = aspose_slides.Presentation(pptx_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")...(删除水印)cairosvg.svg2png(bytestring=svg_data.encode("utf-8"), write_to=f'test/{i}.png', scale=4)

方案二

  • 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

http://www.mrgr.cn/news/31150.html

相关文章:

  • Pandas中df常用方法介绍
  • C++日期类详解 第二级支线任务
  • FB FC里调用全局变量注意事项
  • 用 JS 实现一个发布订阅模式
  • Unity的Text组件中实现输入内容的渐变色效果
  • FedOV
  • solana项目counter,测试过程中执行报错记录分享
  • 【leetcode】堆习题
  • 铲屎官进!宠物空气净化器真的有用吗?哪款去浮毛效果好
  • SQLAlchemy思维导图
  • [产品管理-28]:NPDP新产品开发 - 26 - 产品生命周期管理 - 产品上市的八大步骤
  • 软考高级第四版备考---第四十八天(项目基本要素-项目内外部运行环境、组织系统、项目管理和产品管理)
  • java踩坑
  • Highcharts甘特图基本用法(highcharts-gantt.js)
  • 什么是机房IP?有什么缺点
  • 骨传导耳机哪个牌子比较好?2024耳机排行榜首发!一文读懂谁更值得入手!
  • 虚拟机(VMware)安装,保姆级教程(附所有安装包及所有安装步骤)
  • 稳了,搭建Docker国内源图文教程
  • 微服务架构---Ribbon\Feign
  • 牛客BC68,X型图案