Skip to content

bayllech/ppt2preview

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PPT 预览图生成器

一个本地运行的网站,可以将 PowerPoint (.pptx) 文件转换为精美的预览图。

功能特点

  • 📤 支持拖拽上传 PPT 文件
  • 📦 支持批量转换(多文件上传)
  • 🖼️ 自动提取所有幻灯片
  • 🎨 智能布局:顶部封面大图 + 3列网格预览
  • ⬇️ 一键下载高清预览图
  • 🚀 本地运行,数据安全

预览图格式

生成的预览图包含:

  • 顶部:第一张幻灯片(封面)大图展示
  • 下方:所有幻灯片的3列网格缩略图

前置要求

  1. Node.js (推荐 v18+)
  2. LibreOffice - 用于 PPT 转图片

安装 LibreOffice

macOS:

brew install --cask libreoffice

Ubuntu/Debian:

sudo apt install libreoffice

Windows:libreoffice.org 下载安装

安装与运行

1. 安装依赖

# 安装前端依赖
cd frontend
npm install

# 安装后端依赖
cd ../backend
npm install

2. 启动服务

方式一:使用启动脚本(推荐)

./start.sh

方式二:手动启动

终端1 - 启动后端:

cd backend
npm run dev

终端2 - 启动前端:

cd frontend
npm run dev

3. 访问应用

打开浏览器访问:http://localhost:5173

项目结构

ppt2preview/
├── frontend/           # React + Vite 前端
│   ├── src/
│   │   ├── App.tsx    # 主应用组件
│   │   └── index.css  # 样式文件
│   └── package.json
├── backend/           # Express 后端
│   ├── src/
│   │   ├── index.ts           # 服务入口
│   │   ├── routes/            # API 路由
│   │   └── services/          # 业务逻辑
│   │       ├── pptProcessor.ts    # PPT 处理
│   │       └── taskManager.ts     # 任务管理
│   └── package.json
├── uploads/           # 上传文件临时目录
├── output/            # 生成图片输出目录
└── start.sh           # 一键启动脚本

API 接口

POST /upload

上传 PPT 文件

请求: multipart/form-data

  • file: .pptx 文件

响应:

{
  "success": true,
  "taskId": "uuid",
  "message": "文件上传成功,正在处理"
}

GET /status/:taskId

查询处理状态

响应:

{
  "status": "completed",
  "result": {
    "previewUrl": "/output/xxx-preview.png",
    "coverUrl": "/output/xxx-cover.png",
    "slides": [...],
    "totalCount": 10
  }
}

技术栈

前端

  • React 18
  • TypeScript
  • Tailwind CSS
  • Vite

后端

  • Express
  • TypeScript
  • Multer (文件上传)
  • Sharp (图片处理)
  • LibreOffice (PPT 转换)

开源协议

ISC

运行时清理配置(可选)

为避免 output/uploads/ 长期堆积占用磁盘,后端默认会按 TTL 定期清理旧文件。

  • OUTPUT_TTL_MINUTES:文件保留分钟数,默认 60
  • OUTPUT_CLEAN_INTERVAL_MINUTES:清理间隔分钟数,默认 10
  • OUTPUT_CLEAR_ON_START:是否启动时直接清空 output/uploads/,默认 false
  • TASK_CONCURRENCY:转换任务并发数(批量上传会排队执行),默认 2

批量打包下载(ZIP)

前端在批量任务全部完成后,可一键打包下载 ZIP(每个 PPT 对应一张合成预览图)。

后端接口:

  • GET /download/zip?taskIds=...taskIds 用逗号分隔,例如 a,b,c

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published